|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
$ F2 n/ A2 q- W+ U2 J6 E- F8 V9 g. v8 n4 q% G
Mover.h
. n& o. K0 {/ p. `/ V& J. _* n代码:7 t* t, d: |# i8 Q+ u
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü5 j8 G* n' k1 l4 N, V0 Z
" P D8 w+ v4 g7 u/ H下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 8 g+ S4 ?& ~3 b" i
: \3 n' ]9 j. p
然后你去mover.cpp添加) B4 R/ Q2 c( q8 r
: v+ D" S; T- F7 \3 r6 Q
代码:
1 G- D( q e2 j" i6 gvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
6 C# a# t- m0 K( v{4 i; ]" U- S% Q* x' S& n2 s
#ifdef __WORLDSERVER7 H0 g6 q1 ^5 C) k
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó3 C0 Z* r W1 G- d
MoverProp* pProp = GetProp();2 s- W- k- u) `' P4 _: g. `# L
if( pProp )
$ d( k8 p) v' e: U6 J {
/ Y5 F7 K1 \# ?+ l7 ^6 a if( nJob > 0 && nJob < MAX_LEGEND_HERO )
0 ~. S+ q7 S( g2 R9 x: F1 ^, z, d {
7 M$ Z+ l0 h) P G AddChangeJob( nJob );
; u) t. \- e4 ^' \ }else{( \+ ^: E9 f$ o8 l
return;
: {% H7 }0 x4 l) Q }/ z' D( P+ u0 z1 `
int nPoint = 0;
! G# ? v! h% U$ f Y$ t; Y if( m_nJob == JOB_MERCENARY )# F1 k8 N9 j& ?3 c8 C r
nPoint += 40;
! e% E0 j# ^0 B0 n% R else if( m_nJob == JOB_ACROBAT )& d; d* [3 E3 P2 m" g( q1 H$ l
nPoint += 50;
" R7 A5 b: m* j; h( q" K else if( m_nJob == JOB_ASSIST )$ d/ v$ K7 j* `: S. B/ K) F$ K
nPoint += 60;
- S" V. Y% r$ Q$ y0 H/ U6 H else if( m_nJob == JOB_MAGICIAN )
5 w# q# |" U- S; i3 t5 t nPoint += 90;
. f4 _3 o7 p4 q* ]; G else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
8 f! j4 A& t s+ \ nPoint += 120;
# S- g; f; G4 |3 c, `, x# p else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
5 p) I. H" ], \/ L5 G, {$ c nPoint += 150;3 R6 Y7 A" F; z; E1 g
else if( m_nJob == JOB_RINGMASTER )
+ q2 b2 U0 T6 F( n( k5 Q9 G. u nPoint += 160;1 q4 v! Z6 r$ s# K! u
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )2 o5 b: Y/ O- e, h) [7 P! M
nPoint += 180;
' w6 Y0 z) U; V( x7 y' @ else if( m_nJob == JOB_ELEMENTOR )
9 B: ^0 N: K- W/ Z# F5 V4 z! X/ i nPoint += 390;
5 H2 l' `' s+ ? f% y2 E$ G else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
( M; | _* F {, G0 j4 H( R nPoint += 120;
# `, H6 k9 _# n! Z' g else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
2 N c& ~* o7 N. ] nPoint += 150;
% u. u x- ^7 Q' i5 f else if( nJob == JOB_FLORIST_HERO )
; N. r' }2 B+ L nPoint += 160;
2 Y6 e! r1 P7 E& g: d else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )& X/ W) x9 I7 v2 ?4 B, \* F
nPoint += 180;" l9 q+ a' L* ~8 g2 ~2 j
else if( nJob == JOB_ELEMENTORLORD_HERO )
4 M4 X2 G) x# i" w& a nPoint += 390;
9 O- \9 ~9 `) r( _' y. E
X( ~7 T' f3 h AddSkillPoint( nPoint );8 U, f: d& |3 A7 a; d- B: s
m_nLevel = nLevel;
) [% S( d1 E( h2 \, P) p% j- C' A. R; N
SetJobLevel( nLevel, nJob );
g3 ~% K# j7 a& N2 L; t/ Q5 o m_nDeathLevel = nLevel;
) {( b5 o6 M# P3 p#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
% x b9 Z% j8 O8 b& j% c, n+ x( f if(IsMaster())
( F( X) K' l; H' f0 M {
& U6 b4 @' l( V8 B. t; ]+ Z: @ int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
2 b% O: s& T; M$ C if( nLevel > 59 && nLevel < 72 )/ i. M% N: L0 L1 A4 F7 t
dwTmpSkLevel = 1;. X: [! E# M! i) c4 ]
else if( nLevel > 71 && nLevel < 84 )
9 E3 g0 V8 ?3 g dwTmpSkLevel = 2;% p0 T! X4 T) L2 q/ j4 b& s3 v Y
else if( nLevel > 83 && nLevel < 96 )5 l, d3 b: F R, D- E
dwTmpSkLevel = 3;
. {% m9 q! D" b. A5 M else if( nLevel > 95 && nLevel < 108 )
4 I. M, W7 K- A$ x4 B- |+ ? dwTmpSkLevel = 4;/ G, m3 S; ?7 K' @
else if( nLevel > 107 && nLevel < 120 )
% G# i2 w& w8 v% I dwTmpSkLevel = 5;
: }" X* V3 y. q; i for( int i = 0; i < MAX_SKILL_JOB; i++ ) 7 ]. t9 t; C: r1 a) B9 h* k
{
j b0 S9 r1 x k% K1 Y LPSKILL lpSkill = &(m_aJobSkill);' S+ O0 U* [! V2 ~- s& F* e. v- C
if( lpSkill && lpSkill->dwSkill != NULL_ID )
! {: A0 i; }9 K {6 y! v1 s r9 ]* i3 K' O1 c9 l
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
. A' x0 ^8 e) b8 O; M if( pSkillProp == NULL ) p ~& S: x* R4 t) a/ W
continue;
& [1 m2 b" \" @ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
9 c' Z# g: \, l* {( V" L continue;- y% B" f! j% D5 j0 e
lpSkill->dwLevel = dwTmpSkLevel;) C0 m' p1 H! D
}
" p0 A5 K2 P/ X/ h7 o4 Z }
& l. O: W2 ^# C/ @6 \) F }4 n C4 h& r3 ]5 p5 t2 ?
else if(IsHero())
3 h$ f& i. E. b+ k {2 V% H8 \( s2 w8 v* ^4 S
for( int i = 0; i < MAX_SKILL_JOB; i++ ) : z2 V1 W. k' w% h4 g! q: U
{ / L2 T- N( k H* V0 C1 @# y
LPSKILL lpSkill = &(m_aJobSkill); f7 D& l4 o, a. R6 d- z3 i+ E
if( lpSkill && lpSkill->dwSkill != NULL_ID )" r n' C2 E6 K
{4 j2 e. ^1 v, U! d+ `9 _; @+ B3 J
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
# d: M- l* ]; `- F if( pSkillProp == NULL )/ Y- Z. }& m4 q/ e( z9 ^
continue;
2 f/ |( t! p/ k! S if( pSkillProp->dwItemKind1 != JTYPE_MASTER)+ B3 V2 L( {/ V4 q" }& ~$ B# y. y
continue;
# _0 s6 m! i P. ~3 e7 i4 X lpSkill->dwLevel = 5;9 H, g9 U! S- N& c. |) k. Z
}+ ?0 K3 _0 S4 |+ ^: h3 B- [
}8 t( s$ s' B! c- s
}
3 M) i9 t" L& g ^; r+ s0 x; ]/ Q- ^ else if(IsLegendHero())
( K! _! e' P! R# c {
! a( m- v7 H5 R8 a3 N; J6 v2 G" G9 G for( int i = 0; i < MAX_SKILL_JOB; i++ )
$ E& u0 q) t1 [& |, z4 i { 9 D3 i6 w) y- l- x4 S
LPSKILL lpSkill = &(m_aJobSkill);( [0 b7 n, { M8 Q8 s3 d
if( lpSkill && lpSkill->dwSkill != NULL_ID )
( ~! o6 l3 y- l1 _1 w: x {8 u7 ]; B/ K0 J/ B$ ^8 Z; U; U
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
( z/ ^. D( [5 Y* r* k* I8 Q. f% P; X' O if( pSkillProp == NULL )
8 w3 r5 ]( _2 O U3 k0 u o1 _ continue;
$ `9 ~% N$ V" C0 J if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
; q+ n9 F& G; W: F+ S. @3 N* w continue;8 l* z) r5 N4 }0 ?% N- s
lpSkill->dwLevel = 5;
5 z' Q6 c* I2 T( }( K }) S0 K; h+ r9 L* o- S" C+ ?/ D' r3 ~
}
3 A( ?. c' B3 _, {# G% a }! x( }/ \* _: | J4 m1 \
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
9 w a, s% h, p. W if( bGamma )7 f8 U) K" ?. X w) d
{
1 U7 x! E! i, f0 U3 c1 ?) g m_nExp1 = 0;
7 q" w, u% F- r9 V }8 \8 ~2 J! n% J6 X" ]9 F2 {2 v9 Y
. C: K- h6 }1 D5 E! D ( (CUser*)this )->AddSetChangeJob( nJob );0 M) V3 k# c7 `# K/ P
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
' S: l3 ~% N c" Z" }! T2 Z* U% F: [5 Y l( S2 S
( l9 F; _' B: u: m* W
#if __VER >= 11 // __SYS_PLAYER_DATA2 R, s7 G+ V. S, D+ I0 e# K
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
6 i1 G- a$ C, N; J- \#else // __SYS_PLAYER_DATA
# ~) {$ F$ F1 n# @+ U( P g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
6 s/ l# T- h" J! k Z; W5 m0 E1 H g_DPCoreClient.SendFriendChangeJob( (CUser*)this );2 Y. g; L, a9 B( y5 p. y# W6 q
if( m_idGuild != 0 )3 z& A) u0 ]' a% v8 K1 R
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );% V& Y" H7 m5 K1 V: n
#endif // __SYS_PLAYER_DATA
8 U' h Z! b" v" K& C6 F+ T SetHitPoint( GetMaxHitPoint() );
7 ?( r- o6 H# k6 J) p- x: u H SetManaPoint( GetMaxManaPoint() );
1 z$ _1 e2 N f, S& \% ^' a/ M' T. A+ B SetFatiguePoint( GetMaxFatiguePoint() );
\& U! s' f3 p4 v& n6 v- f6 K if( nJob >= 1 && nJob <= 4 )
7 ~) ~4 F: M2 Y- d {/ X { M9 _- h _ p% i# ?, m
m_nStr = m_nSta = m_nDex = m_nInt = 15;
( Z' C5 G7 N0 B6 K, Y m_nRemainGP = 28;0 I4 R) Y$ K% g1 \( \$ o& Y- z
}1 }" _ {( X e( D
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
; s* h( A' m1 G* l# T$ R {
( r9 A9 A" f' L/ `$ C m_nRemainGP = 118;
* S' J- ]6 [# ^% c8 K1 b9 g //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;$ g B3 ^: \: J) v; M R9 G4 R
m_nStr = m_nSta = m_nDex = m_nInt = 15;& x. l) o% A% Z3 l- x8 s' \1 ]7 H
}
3 ^; E/ ~3 X" ]% z2 [$ r' {) ? if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
) u0 j) t1 O5 ~! z {: k. H5 [( E7 z0 ] D
CItemElem itemelem;
3 a4 s0 a0 J! `5 e" W! q5 R+ Y% A itemelem.m_nItemNum = 1;; O4 b( I/ q/ z& K% z/ j2 l. v. N1 d
itemelem.m_bCharged = TRUE;
/ S }5 _& f% |6 p# P" f+ R BYTE nID;' u" A Y9 A3 v8 k1 M) C
0 x) W9 A- }) l) K- m* ` if( nJob == JOB_MENTALIST_HERO )! L! S. T$ q8 [" k
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
9 _5 g1 W d0 F8 v4 y9 H if( nJob == JOB_FORCEMASTER_HERO )
; ?5 [1 D4 `8 b itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
3 ^( M) R$ S( M' E5 z( M9 I" q5 [9 B" }- E# d; m8 _# Y
( ( CUser*)this)->CreateItem( &itemelem, &nID );
9 l) R7 e- R7 H# R* x0 j$ Z/ R# } }
, Z1 J1 ^4 L3 i- Y g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
; L" u. C6 q4 j3 z3 i/ C ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP ); D6 F' m# K; \6 b9 B
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
' ~9 q4 }' K; ~- C /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );' R, Z! \3 s3 `. ^4 n
( (CUser*)this )->AddTaskBar();*/0 Y% ]# G1 {: q4 p7 K R. C5 k. y
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );. u- A2 V* c& \& j$ C/ K; I( [
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
& n( r& C. F, F3 o; W6 D ((CUser*)this)->CheckHonorStat();
; [- f0 ^# G+ Z9 U ((CUser*)this)->AddHonorListAck();% O2 Y, Z6 b: Y/ i" o
g_UserMng.AddHonorTitleChange( this, m_nHonor);
5 B( J% }3 Y& l, l. m( K- y#endif // __HONORABLE_TITLE // ′Tà?7 O8 c9 `% Q6 f. p, t7 v
}. Z" q$ ~; _ F9 a
#endif // __WORLDSERVER2 Q c4 k$ a% v) _! z
}
$ Z0 F4 F, d1 s7 g) O- b A
# }' L4 z. [: U然后你进入functextcmd.cpp并添加以下# D6 d4 i. ^7 C( t: P! X
2 A/ \9 R$ x- u5 n6 {5 d$ R代码:
1 N4 M& V* J: k; TON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
6 _7 G' K$ X. [& R2 x# j下面插入7 \# H* B) y# _
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) $ U7 ~# y4 i# h* z
, L! e( a$ @: \1 `+ v! y
然后你去5 ~$ n, a0 o {% s% q8 ]
$ Z1 C1 }! q1 ?( Q代码:, F4 m6 l/ K# S! X" ~9 w
代码/ g2 T2 P: O+ Z Y# M% `7 [
BOOL TextCmd_ClearPropose( CScanner & s )4 k! I* i7 t* x o2 C. c+ P
{. ]( B1 w0 ]/ w" ~: H7 w
#ifdef __WORLDSERVER; B) v; \# a" f1 }. y6 g: j
CUser* pUser = (CUser*)s.dwValue;2 u) m, s4 U! R+ M% ?1 l8 \
g_dpDBClient.SendClearPropose();, j& h$ c* i3 E8 B! Z9 @6 z
#endif // __WORLDSERVER4 k, ^/ `7 I: O+ D
return TRUE;
5 O+ Y: U) R/ G8 ~+ f$ {}2 Q \6 t5 c! p! ^
下面插入
. |2 }6 L( s# o9 W. [4 k$ l4 ?BOOL TextCmd_rebirth( CScanner& scanner )
; C& q1 r. v1 E. s, H2 ^/ u{
+ I& ]1 Y+ Z, k$ n7 ?4 U; Q#ifdef __WORLDSERVER
1 L0 J# m3 Q9 f6 I5 @CUser *pUser;
6 P( k5 |3 Z) ypUser = (CUser*)scanner.dwValue;1 x" M7 @9 d4 }+ D% ?
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())# u) N- `4 e4 Q I
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
' O2 A6 i" M: N; Y9 K% j& ~" nelse3 G$ g& t5 U3 A
pUser->AddText("你还未达到重生条件!");6 {' B' u) C3 @& ]7 V
#endif
7 }) o4 R3 \& J) O5 P+ n" [. Wreturn TRUE;) z" N& }- |, Q( z- {
}
2 o0 s& G- b9 W9 a( R8 m5 `) B/ i, k. C5 x# I+ b# C. V- e% t
5 @% l, ^# s$ K* r8 D9 u
$ R' E0 i5 X& q5 V3 O2 b! }0 ?' k W `6 R7 f; M4 w6 Y
|
|