|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
2 H" j4 P1 Z! C1 z* p, S% k0 }- c( s6 }" E
Mover.h
2 z+ e% l4 f! P* Z w: d代码:( I; ?7 m2 X9 _0 u; R8 P) @
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
2 G2 F/ D5 h! T' `9 G) V" P) l1 ]( ] ?2 @4 o
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
, d4 C: U8 v) g8 o y. s3 G4 R0 `8 d) C7 K4 Y! P
然后你去mover.cpp添加: G: D( V B1 L5 a3 X* x
, J: d. d7 {5 h; V* x# D; x& C代码:5 N- _/ y0 |& V" z Y0 {) M% `
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )" }& ]( F9 x. V/ B* l, r/ T- Q
{
! @* {8 r3 B, B" ^; p( E#ifdef __WORLDSERVER
7 P1 c; w; q u. p/ [. ? // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
5 L' w1 M8 H# V m" h L, x% i7 [ MoverProp* pProp = GetProp();
# P, Q8 d* n% } if( pProp )" D2 x$ }1 i# h
{
9 L$ B% j" i6 H- q7 T$ i' k- N if( nJob > 0 && nJob < MAX_LEGEND_HERO ): F7 `, F* P/ ^. T5 l N
{
8 V7 ]( }( c* Y1 N! T. N1 c+ Z& w AddChangeJob( nJob );
0 W; ]* s, w4 F/ ~" }/ w% j }else{
& _, u/ p7 i: C" K& [& | return;* Y3 I7 _3 l2 ^* e2 i* z4 I
}( p, p& P* R2 N. q9 \* p# k8 v
int nPoint = 0;
* ^& p Y v! ~ if( m_nJob == JOB_MERCENARY )
/ X7 v; D6 o6 J8 x' y nPoint += 40;
& ^! [8 ~6 M8 x$ { z else if( m_nJob == JOB_ACROBAT )
$ j8 I; h3 `2 i" b8 G1 p nPoint += 50;
+ v) K) s+ J: z1 ?' I else if( m_nJob == JOB_ASSIST )( r# C: ~( [# [
nPoint += 60;! Y, @: f$ r3 p5 E4 v3 @1 N5 C" Y8 q
else if( m_nJob == JOB_MAGICIAN )
+ R3 i: D5 t5 O6 |& a nPoint += 90;' Z' B* a4 m$ r9 a+ V8 x
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )9 |1 I1 \9 }# Q( ^/ M; x. S6 D
nPoint += 120;- V& t+ l, s3 r! C% c) d
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
9 N0 N0 a! S& u$ k nPoint += 150;/ H/ b) f9 q$ r0 v: k
else if( m_nJob == JOB_RINGMASTER )
4 ^0 C* ^) J8 X( y nPoint += 160;
9 L: ^& d' w; M" i else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
2 h* `; O% ^/ p d& l nPoint += 180;1 a a. v i9 H% A
else if( m_nJob == JOB_ELEMENTOR )
! w! [6 u6 T9 e nPoint += 390;; [. l$ K% O4 M- r+ V! y+ K( v, `2 G
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
7 l- S. u$ z( @% k6 u& l nPoint += 120;
! a3 `5 u( l5 e, i$ u& x+ G7 s& s else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
, i2 F3 [5 j: g% ?' t$ Y nPoint += 150;" D4 K! Z1 B5 l( d% Q4 X
else if( nJob == JOB_FLORIST_HERO )6 r5 y0 t) i4 a: j* R
nPoint += 160;: a3 s. \$ J7 q' T' ~. [# c+ H4 H
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
. l/ B& L, V; d u( E9 [3 X nPoint += 180;/ L4 R% N/ C1 D; m! x. e
else if( nJob == JOB_ELEMENTORLORD_HERO )
1 e& w9 ?( u8 P3 ]5 w nPoint += 390;. P3 g, g/ }" m5 ~4 y9 |; ^
* h# ]( A3 M2 L1 h% |+ J" l
AddSkillPoint( nPoint );4 G3 a) @' C8 S; l
m_nLevel = nLevel;
/ K3 m4 [3 v$ X d* R, e% q
F) ~/ j! I7 j& I) n! H5 z SetJobLevel( nLevel, nJob );4 T4 g7 o, u, n/ @6 U
m_nDeathLevel = nLevel;8 G6 R! c& y, R: S9 r9 D6 r# l
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans4 R3 l5 P z ]6 q! G
if(IsMaster()); S. @! ]1 O6 e1 J) N& m3 R
{
& z; ^ U5 h# k) C# _4 G( T" j int dwTmpSkLevel = 1;//60, 72, 84, 96, 108/ u f8 z! f! R/ k8 h+ X7 q
if( nLevel > 59 && nLevel < 72 )
/ |; J# H2 M0 m" j' i1 U dwTmpSkLevel = 1;
2 k: i' x5 c5 Y else if( nLevel > 71 && nLevel < 84 )' {2 f, b& S& u5 S$ R) C
dwTmpSkLevel = 2;( y9 l4 D& O- W3 O
else if( nLevel > 83 && nLevel < 96 )
: c& w, V: J7 V* W dwTmpSkLevel = 3;
" L' N1 o. @3 y0 V else if( nLevel > 95 && nLevel < 108 )
# u2 @7 v& [- }( j7 S+ x0 k4 d, T8 | dwTmpSkLevel = 4;$ U& M q& z/ n% a& g3 f/ u
else if( nLevel > 107 && nLevel < 120 )
1 v$ U: u' Q, M dwTmpSkLevel = 5;
2 [; q( j/ g3 O* P6 l- D5 p! X% ]5 G( M for( int i = 0; i < MAX_SKILL_JOB; i++ )
) q; W5 j( k, U. S% T { {% h- E9 m0 Z* a: \
LPSKILL lpSkill = &(m_aJobSkill);
/ D. b2 f. o G; Q" b, X; v$ k) X* b if( lpSkill && lpSkill->dwSkill != NULL_ID )( P: O3 S x3 E1 _" O+ F
{2 G2 Y5 p9 h: D+ O( f
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 8 K! G( I+ u( a# T
if( pSkillProp == NULL )5 U [ h/ q- ^ Q, t
continue;
" @6 G5 y7 |1 o7 c' E' _# N+ L4 l if( pSkillProp->dwItemKind1 != JTYPE_MASTER)0 R/ R; J2 C, b& f) W% t d
continue;- D5 w2 ^# N7 o6 H- T$ \
lpSkill->dwLevel = dwTmpSkLevel;5 k( y8 H- x$ G+ Q8 |
}0 b9 g+ ~8 `# C8 k1 Q
}! ^/ ? s" G# A8 C
}5 K' V! X# ~" _: i8 J
else if(IsHero())- {7 j9 v3 B* K
{
# t. W$ `7 M; A& u9 ]6 c: _ for( int i = 0; i < MAX_SKILL_JOB; i++ )
; j/ g' M& y" X" y, e { & x& }" @ p+ c t% s1 B0 L
LPSKILL lpSkill = &(m_aJobSkill);
8 k! w7 H/ y8 O9 u if( lpSkill && lpSkill->dwSkill != NULL_ID )- @0 G; z8 `8 T9 _' C0 o& y5 H& B( F
{2 @: K. s) j7 |6 e
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
3 p+ I$ L$ C& c4 `0 r. ^. D if( pSkillProp == NULL )8 W% R, b9 p! R; q S0 N' P
continue; w8 z8 @, {1 c9 W# {9 G) @
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
' }; P! |' V$ E continue;
# O6 w {2 h: ]7 R1 H, I. u lpSkill->dwLevel = 5;% l) Y+ i5 F' N0 z9 [0 u% y
}6 M3 A/ D5 \5 {* D
}
+ ~! a1 ~2 z. K6 x }. b5 B' k& Y& v# f% f( A2 o0 f# S: \
else if(IsLegendHero())- W1 Z3 c: g( h
{8 \! P( a3 x* E, I
for( int i = 0; i < MAX_SKILL_JOB; i++ )
2 {1 K: D! Q- ] {
. }- T# T* _1 T9 |* o+ o LPSKILL lpSkill = &(m_aJobSkill); Q2 B3 a2 D! l0 u5 P: n4 ^2 V
if( lpSkill && lpSkill->dwSkill != NULL_ID )4 O& Q- q* D9 d6 R/ ]) M+ W7 m
{
, u3 j) E) y. m, { ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 8 K6 }' A( N F9 W- n+ H+ _
if( pSkillProp == NULL )
# l# U, n# j1 H/ u; H continue;
# D/ |7 g- O3 O9 g) w if( pSkillProp->dwItemKind1 != JTYPE_MASTER)$ D4 I% n( ?+ i
continue;
; w. o( i H+ ^$ f z lpSkill->dwLevel = 5;% N! D! O3 [, o; K4 e& Q
}
+ a# q# _8 |# g6 v: _1 I }9 |9 l0 s3 H7 m# g: v* I3 |
}. w! W" ^, W. h9 N
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans1 T" t- y. G' r+ @. m
if( bGamma )
( R6 c) z: F2 j( K, U2 ^9 X {$ Z; B1 B' z0 ?: d. O" o E
m_nExp1 = 0;6 B- U" d2 S3 Q" L% H
}' R9 W8 g, j5 `1 I
5 v( X9 \( J% b- X* A8 Q/ W ( (CUser*)this )->AddSetChangeJob( nJob );
6 o( t( ]. h% [/ ~) a' t g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
+ k0 n) U0 }0 k/ D$ B$ e5 l, D b8 F$ f0 Y0 \% H
# ^! f7 ~0 G; @' V1 C3 t#if __VER >= 11 // __SYS_PLAYER_DATA- P2 S+ c+ ]" Y F$ K
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
+ p+ T% F3 `1 j- f' o/ ~5 o9 J9 B#else // __SYS_PLAYER_DATA* v! v7 h" `8 g* Z" v' G
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );% i z: n' n; B% Z
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
; v$ n! [% T) P/ K+ P3 X8 y: c if( m_idGuild != 0 )
! z1 G& H) [7 F6 c( c g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );; N* C7 @, W+ z/ `5 D; m l
#endif // __SYS_PLAYER_DATA
7 T2 |# @9 R) C# K7 A: v SetHitPoint( GetMaxHitPoint() );
" N7 J, U/ b$ N4 u SetManaPoint( GetMaxManaPoint() );0 x: d* V% v) _8 ?
SetFatiguePoint( GetMaxFatiguePoint() );
* I. [2 l4 L' z; s6 C! K/ L+ v if( nJob >= 1 && nJob <= 4 )
, D/ p( z5 s0 b( e7 A8 x# [, c# F {
6 Y( I. ~7 O" B$ I! @7 S m_nStr = m_nSta = m_nDex = m_nInt = 15;; Z& n { F& I# c: D6 c; Q$ X0 T
m_nRemainGP = 28;
' u- Z9 O3 n3 G& V& F" s }7 c% o9 @9 g1 r
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
$ q; X+ D2 G# O {2 D# S# y3 x+ a( U4 {
m_nRemainGP = 118;+ v( w3 u) T* g1 X
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
% |. d# s% A' d. Q' L) J7 Z4 X$ P m_nStr = m_nSta = m_nDex = m_nInt = 15;
& \# o" n9 O; I' z- `% S) Q }6 H6 L, P+ y+ }3 c1 F/ ~; h$ N+ r v
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
( X1 \! T* k { {
1 l: E) l4 }8 N+ t" M) } CItemElem itemelem;4 O/ e+ T$ Z. Y- P( {; L
itemelem.m_nItemNum = 1;
5 F; C0 z& T2 \ c9 c R itemelem.m_bCharged = TRUE;3 d; y4 o: O' Q
BYTE nID;; I) `5 Y% i) s# d W' \% u: u
5 Z: D2 F# I! B) e# |' T
if( nJob == JOB_MENTALIST_HERO ) J/ \0 H7 q- I+ N, l
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
* h& e. H( J. J/ B3 Y5 x if( nJob == JOB_FORCEMASTER_HERO )
0 P! f& c) G U itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO; ]7 k' v- ~! U% L: T$ x
3 x) }% j) l7 d* v1 ~ ( ( CUser*)this)->CreateItem( &itemelem, &nID ); e |" P, k' D" ]" ~5 Q; n) ^* n
}8 L* D/ l, D; d* _- D
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );5 C# K; S, ~( y; O' b( \
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
& S; j( ]8 ^7 _. f- q* o* B* y ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
$ l; j1 `( O" g6 O$ ~; @' M0 y /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );1 q* S" i6 ]; \0 A1 Q& t8 y
( (CUser*)this )->AddTaskBar();*/
o7 U8 J8 ] ]2 |: B- b ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );0 c) L x' J, v: K
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
! h+ O! f0 J8 n8 Y# s ((CUser*)this)->CheckHonorStat();1 E1 G7 ]- Q; n1 J. o6 _0 {5 f+ s
((CUser*)this)->AddHonorListAck();9 H- P8 Y0 h3 b$ I; V/ D# G5 B( l
g_UserMng.AddHonorTitleChange( this, m_nHonor);$ {( O. r Z+ v2 Y* ]$ S9 P1 Q6 j
#endif // __HONORABLE_TITLE // ′Tà?/ T# z5 Z& q& X" O
}
' Z5 p2 b1 e i; ?+ p1 J#endif // __WORLDSERVER
9 [' J' C5 M; i} ( w; e9 D- \5 i. ~' ^& a$ G
4 ]- m4 _; {+ r然后你进入functextcmd.cpp并添加以下
! F# h% ]0 R1 c) `, A
0 V- ?( p( [% h% b/ D( U0 t代码:
, Y, U1 t$ Q+ nON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )9 d* E8 ?0 F0 Y; K* m7 ~3 e; }
下面插入
) o. V! w3 i0 ~# {, X ]3 rON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
$ o# H! U: I7 D" E/ \; \) Z& s9 W7 P( O
然后你去( M0 t4 ~8 z2 F3 y$ L) ~2 n ?! N2 e
! `: g+ j$ U. a+ d* h. |代码:
- S" J* |6 Q( }, d8 ^代码+ p h: ~7 H$ p a O- R4 t
BOOL TextCmd_ClearPropose( CScanner & s )! y* r; o8 C- R4 W3 n
{; \& j! R2 B* O5 x5 k2 C
#ifdef __WORLDSERVER
/ [6 B0 y* H z7 i* l' o- p Q CUser* pUser = (CUser*)s.dwValue;& z- M( a1 s7 @/ V* ?4 [
g_dpDBClient.SendClearPropose();
% i: g5 Q) E! n5 F: l#endif // __WORLDSERVER
- L& B( [2 E% u2 _ return TRUE;& p. l: F8 H; k: U& s) M: t/ r
}
& K" `# B3 m g# [2 `/ N1 a下面插入4 B" Y& i7 h( C5 R+ _
BOOL TextCmd_rebirth( CScanner& scanner )% C! A. m# D6 x2 `% `3 `
{- |! K$ M i X3 W. ?' _ _
#ifdef __WORLDSERVER
/ b, M Z9 e6 Y( K: T' `CUser *pUser;
$ \! z9 A, w/ C4 Y8 tpUser = (CUser*)scanner.dwValue;0 a/ p3 s+ y0 k
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
9 {( M4 M4 B6 V- x9 I- P+ D) NpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);, B1 K4 ~( m6 @) D4 T6 }& s
else
, z$ ~. X+ C: u5 Y( ~pUser->AddText("你还未达到重生条件!");* n( D F1 w; K) W0 X( X) g
#endif
- P1 d% Q1 a: L) Z1 Rreturn TRUE;8 b& D( F- _2 h% M! ]/ d
}
1 y1 @# x3 s1 w+ `9 x
8 B/ {. G1 s: c! }# b4 L4 r1 G& N: T! a/ W7 d+ F8 X$ J
0 d J* K S3 M) C8 Z9 B% I
7 x/ m' ^! ]+ g% e+ x
|
|