|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
3 }$ I; i! ]2 u; i2 d! i. |1 F0 F* F) g; p
Mover.h
2 h' K" _ }) s! X: H1 V代码:5 \( N+ H+ w% E! y2 N$ m5 J
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü( l7 c8 Q- o0 k
6 L( E8 u! J, V! ?6 Z* i# g
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
2 k& R3 f8 K# N6 c# ]& d
; c" _' _* N# a6 Q9 |然后你去mover.cpp添加
0 J7 e4 g {% D" V* Q. h7 z' Y4 q: ?3 S2 f( s2 ~
代码:# m8 L" ]& X9 v7 O# L; {
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
' }6 f3 d' f2 y# k! a' j4 `{
& c ]2 H- w u5 j! [/ o#ifdef __WORLDSERVER
2 |. |1 l" ]9 v& j4 K _ // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
5 R5 u* U) n1 j+ g# [: L MoverProp* pProp = GetProp();
+ H9 S+ X0 `9 |$ M, R( S* h2 ~2 ^* _ if( pProp ): v2 D2 j6 ?+ ~0 H
{
+ j9 ~, \' H1 l if( nJob > 0 && nJob < MAX_LEGEND_HERO )
7 r, V) w. b6 c {5 a, E( T! Y6 E
AddChangeJob( nJob );: J2 `* W/ R; [ o5 A2 I5 `
}else{1 B8 R6 H# k% A! x# {4 B& z3 e
return;
6 E; z: {; J k$ o# s }9 ]3 w; x5 Y1 v, a2 o: F
int nPoint = 0;" d3 M9 I# X' ^
if( m_nJob == JOB_MERCENARY )
$ S e- ?) p) U# | nPoint += 40;
, ]% _ E3 Y; w else if( m_nJob == JOB_ACROBAT )
& E! V& W! z6 I8 ?: F7 M, O/ Q4 u nPoint += 50;
" Q: a, g. k9 n0 K/ E7 l, r: B" q else if( m_nJob == JOB_ASSIST )
6 E7 g( O/ v e0 f4 V: `) J% d nPoint += 60;
/ h8 r& R1 q* ^1 x" I* Q8 L else if( m_nJob == JOB_MAGICIAN )/ c8 v2 S, J; x8 j/ B: U" M
nPoint += 90;* u5 E0 N# T& e& U+ T
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )- k% W" K3 W8 C6 X: M4 ?, r/ \
nPoint += 120;+ r6 _5 ?( A2 V0 f
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
6 G+ y" K# w! F nPoint += 150;: j0 H5 Z3 | M4 M% t4 V1 T& H
else if( m_nJob == JOB_RINGMASTER )
2 p$ |. M1 s1 O nPoint += 160;9 A& O/ h, r) S/ \/ o M: ~
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )% W8 w4 T$ J6 T! ?7 z+ O
nPoint += 180;7 b) B& g2 v, g3 u
else if( m_nJob == JOB_ELEMENTOR )
5 P7 e; P: N$ [$ v6 T& x nPoint += 390;
w& f7 L1 R5 \9 e7 k5 p else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )8 V" T) d& Z) M7 }0 G+ n
nPoint += 120;1 o. g) i# _& o) W: F' }* [
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
6 h# H6 E C9 u9 l+ j. l( ~! r' F nPoint += 150;
3 C; r2 ~2 o% x: Y* A2 K else if( nJob == JOB_FLORIST_HERO )
! S: h; y, R1 Z: r4 K nPoint += 160;. x/ y V0 k% q
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )4 ^% K5 Y& H$ p* A( r
nPoint += 180;. e/ I4 O; y8 t2 f) \: D
else if( nJob == JOB_ELEMENTORLORD_HERO )
1 j( F5 v6 ?. ]) z5 l* H9 g: C' _ nPoint += 390;
5 T; M% S* I3 o7 y/ _
z3 X' A' F% q4 ~4 W AddSkillPoint( nPoint );
# @% z7 p3 @+ N m_nLevel = nLevel;# E8 E0 l, Z: h. r2 c/ V
7 U7 d- [) S) K) B- `
SetJobLevel( nLevel, nJob );
( l) E; k) p+ ]9 T) |0 C) P m_nDeathLevel = nLevel;
# S+ [+ z& ~0 _6 m& Z: w8 @#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans1 D0 @- S. e1 M' x4 C3 }, l' q& {
if(IsMaster())
1 I1 M1 h+ {/ Q4 A {
9 J8 w$ _$ v) q7 P9 ]7 X: v int dwTmpSkLevel = 1;//60, 72, 84, 96, 108% W( L% C3 R O& P: t
if( nLevel > 59 && nLevel < 72 )& A/ o2 d3 @9 {* d/ N
dwTmpSkLevel = 1;
1 {, T0 E; M& y$ V9 x else if( nLevel > 71 && nLevel < 84 )5 C% G. J1 }$ ~- B+ s! o$ n
dwTmpSkLevel = 2;
: [9 I- w- \: _7 A& D8 X else if( nLevel > 83 && nLevel < 96 )
# J' j& \- F3 `, s8 Q dwTmpSkLevel = 3;
2 t7 v% a7 ~! I) v! e else if( nLevel > 95 && nLevel < 108 )4 T8 E6 p6 U1 Y8 o$ }, [
dwTmpSkLevel = 4;
. m7 M" ^* l' f* g/ H. j( U else if( nLevel > 107 && nLevel < 120 )
5 a' @& d* a. C; A9 p/ k# k( y dwTmpSkLevel = 5;! F7 n! v$ g: @
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ; a% c9 m2 T; Q. _0 J# N& ?! E
{ + `$ g4 `! D/ c" U3 U% b/ _
LPSKILL lpSkill = &(m_aJobSkill);
& C7 d/ @ g* }5 P5 J, Q+ M- B, x8 p- W* C if( lpSkill && lpSkill->dwSkill != NULL_ID )3 Q( l6 K% F; \
{# C h6 ]: v7 M# q5 u* m/ f
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 7 G% ~- H$ g7 g# m! ~4 p
if( pSkillProp == NULL )
& V0 l( r& I q% ~( M$ X. O( N continue;+ c; ?$ y& c1 U. c& r- X/ h* W
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)/ G5 @- `8 p. k! h: p! W; b
continue;5 Q/ u& D( W( a3 A
lpSkill->dwLevel = dwTmpSkLevel;
3 x7 U9 z F' o% e) q8 d }
$ q* `/ A! |: W- f }& R# z9 D) @$ R+ b5 z3 T/ D7 i) ^
}. v7 F2 h$ V$ _2 g: P R/ C
else if(IsHero())* b8 Q4 S$ }) q1 ~/ A
{5 Y2 D1 U/ }2 D! f
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 6 [0 O1 e# \' |- H; L' s* ^
{
( a7 y5 P5 S/ ~ LPSKILL lpSkill = &(m_aJobSkill);
3 V/ c4 m" \/ k, O( M7 U+ C if( lpSkill && lpSkill->dwSkill != NULL_ID )
0 X7 h8 T1 g! x3 ^9 Q- n0 v {
. V1 V3 E( B& H \3 D& O3 E ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); - i5 F7 C7 p5 r# \* P& K2 B* w
if( pSkillProp == NULL )
( m) y% \2 X, u, m/ i" u continue;
% T5 m' _: Z/ d7 n8 k if( pSkillProp->dwItemKind1 != JTYPE_MASTER)) `) B5 S: r8 G) k: R* _
continue;
. S* \9 s* @; M( v! X6 p( v N# |; f lpSkill->dwLevel = 5;
- i' ]7 k" ]8 \3 q9 s }
! ^6 d7 A$ K# M7 W7 F ?& Z }
" c7 v8 x$ d+ K' K }
9 S% U/ x% \8 M" G9 G else if(IsLegendHero())& n; B4 a1 {4 e( o4 v
{* X8 b: \/ v0 O Q. c; ~ J* v. s
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ' O4 `: u) I: R2 D
{ 0 f, s: x: ?, G% ^# F( R- H/ b
LPSKILL lpSkill = &(m_aJobSkill);9 y& U& g! A1 |3 Z
if( lpSkill && lpSkill->dwSkill != NULL_ID )
4 w- x3 M, W7 L' C) t' D {
4 v+ r7 L; y: v+ e7 V# i+ W. N' G ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
! e3 i1 l$ @7 E! s9 U, m- l if( pSkillProp == NULL )
! W8 @( z; B$ T8 u continue;3 }1 b# i% O+ p% D3 S$ ]: Y) c
if( pSkillProp->dwItemKind1 != JTYPE_MASTER). G' x% i2 i/ U( E+ ?/ ?
continue;
/ ]0 Q; {' y6 i lpSkill->dwLevel = 5;( w/ F! {' Q8 }( w% R
}
2 w+ T; Q; s3 L4 l8 M7 ? }0 m# I4 `' [' ?% ]4 D% h; _
}
8 C* F; H$ g( r; i: i#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
/ w/ s5 e# n3 i6 s, r if( bGamma )/ T$ {( O, M: ^3 U7 g- n+ W7 q4 H
{) F2 a( X# w) T r, K
m_nExp1 = 0;
2 w' n- o' m- |! X f0 Z. G. O( d, u }
5 {$ i/ E# V4 w$ N
. D! F3 B8 a) V- w3 y! \ ( (CUser*)this )->AddSetChangeJob( nJob );
! ]$ z1 t4 t4 i) r: l g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
3 ` D- O" I4 `' \
8 E$ R$ @; j! D4 E1 h' b0 k0 d4 l# j. x8 ^( B7 T
#if __VER >= 11 // __SYS_PLAYER_DATA0 x% z3 t4 W9 Q8 c$ A6 @: g
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
" {7 @: w$ e* ]0 Q" w#else // __SYS_PLAYER_DATA5 B! ~2 E% f$ q, c/ ?) u& T
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
: ?3 {7 L4 f) i9 o- S' `: l: X g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
" w5 h* _/ `! s# H: s. `% w$ A9 M6 @ if( m_idGuild != 0 ), O- a; W) j, Y2 r0 v
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
. I2 k& f4 e% w$ s( j#endif // __SYS_PLAYER_DATA
. r3 g7 {3 y& |2 w SetHitPoint( GetMaxHitPoint() );
& e. R/ m/ g4 V% s4 E$ } SetManaPoint( GetMaxManaPoint() );. E, w) A# p, ?/ e+ x
SetFatiguePoint( GetMaxFatiguePoint() );
/ U2 Q! }6 e7 Q( y9 Q' x. _+ O if( nJob >= 1 && nJob <= 4 )
1 s0 U- Q% Z+ f: w. o$ U- [& o {/ m1 u; L6 p5 c5 U" o+ T
m_nStr = m_nSta = m_nDex = m_nInt = 15;7 o4 b* r- B V0 [$ C
m_nRemainGP = 28;
# Q/ a J2 g0 d }
. z% W3 z: }" }5 v/ J if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )* t. s5 X8 `& C/ x1 c7 R
{/ X, V/ r# E. f, i* |; X
m_nRemainGP = 118;1 ]8 A2 @2 J2 H- [' ]* I* i' ~
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
5 u- G/ i% R- p6 b5 v Q- `0 {$ Q9 h m_nStr = m_nSta = m_nDex = m_nInt = 15;1 @% o4 m4 h( n- X
}/ r# ]2 v5 g' q/ T6 ]/ _+ [ p
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )" G: g% }2 r: M: i
{
: _, |! y7 n* Q" [9 F CItemElem itemelem;
5 f+ ], m% @* v6 T/ y+ T* l itemelem.m_nItemNum = 1;
/ i$ J3 Y2 ^( z6 t itemelem.m_bCharged = TRUE;
% z2 @6 [# B% x/ ^ BYTE nID;7 i$ o6 k; a3 E0 M0 N
& G _+ E. y( k' ]3 q- O if( nJob == JOB_MENTALIST_HERO )' F7 w+ D/ H) \4 d, b2 ~9 `! X- q
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;5 k, j' W2 w! w$ \5 T
if( nJob == JOB_FORCEMASTER_HERO )0 D( {9 n6 `% p) t% W, c( d6 e& }$ R
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
1 s/ v2 y$ U4 t
/ ?! \, Y9 V3 L" k' r& }7 @ ( ( CUser*)this)->CreateItem( &itemelem, &nID );
3 G1 t1 Y' l# _4 _ }
4 p0 u Q: h+ | ^3 f9 M" z( \! P g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
1 u- d% y6 a& L/ Y2 }4 } ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
* k5 V2 t" h1 Z" \8 d0 i4 I ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
\' G7 n1 X; y; }4 t' u /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );5 ~8 O/ C9 \- q4 j" p9 y
( (CUser*)this )->AddTaskBar();*/
# ]8 }- e2 d- h$ I; {; o5 g! l0 ? ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );5 A) o1 ~; m. x! z, m( P5 p
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?8 Z. X2 F+ _0 X$ N
((CUser*)this)->CheckHonorStat();: C. Y, o0 W' G, c/ A
((CUser*)this)->AddHonorListAck();5 u. X/ f1 s! ]$ t
g_UserMng.AddHonorTitleChange( this, m_nHonor);( p( H+ |6 {( ?0 w3 y4 y$ k
#endif // __HONORABLE_TITLE // ′Tà?
* i7 k/ K9 J. Z: y j& m' J1 T: s }
# X' `4 b/ j8 X/ F3 P#endif // __WORLDSERVER3 Y) A+ z; v7 X; _( E; J
} $ N! k5 R) H. Q- m
! s+ B* ? B2 v/ z! Q然后你进入functextcmd.cpp并添加以下
" T3 U+ l' d Y3 }4 }
) A6 E5 G' M4 ~' E2 c' E3 w代码:6 |: C4 {+ o$ F' H; N2 M
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
! X! M5 h( _4 ]5 }+ _下面插入1 D/ S* N3 ]* a2 N% h
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
: [3 I9 B% k7 z- C' B4 c8 K% {% h( x% V9 A8 y" R+ k2 |$ w
然后你去
4 q! X9 G$ e2 A p2 J0 \- S. k) J! _4 N' c6 o* D1 _
代码:
! y% p% V. x7 R9 s* Z: {代码. W1 R1 }1 y. m) x1 }
BOOL TextCmd_ClearPropose( CScanner & s )' m9 C }- L3 G% `1 s) k" r; g
{
! T1 i+ Z0 i* L#ifdef __WORLDSERVER
6 S" ]! ] j" ]% t& a" T CUser* pUser = (CUser*)s.dwValue;$ C! A2 T7 t# W8 j
g_dpDBClient.SendClearPropose();; D, L' ^( F ?# v
#endif // __WORLDSERVER
* |$ G! ~5 N* U7 o, _ return TRUE;
: r" t) b) L h+ D}
3 F% Q7 a8 |9 F* o下面插入
4 L9 M' o, a9 t8 g gBOOL TextCmd_rebirth( CScanner& scanner )
9 J4 H) s) w/ X+ ]& z{! }, ?$ m- G7 M: H0 Z$ ]$ g5 n
#ifdef __WORLDSERVER
; t' k8 {0 r9 R( n6 E, UCUser *pUser;9 v& v) U8 L {2 k/ ]
pUser = (CUser*)scanner.dwValue;
$ @# p# ?5 Z* F! n7 |4 eif(pUser->m_nLevel >= 150 && pUser->IsLegendHero()): B+ t5 C L, V* m
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);' i' H, Z7 w! `# [) l' T
else
' C( }$ @! J# ^' x, }7 epUser->AddText("你还未达到重生条件!");+ c$ x3 h1 G9 s; Z
#endif
% `. h4 F# f( m( ^& l' [! `" Q3 Z3 breturn TRUE;8 H, J6 ?8 b7 v* l
} ) z5 o) ]' N* b$ N* Y8 s
; }- C2 ]9 a! R# |% T
& t) T' c* @6 d! i5 \: Y& Q
8 _, r# j' f8 R2 ]! P, j1 ~
( ~2 r6 c1 {$ x5 C' O- K' `4 s |
|