|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
% a" r) [+ c6 D7 [: e8 g+ `( L" B6 U k" L7 C
Mover.h
/ M' o2 |4 c. }1 m2 \6 Y* C代码:) @+ b; R* P q6 Z; ~$ T9 t# O2 R
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü3 }& N& L- s0 Y4 y2 i
3 D' Z2 \4 [1 R9 ~2 M下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; . l6 L* Y$ N6 x+ U: S9 C
1 j) q3 ]0 m* m& _6 I1 C
然后你去mover.cpp添加3 ~ x2 Q) l) C
- _+ N2 n( D' G9 D9 f5 ]9 V
代码:
/ S2 d! n0 ]9 d( y; ~* Svoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )0 B4 {' q; ?1 M1 P! y$ K
{
& F0 v4 i- `5 {2 {- T( @5 }. n2 W#ifdef __WORLDSERVER. J' M9 P [0 }7 A
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
/ b+ V" U% b% p/ ? MoverProp* pProp = GetProp();+ {6 ]7 h. _. H7 L% }: v
if( pProp )% O5 J9 o3 e. K* a# u8 e+ b
{2 H) W0 O. [2 c- W6 J. [( @0 W( p
if( nJob > 0 && nJob < MAX_LEGEND_HERO )- O, B" t3 d1 y" A7 c" ^5 R
{7 `* \. [" @- a# L
AddChangeJob( nJob );* K" j9 d* C5 h7 m w
}else{% p$ d- u$ d7 ]0 S c
return; L3 e* S( |! Y; a; V) _6 Z; M
}0 A& F. m- N/ c
int nPoint = 0;0 k- R, ?$ n- ]/ {' ?
if( m_nJob == JOB_MERCENARY )$ }- P+ ^; ]; m: l
nPoint += 40;
9 |1 K+ A7 i/ w$ ?. @9 c4 O- I. ? else if( m_nJob == JOB_ACROBAT )
# J8 G1 T( d$ h nPoint += 50;8 q" s! c1 K# [0 v1 l, `
else if( m_nJob == JOB_ASSIST )) v7 i, j" c+ g& c# ~+ x: [* y
nPoint += 60;, a0 ?; F" v( I6 O; x5 x0 X
else if( m_nJob == JOB_MAGICIAN )
6 V0 g0 @" G3 Q- R; ? nPoint += 90;
" S" S; J0 B- j, R else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE ) Z. U$ N/ \) A( {6 M k
nPoint += 120;; Y \4 c8 `' h1 P9 x
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER ) j& ?* K) r5 P7 y2 I# K1 Q& E. [) `
nPoint += 150;1 D( A/ O! w+ }' l
else if( m_nJob == JOB_RINGMASTER )
8 }+ c j" ?- b, ~ nPoint += 160;
2 T3 x D# n3 i' p, |8 Y2 t0 R else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )( ~, Z" o$ f( j
nPoint += 180;) i. |1 w1 t# v- x3 i
else if( m_nJob == JOB_ELEMENTOR )
# K- W" L( e9 l nPoint += 390;
; w9 L& u: e8 k' W else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
6 y. ^6 o- R' R5 e nPoint += 120;+ h8 ~* o- l& e7 J5 p3 G& X, J
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
( s7 W, S* P1 N) W& y, h3 ?- l9 { nPoint += 150; I- m/ Y- W$ }, A
else if( nJob == JOB_FLORIST_HERO )
& y* b9 ?2 B9 Z9 x3 }, n3 D) x9 s* E nPoint += 160;" D$ C8 @- r6 ?9 I
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
# I/ [' [9 N1 D1 a* {/ t nPoint += 180;9 `1 T! n" R6 G! x- W
else if( nJob == JOB_ELEMENTORLORD_HERO )% [: C2 {4 C h' B
nPoint += 390;) f4 N# I+ _+ ^# c$ m5 b% o& |
! D+ ?8 v! e( _( I' |# o2 q9 t5 g
AddSkillPoint( nPoint );1 \. w& }8 j K4 Y$ I
m_nLevel = nLevel;( e% F5 _" \& Z$ O- f4 I: o3 V+ V
8 `! ?7 e, A; R7 |6 `- `! k
SetJobLevel( nLevel, nJob );" s8 M& w2 `+ ~% E; o3 g# @; V
m_nDeathLevel = nLevel;9 _% j/ i, o- w U4 J6 q% S7 l
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans) k, c* o+ |) m" P& h: x, F
if(IsMaster())4 m$ w6 @' Q- Q0 I S2 h8 h( g
{
0 p) V) l7 m( H( G int dwTmpSkLevel = 1;//60, 72, 84, 96, 108% t' \4 J. M6 A) S' I: U9 ~" D
if( nLevel > 59 && nLevel < 72 )
# a( i/ L6 l# V# l3 X4 V, \' ] dwTmpSkLevel = 1;
) u! s+ y4 R$ O H4 v0 l else if( nLevel > 71 && nLevel < 84 )! D# l5 K9 ~" ^- _- @
dwTmpSkLevel = 2;( F" d+ b- {+ ^) a7 N; @. P
else if( nLevel > 83 && nLevel < 96 )* T( k% A7 m1 q2 u' X8 {/ T1 x
dwTmpSkLevel = 3;/ ]+ R" d4 F2 b* R$ m! F
else if( nLevel > 95 && nLevel < 108 )
+ m% w8 u4 d6 S2 y dwTmpSkLevel = 4;, S& @1 A7 Y/ i
else if( nLevel > 107 && nLevel < 120 )! ?, }! a- h. u* M( I9 E& S3 a
dwTmpSkLevel = 5;
* e9 z. X! G3 g6 q! ` for( int i = 0; i < MAX_SKILL_JOB; i++ )
. `. N" K( I9 T& A { 7 h( ^5 r9 k x; C+ R; @( Z
LPSKILL lpSkill = &(m_aJobSkill);, o5 g3 Q4 k9 Z! Q" ^ j( H, @& k* S
if( lpSkill && lpSkill->dwSkill != NULL_ID )
: N6 _5 c" q! i j/ B8 u {+ q. ^. a) q. y4 ]. _0 \/ H
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
k( S. S7 ^3 [/ F. h if( pSkillProp == NULL )% E% \/ g& p$ {1 p, j
continue;
' i' \. ]* P' G: ] if( pSkillProp->dwItemKind1 != JTYPE_MASTER)8 Z' a" m' u" I' U- p- P6 t
continue;
5 x* Y7 l3 Q( K1 Z+ r9 J lpSkill->dwLevel = dwTmpSkLevel;' G& s8 m& T+ ]4 M- C+ ]4 D
}
# K0 ^. X5 {; y) ^( v# ^& C8 I3 K0 i }$ y3 M# Z" |+ E
}
8 L# Z: u" V* g/ X P1 c else if(IsHero())
$ B% @3 t, O% L- m {: r5 W" R# ]2 v2 n( d& C/ u
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 4 B4 T1 Y) \; U1 @
{ 6 ^' V6 |: F Z; y8 w4 N% f0 x6 i
LPSKILL lpSkill = &(m_aJobSkill);
& c3 q" P* q* X) G% y if( lpSkill && lpSkill->dwSkill != NULL_ID )
! t `) c+ x2 M0 t9 b2 o+ @ {8 b7 U1 F' J! X7 J7 c
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 8 P! d* _9 M% ^" D6 R7 E$ H
if( pSkillProp == NULL )& G7 t5 m) t! K: M
continue;0 }5 a3 k, K) D/ F$ t
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)- O7 A' q3 r' h( b% ~
continue;0 P2 E9 {) h6 n3 f/ p
lpSkill->dwLevel = 5;; U+ a0 I P" R
}' p/ n% W, s/ N6 n$ D
}8 G/ M3 |5 A4 w9 w x( T
}
# M) y! {! ]0 O else if(IsLegendHero())
$ }7 p, z4 d/ y- c( k {
3 S9 z' W: _% U/ n; X+ }% ^2 H4 M for( int i = 0; i < MAX_SKILL_JOB; i++ ) ' F( O* i7 m. L- K
{
! D$ s h' V H LPSKILL lpSkill = &(m_aJobSkill);7 P9 D5 i/ j; r! D/ q, H o
if( lpSkill && lpSkill->dwSkill != NULL_ID )/ o7 }$ l7 b W& q0 v
{+ u, N0 P9 o# y7 ]9 y$ G
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); & q/ {( H4 ^, F+ m& l
if( pSkillProp == NULL )4 E( q$ c1 Z, X6 d
continue;
9 g4 m3 b; e' l. F4 G) r if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
3 `# _$ c( f! w% V continue;0 o1 J" h5 S' J
lpSkill->dwLevel = 5;
8 X1 Z" P' J2 m) b6 _8 n5 X; j }
* Z0 d% \ X! w' N/ U }" g; N9 Z+ d$ i# e! B. _) ]
}/ q! |, [4 d ^, k1 p T
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans/ R, x& h0 j+ P# d9 U# a
if( bGamma )
! ]6 _+ F5 p; x! Z. O, \( d {5 s+ P( b1 |" D- F n& I H; S; e& P) J
m_nExp1 = 0;
3 p& O# w, ^2 _2 s% Z7 ? }
' ]( T; f- _2 d" n* n& R1 J) T5 g3 ? A& [9 p1 e, }0 ^- ]
( (CUser*)this )->AddSetChangeJob( nJob );
0 b- b6 I3 Y3 V' h8 ` g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
K1 u z+ A/ }3 t8 x/ {, k* k" L; D& @+ E4 k- g& j
+ I6 P' ?8 T% P1 j0 R) N( G#if __VER >= 11 // __SYS_PLAYER_DATA
7 i9 [5 @/ i" u, N4 K; J4 z7 Q g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
0 ]8 l* g4 E1 g" ~6 J: e' y#else // __SYS_PLAYER_DATA
$ E# i1 X; ]8 i3 ?4 Q2 G1 u g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
3 [0 D! q- k F2 l. q3 X g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
; b4 q' N+ d4 `; @. o3 n- b7 Z s% D if( m_idGuild != 0 )* V9 c6 v' y$ X: c: B* _
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );8 t" w1 k$ F7 H T% \ ?$ H
#endif // __SYS_PLAYER_DATA
0 \4 e3 Y9 l- K' m SetHitPoint( GetMaxHitPoint() );$ d7 E* M$ Y: L5 b
SetManaPoint( GetMaxManaPoint() );8 G- u, u$ l1 R; f
SetFatiguePoint( GetMaxFatiguePoint() );. l$ f) I$ F5 O6 s2 c( x
if( nJob >= 1 && nJob <= 4 )( O6 X3 z8 M) X( q4 b% ?8 a% J5 S
{6 @) v1 ]6 d6 c- S- s
m_nStr = m_nSta = m_nDex = m_nInt = 15;
- N! u5 p$ y3 X* Y2 d1 G& J* ] m_nRemainGP = 28;
4 f& I3 H: q7 p; x2 i' e }
0 ?4 [- j \: ?1 O$ R if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
) r+ S- c# u$ K* d( q2 h9 | {+ M$ ~7 Z" i6 M" O
m_nRemainGP = 118;
- J, w) D% y7 ` //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;0 @/ x' A& o& x1 T
m_nStr = m_nSta = m_nDex = m_nInt = 15;
' b0 t/ Q. U3 T, C! a' x } ?. [4 g( |3 _2 D1 m
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )8 E* P+ r" }* S2 |$ j, W1 p
{
' {3 _9 I) d, x1 ?; W CItemElem itemelem;
$ c/ @( G2 y6 R7 U$ I: U$ y/ E; j itemelem.m_nItemNum = 1;
9 J5 W( g4 r& A itemelem.m_bCharged = TRUE; P$ n) m. |! M. T# ]
BYTE nID;
% u2 f# {8 ]5 |
3 o" |3 |5 G3 g" U1 Q if( nJob == JOB_MENTALIST_HERO )
; U0 w/ t0 e4 a3 p itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
: ^2 t$ m! V4 m; [3 X1 \ if( nJob == JOB_FORCEMASTER_HERO )
3 z) F* m7 Z \2 }2 o( U& A/ D' v itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO; g/ W1 E% U# ^
, n' _5 E, `% {/ b' H9 E
( ( CUser*)this)->CreateItem( &itemelem, &nID );* s8 ~4 w5 y% }# M, L3 g; B: p
}
3 j) M9 {2 I, y* j; o3 v g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
- i8 b+ T/ Z: u, d7 b, Z, s ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
2 k0 G6 A7 D: ]6 K/ L ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );! ~; @* a" t! M: X! f4 R4 k
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );6 C. e1 K( b2 |6 t9 ?# p6 C/ c
( (CUser*)this )->AddTaskBar();*/
5 a N; F3 u( |' M ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
% m( d3 O% l2 o! m( Y3 S#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
- i- e# h' }9 N ((CUser*)this)->CheckHonorStat();1 w) k3 J& P4 ~5 M3 H
((CUser*)this)->AddHonorListAck();
% ^7 {. c3 X& V: H g_UserMng.AddHonorTitleChange( this, m_nHonor);
& s( d+ C9 g* ^$ M; r: \: c; u#endif // __HONORABLE_TITLE // ′Tà?
0 ~$ i5 W6 u1 b" N3 m0 B# k9 h' m }
" \. Q" F, t% u5 c#endif // __WORLDSERVER
* p4 I) A8 C! E* `+ F}
n1 N4 A1 @) @: @, X9 E; f: b" L5 J T6 I4 B" @" {! }
然后你进入functextcmd.cpp并添加以下7 h# _& P# P6 A, r
+ m+ W& N7 a$ O6 B
代码:9 @6 A+ t3 }( g9 P# W
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
! @0 m& V. a$ u# R下面插入4 ?4 J* o( j5 W `, q7 g: N$ b
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
$ C" s2 [( O% k! z1 P( u( T) G: Y$ C8 |0 w- h3 B5 E+ e% P
然后你去9 e9 j2 i5 E, W: Y+ I( L, [7 ` a3 I B
3 d4 M3 Y/ j( N( d- T
代码:
6 `+ E; V5 K' P. G$ X7 H代码+ ?( |- C0 f- r9 a" J
BOOL TextCmd_ClearPropose( CScanner & s )
3 K# l$ Y' U% z{+ \" n- q2 I+ U- o: G: M1 j
#ifdef __WORLDSERVER* |, J' x/ l1 A
CUser* pUser = (CUser*)s.dwValue;
' r( w4 A o* k- r- B0 J g_dpDBClient.SendClearPropose();/ h5 G0 g- l+ b$ v. }2 Z, U
#endif // __WORLDSERVER
& @, A+ h2 z' u# T8 f9 L return TRUE;
" L/ X% M$ E3 r, i! k, D+ |6 c" n}( V" e6 v* g* s
下面插入
9 X. f& J) V2 A9 Z; C3 @" uBOOL TextCmd_rebirth( CScanner& scanner )% N8 N. q, X' Y6 A
{8 {6 b# a1 C& E# I# H5 U2 @0 m
#ifdef __WORLDSERVER
4 V& t" I/ {* P; H- H, J2 @0 iCUser *pUser;* B2 ^& g! c9 ^1 j, ]6 y
pUser = (CUser*)scanner.dwValue;
; r% F3 ]2 C, r" ]7 jif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())1 ~+ u& ]/ Z6 v& j, `( d6 S
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);6 W/ c2 c# m! Q- a8 o6 f. T
else5 \- g- i5 h# R! n @0 e
pUser->AddText("你还未达到重生条件!");6 B2 A- d5 v' F& @3 |# Q2 j
#endif
5 S r u4 g' E* a/ {2 oreturn TRUE;
. o* M! K; Q4 h! W$ i' h* g8 a} q( ~; F( t8 v. J8 ~/ X
/ ~% S' W! J6 o |+ v, M s6 _$ l' ^9 V2 a
1 A4 b! x" d6 r; A! Q* f% U1 N( _: [- T- i+ e- \# f
|
|