|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
0 b* x+ R1 o1 R% E) V& Z, d1 Z2 y: l9 D
Mover.h8 F+ R4 `& v5 y# Z* s7 k4 K$ A
代码:
0 P0 P L8 u' x \$ ~找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
& y. x7 K/ g& r [9 R& t9 S# f: |( s' x. g: n" S7 O3 ^
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; : i) E5 V" V; L
! j( z6 d5 m3 @) r5 p
然后你去mover.cpp添加, S. x! B! z1 g5 ]8 C' Z, F9 [
( @! K7 i0 {* w' ^6 r
代码:! g1 y6 J' g& u4 Q" M3 ]) A/ E1 @9 h
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )& ~* j( s8 }. J, T1 v i7 V
{
% Q# |! s4 g- u9 l#ifdef __WORLDSERVER
$ d& q# o9 r9 ~* E# i8 _' c0 R // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó4 ^5 @- h3 O. a9 e& ~. P
MoverProp* pProp = GetProp();
. m" |- {7 q' E0 O5 k if( pProp )
/ U4 m: o. Q( m( } {, i5 }) \( d& j7 Z/ u
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
; p% d5 F- I6 O7 H- ` {
* Q5 |+ E+ w" Y# l AddChangeJob( nJob );/ t9 R1 M. q1 G' q! l
}else{
) {1 d) H9 B* ^0 ^ return;* N" Q+ l: {. l0 I3 q
}
7 \) A* P) {1 ~& \2 { int nPoint = 0;! B1 q {1 b& G0 n6 l
if( m_nJob == JOB_MERCENARY ), z& K& T9 |0 }) N% [( \4 b
nPoint += 40;" l* e6 b7 Q' _# }
else if( m_nJob == JOB_ACROBAT )
) w, R& D/ F2 a1 H H3 u3 ]% E; a nPoint += 50;
+ M& e7 [+ j9 Q0 v6 B$ Y! E/ [ else if( m_nJob == JOB_ASSIST )
8 ]) ~1 z' x9 { nPoint += 60;: o/ ?# J* B! ]! \" ]3 P; \" ?, k
else if( m_nJob == JOB_MAGICIAN )
) b0 B9 A6 h8 i* N! @ nPoint += 90;1 }9 J, o; J: J
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
' n3 R4 J5 e- E) G' p nPoint += 120;9 W* k1 M8 b- v
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )& t' ?0 G8 @) T3 ~ c9 I
nPoint += 150;
7 ^/ ^& _. P) x; u+ ?, g else if( m_nJob == JOB_RINGMASTER )
# q1 }9 d8 z( X& Q. m+ Q0 Z/ N+ x' U' J nPoint += 160;
/ T& O$ @' g0 Z else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )" i0 i- v: Y; l8 \+ E' y& Y1 }/ M/ v
nPoint += 180;
% F- M& J& n0 F5 f else if( m_nJob == JOB_ELEMENTOR )- W6 A% P) I+ k0 B) e& i; |
nPoint += 390;
: e4 p/ @; W9 E else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )) g" ^, t2 D* Z9 ~0 K4 Z2 S/ I
nPoint += 120;6 a3 E8 L/ h( D/ }7 |3 z+ z H" r
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
7 R/ I& [% ]. a6 H' h+ M! U% a nPoint += 150;4 z! \& Z' w1 ^, H2 v
else if( nJob == JOB_FLORIST_HERO )
! T5 d @8 R, x3 V( F9 J, O/ ]0 [ nPoint += 160;& Y4 i6 m3 G, {$ J' k* I
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
; ^" ^. o+ N9 v nPoint += 180;, M2 s2 |5 o$ s; s% l
else if( nJob == JOB_ELEMENTORLORD_HERO )3 e/ U" K9 q4 x% l0 [9 X* P5 g
nPoint += 390;) c# Q0 j2 Y$ T9 D' M+ B. t
( v8 O" P; k4 g9 Z1 P
AddSkillPoint( nPoint );: H1 Y+ k* k: [; T, k
m_nLevel = nLevel;
' E/ u2 s. [6 |' O6 B( f2 d8 L4 y" m/ j, _- b! B
SetJobLevel( nLevel, nJob );/ ], ]: {2 v# ^0 l- |! ^
m_nDeathLevel = nLevel;0 M0 u4 b) T- m+ c( r
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
4 m" D* Q- _1 n$ P) P3 J1 L/ ^) S4 S if(IsMaster())& o! ^( r& [: \4 s: U" l
{' \, T3 V5 j7 f( @1 w
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
\8 ~0 e. R+ @) \; V+ d9 H) h* A1 @ if( nLevel > 59 && nLevel < 72 )
I2 q. V8 [- s6 U dwTmpSkLevel = 1;0 D4 D6 `9 p8 B
else if( nLevel > 71 && nLevel < 84 )3 `6 @& o6 k) K, Z! p8 l" j
dwTmpSkLevel = 2;
! Y- D3 N6 N1 Z- H9 T else if( nLevel > 83 && nLevel < 96 )
9 |, I5 P$ S/ {2 \ dwTmpSkLevel = 3;
9 \0 s4 U# c! G% D' f else if( nLevel > 95 && nLevel < 108 )% [) {1 j, R) X% ~) P4 K6 E7 R
dwTmpSkLevel = 4;
- {) R7 H1 ~9 X" ?( H* A else if( nLevel > 107 && nLevel < 120 ): q4 E; [8 i7 H9 g: V
dwTmpSkLevel = 5;8 h; O- y5 ]& t
for( int i = 0; i < MAX_SKILL_JOB; i++ ) W1 e; a+ v+ w
{ . F0 ?$ f. }8 B" ~6 r
LPSKILL lpSkill = &(m_aJobSkill);& _6 J( U7 c% ^
if( lpSkill && lpSkill->dwSkill != NULL_ID )
& x) p6 N; J A/ I2 O {/ D) o- d9 D, Q% L- J9 n
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
% k+ X0 s3 E/ I0 M! K if( pSkillProp == NULL )
! Z1 n0 L$ I. G! ~0 r8 l' N, T s continue;- ~) z8 S$ z% Z$ E1 e* E6 x0 }
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)2 h+ j% J0 I5 ~5 M6 N
continue;3 k1 n; h8 ^* i( p" i0 u7 V
lpSkill->dwLevel = dwTmpSkLevel;
- @- }- L2 p9 j } ]0 Y( j% W1 q% i
}
4 K) ~7 r' l ^. o9 w6 k }4 w5 R6 i7 E. p5 n; ? J
else if(IsHero())% r, B+ V4 D0 ^4 D- z0 C. I
{- Q; |8 i( z' H( ~1 P! j
for( int i = 0; i < MAX_SKILL_JOB; i++ )
: H; f' m6 [$ d9 E. k7 ? {
" u* {: N& j" Q' ~2 v LPSKILL lpSkill = &(m_aJobSkill);2 T/ H7 e6 P. `6 E+ ~/ o
if( lpSkill && lpSkill->dwSkill != NULL_ID )( J6 F! I* T* @9 v( y
{ V0 J; s& D r: d
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 9 T# i4 i) t( L" M5 d
if( pSkillProp == NULL )9 s# h* H/ ]8 n% j
continue;
& K4 ]# o7 Z$ c; q4 j if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
& u' g0 _6 R( N9 M continue;/ D# D6 \% f* w: T. @& o& c1 ?
lpSkill->dwLevel = 5;
* t( B1 V7 H0 T2 N6 ?. d- ] }/ p" ~- q( a0 m) H2 i1 P% B
}! M' u, r9 H/ A0 |# y" M% Y: x
}
2 E: ~; d5 j x# w b: K else if(IsLegendHero())
" q+ J% P: v4 t: x, U0 m$ |# ^ {
2 M/ V1 |6 { H. }+ w& J- R' R% D/ h for( int i = 0; i < MAX_SKILL_JOB; i++ ) , ?0 x2 Q. p/ L' c1 t( V3 s' W
{ 0 G4 x5 X$ k; ^/ `$ k
LPSKILL lpSkill = &(m_aJobSkill);
/ o J. q, d3 b if( lpSkill && lpSkill->dwSkill != NULL_ID )
- p, |1 b/ S( Y# m$ L {7 f. P9 o" ^+ h S% L% }0 X( M
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); / M' _2 c/ V$ G" k8 e1 e/ J& \9 l
if( pSkillProp == NULL )
1 H0 q1 w: i( \& f continue;* M' d7 z/ K6 h# P8 @3 k
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)- n8 k: L7 e6 Q- |: j
continue;% s& |5 X* N9 R/ y. O3 ~' n
lpSkill->dwLevel = 5;, E2 P/ q+ f. R4 c/ I
}' p+ e3 [4 r0 g* u. j7 O, D
}8 N+ s; g6 h1 S4 Q& I
}6 r+ _1 Q4 [) j' V, q
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans4 d9 b3 H' A I7 M2 j+ v; R
if( bGamma )
$ W4 D2 x: \ `4 p+ ? {
. w; h, m; I( s, [ m_nExp1 = 0;, U i4 H" R3 H B' |7 o
}5 s$ ]4 n' d9 t" Z F% j
) v/ N2 D6 ]" W6 L# ^ d6 u0 E ( (CUser*)this )->AddSetChangeJob( nJob );
$ y9 a1 Q* E d5 O# m; O6 I3 H g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );" z9 A. s1 r2 C% t2 ~
! h; e7 z! w/ ?# k8 Z1 C: j
) O/ B r, {+ d/ W
#if __VER >= 11 // __SYS_PLAYER_DATA0 Z8 Z7 r U& ]$ s! r, v( m
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
k- A1 n" V: E' {3 U* B#else // __SYS_PLAYER_DATA
T5 u# o& e5 m$ s g_DPCoreClient.SendPartyMemberJob( (CUser*)this );4 \/ T5 P/ K6 _: c# j r
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
( o t5 S! y' D* g( q- N if( m_idGuild != 0 )
$ |# I6 @2 K. q g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );. o7 |% a8 B- m6 _: b
#endif // __SYS_PLAYER_DATA
+ h2 G2 q* u- s" l SetHitPoint( GetMaxHitPoint() );: E# W! d V! R' Y4 T4 ~9 O* s
SetManaPoint( GetMaxManaPoint() );
* X1 F7 I* w- x2 @$ l9 C SetFatiguePoint( GetMaxFatiguePoint() );
% [3 O* ^- {( \+ Q3 d if( nJob >= 1 && nJob <= 4 )$ ~+ d- f, ~& E* y; _
{
# x6 y; n- u( ?% W m_nStr = m_nSta = m_nDex = m_nInt = 15;& q5 `5 ^" C' g% ?0 p2 K
m_nRemainGP = 28;
0 |1 p N( l0 M. C, [! t! ~ }
% [% ]! P) L) ~. U# |2 i9 @ if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
/ U9 d& a, C! o7 ?+ } {3 I' ^% @( r7 K; h
m_nRemainGP = 118;! @0 d* n+ _* }& F5 d
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;, Z$ E+ O r. h& J
m_nStr = m_nSta = m_nDex = m_nInt = 15;- B* E- ], b+ z: `! S& ~ h
}& w! U5 f5 x3 v' |
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ); b- n* P H8 w
{' E; m" F+ _4 O6 S& t2 u( }0 O
CItemElem itemelem;+ a7 E- h4 b3 Q! {' L/ C6 u; E
itemelem.m_nItemNum = 1;
% h4 v) `5 ^1 Y8 G itemelem.m_bCharged = TRUE;' t$ E. p: | E$ R
BYTE nID;: }" @+ H, r& x' p
$ d: n( [+ Q3 I6 s& t1 W- r
if( nJob == JOB_MENTALIST_HERO ), Q7 Z" }- H- M8 v9 H! Z: n7 S
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
7 T" F; D A. Y, o+ y6 h if( nJob == JOB_FORCEMASTER_HERO )
4 R1 i* [! x- Z$ K itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;, A' X( p8 y$ `1 j Y3 d% K
+ `8 A2 f& l* z ( ( CUser*)this)->CreateItem( &itemelem, &nID );1 u) v9 |# P% K2 a
}
7 p9 ^( Q# d8 u0 ] o( ]4 k/ G g_UserMng.AddSetLevel( this, (WORD)m_nLevel );0 `/ p) G3 |$ _0 W+ `# f6 h
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
: f0 g, C3 ]+ K/ ` ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
6 A$ c7 Y& M& b: Q- g7 V, e /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );7 N& v/ ^" l9 t5 T/ r5 x
( (CUser*)this )->AddTaskBar();*/
: |- a& A8 P3 i# U ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
2 b2 p$ ~% C; R H#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
' N0 u0 g; I0 P" h ((CUser*)this)->CheckHonorStat();
1 n0 k, g# H& z0 J, s4 @1 n ((CUser*)this)->AddHonorListAck();
' T& B- D1 w. w' X, Y- p5 C g_UserMng.AddHonorTitleChange( this, m_nHonor);
2 B2 M4 h% h) m#endif // __HONORABLE_TITLE // ′Tà?
) o1 N& S# _. L5 q4 s }
# U3 H: q, U* l9 Z- \2 y9 K#endif // __WORLDSERVER6 ?4 {5 [% n& V
}
' F& F3 V3 l* U& y5 |/ q {% t3 L, V
8 n) B2 x! a6 V0 e4 z1 Q然后你进入functextcmd.cpp并添加以下 h6 ?) f% U6 Z
6 H2 C9 i9 q/ ^- z. n代码:
. a0 q. ?& Y# W! v WON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
$ F8 `8 O9 r$ ~下面插入- z0 Y% z9 L" F2 r1 [1 X4 j
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 4 n; |9 m( y+ D4 c' ?
$ Z) @/ W- d1 D! q1 i
然后你去0 S0 ~/ E* ^1 ?: p# t% H
. v+ F% N8 M0 s& D) T代码:
( T+ v( A: `6 O: ^! s/ V2 h/ H代码- _$ [" v3 z! P5 d2 {" f) J' V) x. w
BOOL TextCmd_ClearPropose( CScanner & s )9 x* S( t( r% T9 J; U' H1 P
{
! ~7 C5 F, v+ L3 m$ e#ifdef __WORLDSERVER
8 F6 s# m! D1 }0 H CUser* pUser = (CUser*)s.dwValue;
# _1 @' L. S: j8 K9 g( v! i g_dpDBClient.SendClearPropose();
5 x$ j6 C% o3 M: I* Q9 @% g#endif // __WORLDSERVER9 j$ @( k* ~- h i) Y
return TRUE;% i' s8 n3 j3 S& |3 ? d: N
}
/ x6 K7 T; C8 i6 ^下面插入
4 j9 v: }, R' ?# x! K3 tBOOL TextCmd_rebirth( CScanner& scanner )+ P' q. Y5 I; u4 [& p% E" ?. |
{
$ \" u0 ]! g5 s#ifdef __WORLDSERVER$ o* e2 Q6 k( }1 X5 l5 o A. [+ ]# R; s
CUser *pUser;2 f" D% v8 @" j4 I5 N' ~
pUser = (CUser*)scanner.dwValue;
( c, i) y; h+ Fif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())5 A- h8 Z4 b% \1 M* E" P1 B6 M# y
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
' t# Q' x/ L$ l9 w2 d' Kelse/ U( M/ N1 M% \
pUser->AddText("你还未达到重生条件!");
& f6 H! m9 Y4 H#endif
$ K" \6 Z# w% @1 J# S& rreturn TRUE;, k/ D8 V1 i( t, f
} # ^) B& l7 q- J9 s' _- y) Q" y
: V/ D. A" `. D# f0 J+ S6 A
0 w& M9 s0 o$ Y: W, G/ I. R5 \6 j' L1 U1 a
- G, }/ {8 Z- }1 A6 W4 w8 Z
|
|