|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
3 Z! Y0 s8 k4 y7 C& A; N) R+ j2 {. m8 ?
Mover.h
* K! W$ h* X7 A: l H4 {" ~3 L代码:
. A8 j4 \/ k( A {! w2 ]找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
# m6 |+ k$ d; j- P1 e" |
- H# A6 a5 @, Q/ O' A' |下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; & S1 s1 L6 Q" f5 \8 E! U/ P
6 s5 Y7 {& s) A
然后你去mover.cpp添加
( I2 i( \; Y, G2 X$ C) Z1 y6 P0 V& M; R; @
代码:! I3 c7 I" m' ~
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )4 ^, L |" o6 t- r5 D9 }
{9 R2 z- P+ B4 L- |
#ifdef __WORLDSERVER
/ L& m# h+ ?* e; W // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
2 g* c, S X5 e8 E4 |: T5 [" { MoverProp* pProp = GetProp();
; y$ E& K/ T: W if( pProp )
+ _% b' G+ O0 c9 A# V: | {6 P" h$ n; J( E+ l; [: T
if( nJob > 0 && nJob < MAX_LEGEND_HERO )6 o" S& ]1 R7 v
{: S# e7 w8 v$ M0 h3 ^
AddChangeJob( nJob );
3 ~$ \" E. v6 w# r8 A }else{5 _9 j) e* M; a7 m/ R/ o; H. w9 ^" O5 W+ D
return;
Z4 `. z% b- O' L" P7 y }# w4 e6 N; h1 T; j9 r- |7 k9 p# m! U
int nPoint = 0;$ y7 S8 W# q8 a% F7 ?# @3 e( u
if( m_nJob == JOB_MERCENARY )3 c7 M$ Z C7 X2 O! {- |
nPoint += 40;
6 a" {6 `3 s6 O7 ]/ | else if( m_nJob == JOB_ACROBAT )
' ~: E a( V% v' b! |' u nPoint += 50;- o+ b& O+ P& v& x2 N, E
else if( m_nJob == JOB_ASSIST )
0 B: }' _* j# D9 D5 p( p0 c. a- P nPoint += 60;
0 n4 @( w3 n$ }5 l9 [ else if( m_nJob == JOB_MAGICIAN )9 h$ b6 v4 s- L1 x
nPoint += 90;8 K/ `( K- {8 Z$ H6 z" `! }' f
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
& e1 A D4 {" S' G, _ nPoint += 120; I2 h1 i+ Y$ Z0 e+ I
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
. ~7 @; @5 E% W% G nPoint += 150;9 K) R* B, h& G! V* \$ [$ n8 z
else if( m_nJob == JOB_RINGMASTER )* O$ \$ X6 k" x
nPoint += 160;
0 T$ D' r. y2 J0 j2 _" e else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
& n7 Q6 K* x* X/ Z6 W$ s) { nPoint += 180;
7 o) f- X Q0 c, N& D else if( m_nJob == JOB_ELEMENTOR )* q8 }5 y6 T, T! w& _# U
nPoint += 390;# \/ D8 `1 }9 _6 o' }
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
T7 `( \, q; o$ L3 D+ y3 C/ D nPoint += 120;9 H. `( N' B7 ^, R' E
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
, C6 ]7 N7 a, K; a% X) _ nPoint += 150;
: G9 j1 f2 r7 `# B else if( nJob == JOB_FLORIST_HERO )5 h& w/ s- \% \) b; I: c* q/ q
nPoint += 160;
, |' P0 y# I. \2 d, H$ t2 Y else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
+ \+ Y& {' E! `' {: u) n2 S nPoint += 180;, j) o, v6 I+ t! R4 j+ L) D
else if( nJob == JOB_ELEMENTORLORD_HERO )1 p N7 L9 }9 M, G! U
nPoint += 390;
1 B) q9 l( {) U4 V9 Q
. d! h! X* e: K0 M+ K* ` AddSkillPoint( nPoint );$ e3 j6 J& O4 R8 n# O" N
m_nLevel = nLevel;
, |' e( p) D# U$ {1 H
$ c9 B0 {7 Z, Z& w9 E. w+ [6 s& b SetJobLevel( nLevel, nJob );3 J8 k+ F4 [$ X% _1 m1 w
m_nDeathLevel = nLevel;
: M& S! W# _& t! \2 U; K" m/ {#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans; {, R8 a" ~3 |4 u& x4 ^* r
if(IsMaster()), W' n. R2 }+ X, z* B& @
{/ D$ z5 O1 P6 h; Y e
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108/ N& m* e, b( g, [8 i. Q
if( nLevel > 59 && nLevel < 72 )
3 d' J& ~5 L, Q5 @. L" t0 h3 @7 u/ h3 e9 z dwTmpSkLevel = 1;
$ {0 j( @+ x) w0 Z { v else if( nLevel > 71 && nLevel < 84 )
& |/ C( O# W' q, {) R- A dwTmpSkLevel = 2;
1 I" q: Q3 A4 X% D% q( t. } else if( nLevel > 83 && nLevel < 96 )
& H: @% E+ s6 s5 p o* w% P. u dwTmpSkLevel = 3;$ O& @; Q" h; Y8 H# D$ Z/ M
else if( nLevel > 95 && nLevel < 108 )
5 V& s+ `. i+ g. ~ dwTmpSkLevel = 4;
& d: _* ?% b7 b U6 _ else if( nLevel > 107 && nLevel < 120 )
" a5 j, q) t2 e9 f) X dwTmpSkLevel = 5;' v, r5 L3 R* L2 E+ R+ O! F
for( int i = 0; i < MAX_SKILL_JOB; i++ )
% ~2 V5 T4 F) e2 B4 d' A- b {
3 A( e" ?/ e# ~" H LPSKILL lpSkill = &(m_aJobSkill);$ l4 c A7 S' Y6 f
if( lpSkill && lpSkill->dwSkill != NULL_ID )( t" H9 {" B9 a% |: M$ {" e
{ R8 r0 Q \$ a( I4 ?2 y0 ]
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ( _+ v* C* ]2 q/ V2 V0 o2 r9 r
if( pSkillProp == NULL )8 a7 U: }' W& {3 I
continue;
7 `9 Z- \$ j: A9 A" r if( pSkillProp->dwItemKind1 != JTYPE_MASTER)# j$ C* S2 J8 s4 N0 [5 M- I# Y
continue;
+ j) J9 n3 i0 d# m1 u lpSkill->dwLevel = dwTmpSkLevel;
4 p) h- h+ a0 c% u }
6 j2 \" J# H- t+ Z& `. A7 H( B! l }. q! R' q# b' b* b" ~2 ^3 J. ]& [
}
& }6 {8 J m/ G else if(IsHero())# U% [! H8 T0 O$ g- d3 M
{" K8 p+ N2 Y+ [8 c
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 7 v# ~& u( s, O( G8 a
{ - f" ]( g0 Q5 U8 m: ^
LPSKILL lpSkill = &(m_aJobSkill);1 [& J1 ]; B# J6 ^* n' k
if( lpSkill && lpSkill->dwSkill != NULL_ID )9 {) M! D( V% ]# `6 {6 }! h
{" P& k9 |3 l8 g
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
. L3 K6 C4 N% X" H6 \* a8 X if( pSkillProp == NULL )4 }4 p6 \0 ^0 a2 s$ T
continue;
9 U t" G0 E7 {- z) \2 n if( pSkillProp->dwItemKind1 != JTYPE_MASTER)' v8 X: q9 v; L9 I
continue;2 U. U6 q6 E* N$ m6 L* S- E8 ^
lpSkill->dwLevel = 5; A% \/ q5 e+ p3 H/ ~
}
" A# A' \- x8 |! r) v \ }: h& S. Q7 S% @/ \4 J! h- U# j
}
$ }- g$ y, p7 j$ e8 l0 e! ~. c else if(IsLegendHero())
* j7 R: z. B( x+ F" O) @ {! D! ?/ N/ e6 Q' R
for( int i = 0; i < MAX_SKILL_JOB; i++ )
$ Z ]1 v/ ~' u: C9 P { & F- f9 A! e& x. M* z) B0 E
LPSKILL lpSkill = &(m_aJobSkill);
0 J# l" [# b8 F ?( h if( lpSkill && lpSkill->dwSkill != NULL_ID )" h, Q0 {3 Q: z$ F6 u x* I" j N
{$ ? Q- g4 r5 o' g
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
6 X0 p& V0 f; {1 f7 c2 i, C# N9 b if( pSkillProp == NULL )
& l: ?2 b- f! P' B continue;0 M: }/ x9 N2 L+ o6 s7 D" f" K) ^0 Z
if( pSkillProp->dwItemKind1 != JTYPE_MASTER) T" {1 q" ~# h# X" O9 s
continue;
; }; C3 c) H9 y: j. K) G: h lpSkill->dwLevel = 5;1 C- Y! G" K: |% n9 O" {
}; |! _/ q: J7 m' S7 Q Z. E! ^
}
k w$ ~/ s- b2 ]9 B3 h8 Q }2 k$ J2 Q( I3 K7 D5 F# D
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans& ]. C7 C$ n0 B" q
if( bGamma )
/ C$ e+ R/ b8 V2 i+ Q" N9 U {$ z: O- d( \* y1 p) a, q9 t
m_nExp1 = 0;
* _% f! `) F1 N; L7 t0 e* ? j) W }
2 Z+ o$ p1 z) L8 O8 E$ f- h) B6 Y+ }
( (CUser*)this )->AddSetChangeJob( nJob );
% b* m9 O: @# h' k9 @$ ? g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
& ?/ }! E8 A/ p0 p4 m8 `! Z% _8 O8 W1 Z4 d: P& D9 \5 Z
: ^: t6 _- \3 D#if __VER >= 11 // __SYS_PLAYER_DATA
, F* R) x( `- u" X4 r g_dpDBClient.SendUpdatePlayerData( (CUser*)this );6 |( r5 H$ |: i7 H
#else // __SYS_PLAYER_DATA
( E' S. e! O) n" [: T" F5 e g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
% e' ?' ]3 K1 _' d* h g_DPCoreClient.SendFriendChangeJob( (CUser*)this );$ r+ s" o3 Y x! R1 s( f
if( m_idGuild != 0 )
! W) @( t; a: M( l# z4 s3 I g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );5 p+ k. j6 b) p% v1 w0 d+ j$ B
#endif // __SYS_PLAYER_DATA
5 G, r" p# U7 u2 m; O5 f- y SetHitPoint( GetMaxHitPoint() );
: u( j8 Z( {, \) x9 \/ n SetManaPoint( GetMaxManaPoint() );
2 \1 ~2 T. r8 X SetFatiguePoint( GetMaxFatiguePoint() );
" |' D& W7 w$ k if( nJob >= 1 && nJob <= 4 )
1 h! {. h) i5 H {
7 {" P' Z) Q0 h$ A1 E( B( l m_nStr = m_nSta = m_nDex = m_nInt = 15;
8 m7 B; }0 m$ W+ @ m_nRemainGP = 28;
I+ ?& c1 q& @ }3 \/ _8 E% Z' a6 o: Z' s7 K! U
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
4 b9 A0 v; r8 i) ^$ i {
9 L" ?8 ^2 l. m5 H. o" X m_nRemainGP = 118;9 s2 U2 T# v' d$ U4 ~) H
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
; C* P& Y% M& c3 g' q2 m' X m_nStr = m_nSta = m_nDex = m_nInt = 15;/ q6 D% ]7 q- P$ k+ Z. `3 B
}( ?; Z. l+ u, X
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )$ _( o+ n8 v" N
{) y# z. E2 v3 v3 D6 |+ ]8 M5 s. k
CItemElem itemelem;
q! m9 S7 D! Y5 P" ^9 n0 o itemelem.m_nItemNum = 1;2 ?7 m* f9 w+ D
itemelem.m_bCharged = TRUE;
. h( b0 {& y: d5 B4 g8 a* s BYTE nID;
$ d; ~3 r+ _- g3 \ m0 v! _( k E; s& N6 H3 |& h* o4 e/ o8 V+ t
if( nJob == JOB_MENTALIST_HERO )
) q7 a8 m6 _6 v itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
8 A( K0 @; U0 p( H+ [ if( nJob == JOB_FORCEMASTER_HERO ); @* J2 N# E/ o6 f
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;* R: c! d& \# n* t
* t+ h! [7 ?4 \ ( ( CUser*)this)->CreateItem( &itemelem, &nID );
' J% D' S# K% m9 g }
' T: Q: A- t: y" q, T5 Y* Q g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
0 Q: X. M- B! ~7 e" V ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );$ F- F1 m& w _' P
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );! W& O4 M7 \, ~4 p; F, v
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
/ o6 b! y3 N/ x) c% ]0 C/ J/ N ( (CUser*)this )->AddTaskBar();*/
4 v4 q% U/ J7 {# F+ V6 _ t ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );" S5 G& x( D5 p. `. K
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
, C3 z2 V3 w# Z# Y+ `. e& e ((CUser*)this)->CheckHonorStat();
3 Y/ @0 `9 w+ ~+ ~ ((CUser*)this)->AddHonorListAck();
$ d6 i" G; K; r g_UserMng.AddHonorTitleChange( this, m_nHonor);
( n- N6 H, s g! V) z: S* K#endif // __HONORABLE_TITLE // ′Tà?
2 {4 |. e' ~* s0 i' ? }
; a! m+ H/ o4 {$ ~! {" R#endif // __WORLDSERVER
9 S; K" D% _( v6 q/ {2 q J# d1 q} 3 H# z" L# l: j$ j- W# E" w/ @
4 ~0 |7 s- x) p0 c( t然后你进入functextcmd.cpp并添加以下, F. y' w s1 C* U" Y
+ h# g- A6 |2 X, d8 v8 T2 t9 B/ r6 Y
代码:/ `# R1 L; W$ H* ?8 v
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )/ g! o' U8 }$ d% S
下面插入& A4 z4 S) d) \& a/ [& X! H* a
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
0 U2 |0 ^1 I& ?- D* M. Q$ P- `" K) u6 d: m* D" B
然后你去
6 D1 _# \$ ^. T+ D6 P1 ~; ?$ `! @7 f" O: o& o ^6 q8 ]; s
代码:" c- s, b5 c' I5 Q
代码/ L" W/ J' M7 j8 O$ [
BOOL TextCmd_ClearPropose( CScanner & s )
/ Y+ K6 B4 X u2 l( A, X/ J! H{ v; M- G+ _# j! k1 U% G5 k. h; e
#ifdef __WORLDSERVER
; Q0 n% B+ A+ V7 n6 |1 w CUser* pUser = (CUser*)s.dwValue;
1 G% y7 [, I' @) O% g! \) I' T g_dpDBClient.SendClearPropose();$ a) |! R R9 U p2 E+ Y& C
#endif // __WORLDSERVER
* Y% d+ `, \, k$ t return TRUE;( b& ~& b/ n9 d0 ~& Y
}" }- M$ D- K! w1 m. \
下面插入9 Y8 D+ y2 ~6 L9 s
BOOL TextCmd_rebirth( CScanner& scanner ), _9 x0 H, @& d) X7 Y& q
{
' J# F4 h9 ^# X1 o2 v% i#ifdef __WORLDSERVER _2 ?4 b% v8 c. ^3 S+ e8 y
CUser *pUser;
+ D `* M5 m m3 o: J( d% Y/ k! mpUser = (CUser*)scanner.dwValue;4 F8 O2 q+ k+ q5 i
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())5 q d% ^ A& v) q% A' I- t
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);7 T2 d `1 R% P- h
else
9 }6 y7 U+ X+ Y. \$ b2 z- M) NpUser->AddText("你还未达到重生条件!"); Z, c% V' g# e" M
#endif+ f2 P- |% n, j! l- ^
return TRUE;
* y! L6 P( H5 x3 K} 6 J3 r; q3 f1 A$ m; Q
" e" E m' }; T# X/ G
+ q6 @8 y8 U4 ~% s, r+ ^* e! P& B9 w0 L7 b# c. l# ^0 f9 g/ f# c! g' k7 X
* H U1 V1 B2 A) \3 g& f
|
|