|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
: G/ r/ }3 f5 [! s
" t9 Q2 z% f& C- L7 u9 MMover.h2 r/ L( Z/ B3 P0 [
代码:
/ M6 q. K7 k% N$ V" h找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
. M) @ A9 F$ n% o! n
& o7 x' ]$ ~. @; H. f下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; % L+ G) ]& m5 ~
$ x, B+ ]& x0 G! o7 e
然后你去mover.cpp添加( s+ }) x9 `/ _1 a
( m9 [4 ^7 `9 z$ ~3 }5 D- ]
代码:
: c1 q7 P. p/ U/ g" ^" ?void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ); w% a. `* y3 r% }
{$ ~9 a, R- L/ [6 C4 Q
#ifdef __WORLDSERVER
6 V% }1 @* ?+ N2 j3 Q8 { // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó1 F4 o0 m3 I: b' d5 ^8 E
MoverProp* pProp = GetProp(); a9 Z5 z2 Y7 s" [9 w2 e' v& p
if( pProp )
, F% _. J4 B6 X9 e; u# L0 @ {
1 m! ~+ j) o- x/ ~, U5 \, |( V5 J; X if( nJob > 0 && nJob < MAX_LEGEND_HERO ) P0 S; U( {( Z
{1 A+ N0 u8 x: J
AddChangeJob( nJob );+ s# N0 ]. C0 l! @0 f+ M
}else{
" a) F5 v. U2 Y; _$ D% q return;0 N8 u9 {) x3 T$ X& y; E: Z) k
}
/ U# ?( s9 f8 Q int nPoint = 0;
. h- F9 m9 M% w4 s4 f, e; k if( m_nJob == JOB_MERCENARY )
7 `; m/ L' S7 Q" v* ^! ~ nPoint += 40;7 n/ O, E$ l6 E" g
else if( m_nJob == JOB_ACROBAT )( v5 `! B( M5 F' ]5 ?/ ?! Q
nPoint += 50;& C! v% Z C$ y% l9 r
else if( m_nJob == JOB_ASSIST )3 \# _0 z: `& ^
nPoint += 60;+ g- p: p8 W1 m
else if( m_nJob == JOB_MAGICIAN )1 M/ t. ]4 M/ a1 x
nPoint += 90;2 C( [5 M9 M5 ~" A& U5 b; o
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
0 B7 X0 H. |# b nPoint += 120;
- |9 O. l. p: \ else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )* z4 \" k+ y6 r; C8 k: B
nPoint += 150;% B5 B* ?* W- i; h D( y& ` X
else if( m_nJob == JOB_RINGMASTER )* C |* R0 o$ ^' n3 A
nPoint += 160;
, {+ E/ q- }9 X' U4 v b else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )8 B, X0 g2 I7 Z# C
nPoint += 180;% d" _+ n, \0 M% b: t S
else if( m_nJob == JOB_ELEMENTOR )
+ I1 }! Z/ K: r. r nPoint += 390;
/ ?. q3 d8 G" H. ]1 b# O else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
/ U& D# v: `4 C$ T! X5 U3 f nPoint += 120;
# a4 p7 u% q" Y else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )5 l1 _# l# l' ]( x
nPoint += 150;
# _6 K! q" H' x0 G, ` else if( nJob == JOB_FLORIST_HERO )
" ~( y6 w; `' X b8 q nPoint += 160;
: {& t: K$ m+ i3 q( F else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )' q% V5 @0 o$ B& l
nPoint += 180;
- y. z9 y6 k z' m else if( nJob == JOB_ELEMENTORLORD_HERO )
; M- L& O: ^; n' R/ ?: s nPoint += 390;
, s7 d$ W% `0 a! u: P( F5 i% \# q. S- @
AddSkillPoint( nPoint ); O* K) e, ?2 ]) L D
m_nLevel = nLevel;- @: }7 v5 z" O7 [, F
4 ]! x2 {, {. C
SetJobLevel( nLevel, nJob );9 O) E6 ?( x" ]: B3 P
m_nDeathLevel = nLevel;
8 N6 P. S! Q; J9 }9 m7 m#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
9 D& z4 a8 ~8 R1 \3 N& | if(IsMaster())/ O' `! ]) ]* `
{
L. z# D* d, i4 y9 X" \- { int dwTmpSkLevel = 1;//60, 72, 84, 96, 1086 O# A1 o8 a% w. O; U" Z( f7 p
if( nLevel > 59 && nLevel < 72 )
( A8 m9 S6 C5 [# b dwTmpSkLevel = 1;. W/ z/ ?+ D, f/ `- r/ r4 T1 T4 d$ r+ E
else if( nLevel > 71 && nLevel < 84 )
- _6 r! y9 y1 m4 H' Q dwTmpSkLevel = 2;" c: i8 t. W9 b- N9 F9 ~. k6 N
else if( nLevel > 83 && nLevel < 96 )
0 P. ?" V% L. y* ] dwTmpSkLevel = 3;
9 G9 m! [: C$ p; v. w/ x else if( nLevel > 95 && nLevel < 108 )* v) V: l% a1 p6 I9 r+ Z7 l0 y3 x
dwTmpSkLevel = 4;
, ]3 n, G3 ?0 s. h else if( nLevel > 107 && nLevel < 120 )
/ f3 {+ f9 n$ @' [ U dwTmpSkLevel = 5;0 {0 A0 I" e$ n6 m1 a
for( int i = 0; i < MAX_SKILL_JOB; i++ ) . Y9 V# R' Y5 |" A; d
{
- d6 g3 a1 n) W/ ? LPSKILL lpSkill = &(m_aJobSkill);" B9 W+ l0 ^; o1 `( n9 r
if( lpSkill && lpSkill->dwSkill != NULL_ID )
! f; a! t4 v3 r! d0 N {2 y7 m1 D: J2 I2 O! h! q3 O
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 1 ~' _* D: f$ i! c& |) S
if( pSkillProp == NULL )
. i% ?7 ]! w( P9 y9 ^5 F* ^8 o4 C: [ continue;
6 N) X/ g$ n3 T if( pSkillProp->dwItemKind1 != JTYPE_MASTER)" V5 h4 C/ q% S7 Z0 q
continue;, C, S) @6 R3 b# { {7 g+ g
lpSkill->dwLevel = dwTmpSkLevel;
7 Y" F0 J8 ^. d8 G3 P, }! t }
$ c& k1 y6 T& S3 R; [ }; z# v z: L+ \4 z# k( l
}' w7 z. f ~8 K0 w+ v/ ^0 E
else if(IsHero())' `% c2 a6 H0 x8 T3 N/ s
{6 \8 Y" Z+ {' E5 v% l) n
for( int i = 0; i < MAX_SKILL_JOB; i++ )
; _3 e( `* t1 i6 ^% f. } { # t" X5 o/ z* T) n; b7 R) Y
LPSKILL lpSkill = &(m_aJobSkill);" o M( M! u6 n7 R1 n0 Q0 K, q
if( lpSkill && lpSkill->dwSkill != NULL_ID )
* ]) K: w& P5 {' x {
1 }1 C" d- z1 }* J: _ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); # f( ]/ J; o7 B! z' c# g, o! e
if( pSkillProp == NULL )
! Z* J) l. e4 p9 o) o, d( | continue;
8 s# k, F; U6 @4 r9 l$ H if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
! r0 g5 E: s$ f: y. x! Y continue;
4 ^! _& z( u& f* e" z lpSkill->dwLevel = 5;# d5 Z) p' \8 f2 o& J H; q9 w
}
# d/ |+ X. W3 }- }4 l- y+ u$ y }
" y& X8 c: e! C5 b1 z4 X4 a }8 ^+ _5 Y* ]' L( Y O
else if(IsLegendHero())
) D3 T! B( [9 `( @2 f( n2 f+ @) A {0 U/ v& S& Q1 u7 V- @* W) _
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ! H9 L( `- t4 |6 K5 B: \3 A
{ 7 K1 U- r3 B- H; e2 `" {$ @
LPSKILL lpSkill = &(m_aJobSkill);7 M1 K) F6 }2 C
if( lpSkill && lpSkill->dwSkill != NULL_ID )4 K. L5 E) L6 M7 M
{
: G* o5 p9 m, ?6 ^6 e ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); . Q) i1 q, a2 @5 C0 O) V
if( pSkillProp == NULL ), }. I7 R6 }+ |! V1 ]
continue;
+ B$ `7 x* x0 h. k if( pSkillProp->dwItemKind1 != JTYPE_MASTER)# X" g2 I" e6 l4 m; r7 t6 @
continue;& [, W" ~# b i: Z. I$ r$ V
lpSkill->dwLevel = 5;% \8 u$ z. X" a4 ~; I
}0 @+ w4 m* D3 s. b
}" r1 b. Z2 ~% p8 M5 @6 ^# I
}: }9 k9 o$ {& K3 ?, B
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans6 k% }: o) i) D4 q Z# z
if( bGamma )
1 Q0 [( [2 y% g9 c% E- V { O v! i; ]9 T4 z
m_nExp1 = 0;
o6 X: r$ b6 t/ c9 `9 R& j! c! J }; y$ ?3 }" x4 F- A; i S( h
: P6 r+ O' ~- f& S4 m ( (CUser*)this )->AddSetChangeJob( nJob );2 \* I8 ~. |& V$ Q: V. r* t
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );2 n! F; K$ M0 t2 Y. V. b
! q; E; \2 [. g% H/ E. h: J; K" ]4 P; t% L/ g
#if __VER >= 11 // __SYS_PLAYER_DATA
# F+ T4 P+ j8 s1 E/ D5 O g_dpDBClient.SendUpdatePlayerData( (CUser*)this );# k2 p" B, a1 f. j$ q3 A- \1 E8 C. `8 L
#else // __SYS_PLAYER_DATA
4 w# Y6 `5 g2 F ^ g_DPCoreClient.SendPartyMemberJob( (CUser*)this );+ J/ d6 ^9 W" c& b! G
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
6 p9 t; Z2 `) c* g9 E if( m_idGuild != 0 )& F5 G* F/ t& v% V
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
9 n; \; K( D+ U6 }. g: C' {#endif // __SYS_PLAYER_DATA& z. u& i, @0 L
SetHitPoint( GetMaxHitPoint() );" p1 f5 }/ S# X* I& _- h
SetManaPoint( GetMaxManaPoint() );, U/ }5 S8 y- Q
SetFatiguePoint( GetMaxFatiguePoint() );
! N! a# k0 D) c* e if( nJob >= 1 && nJob <= 4 )
5 [& ]: ~% S2 b8 ]2 l$ z% z+ k {/ F2 T9 T+ |& o! _ Q* n9 @
m_nStr = m_nSta = m_nDex = m_nInt = 15;
" t9 W! H: \4 X5 Y- h4 e m_nRemainGP = 28;
/ Q6 g# p: m, L3 u5 M& N+ A }1 S' g, D G' z% y/ s
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
) A& h. l6 `1 d$ M1 z" z {
9 U% n+ e' |( Z( h: { m_nRemainGP = 118;
1 U: T( n- {, X/ C) N5 U9 o //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;3 p8 T0 e; h1 m2 w Y3 s1 E
m_nStr = m_nSta = m_nDex = m_nInt = 15;2 b% X3 T2 F$ ]' i" P
}
3 D2 a# b7 ?# w' x" t) u! S- I% k if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
4 \5 i3 r8 C y& P9 D- l {, V: M3 H( [7 n
CItemElem itemelem;
5 |/ c. E( \( l# R% [ G& x" X itemelem.m_nItemNum = 1;
: [9 o4 j ?! ~0 h6 m itemelem.m_bCharged = TRUE;3 ], r. G2 }. G& d
BYTE nID;
/ [/ q; C7 f( ]* p& t: I; R4 S4 n. ] J* ^
if( nJob == JOB_MENTALIST_HERO )5 J- D1 ]+ o, T
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;1 T! g! C# N* D
if( nJob == JOB_FORCEMASTER_HERO )
2 d) m4 S s4 [ Z/ r. T itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
! x5 L. i4 ^( X0 R0 G8 Z. g j- L$ k+ i; ?9 J
( ( CUser*)this)->CreateItem( &itemelem, &nID );' `$ Z4 z$ \) I0 @6 d
}6 X' N) [3 u2 P; p2 P" f2 B
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );4 X% W, d) E; m1 a T e
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );: b+ e. {; ?# Z K% s! c; }: c: O
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
^! X- J- J* o( v" ] /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );0 Q5 z$ w4 g" Y2 j/ j& n
( (CUser*)this )->AddTaskBar();*/. P6 X; z/ `( C- H
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
3 s1 V% j+ k* Y5 k. z1 h% F#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
, n5 l/ W, r0 S% J2 C, u ((CUser*)this)->CheckHonorStat();' r& m! W% Q. L
((CUser*)this)->AddHonorListAck();
. T' G! |* D3 @" n6 ` g_UserMng.AddHonorTitleChange( this, m_nHonor);: `/ u+ [) L# y* M% |& Q
#endif // __HONORABLE_TITLE // ′Tà?! v6 h5 s& T1 J' Y' {- w
}
D, S+ i( {; N, V6 h8 [) r#endif // __WORLDSERVER
8 O) z- N, \6 S& S} ) Q& ~: z: g; U5 e. z9 I* k2 t
# e+ a# f `' d2 b3 g# j
然后你进入functextcmd.cpp并添加以下
3 N& ?+ F6 t* }' Q; a2 x2 c" J9 s9 e% U! W6 r
代码: R$ ]: M/ a# d. O9 b$ n8 W
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )/ ~' H$ K; i9 Q1 j6 o/ ?
下面插入
1 }4 j3 N. w! A3 e4 b' \+ sON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 7 H$ e& C; `, _. N, y9 l
/ C$ k; u! c+ P4 m$ `
然后你去1 _1 R: o" X# J3 o5 u, _
5 i! z8 S3 O( ?2 j& [( H
代码:; |2 j$ N0 I* k" O1 j: M
代码
0 V2 h$ B2 h$ p& SBOOL TextCmd_ClearPropose( CScanner & s )) L6 K' M" ]2 m/ z
{
6 o! q, C! A& u- X& B0 x0 _#ifdef __WORLDSERVER" H0 ?3 y8 v2 w- y1 y, k7 Y; S
CUser* pUser = (CUser*)s.dwValue;
3 ^% U) [. m/ y g_dpDBClient.SendClearPropose();2 z" S1 j1 p( O3 k% @& V/ c! K
#endif // __WORLDSERVER
- \# b- S7 R$ a' W) S return TRUE;
8 I! p1 s: C+ z- _}+ B+ ^$ E4 m: M4 t
下面插入( S, m8 N% v5 G/ B" ?
BOOL TextCmd_rebirth( CScanner& scanner )$ Q5 @5 D( E- g! g5 J1 N t
{; N, h* |7 E) L4 m p) _: [7 p
#ifdef __WORLDSERVER
3 [& V/ }. B$ p. j/ \7 Y1 [CUser *pUser;
5 }$ N6 h, J* b6 t4 U7 lpUser = (CUser*)scanner.dwValue;3 P9 ^/ o4 [7 _) B" v
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
+ {2 b7 E. t" Z, b: X, [pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);4 y1 t$ m' j4 i# A& W Y8 ?2 V( Q
else. C$ |% y( U+ P% C! I
pUser->AddText("你还未达到重生条件!");
- m3 s! w% R* l" z1 Y. F: T! n#endif# y. w2 E, ?% _. r6 q( c; f* \& O# O: Q
return TRUE;- Y( m4 o0 L C+ G) l, g+ t3 H' u
} * n! Z8 Y. |9 J
\+ ~6 ]* y* ?" E. y/ z' N6 Z
" s0 ^ w f% v/ s7 w; D
- V- u; h1 j% \1 v1 n" u7 Z) Z
|
|