|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
1 Q6 D7 Z' i% \" |4 F T6 j; O" y
% e6 }1 ]5 h0 eMover.h
8 x, Z" J1 u; B6 m代码:
" o/ Z- \ }5 D; ?找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü' L/ V3 O; o& L! _+ Z6 g, ^
" c! \4 e9 N; S1 D' ^ K下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
: C4 s* K* j$ {# @# b! l. g3 g: G) T& {0 c: N4 E
然后你去mover.cpp添加, G; o2 n) J+ q
8 N& _1 E, `8 I0 @! Q) {代码:- o( {. N, e* I- |
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
7 c- _8 ?" P' i h; X: c" h{
8 {# J3 Q, l/ f$ Z# N#ifdef __WORLDSERVER% {& Q$ V& Y7 z* v& B2 u1 c8 C
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó$ X; n2 s8 H) O( w
MoverProp* pProp = GetProp();
* r4 X$ W2 R8 [- j; ^ if( pProp )
6 T) D9 v( c0 h: v# t {
4 |* Y6 a* u9 \ if( nJob > 0 && nJob < MAX_LEGEND_HERO )3 N3 ?6 o: F* s( n9 \
{
2 W$ P4 _) X8 }0 H3 M# r AddChangeJob( nJob );' x9 M* M0 ~ I+ q
}else{8 d& Y) L: x4 V, w- F3 ?& E# I
return;
+ v A f- t% V" \* u; B }, Y; M v" {, w' u" v0 O
int nPoint = 0;3 e6 P! p n9 ]( E6 m
if( m_nJob == JOB_MERCENARY ). ?" D/ M3 Z, s9 T: O) F0 L6 [
nPoint += 40;
* i5 c3 r$ G& C: ^5 v) E" x- [# [' m else if( m_nJob == JOB_ACROBAT ). b( r) w0 o: f) H' [) {) L) j
nPoint += 50;* \4 w5 D" q$ x3 v5 K8 K- K# J
else if( m_nJob == JOB_ASSIST )4 y9 v. m1 U6 s0 i4 a1 @
nPoint += 60;
2 }2 q! p( \1 V# h4 s' [ else if( m_nJob == JOB_MAGICIAN )
$ Z1 Y( W u9 C" T nPoint += 90;3 v! r2 |! q( y+ D' E
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
1 \& [) r1 d l3 `2 Y1 h3 E, m* x& M nPoint += 120;
9 a6 t5 a9 e8 Q8 F, b% d else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )* F, O+ \! t& L9 J
nPoint += 150;
9 c8 f9 E6 R$ O9 ] else if( m_nJob == JOB_RINGMASTER )& n% g5 x7 B7 D6 a5 K/ @
nPoint += 160;% e6 d$ h. n+ Q& G/ \5 F
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ): y9 W9 W1 s8 v& L5 h' Q6 v- I7 N
nPoint += 180;1 D Y5 j4 c+ j6 j
else if( m_nJob == JOB_ELEMENTOR )
+ }* }# V0 y% w# ^ nPoint += 390;, |. g7 w& z- d3 h6 i
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )7 v" l$ d0 L1 m4 b5 S0 x
nPoint += 120;1 }/ X. _2 v1 c3 ~4 Z
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )8 I. ]) _3 ]9 b. |- c" \% ]. h
nPoint += 150;. Y9 V: x7 O' E, V% S+ d
else if( nJob == JOB_FLORIST_HERO )
8 S% |1 F: v7 {3 Z0 ? nPoint += 160;' c- a- K& T4 R4 O8 ]% _
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
) k: M1 ]; c. I/ Y& Q) d. N nPoint += 180;; `& P$ `0 r" [, ]$ T/ ^
else if( nJob == JOB_ELEMENTORLORD_HERO )
( b* u* d) q0 y/ M7 P7 S nPoint += 390;* [- V4 Z: c) L- I# }
2 Y) w& \7 h8 v0 G4 M2 m8 |' e AddSkillPoint( nPoint );8 j/ U5 \6 U7 N; s
m_nLevel = nLevel;" J- v) y5 y9 y# O& Z" w. P
8 d3 i* N8 Q8 l2 p5 B SetJobLevel( nLevel, nJob );
! s k% @3 c% m, G/ n m_nDeathLevel = nLevel;6 _/ o- g0 W0 Q+ ^, ^8 x( f4 A& Z
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans# o. j! i9 w) }
if(IsMaster())0 ]: S; @2 R; ^/ p
{
- T& v- v4 V) O r b+ o, F int dwTmpSkLevel = 1;//60, 72, 84, 96, 108& f& E( T# h% x2 w' ]
if( nLevel > 59 && nLevel < 72 )3 Z2 N& U( H+ A
dwTmpSkLevel = 1;: ^' v+ F7 I$ w' o a
else if( nLevel > 71 && nLevel < 84 )0 V, ~+ a$ v& ]" {/ h! V
dwTmpSkLevel = 2;
# n3 s) h4 e: d1 W U else if( nLevel > 83 && nLevel < 96 )
3 N; @& F3 t5 l/ x t) e% A dwTmpSkLevel = 3;* P/ Q8 W+ q/ h
else if( nLevel > 95 && nLevel < 108 )$ h7 t- c* f: u) Y" z4 |( b! J
dwTmpSkLevel = 4;
" P8 R* D' \, @1 J! j/ V else if( nLevel > 107 && nLevel < 120 )- w; F; ^3 U; o) C
dwTmpSkLevel = 5;
( ^2 x: y; c: c& X# S for( int i = 0; i < MAX_SKILL_JOB; i++ ) 5 T: y) Z8 t% k1 x- L
{
4 ?( z/ J% z; K Q LPSKILL lpSkill = &(m_aJobSkill);
9 f8 u! a4 g- A if( lpSkill && lpSkill->dwSkill != NULL_ID )" n* Q, W5 b6 j. p. P" R# p6 a" y7 p
{
, e f! m1 k( m3 P/ b: K ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
( Y0 U9 l9 d3 Y7 d' ] if( pSkillProp == NULL )7 L0 @! ], t+ \2 q
continue;4 X& E. I+ B( j8 y4 x
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
2 {9 |6 [# J! B& i0 i6 r continue;! H, J; y J% h/ n1 p% q
lpSkill->dwLevel = dwTmpSkLevel;
% i9 |9 ?! y+ K* g C }: f, _4 j, c8 Y* S: B1 a' d" m
}
) l$ @) C0 d0 e3 `+ i2 F }6 M& I {; f. D7 ~
else if(IsHero())
1 j- h! p# X- Z, ^ {6 s; O9 Y$ b- ]) \1 X D5 T
for( int i = 0; i < MAX_SKILL_JOB; i++ ) / B$ S M6 x+ |( l0 a, S+ `
{
% |' ?! @7 n9 J& i8 g% W& u& f LPSKILL lpSkill = &(m_aJobSkill);
" ?) w" e6 i2 d E+ d, c if( lpSkill && lpSkill->dwSkill != NULL_ID )) y+ n: e5 A5 _, [+ r. @, ]
{$ P2 E" V) |9 M
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 9 b! I4 T' w5 }: n
if( pSkillProp == NULL )
3 P O" c! L/ A }8 T6 i. Z4 s+ z& t continue;* N) P3 P# ~$ s+ F$ O5 k. w
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
* c; X4 p8 b) K/ z# q+ r continue;
5 A: M- T* a' s lpSkill->dwLevel = 5;
+ t" q+ Z7 l/ ^ }4 L _5 f5 j% k* M( @
}
$ R! D; h' X: O E8 N- ]# b }
( h3 C ?. e% h6 e else if(IsLegendHero())
' D& L# P2 X1 m+ x {6 K, @4 m' v M4 i1 z
for( int i = 0; i < MAX_SKILL_JOB; i++ ) : S- N. b( k" T! p q* [. e
{ " S+ { g, B+ q& L5 b* h
LPSKILL lpSkill = &(m_aJobSkill);
" T6 z/ s; }! O! U if( lpSkill && lpSkill->dwSkill != NULL_ID )4 I9 } R4 {" p; B7 L
{) z# a0 K* t7 H W$ z5 I2 ^
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
* z# v6 o& b7 E! b. X4 m if( pSkillProp == NULL )
. A$ K- }- L% O continue;
* l! [/ Q9 x4 p0 ]$ L n5 h: _$ d9 @ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
0 {' g5 D: }% f6 e+ o continue;
9 C+ d& p% y4 K3 f0 l/ R K lpSkill->dwLevel = 5;8 e, N4 `6 F" q
}
$ B0 k' }5 s& K/ q, x8 X }
8 ?2 o) d3 r( w/ x0 I. w }
/ }* e- U* G: l2 g# m a#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
7 C7 C: d) e, F) Z' U# V if( bGamma )
& B( M. v! E) G6 g: \2 R {
: {' d- q7 D# H9 w0 F$ @; F m_nExp1 = 0;( n" a; F- s& t- k
}+ H- |& ?" ]% T `% R8 s$ J" n3 ~
6 ?) j L; ^4 C( ]' ?5 b; { ( (CUser*)this )->AddSetChangeJob( nJob );
# \+ g" ]3 A. I' M* D2 q g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] ); e" z2 i4 p" E0 Y: h
' P9 ^( I3 e' a
3 y Y8 R$ k9 X0 f" z& A2 o; t# d#if __VER >= 11 // __SYS_PLAYER_DATA/ s6 B6 N+ l2 f) [
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );) ?1 F1 @9 E9 U; D: Q
#else // __SYS_PLAYER_DATA
) w t3 q9 }; E9 Y# J4 Z$ y g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
" o1 N+ g9 x' w g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
, V4 E# C7 e: W# E if( m_idGuild != 0 )! o9 h" E x9 {1 \1 m9 n
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
* G+ u+ h U6 ` u#endif // __SYS_PLAYER_DATA$ P. t8 L% d+ l2 m
SetHitPoint( GetMaxHitPoint() );
{, O8 m5 f) O SetManaPoint( GetMaxManaPoint() );
; t/ w v1 K6 S: W8 Y+ G8 S SetFatiguePoint( GetMaxFatiguePoint() );
4 Y: H6 v( p; F0 L/ m( b3 F3 m( y if( nJob >= 1 && nJob <= 4 )
I0 d0 Y- f9 N7 p" h1 n {
4 R3 L4 r4 [* b- Z. Q m_nStr = m_nSta = m_nDex = m_nInt = 15;/ O$ w# P o: ]# T( }8 h$ G
m_nRemainGP = 28;7 W# ~1 X% ?, h4 l8 V! L
}3 \/ e6 F& { p8 P, ?
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )7 ?9 ?5 ~6 {, k& X! R. p
{
B3 x% ^: b b8 C+ v7 m m_nRemainGP = 118;
& o/ R5 k/ {% l% W' X" C5 p; r //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
; e; t- D1 B' `' @) J" q1 M m_nStr = m_nSta = m_nDex = m_nInt = 15;
0 f4 M# q/ d m8 k( K) u" i6 k }
" v7 R: e! D ^9 N. l if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
$ {0 v! V/ g8 D# F {
5 [# j" H' z* \ CItemElem itemelem;8 N3 l% @: t/ H) y
itemelem.m_nItemNum = 1;1 l8 Q# B8 H- w9 U
itemelem.m_bCharged = TRUE;
( k, R. u. H$ M4 Q5 u9 [+ I3 o BYTE nID;
' ]5 R9 P# `. T, f* g! l/ p/ X# q9 _3 b4 \, b4 P
if( nJob == JOB_MENTALIST_HERO )
9 W6 [9 R0 w- k6 B itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN; a7 ?( d& ~) t( ~1 u- B
if( nJob == JOB_FORCEMASTER_HERO )2 Q* H$ k" H0 C0 c, `2 t
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;6 |* F" Y. y9 b1 ^
( T1 n/ s$ W4 W: F- W9 z ( ( CUser*)this)->CreateItem( &itemelem, &nID );$ q5 u+ f. Z$ {
}4 P/ R4 F! B: C3 z$ r& y: t7 R7 U
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
9 f, @5 U* V3 M! d( Q# ] ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
1 ^. X, U% L1 b1 v8 w- E6 i; K ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );* [7 c. y- A! a: m; ^9 k# w
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
1 {' b, S3 P' w3 F. v ( (CUser*)this )->AddTaskBar();*/. F# r& n, O& k
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );5 P% w7 w& j$ e, |$ e2 h! b- W
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?$ F: G8 x$ M7 X' t# T
((CUser*)this)->CheckHonorStat();# ?/ W n# G& ~$ k+ ^3 P
((CUser*)this)->AddHonorListAck();
, I: L [/ Y h5 g# \' X7 y6 T3 H g_UserMng.AddHonorTitleChange( this, m_nHonor);
' z. E# \0 d7 K* O0 w#endif // __HONORABLE_TITLE // ′Tà?' N2 f9 u* m0 x
}
& r" ?2 R, Q1 P! j0 x3 g) N; _#endif // __WORLDSERVER
2 J0 R0 A0 j/ S4 E) Z- i} ( R8 _. w& \! `
; j0 o! G' R2 a( Y然后你进入functextcmd.cpp并添加以下) d0 F6 M1 a- ^# W3 F! n
6 Q# W! r/ x9 n0 f& E
代码:4 D1 ^% c9 F1 _1 P1 n$ G
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )+ c+ Z' |2 K2 R+ r& }( ~) v
下面插入
/ i! H+ t' B/ e8 N3 o5 RON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
$ f& `3 B) u3 J# |" _: a, l |% U. Q; t( X
然后你去$ v' ?3 v0 D6 |/ b: X8 g
; u) N& w1 J% U+ Y
代码:
. W' j Y4 J6 s3 ]: B. i代码
2 r( R4 A4 L+ G/ b b9 O _BOOL TextCmd_ClearPropose( CScanner & s )
5 y' p* ]$ O n D1 m! \# v& V' a{6 ]8 ]: p( p( u2 k+ B
#ifdef __WORLDSERVER7 x; Z# [. K' K' X5 k
CUser* pUser = (CUser*)s.dwValue;
3 `3 s' q. A3 X/ _ g_dpDBClient.SendClearPropose();
( c" A( |+ a7 [# @3 q#endif // __WORLDSERVER
: w( D0 P) h6 v7 ^8 N* q return TRUE;: a" c! H6 I) }$ ?% W
}8 @9 B- x* A _7 @+ p; t
下面插入6 g3 X* {3 i! J' A
BOOL TextCmd_rebirth( CScanner& scanner )
J1 T- w3 f; |0 k7 B{8 \& p* J7 u8 k7 B$ {8 `
#ifdef __WORLDSERVER- _( \+ u8 d0 j. H
CUser *pUser;
& T: t7 t( L: p3 l/ ~pUser = (CUser*)scanner.dwValue;2 c8 |% ^% `- d6 e' _
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero()) w9 d9 h; ?! k: m$ S v
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);1 V4 z& ?+ p; k5 i, Q6 W
else1 u7 k" K- p5 ?
pUser->AddText("你还未达到重生条件!");
3 ?5 J' x7 p) ^$ ?! b0 m#endif& _* o( I3 E, k& a# o6 a9 { z. c
return TRUE;
3 R8 ~& \# U% }+ ?6 i3 }}
2 I. f8 E( I8 n7 H5 Y
1 ~) L* @ X- X# A0 Z
( r4 J: I7 u9 L1 v; N% y4 f
& S1 e6 ~5 G! J ~ [0 R# t
% z( @3 }8 ^5 P- B |
|