|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel7 h% ?+ T' l4 P* p
/ C/ U0 A+ }& ^Mover.h
0 r7 \+ @4 Y) c, L0 U- L代码:
" w6 q3 K; i7 z5 K6 ?% N找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
# @3 b$ j( p8 B8 k; p2 d" g; v4 G+ K3 m- ^
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
- \ ^) h, @/ r% T$ j1 C$ b8 o& m
* t! u0 p7 P( d. E然后你去mover.cpp添加
0 X9 c! b7 m( T" j" J% Z/ ]! l i" ], z: x p: M- v* X8 C
代码:3 [; M- {2 u, ~8 j
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
! O1 k: ]( `- X E/ J8 b. p! O. W, v{
5 _0 m) `# j: u' d0 F( t/ }/ ?" x#ifdef __WORLDSERVER# F+ O! ^1 e4 R7 | O
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó: }5 |- ~" C$ w8 V( y& t3 l
MoverProp* pProp = GetProp();
. w+ `- r9 q. P if( pProp )) i5 r) @$ r/ o1 z- b0 P! g6 U3 j+ }
{
; |& l4 R& H W1 C if( nJob > 0 && nJob < MAX_LEGEND_HERO )
+ I: H' b* A# W+ [: _9 D {; g' Z5 {9 Z( _ c% C; t
AddChangeJob( nJob );' h7 A2 I0 l7 i. B
}else{3 r4 ?) ~7 }7 n
return;
/ w# X8 `( C. t* H& }" c }
* I; [5 C0 Z& D' Q0 Z$ ]4 w6 L j int nPoint = 0;
7 P" g; ?4 ?7 R0 a% X if( m_nJob == JOB_MERCENARY )) Q4 C, H/ V% ?. o9 u% ]
nPoint += 40;7 `1 H; V0 r k- y/ K# m0 }" N
else if( m_nJob == JOB_ACROBAT )
( D# X* o7 D. i nPoint += 50;% n0 I& E ?/ | B3 I. S
else if( m_nJob == JOB_ASSIST )
% m- |2 \! i+ f: n nPoint += 60;
0 u, {1 v" u" b2 i( F else if( m_nJob == JOB_MAGICIAN )
1 Q# ~3 W7 I% X) B. U nPoint += 90;
7 |1 c; y5 b% A# [& p else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
& `. U8 z) C* B$ z: N- r nPoint += 120;
4 `: o) z* C: S else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
0 x& i* B Y; D( x2 S nPoint += 150;
8 S' {: X1 s4 z! x0 X else if( m_nJob == JOB_RINGMASTER )6 c1 T9 t1 K6 L ~
nPoint += 160;0 A) M }6 _# o( C# }7 k
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
$ j4 ?! p T7 R! o! q. M* p nPoint += 180;/ Q* ?5 B8 X% s5 t! S
else if( m_nJob == JOB_ELEMENTOR )$ Y$ l0 H; C- K1 J7 t2 o" b3 C; l
nPoint += 390;9 _& o' T+ P( |
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
6 v& L. v* w4 S" p6 q nPoint += 120;
& d" N- m. @% B7 F9 O% m else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )( p/ @- L$ ~. D( f6 q6 n5 V p
nPoint += 150;. K- t2 D0 y. F, I9 p: R s. ]
else if( nJob == JOB_FLORIST_HERO )
( s! m* o' n! c! m$ z nPoint += 160;
9 Y5 }6 {; t4 v/ j$ n( U1 s6 n else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ); d7 x. g) J, |/ l6 L, J
nPoint += 180;
6 M9 y1 I# n" Q$ |4 t* ?2 U else if( nJob == JOB_ELEMENTORLORD_HERO )
8 y E9 B5 S: I. j1 w nPoint += 390;
7 i- x; J5 f8 W1 o$ z D9 g! {0 X0 C+ f( B- N1 y% S" g$ w
AddSkillPoint( nPoint );+ E/ |! q' T' u/ n% y
m_nLevel = nLevel;
2 U; _/ D6 ]: F: _/ j% v6 v6 q" m: S) E1 [
SetJobLevel( nLevel, nJob );5 `7 C1 Q$ {/ I
m_nDeathLevel = nLevel;0 V, R. C7 N! a" R8 ?
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
# \6 X5 s0 W( l x4 w if(IsMaster()), A r; c1 q5 j
{
6 u4 ]4 y/ b- U int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
" Y" v; |& r( `5 M if( nLevel > 59 && nLevel < 72 )
- p$ u& N1 E. k) Q) I, @ dwTmpSkLevel = 1; S2 C, K) B# K: l" D; ?# e
else if( nLevel > 71 && nLevel < 84 ), _7 o, l8 r2 M# l. t K
dwTmpSkLevel = 2;
0 d G/ j1 P6 v else if( nLevel > 83 && nLevel < 96 )9 V* A: L# _$ h z3 d
dwTmpSkLevel = 3;6 u8 N: M# x. M1 w
else if( nLevel > 95 && nLevel < 108 )6 |, ^7 ^6 F! z) f* Y; B/ A7 Z. h3 ~2 z
dwTmpSkLevel = 4; Z. Y. c4 ]; r& K5 s# }
else if( nLevel > 107 && nLevel < 120 )3 S; H e7 e7 i; A
dwTmpSkLevel = 5;
" f+ t' z: G& p ]" U for( int i = 0; i < MAX_SKILL_JOB; i++ )
' p' F! W) q! i0 S& w% u {
* T" x q- J- @( p% z/ L LPSKILL lpSkill = &(m_aJobSkill);3 Q+ e$ K1 G2 j9 g2 V7 w
if( lpSkill && lpSkill->dwSkill != NULL_ID )$ a( ~4 a* o0 z5 c; N5 h O- l
{
) u; s) Y) R& ~; H( z ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); + ~# F+ g5 M- \
if( pSkillProp == NULL )5 D9 {0 J4 ?5 z5 a
continue;1 Y& J" @6 }, p; c
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
( M9 y- d$ w8 M3 I4 S! k; E6 S% f+ k continue;# r& B8 S: Y) K# H. R
lpSkill->dwLevel = dwTmpSkLevel;
7 B& n8 M0 e7 P7 u6 Y. I7 d: T8 c }
) b3 d$ B& `8 e }
0 o6 M/ }+ m" r, x$ V8 \: @8 X }. x$ r* e1 V5 U( X
else if(IsHero())
5 ?: U" z+ x: a. h* | {1 \1 f1 f$ ?2 I2 w2 q r4 E
for( int i = 0; i < MAX_SKILL_JOB; i++ ) . X! T; @1 L* {4 Y8 z+ C8 a
{
& c; ^4 m* K* p( n, k+ g2 o# ` LPSKILL lpSkill = &(m_aJobSkill);" t% B$ \. h) d) ?8 C ~* K( o' ]
if( lpSkill && lpSkill->dwSkill != NULL_ID )
8 a! B' Y. |' g$ i8 h$ q. T+ n7 f {2 O& z4 j- H' {( O* v+ @/ S
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); / Y& k# _, U& I7 Y# U
if( pSkillProp == NULL )
5 w' m8 }$ i& K1 M9 Y continue;
- F2 O) ^, f" w& ` if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
5 Z; Y' m- m) E continue;
6 I: _) r/ g4 D lpSkill->dwLevel = 5;5 H7 N! w ?' v. \* x# ?
}
. C. S8 X, m) e( s9 s, l }
5 ^1 R; g- K1 L9 R5 | }
' n* l6 u: |; _1 F4 H# }+ `2 M! A+ K else if(IsLegendHero())
# k; d; ]/ r3 w8 E; v {
0 J3 h# O M+ p: @1 Q8 g0 c( c" S/ k1 R for( int i = 0; i < MAX_SKILL_JOB; i++ )
. s# J8 ^& \' t- P1 W6 Q2 J; c {
- b; _2 N3 O; W LPSKILL lpSkill = &(m_aJobSkill);
4 D9 E+ l% s, P: M& h if( lpSkill && lpSkill->dwSkill != NULL_ID )
: G; K1 t; ]- U- M, \ {% i7 c4 V0 t0 ^9 w7 k0 W& ~& F/ S
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
* k4 l& ]5 x1 a- C' N- r W if( pSkillProp == NULL )
5 Y$ N. j. n4 a5 m, n( v continue;: l7 o2 V" R* J" m# |
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
. L9 w* l9 b$ f# @- H- y; b continue;
8 a5 C' N( E' {7 z5 `# j' m. Q7 V lpSkill->dwLevel = 5;
- j7 @; Z$ V1 S }" y+ M. j+ F5 F& ^
}( E) B3 p1 m2 J, Z5 C# r
}
0 Y0 i* I# E: }' o#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans7 N$ H( V, W" t; i ^
if( bGamma )
6 [/ L+ G9 M$ S, Z {( D% D7 D; [" J
m_nExp1 = 0;
) j# Y2 [ l5 A" g k" Z }0 i2 g8 j4 i& D, @: Q+ R
+ L5 }$ y2 V w, ]* K) B ( (CUser*)this )->AddSetChangeJob( nJob );5 P. `4 ^% P8 |
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
2 \2 N+ j& W# Z* o- h$ R5 G) l7 G+ ], b+ P! s. ~
2 T( |$ M* j# g( T) b#if __VER >= 11 // __SYS_PLAYER_DATA" g Q; B, X+ d) Q9 @1 z; [2 u Y$ |
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
6 c% A. _% V& R q#else // __SYS_PLAYER_DATA: B6 p H: R+ s# O
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
: S3 V# S7 H5 K9 q; z g_DPCoreClient.SendFriendChangeJob( (CUser*)this );: a1 |& v. z" d O- c1 I
if( m_idGuild != 0 )! f5 j7 h& H% _9 k5 ]! u; `
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );: T) |4 r1 j0 j' S f! R4 Z7 ?1 r5 U! R/ s
#endif // __SYS_PLAYER_DATA5 |" n$ k- c' S% ?" s
SetHitPoint( GetMaxHitPoint() );4 B! Q; Z* g3 {' d
SetManaPoint( GetMaxManaPoint() );
$ h6 M5 v1 T" Z SetFatiguePoint( GetMaxFatiguePoint() );
2 Q' j5 g$ O: \7 j' F2 D if( nJob >= 1 && nJob <= 4 )
' V' L7 J" R& s; _- \ {1 j* s$ @+ M- q# E
m_nStr = m_nSta = m_nDex = m_nInt = 15;! Q1 o# Z h- m* c" Z8 n+ G9 U4 G" g
m_nRemainGP = 28;9 I* W' ]' Y$ o" F
}
( A6 _8 o2 H1 ]& X$ I+ d- ^$ O4 q if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )% \, D% j/ g4 }/ |* f. h
{ ]$ N. n4 ~* S/ J( B. E
m_nRemainGP = 118;& L, E$ m$ `3 b2 Z: T' D/ y5 `
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;- P* x9 P# G, H4 w
m_nStr = m_nSta = m_nDex = m_nInt = 15;
; |6 p& A$ g6 e. }% w }- A( \' ^* Y ]3 P
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
4 e2 K6 E, j6 q+ J {
C5 r! W% b& I8 A" E CItemElem itemelem;8 e, F- e( V9 X/ F
itemelem.m_nItemNum = 1;
4 I0 ]5 ~" v3 n8 g8 j$ q itemelem.m_bCharged = TRUE;
" Z) A. P! R8 |; w$ T% {7 q9 c BYTE nID;+ p8 m& p g7 i' M5 d$ V1 @
8 l! {% m# n; R/ m if( nJob == JOB_MENTALIST_HERO )
8 [$ b+ z2 O( J/ A) j1 x3 g itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN; A$ y( _; y) e' p; L
if( nJob == JOB_FORCEMASTER_HERO )
" q" E" L# [# Z1 X) ?" K! {* U itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
+ t }6 U8 x4 N5 D: E3 D# V* `1 M- @* J& X5 {7 u: K2 V
( ( CUser*)this)->CreateItem( &itemelem, &nID );$ ] {1 Y5 `5 p2 e4 a6 B; m
}
# G0 x3 Z0 p. C4 j/ l g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
7 r. U% Q! m/ s; I; C1 o' ]) W ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
& b) d. ~# o2 c. A) w# `- E2 f ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );5 B! a# v1 A0 N
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
# ? L u2 b9 q$ T ( (CUser*)this )->AddTaskBar();*/* [* V) g' K" [ h/ x: S
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
8 X5 f/ z5 K8 U& k' U1 o @#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?1 {% U6 N- H5 ~2 L y1 J$ l
((CUser*)this)->CheckHonorStat();
8 A: n9 H( M X, N8 r8 W: ~4 E ((CUser*)this)->AddHonorListAck();, i' x9 G/ j( R" |2 W p& U4 ^$ V
g_UserMng.AddHonorTitleChange( this, m_nHonor);
2 Q" o! ]- H6 Q- q2 k9 D#endif // __HONORABLE_TITLE // ′Tà?% G+ ^. b: \5 z! O. z E
}/ y# c& \1 K' a5 G! e/ ?
#endif // __WORLDSERVER
: Y, Q. O- i( C* A}
$ k; X: C( Z" k# T: X& w/ p& i2 d/ {! S
然后你进入functextcmd.cpp并添加以下
& u% l4 K4 L% ~. L- d# W1 i' L
# c- Y, S D6 i4 X代码:
5 f/ `& j ~8 O# cON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )/ K( S; ^( r: n+ R8 D# u
下面插入
2 u: r7 I$ l! A" c1 GON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
- m: L v+ Y* J) y* d( r/ {! n4 Q2 Y' q! x2 @( m% m$ B L
然后你去 S+ `. ]# q2 L( v! I, b6 D
4 L0 _- W, q& A5 ?$ e代码:
: v) g0 U+ y1 Z1 c/ s+ q% j7 A代码8 i: k- D; ]3 g- ~+ Y
BOOL TextCmd_ClearPropose( CScanner & s )5 ?8 {2 y+ M* O& ^2 X
{
/ c+ K! J% y6 B3 Q( M; e) Z#ifdef __WORLDSERVER
- D# {# x9 \8 @1 f! C* | CUser* pUser = (CUser*)s.dwValue;
3 s6 F1 H; M- C8 \ g_dpDBClient.SendClearPropose();4 p/ b: L* G2 ^ H- j5 U$ W3 z
#endif // __WORLDSERVER' {3 o& u5 A* G" c/ m
return TRUE;
2 I: d( w2 w& K! c s}. j1 @- Y5 O6 R7 b; V( p8 E! {
下面插入
4 i) O: w# K' O8 M ?1 d1 pBOOL TextCmd_rebirth( CScanner& scanner )
( p( V5 e o, ^8 f{
F9 t, d3 {+ P+ J4 x' M#ifdef __WORLDSERVER* ?/ o9 Q1 x' [& V! Q0 g
CUser *pUser;9 q2 a6 j+ q$ _ N3 |( m
pUser = (CUser*)scanner.dwValue;& v. ~7 l8 l+ u
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
( B, p3 Z; b( K/ N* bpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);7 L7 A, }* l4 J- Z* F! |
else
; ?8 V+ H/ O$ I5 xpUser->AddText("你还未达到重生条件!");0 G% ^( ], h3 y& ]' ?# e7 z" @
#endif) j8 v" u; }: x
return TRUE;
! H. G1 B2 w6 y) Q( ]}
/ I0 u/ K0 I0 v* V6 _3 r3 I
- P' F+ d$ ~# t
0 ?4 W4 Q. ^: y7 w0 C( P: S: B8 x9 Y0 p# o) T
% Y3 O* a3 w3 A8 W |
|