|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
8 r8 l" o0 j4 L
+ f5 ~* g2 @7 x. ] R, j/ eMover.h: V4 G" I8 s. S6 d) J/ e
代码:% ?% W" I5 [+ b3 k2 ?1 N7 T/ Y
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
+ d$ _) F( F# D+ I9 d. Y, `! z# P: e, P# H- |1 l) e
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
6 A6 H! d0 y- r. t( n& _* t( v6 |; A
然后你去mover.cpp添加
7 j: c# E9 B' G- z |# ?9 c' O3 l2 P! T
代码:
3 U+ M3 t$ U6 o Uvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )8 J$ {) B1 {$ R( ~4 f6 W' M
{/ K; ]- C9 V" D& i# q
#ifdef __WORLDSERVER
; ]/ _2 I- l' w. Q; O // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
2 {$ u' I: q# E5 L6 _ MoverProp* pProp = GetProp();7 p7 Q: R; O5 v) x; v4 ^) e
if( pProp )6 {8 k- u) F% d7 I& S5 ?2 k ~
{" M5 e( f! h7 l$ x& C n
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
6 m8 \# i n+ ^6 V% J5 c8 I% z {- a- x& K0 o9 S; Y' l/ P
AddChangeJob( nJob );- Z2 w" J" T( O, D( R% Z
}else{
3 }( V4 T' p4 a `4 p return;$ u0 [& ^( ]2 l- U2 j& T
}
7 V. K4 c- A- n3 G' n9 r7 t% T int nPoint = 0;
& h+ ]4 g5 V, o4 S5 d* l' V if( m_nJob == JOB_MERCENARY )& E. U, P: b3 \5 J |
nPoint += 40;% Y# V' F3 ]. F( W& x, Y6 Z+ G
else if( m_nJob == JOB_ACROBAT )8 u \; W+ B3 V& b1 R
nPoint += 50;. e, q1 Q( h7 q$ l& A: \3 _- h* F
else if( m_nJob == JOB_ASSIST )
/ p: O) e( a* O+ H0 s8 J) g nPoint += 60;
" s. H% V. {5 @& s7 h+ E9 l0 w else if( m_nJob == JOB_MAGICIAN )4 f6 [' n' q" W
nPoint += 90;. ?, G7 x5 Y3 m, Y
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
# e/ h3 z8 j4 e! o nPoint += 120;
) N% `) @) V2 u* ] else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
* t; @5 b" x( p* N4 R nPoint += 150;
, S7 O. x/ B) p* m else if( m_nJob == JOB_RINGMASTER )
! ]8 K0 P- q* u nPoint += 160;4 Q5 W5 |" j+ W( @. c) j
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )" ~) n$ {1 P, Q
nPoint += 180;7 u8 ?$ g( A( Y4 h: D1 J5 V
else if( m_nJob == JOB_ELEMENTOR )3 `: n' {! R8 P; i' @+ w
nPoint += 390;
3 C2 q5 ?& i( @2 K0 S0 h# ` else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
; L1 v* i; K* b6 i& Y; p1 Z5 z nPoint += 120;
8 W8 f8 J( x( |8 D" V" ~ else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
0 g1 }3 ~& e4 z3 i: q nPoint += 150;
" X" a# G* t/ ~" F) j else if( nJob == JOB_FLORIST_HERO )/ N( b7 D$ w* A" l* F0 I
nPoint += 160;) |( w8 ?$ P) W6 s$ t
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
% j# ^+ d, {$ Z( t1 ^0 S nPoint += 180;' i- k8 c2 n8 _5 ?! A
else if( nJob == JOB_ELEMENTORLORD_HERO )
# J: \9 G$ u7 G0 P1 Q nPoint += 390;
, k* N+ d$ J/ K) g9 }7 {
7 a/ U' |& A, K( a9 c$ _ AddSkillPoint( nPoint );0 C/ c- d6 b8 y
m_nLevel = nLevel; `. O- ?3 A/ S. B/ D
- ?* f, {5 o3 g$ \. i# o: z1 j: R2 @
SetJobLevel( nLevel, nJob );
8 J2 O3 G6 h$ q m_nDeathLevel = nLevel;
; U$ U1 j9 u$ P' A& N) ?. T4 `#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
. k5 }5 w" o2 D2 L) T; C Q if(IsMaster()). [1 |' }" B5 n/ e& m: P
{0 R2 H6 j) x1 Q( e
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
- p5 h, `3 o3 `; b; q. }' \4 | if( nLevel > 59 && nLevel < 72 )
7 |( ], d4 r5 Q9 y( P! s( ] dwTmpSkLevel = 1;
& Q) p( v# D) @6 u. [8 } else if( nLevel > 71 && nLevel < 84 )& Q) I# B B, ]9 s p% `
dwTmpSkLevel = 2;0 h0 d, n- P+ T) v: `: K3 ~
else if( nLevel > 83 && nLevel < 96 )
+ K0 V+ Y9 V- y; j) d" A" y( H dwTmpSkLevel = 3;
: D& X! K, c) _; j4 P6 U else if( nLevel > 95 && nLevel < 108 )! x! Q: ^; T7 h0 ~' J
dwTmpSkLevel = 4;$ m) C, C, m3 Y8 m9 C8 a( s8 S" A0 n
else if( nLevel > 107 && nLevel < 120 )8 ~* P- o: r" b9 K+ n. ~; L" [) U
dwTmpSkLevel = 5;/ H2 {/ |' q4 B k J" ^, C
for( int i = 0; i < MAX_SKILL_JOB; i++ )
6 O" t+ g5 I# H' o! f {
0 q) C* L% g% X# G. ]( i LPSKILL lpSkill = &(m_aJobSkill);
; T$ w" R8 X8 j. x! t$ D$ G2 f if( lpSkill && lpSkill->dwSkill != NULL_ID )8 t: J u! e: g0 g* Q
{
5 {2 x8 _& H! d! g; h$ Y6 ~ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
4 J1 W, |6 Z8 [* m if( pSkillProp == NULL )1 C) q, C3 t2 q7 A8 c( i
continue;
4 D4 R. M# \- w if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
" _$ ~5 y- Y2 \/ x2 E4 t continue;: i! m; s* U" g1 B; N
lpSkill->dwLevel = dwTmpSkLevel;
8 Y$ _7 j4 {8 a- Z% a }6 s, `2 v$ i8 k, \/ H3 T
}
+ D' `' \; v/ Y2 w }! m& F; b8 Z# C# Q+ T1 P
else if(IsHero())6 Z$ L/ P8 s$ z$ s. E
{) m/ \/ M! ~6 J4 Y e
for( int i = 0; i < MAX_SKILL_JOB; i++ )
$ E/ m8 z: F6 }( c( D: \ { ; z8 w" O; {* l6 H) K, ^
LPSKILL lpSkill = &(m_aJobSkill);
7 t: Y3 s- h6 D6 ^# _ if( lpSkill && lpSkill->dwSkill != NULL_ID )
* ~2 A) n% i1 B {$ D9 \% D& k# \* i* f l
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); " ]6 H9 `2 k/ }3 |1 Z" ?
if( pSkillProp == NULL )/ q+ j, _* I5 G( m; v; L. [* P
continue;
$ K! U H- L+ J% r1 ~6 |% v if( pSkillProp->dwItemKind1 != JTYPE_MASTER)5 g* G8 f& E. q8 T
continue;$ O7 t# u5 b2 s8 N# V. R2 H# c
lpSkill->dwLevel = 5;
# O: l7 h4 y7 `* v& L, E# e3 z1 N) w }9 H! x/ m; C' n" f2 ^( i3 y9 }- V! K
}
. K h1 w ^# G; T' X0 \ }
: ^1 I( i4 X! {6 @0 | else if(IsLegendHero())/ K+ t! Y8 L9 G. i/ V5 F
{+ G! o% A2 U/ Y* D9 Z3 @
for( int i = 0; i < MAX_SKILL_JOB; i++ )
" V$ `2 F; o: W [1 ?) h I4 o& s' H+ h {
+ d) v; S4 P' K( C; Z. B, P( Q( y LPSKILL lpSkill = &(m_aJobSkill);6 f; d1 P% v5 s
if( lpSkill && lpSkill->dwSkill != NULL_ID )
, p. n8 m# j; [8 Z1 {! v& I( e. x& p {" m' i! [5 b2 y% ^
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
Q! z1 i4 A5 G& L; i if( pSkillProp == NULL )6 V. D1 [+ }! F$ Y4 y9 x- I) ^( ~
continue;" H$ W# R1 e( u4 I* D
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)+ _5 g y) t. i) k/ M
continue;: J* W0 Y' b: c$ w% T
lpSkill->dwLevel = 5;
/ i1 _7 C, \* Y G: l$ B+ Z F }& a$ d5 C7 u* d t
}: v2 c5 m6 q' F7 @4 T5 @4 L
}, y5 B& z7 K; E) Z
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
) t$ D+ A/ @+ K! W7 I" Z if( bGamma )
; [$ O' v; S+ j% C {
j, ^+ S. {7 u; a! H5 n m_nExp1 = 0;
7 [1 p) B+ e9 D }
+ j Y6 S& }6 l9 j2 u* O- L$ j# m2 D* l4 a! f
( (CUser*)this )->AddSetChangeJob( nJob );/ T* k6 j* d* ^# d. X( t
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] ); s$ d m8 ?8 d9 ~: e7 A9 Y- q
3 {# U* J( p/ ] |: S! C& ]- s4 m
1 |% s! k6 a7 Z2 V2 T#if __VER >= 11 // __SYS_PLAYER_DATA- t1 |# P0 R( r
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );: j8 f! s# I# C( c
#else // __SYS_PLAYER_DATA
0 g1 X1 Q6 S1 u% s* S: z g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
$ b3 E: d& m: d2 n7 \ g_DPCoreClient.SendFriendChangeJob( (CUser*)this );( a: G0 u3 K# f2 L% H: u a' |
if( m_idGuild != 0 )* U. |5 [. |8 C, y0 v+ |8 z* p
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
; d2 q( X1 w8 y#endif // __SYS_PLAYER_DATA
( q/ q- W' m! [3 T SetHitPoint( GetMaxHitPoint() );
+ |9 L0 l+ [% l3 \% j) [ SetManaPoint( GetMaxManaPoint() );
/ k* P1 z2 U8 i2 z% q" @ SetFatiguePoint( GetMaxFatiguePoint() );+ L8 J* R8 H( t$ e
if( nJob >= 1 && nJob <= 4 )
, u, x8 t3 ^. H {
$ W; F0 {7 N- _/ e% `: G @ m_nStr = m_nSta = m_nDex = m_nInt = 15;
+ N! T- F5 w: f( X# U( c& s# y5 }. c m_nRemainGP = 28;
8 Q0 k" D6 \9 e" F- l! ?. A2 t }% r) w2 J. b, B$ B! O9 k$ a. e& C
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )( x* ~% A- b9 g5 F
{/ F: \5 U- ^! t o' }/ W
m_nRemainGP = 118;
' B9 u- f% y& n //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;. z# t3 R/ N" X. @0 x& Y
m_nStr = m_nSta = m_nDex = m_nInt = 15;7 b# Z+ T0 n% k p' [+ T
}6 ?2 R6 b% ]- n8 Q
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
% t9 I5 b- ]1 g2 D) q( @ {/ U) ^& P; V4 {2 E, L, N9 ~% j
CItemElem itemelem;# I$ }$ v+ |& i& w: [6 ~+ l k. Y
itemelem.m_nItemNum = 1;( W2 M3 L7 | i
itemelem.m_bCharged = TRUE;
' a7 M" J8 |; z5 _$ @6 r BYTE nID;- l5 i. `- Q4 s1 ^; n
+ m, E7 n( Z9 ~% [* Q5 }3 u3 @0 ?% e
if( nJob == JOB_MENTALIST_HERO )
5 n) T) b. i" f* k3 }$ c% |- t4 l itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;0 n2 |8 F% Z; A l- _# ]$ z* U$ Z
if( nJob == JOB_FORCEMASTER_HERO )
) p6 [/ E, t* t& T6 O itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;6 F H; [& E, z+ j/ d3 o
$ ^) a+ [ B( v ( ( CUser*)this)->CreateItem( &itemelem, &nID );, h" T# k4 x6 K
}
. g- \" s4 s! p5 E8 R g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
9 i) H* |+ ]7 h5 u- Y! n ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
, ]( y$ f- G; s8 r0 U9 H* G ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );3 D: }4 M8 l# Y1 R" b# }! P
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );, U5 Q4 U* z% C( P; @5 ^! t6 C
( (CUser*)this )->AddTaskBar();*/# V; J# D1 y$ `1 Q& [" z" o
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
. h6 F5 _7 ^ v6 @5 l, j6 D7 q& l! l2 a- b#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
7 s, k( C7 c, v# l ((CUser*)this)->CheckHonorStat();
" ?. H1 \+ v/ Y [3 K ((CUser*)this)->AddHonorListAck();
# t6 f! `8 X' Z/ g: U/ E; q3 @ g_UserMng.AddHonorTitleChange( this, m_nHonor);
- \; C/ l+ z% M4 f; x6 S- P8 ^ O; r#endif // __HONORABLE_TITLE // ′Tà?
! d% p% V. R0 H$ x! u0 k3 @ }
! }4 p; K2 D2 d#endif // __WORLDSERVER
, Q7 M8 a* P* m- D9 u}
4 P ^" R/ l) O6 e( o. m C; N$ Y
' ^: o, @: H/ ]3 B: ~; Y2 ]然后你进入functextcmd.cpp并添加以下$ W8 H8 x* l+ A$ z
$ D" N- b9 I0 R1 K% P! V代码:
) S5 P' o3 G# TON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
- y. ~. G9 q/ c: E下面插入1 u6 |0 F# h0 z5 T: L% C
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
+ b4 `- K4 A( B5 n# f& Y# ^( c+ f. ?. }# r G9 t$ u
然后你去' |5 t" k. q* u9 t0 ?# H( I# `& e4 ^
3 J* q0 W1 O" d4 e代码:5 p* ~& u( e5 r. h$ h
代码, l' l3 f7 ^8 `8 A" I& r: n
BOOL TextCmd_ClearPropose( CScanner & s )
8 `" U5 N7 k( l9 ^* Q5 F{
" R) ~# @1 g2 S#ifdef __WORLDSERVER6 k' ~, G. b; x+ R1 [4 j! e
CUser* pUser = (CUser*)s.dwValue;0 R4 t* [" j/ D$ X5 \+ T5 K5 C
g_dpDBClient.SendClearPropose();
) I) l& L% @8 U& v#endif // __WORLDSERVER
0 }+ I+ T( [$ {" F3 z; k7 ~ return TRUE;
, e3 ?$ k# G4 l: L- N) K( I}) p; v( h' c- o _
下面插入% @3 w* i. R' o5 l- J4 @2 u$ _4 v
BOOL TextCmd_rebirth( CScanner& scanner )
" d, {0 R3 m, l- s{
8 }% y& m, N7 Q#ifdef __WORLDSERVER
% _ T5 @, Q2 u$ B' y6 C5 ^$ |CUser *pUser;! P! e$ ]5 E G6 v6 Y. G- m9 C. q
pUser = (CUser*)scanner.dwValue;. @/ M: \9 ~' f+ J
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
; J! ?7 y J6 G+ d! c9 F9 OpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
6 w1 Q6 S$ [0 welse" N& o) Z4 }* ?0 V( `9 z
pUser->AddText("你还未达到重生条件!");
9 F: O% f# [: i+ H. I) m/ g#endif) M& F) _4 B5 c4 X4 G, S1 \
return TRUE;, M* G) Z, @* b% U
}
9 ]* S7 }9 {$ p$ W( b7 ]. S& X9 N) m+ V6 G) b- {) S9 i
8 `* ]- q7 W* o* O: Q2 K5 \
" f" \) d, b+ E1 n" g6 d9 Z* @7 u
. R3 p" M$ d$ [) f7 ?0 ` |
|