|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
; Q: y. |. [ Z$ R0 N
3 b0 {8 ?& s1 T' d* m* C) f& CMover.h
! W; @8 L) \+ d代码:/ v5 f7 }+ _: j y" K- L. B* }
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü4 ]+ M8 p# T5 l
3 d+ l& T! O6 S3 n) S下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; ( L$ F0 q2 X; P3 n
3 y4 l; \$ q% I. x# N
然后你去mover.cpp添加; O ~* W) r- \% D
# d- U* D) Z/ L" \% w
代码:
& w* `% ?% X8 vvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )( @ h, a* d+ f% z
{+ d$ g8 b; n, b
#ifdef __WORLDSERVER
! r% w4 S- Y) [6 k6 f // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
" j2 o" D9 k% | MoverProp* pProp = GetProp();
! Z4 R' n* _5 i$ ~% r( `; a; [- s if( pProp ); j7 T, ?3 {* n
{ c6 M8 l* h8 d8 b4 ~5 ` y
if( nJob > 0 && nJob < MAX_LEGEND_HERO )2 E" f% f- m: l
{6 y" C: H: l m' K# F5 l6 O
AddChangeJob( nJob );
* M- [* y# h0 M }else{
: L+ s( o1 |" ^7 G5 w2 \! k return;
) N* E. ~3 A: w+ V }, r3 `: a( T! i$ |- n
int nPoint = 0;5 I7 J% S+ t3 ]& W* H
if( m_nJob == JOB_MERCENARY )
( g% k% H c8 |5 a nPoint += 40;
% p) f; u+ l5 Y8 Y% Z' v else if( m_nJob == JOB_ACROBAT )( R$ b; M! K K7 f
nPoint += 50;$ E) {9 N7 h% Y9 `
else if( m_nJob == JOB_ASSIST )
. \0 Y4 F0 m" a# h1 P nPoint += 60;; G7 D: o8 g3 ~$ k5 T
else if( m_nJob == JOB_MAGICIAN )8 }$ L: [& L* u: [" u$ t* w+ m, P
nPoint += 90;- K% e8 V4 F0 X0 y
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )2 ]+ I6 w- ]% b" N/ A" O
nPoint += 120;* k! x, T* a2 Z9 e/ \
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )4 ?: t0 @; W9 j6 S! f/ ?6 U
nPoint += 150;3 n3 G. _; k3 i! `$ U- K: x+ C+ c
else if( m_nJob == JOB_RINGMASTER )
1 P2 K3 s: `% T% R nPoint += 160;$ M& p: _; U5 b7 M. n4 \
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )# u2 V; k) h) H8 m
nPoint += 180;8 g* q7 p3 l! G: l
else if( m_nJob == JOB_ELEMENTOR )
! }0 [7 l8 l6 g3 S nPoint += 390;8 r0 ?: V- }- l5 I. k5 |
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )1 K& y! }+ n' _* `! z
nPoint += 120;
# a$ o1 u# H; ~8 \ else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )) N* [! E G, e* U* n; G. L
nPoint += 150;
4 Q7 P4 r% c0 @, z: d, P else if( nJob == JOB_FLORIST_HERO )
) R) U6 u- S8 D1 c nPoint += 160;' X& A7 K& T3 ^( L. K
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
( ]; e: M3 k+ n2 x+ W* X nPoint += 180;
8 C) ~1 E) P% M1 ?6 i J' ` else if( nJob == JOB_ELEMENTORLORD_HERO )7 ? A; h0 _5 [: G" o
nPoint += 390;) ]" C/ H' o5 K+ L: ^, a
" b Y1 a. z7 K( W: @! v
AddSkillPoint( nPoint );! [# H3 V! b& C
m_nLevel = nLevel;
6 P4 O& m0 J$ h, F* ^" A) I' \% O/ B" A: N6 }$ s+ O
SetJobLevel( nLevel, nJob );
5 U) o. y; X8 B m_nDeathLevel = nLevel;
T) d$ A& a$ y, U#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
! K, w5 r( y( S' T$ x if(IsMaster())9 \# `# E$ h, {$ D. `! s
{
3 n$ P/ J6 M" c8 v. K) R, z* _* I int dwTmpSkLevel = 1;//60, 72, 84, 96, 108. e: E. c7 r8 e
if( nLevel > 59 && nLevel < 72 )
& J4 }5 J) C2 Y' w5 r" R4 J dwTmpSkLevel = 1;
* o, t! U/ ?( { else if( nLevel > 71 && nLevel < 84 )4 j' Y- S" f! `
dwTmpSkLevel = 2;- C; Y/ L" P2 r+ G% L8 k
else if( nLevel > 83 && nLevel < 96 )
& j9 }/ a) \& R& R( U dwTmpSkLevel = 3;6 e( O( |6 {3 h* x, P5 @
else if( nLevel > 95 && nLevel < 108 )
7 e) E2 K6 W" G dwTmpSkLevel = 4; L+ z1 \$ M7 L i
else if( nLevel > 107 && nLevel < 120 )
( V! W% A3 z, L; i dwTmpSkLevel = 5;1 y2 ^; r; Q9 A! z \- r6 r. N
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 9 N3 @4 c9 D6 j( J8 S; j" X/ e/ k
{ . s: R* ^% z9 n! r# l2 k
LPSKILL lpSkill = &(m_aJobSkill);
" ~6 G$ H! k4 u1 S+ h' t if( lpSkill && lpSkill->dwSkill != NULL_ID )
6 p& s; H* H3 g) G0 U {
: C8 j# q9 W8 [/ Q* k ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 0 \; Q- @6 W: j& g
if( pSkillProp == NULL ), d8 R6 G+ k' h& g' @% n6 Q. o( K# x
continue;, I; Q8 m1 p/ F( e& ^
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
& o9 i$ \8 B- R continue;
! W% t! Y( C9 V+ G$ G lpSkill->dwLevel = dwTmpSkLevel;
% L4 b, Q( E; P# C' { }6 @, b' |, E6 B. P) R
} R* \7 e( }7 T1 o( a8 F
}8 z( n& q3 r* n/ A1 c
else if(IsHero())
5 N9 u4 \- g9 A& F2 }% `, v {8 j( Z6 y7 W+ I
for( int i = 0; i < MAX_SKILL_JOB; i++ ) % x# {3 C, |7 R q9 N
{ 4 A4 z% X1 ~' F& b
LPSKILL lpSkill = &(m_aJobSkill);& w! t" n; s" l7 d5 A& w5 M
if( lpSkill && lpSkill->dwSkill != NULL_ID )' e! f) N) b* D' ~
{- K- H1 P3 ~: i g6 ]; G S7 H* e! r; j
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
" y; }6 Z& p5 ^' Z: u! u if( pSkillProp == NULL )
" e& l/ C8 @& f8 X+ `7 q: @ continue;
R- W" Y; O! k% s& D( E! z if( pSkillProp->dwItemKind1 != JTYPE_MASTER): e: t# a! K+ m: { V+ M% m
continue;* L6 x+ j! r' [, @+ S0 B* U6 E0 a" f
lpSkill->dwLevel = 5;
4 n% r# T3 G2 f0 N" g }
) [: P3 B- p# u: A }
! L8 B( ?& ~- v3 x5 r A2 d }. ^, x, m2 a0 Y- E% q
else if(IsLegendHero())
7 [8 j( l# Q5 e# ~ {
9 A) [" F* E3 ^" q% L' r$ V for( int i = 0; i < MAX_SKILL_JOB; i++ ) " p8 U, |# `5 y" X. U" T$ Y: O! W
{
9 t- O" w6 V( ]& Q% o, i LPSKILL lpSkill = &(m_aJobSkill);
* _8 L) d) V2 O6 D) c if( lpSkill && lpSkill->dwSkill != NULL_ID )
" j# K+ z1 T- K" i {
5 r1 R: Y2 ^9 O, N ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
+ A. S# e; q0 D if( pSkillProp == NULL )& }# o2 m/ N# Z) W3 D: ~( S9 R% B
continue; A+ J9 Y* z3 Q+ m$ X
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)5 t' Y8 N6 N8 u( b
continue;" z+ f+ |/ I7 N
lpSkill->dwLevel = 5;! m# C% T/ }! T
}
# D; \# q. D" D0 V }
9 _8 }! L( p4 F# U }
) l8 K; k1 V& M2 z5 i; u! ?#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans% g" o( U' X* F6 T% H% S( ?
if( bGamma )
! [) x1 e3 P) J, d5 p {8 S7 L7 i* \' }; {8 E+ Z5 B% T9 [7 |
m_nExp1 = 0;
( @1 D* s6 z) |9 k- S) c) }2 E5 E }
% ?1 ?2 v% K& d( V0 `: f* z. Q4 P5 U9 F6 v$ ?
( (CUser*)this )->AddSetChangeJob( nJob );
~2 t) t3 _3 \& h) c g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
/ B) v% I8 A# t0 |! ^
) I2 |2 t; I7 x+ q1 j3 U- S$ b+ A5 k. Q; A
#if __VER >= 11 // __SYS_PLAYER_DATA# b) v( e( C \0 A+ x x3 e( \
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );7 b) ~& ]4 D \6 c
#else // __SYS_PLAYER_DATA- v0 o- S2 n' c9 T9 A& K
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
0 b, t+ _0 q% n+ I7 o g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
% b1 W( {) ~4 B, q5 Q if( m_idGuild != 0 )
% ^7 c/ a! t* E! M$ |% c g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
% t6 q' G8 S3 E; d2 m) v#endif // __SYS_PLAYER_DATA- k0 X9 Y* c7 U+ y# o2 i' ?
SetHitPoint( GetMaxHitPoint() );
3 O5 p; C* f: R: G1 G1 R. B SetManaPoint( GetMaxManaPoint() );; r. z. p6 d( A+ ?+ M$ p
SetFatiguePoint( GetMaxFatiguePoint() );
9 R* d5 n! W* i9 s% G if( nJob >= 1 && nJob <= 4 )
* w' D2 g' x) X2 [: K {
2 E9 _, m$ T- o0 }4 G! B1 h m_nStr = m_nSta = m_nDex = m_nInt = 15;
) c* C& a: {5 k: ^: N B! b5 c m_nRemainGP = 28;
0 {7 A! S8 h! _5 ~% e }$ z b" h/ \3 q/ Z0 w3 s' \* P
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )* i1 d, l6 G" h* o
{
4 ~8 o6 K: ^5 m' ?8 s& j; X m_nRemainGP = 118;8 s# L8 w4 ?. V8 P/ }6 V# x+ p1 Z2 p" F
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
2 l2 o* |/ }$ x# R# y! C. x5 i m_nStr = m_nSta = m_nDex = m_nInt = 15;6 a. Z' A3 v$ a8 y! X9 y- R
}
' \ K J# ^+ S+ o( w! d if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
/ Z r; K- C6 h2 \1 m {* c8 l4 q5 \; j8 T
CItemElem itemelem;/ Q: U) J; S+ C
itemelem.m_nItemNum = 1;& E% h5 ]# Y2 \! H2 c+ x$ R
itemelem.m_bCharged = TRUE;
1 E7 s1 p8 A( Z: l0 R BYTE nID;
3 y1 ]+ t& R4 |: g
3 j# F/ O5 l' G+ P, Z6 ? if( nJob == JOB_MENTALIST_HERO )
7 N( \# q6 m# m( K- x6 J itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
7 v4 p# d7 w9 F I! V7 P7 j+ Q if( nJob == JOB_FORCEMASTER_HERO ); v% \$ O$ n9 o2 `# }% i3 G
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;% N6 M8 U" F! f, Q. L1 X
- o! n% `3 c7 g) s# @ ( ( CUser*)this)->CreateItem( &itemelem, &nID );3 i8 O: i3 O6 `, K4 D/ j
}+ p1 S" h$ P) `0 x
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );( x, n# p1 x% N
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
. x7 [! N9 G' Y7 b/ C2 J$ x ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
& p# h9 {* S4 e- z Z /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
( | l2 D v/ \# c% l ( (CUser*)this )->AddTaskBar();*/
2 ?7 _1 r4 k' M6 c/ l9 K7 Y- U' C ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );2 L/ o3 ?4 [* p4 z$ `
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
" ?/ M$ {& [; P9 |8 I8 y ((CUser*)this)->CheckHonorStat();$ J% s0 L" r# E+ t! _9 H2 e
((CUser*)this)->AddHonorListAck();2 s* \- j0 X. Y, z# `; I- c+ P* `
g_UserMng.AddHonorTitleChange( this, m_nHonor);; q* G2 ]) R6 n! t/ ?/ t9 Y
#endif // __HONORABLE_TITLE // ′Tà?/ G' [. D2 x# {3 Y: I' E
}" n2 n" ?' L, k
#endif // __WORLDSERVER: s* i6 L. T. V
}
7 @; l/ I- ^* k2 Y! ?% J8 ?& ~- x$ Z% D2 J* X
然后你进入functextcmd.cpp并添加以下- A8 ^" J, Q( |1 G7 e
- g/ g4 |. Y2 h4 x- d& ]; d代码: K9 w! m9 R7 H$ k3 O7 M
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
/ T: ~' ]7 I; C! \# P) j下面插入2 t/ m2 F! C) e% L- v
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ' Z, Y+ q6 H/ {+ k7 J# m8 Q
0 W" e' C1 Z; t) W然后你去
- M" P/ u) U h+ q ?! A
1 T* e, X \6 l; M! D代码:: h8 X' ]/ p2 T3 s1 s
代码
- h3 @& J7 Z; \' A# a; ~, C: v: l+ GBOOL TextCmd_ClearPropose( CScanner & s )
0 m; c1 u/ C3 W{/ l0 [! s0 E+ [
#ifdef __WORLDSERVER
* H; n. q* T* d/ a) N6 n$ n# G1 H CUser* pUser = (CUser*)s.dwValue;* Q/ y" C) V. D7 P5 M9 I& N6 ~) c/ w
g_dpDBClient.SendClearPropose();
: j+ ]4 }3 ~# W: G#endif // __WORLDSERVER
/ r8 c p0 x2 o# E4 g8 E return TRUE;
' R2 h! h% o1 V) X}
& `! d B$ H' p' O5 z8 ]) Q, o下面插入
2 J; T2 v4 v$ J9 V( |BOOL TextCmd_rebirth( CScanner& scanner )( M; y$ H, Z; a0 j2 ]
{+ p. v8 ]' t' K& _' c
#ifdef __WORLDSERVER
4 e# s8 `8 @+ Z% L2 QCUser *pUser;& Y" d+ F# M. Z: J
pUser = (CUser*)scanner.dwValue;9 T1 h$ t$ L4 |; y$ b9 \! ^
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
/ K1 H% U I0 E/ B+ \1 {pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
. t6 q v: X* F: Delse* \3 [" t3 Z7 T- x8 T- d. ]
pUser->AddText("你还未达到重生条件!");9 v9 X& u) k0 I) W$ [5 a
#endif+ q, l9 O1 q4 p* H- d
return TRUE;6 t: e0 F; e# e: q a4 p; U/ m
} 5 O4 C4 n1 _5 L0 s- a. b& g' t
' R) i _/ ^6 b
1 {/ C' a# V: E7 q. _ l, O2 r( K5 F3 U; `9 K9 Z
- n& G% i; S/ A2 g$ T
|
|