|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel4 H0 d o( l8 }4 |% F* k
( B; {& ~$ N, R4 {; E( g
Mover.h" l! u3 q: r+ N% o
代码:
+ b: [" \* x, O7 y% I& _找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
9 V' v# b) b' t0 j( C2 g0 H6 @% `$ T! V$ i0 X- \
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
1 }8 f( V- k" P0 w, I( a5 p9 A- p$ U7 N5 d3 h
然后你去mover.cpp添加
7 n! H; K/ f5 I3 A+ E+ N
" L7 U, I1 D" ?) D3 f. { `/ S代码:
4 ]3 g7 U0 F9 O; ~0 p* |% Gvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
' k& M( B2 Q- V' H! f: [5 @{' g8 q$ I4 \) q: m/ U' X; M
#ifdef __WORLDSERVER' z1 K3 ?. h" }/ s% L
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó5 [: E4 Y' P. Y7 Y. G2 a g$ D
MoverProp* pProp = GetProp();
i$ o+ ~ |4 f' P, t if( pProp )
( k) h K" Y: `5 ^ {
. `6 s2 a3 ]9 D/ h3 e, H4 ^ if( nJob > 0 && nJob < MAX_LEGEND_HERO )% W0 V4 c6 d7 `# C5 v8 Z/ G
{
3 R% p7 ^9 Q ?. b AddChangeJob( nJob );/ {; l: e" k3 a6 S
}else{
$ Z' D) t3 ~8 Y: u! h) j8 s return;9 Y3 N! }0 g) s% E$ w1 f
}
# F8 _6 z) B; f5 f) s int nPoint = 0;
3 h+ t- C2 z1 u w9 P if( m_nJob == JOB_MERCENARY )
4 O& K3 l. }5 d9 p. n, u4 ^8 V nPoint += 40;" m8 a2 |, w% O0 y2 _/ U
else if( m_nJob == JOB_ACROBAT )0 y) }, @8 O+ D1 B
nPoint += 50;
" L. O* i+ A% m% \8 w else if( m_nJob == JOB_ASSIST )
) b* Q. a" P5 I, n- v nPoint += 60;+ ~/ C, n0 K: h; d1 e) m# Z
else if( m_nJob == JOB_MAGICIAN )5 `- J6 _. e5 g, H5 ^) A3 Y7 G3 R
nPoint += 90;6 W3 l: o0 |5 r4 c4 k5 _# M
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
9 G2 n' \$ G5 M" o nPoint += 120;
3 }: q' s/ M; s# G/ j# G+ e else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
5 j6 V! c1 M% K! ^5 b0 V: p' [4 ~" c nPoint += 150;
) ~+ ^$ Y( h5 t) }3 k9 S else if( m_nJob == JOB_RINGMASTER )0 X8 ~! P8 N, b6 n# v
nPoint += 160;9 c) r, D8 R6 e% [. R$ W
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ), S) H$ K5 O+ |7 | M
nPoint += 180;' i' [3 \2 f% O8 A
else if( m_nJob == JOB_ELEMENTOR )( x5 ]5 l j' L9 `0 |; b( p$ V
nPoint += 390;
5 |/ ] L0 O9 i, ]; {+ c else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
! x/ o- P, b% R8 }, j1 ~ nPoint += 120;
( K' [$ f8 k. e$ ?$ n; u else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )3 H, Q @' X3 g3 _8 o/ E
nPoint += 150;" \% N/ ?1 |5 L* W% C' q+ h3 w
else if( nJob == JOB_FLORIST_HERO ), p0 c; _# L$ Y2 y% S) L+ M
nPoint += 160;9 l* B: S' B/ P# e
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
" @3 [% n; Q. g nPoint += 180;# y' z+ t) m, f. I: t0 v
else if( nJob == JOB_ELEMENTORLORD_HERO )
9 R8 D6 ~, y! h% s' F& d. M nPoint += 390;0 Z7 f! M! V" e
: P8 E5 h) t, J6 s AddSkillPoint( nPoint );' [9 }3 |$ w4 y/ X
m_nLevel = nLevel;& m; G4 E/ d. y j, r
+ _' B" f! V2 M( v
SetJobLevel( nLevel, nJob );7 }$ j1 n h2 N3 m! q' @
m_nDeathLevel = nLevel;
& s' g l8 N$ M#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
- ?; @: w" R. {' v g6 A4 S; O+ W if(IsMaster())
8 |8 f0 K8 k* X0 O {
& a: d" K! w2 D* O G4 m int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
/ t8 S. ^0 B4 w; Q: o if( nLevel > 59 && nLevel < 72 )
% G4 a9 ^. F+ W4 Q dwTmpSkLevel = 1;0 V/ J8 h/ v5 C' H
else if( nLevel > 71 && nLevel < 84 )
3 `! _! ^ M! n1 l1 b2 `' h dwTmpSkLevel = 2;
! `7 b0 [& ], y% g3 @* t: a else if( nLevel > 83 && nLevel < 96 )
" h9 l6 z# P: O dwTmpSkLevel = 3;" N( B! d7 t- w# T
else if( nLevel > 95 && nLevel < 108 )
3 ~- y: W3 |" A6 G! S) M$ d) X+ Q dwTmpSkLevel = 4;5 Y/ r' `5 h! X2 G! F! {" g9 |: N
else if( nLevel > 107 && nLevel < 120 )
# T$ a1 }4 U1 _# ?6 J8 ^ dwTmpSkLevel = 5;
: s5 ]! Z2 l, H, S d* f for( int i = 0; i < MAX_SKILL_JOB; i++ )
" d/ y; P$ q/ q1 _1 v1 r { 1 l4 X# }! N& w0 J
LPSKILL lpSkill = &(m_aJobSkill);
4 s, e0 X0 d' |- O( A if( lpSkill && lpSkill->dwSkill != NULL_ID )
3 V1 e/ d# t6 F9 ? { J6 d5 Y' C) D p# i$ `* Y1 w! S9 b* V
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
- ^/ h v" e5 T if( pSkillProp == NULL )
6 l( F* L7 _0 } continue;: q' ^7 m9 R- _* ^, d3 \+ e1 M
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
: n( K! P9 V- G! h7 o continue;
# {$ ~" E+ B9 Q2 _% _* c6 T! C lpSkill->dwLevel = dwTmpSkLevel;
0 B, p2 J1 _. \* f8 X }4 S5 f3 G: P2 A( l, h( `
}% J, e2 a9 w U# o: e' n) _8 w# l
}
1 ~: Y. O; Y' s. u; f) B o else if(IsHero())2 } {2 m8 n" x: f. C1 D
{
9 q7 o# K$ c* q$ t5 N# l for( int i = 0; i < MAX_SKILL_JOB; i++ )
1 ~+ ?) N9 _: }1 S0 h9 s. K! v, S {
% U3 V' s, J. z S) l2 Q LPSKILL lpSkill = &(m_aJobSkill);
9 P/ f2 L, z a if( lpSkill && lpSkill->dwSkill != NULL_ID )
7 B- A; H2 F; u7 R- Q" Q1 u {
0 d$ p0 f: V1 N# M5 G4 A ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); * T- J- L9 B. p& L
if( pSkillProp == NULL )- v4 O: |1 J! F2 L. Z+ M' a
continue;; R$ o: T4 i' x7 ^7 ?# l
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)1 x6 |$ s% p# B4 q5 v6 k
continue;
' N$ y3 H7 U, r! p' \ lpSkill->dwLevel = 5;
/ g2 u, f1 Y, X) K+ A. r }
% l8 u; i/ V/ m& s! @% ] g6 W) c }1 t V+ l0 S C1 v
} N/ a4 `1 {' g+ g
else if(IsLegendHero()): q9 H8 F2 H) [5 D
{
Z q2 {' }( r; o# j; G for( int i = 0; i < MAX_SKILL_JOB; i++ )
1 r* |9 d* u! \% x) o% c) i# U7 n { 6 V" E7 |3 L! p- }
LPSKILL lpSkill = &(m_aJobSkill);6 A- h* w; k( M8 l' k! `
if( lpSkill && lpSkill->dwSkill != NULL_ID )
. H5 m) A+ S+ ?! o% S" S { m) d2 T+ I% b1 D7 D) t/ a
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
$ ]0 n8 X( y$ Q0 W ^0 x7 j if( pSkillProp == NULL )
( n7 C$ I$ L4 t. h5 y$ i! P continue;
) K, z( p }) [8 \ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
; S' s6 q, r; H+ Z continue;% n3 C1 ~% t5 L4 V2 p* j$ n3 C- M
lpSkill->dwLevel = 5;
; m9 `: A% F: y/ `* D0 C4 W' \; u. \ }+ B( p; g6 K& d* n) K6 X$ q L
}
+ T: N) O5 x- j( w9 P }
% o) K( s. A/ r! Z3 q k#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
7 C' n% E# p$ j) ?2 D' Q$ [ if( bGamma ); E, y9 e3 T) d4 l' T0 V" X
{' A0 Y- y% L: m, \; J- I F
m_nExp1 = 0;
9 }- ]4 |# Q5 b( E9 g3 J }# n( n4 L* Q2 ?
) z1 m* a9 v9 w @" `2 o! Q; g
( (CUser*)this )->AddSetChangeJob( nJob );
# }% [: J w7 v) `2 q8 l, p& _. h g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
( L; c8 m6 W X, ]
/ O6 z6 P& |7 {0 N5 i% S1 U4 n [$ e; o/ f
#if __VER >= 11 // __SYS_PLAYER_DATA
8 `, P, ?* m# W+ t ]8 A& v g_dpDBClient.SendUpdatePlayerData( (CUser*)this );7 Y, e' D6 ~# J
#else // __SYS_PLAYER_DATA/ O4 ~$ h& J' z
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );* |8 U% U2 O( z0 y" q: u
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
: P' s1 U; u& i5 B. l if( m_idGuild != 0 ) w! w$ ~5 s7 n; C* Y9 D! o! G
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
; w* r! H+ D( n6 }- h6 G1 `5 B i) e#endif // __SYS_PLAYER_DATA u! i. ?6 D. E" w: b
SetHitPoint( GetMaxHitPoint() );
0 N3 l; R2 @# A$ V9 j/ x SetManaPoint( GetMaxManaPoint() );
' X e$ w. B3 i SetFatiguePoint( GetMaxFatiguePoint() );+ k5 k _5 u, ~4 O2 V
if( nJob >= 1 && nJob <= 4 )
+ W: S6 h* e i+ D: Q6 V* K/ R {: a0 ^8 F& t+ G; F
m_nStr = m_nSta = m_nDex = m_nInt = 15;
( t$ g+ i5 x' U4 ~ m_nRemainGP = 28;
1 T4 c# s" x4 E4 ^+ Q! n2 Q }( ^& X- R7 ~- `0 J
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER ), |# d) i+ y7 Q) R5 q
{1 n" d& |/ Y5 N/ f0 H0 y: Q% l
m_nRemainGP = 118;+ q: w; z# g* c" ^6 z; t9 z
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;% d& @6 P/ |" b2 N% U: w
m_nStr = m_nSta = m_nDex = m_nInt = 15;" @1 n1 T" b' J s9 B1 k
}
0 b- L% ~/ I8 p; b if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )# f, a/ H- K, V" z- Z# [
{/ b& i8 [. z" r' y* z0 I% s6 m
CItemElem itemelem;
' |' h( _: f8 l6 ^, d C, s itemelem.m_nItemNum = 1;
3 R, s4 X% f# E) Z itemelem.m_bCharged = TRUE;' S. H7 G. ?! U3 y, e2 Q, V
BYTE nID;
9 E$ X/ t0 R$ y) R
4 z! ^' E& F! G" u if( nJob == JOB_MENTALIST_HERO ) ^- |6 M, l/ \# F; |4 [, B! F1 @( T+ r5 L
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
# Q. ~4 t u: [* |9 Z2 _ if( nJob == JOB_FORCEMASTER_HERO )) }% _' a' _5 N$ k& {
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
5 O/ l1 j0 B% N: \1 V# ]
6 ^% F9 }! v# d: g" h. d ( ( CUser*)this)->CreateItem( &itemelem, &nID );
5 p6 W( H- a: `1 d) o; t: V* h }
% B: {, S# V1 c, s) k* c5 b/ z g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
" |, N& K- V, E9 S2 w. D8 O ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
0 ~3 ]7 ^; n- O5 Q6 S, X. u6 L ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );' {- e* J0 d+ _2 J4 H8 X( I; q2 C
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );( B6 |! H9 ~; B! Q
( (CUser*)this )->AddTaskBar();*/
% ], H8 @$ a8 d$ C4 R* b ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
- }+ y" Q4 c$ X' N#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?8 s: ~% |/ r# P, v- t0 O" F
((CUser*)this)->CheckHonorStat();" T1 v' h. ?$ j E, @7 d
((CUser*)this)->AddHonorListAck();
+ L2 i1 H3 V4 w$ N9 B, R( ?1 O g_UserMng.AddHonorTitleChange( this, m_nHonor);- o4 H8 }1 Q3 E$ Z7 y6 D# ^
#endif // __HONORABLE_TITLE // ′Tà?
3 a$ J ~8 i S" P, u7 t( X }
I" `; y: |, b7 n; P#endif // __WORLDSERVER0 _ b9 ?1 G, `' [* v( k
} 7 M1 o. A6 O; {) V, }
9 I/ B+ g- G& e然后你进入functextcmd.cpp并添加以下" r4 @6 |3 Y }. w; D
7 V3 }( b w, M: }
代码:: c4 F- D4 V, f2 F: Y1 A3 Q1 y4 d7 I; A, J
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )2 L& j% O/ k8 G
下面插入
+ S' @7 N, W$ i, [& f2 Z$ kON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 9 k) q y/ k6 T* @
7 m* T# d$ j) g% [! ?3 @
然后你去
' u& n8 N( y% a2 ]6 M& G
# [0 o1 O: g( _, C+ f代码:
8 w2 q3 f: B% t代码8 A; M9 j+ K. T* J1 D# ?0 D
BOOL TextCmd_ClearPropose( CScanner & s )
4 F1 e' v( F7 @' m{
* q8 v" x* d" }# _! Z#ifdef __WORLDSERVER
+ M5 S8 o! _5 n2 N# u, u e% w CUser* pUser = (CUser*)s.dwValue;
/ ?' y# _* G h! O* R$ A( a0 V( H g_dpDBClient.SendClearPropose();3 n1 U9 @+ I( ^ y7 s3 b$ P
#endif // __WORLDSERVER
" s. s3 m8 N* P. `4 i: @ return TRUE;; N- t$ G- i, U; W
}
" W' s- j5 X1 m. e- W# j: L3 w" E下面插入& x1 N: d7 K }
BOOL TextCmd_rebirth( CScanner& scanner )
2 L, G% Q$ q* E O! @7 [9 W- U{
: a! @/ g. |3 D6 ]#ifdef __WORLDSERVER
. r" [" m, j0 d- d* z/ zCUser *pUser;
/ s0 B; W6 C0 t; C" Y. }8 \pUser = (CUser*)scanner.dwValue;+ v% m4 S) I- c$ M! C/ ?7 x
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())+ `6 S2 L& t. E9 s
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);: p1 O/ n' f0 s- @) Y
else( ]! R7 N. z. P0 S' O$ Q' r0 W
pUser->AddText("你还未达到重生条件!");0 c; c/ e7 @6 }2 c6 {* B( M
#endif4 ~* v& _+ g. h4 {% H/ R0 U
return TRUE;& g% A1 ?, w3 z: X
} 2 Y+ P+ a. |& V
/ T3 C" i. J/ @, G, h9 B
2 ^+ n( v0 R1 {# n: u& _/ w4 B
, X: m' z: h3 c: f! J4 Y- N5 E7 q3 ~! t$ _8 L& E
|
|