|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel: Q) o3 @/ [4 h0 I/ |) ^/ I* h4 h
% u3 t7 Q% t& P$ P! K
Mover.h7 G }7 E/ |! u3 f p! @
代码:
/ \2 o5 F3 P, l0 }2 C# y找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
, M) j$ ?' f4 s% f0 {! R* O( y! V* ^5 z j f+ {/ J8 R
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 3 w1 s+ e3 s; _6 \! O
* }; C5 D( P, f1 l6 d1 j& x! Y/ k
然后你去mover.cpp添加/ g9 N! W5 T- t6 z) B' A
( E0 P6 s8 m2 L6 w2 k* _ Y
代码:
. e, t# e$ C# s( `void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
, ~1 q; O( j, F{
8 d+ n X. e, Q ]* K/ p3 x, ^# Z#ifdef __WORLDSERVER, Q( `# U1 J& ~% T
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
; | C' X# E0 U; { MoverProp* pProp = GetProp();2 F0 m$ _8 H* c+ g( M
if( pProp )- S) K7 i" I- G ^7 m9 L0 {# H5 `% y
{4 e9 V5 R9 n$ j0 J& D
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
; C9 j+ r0 i. N {2 E5 U( h( L* ~! R" d
AddChangeJob( nJob );( L. c1 y0 n4 q+ {* f# a
}else{0 @( F- D% V3 M" f6 o+ A
return;
* I/ C1 V1 `4 X5 W }
+ l# Q/ F3 o! U K" z% c$ J int nPoint = 0;
( U. M* N( h" H; B( U if( m_nJob == JOB_MERCENARY )) D4 C4 \9 ~5 m$ w! ^
nPoint += 40;
5 O( Z8 w5 T! a" n( z! ]8 r( U- z4 h else if( m_nJob == JOB_ACROBAT )( f6 |; f. l, D" a
nPoint += 50;5 ]. T; h; M: x0 Q: Y5 q- R
else if( m_nJob == JOB_ASSIST ); _+ G! }6 h* p+ @' ]* O
nPoint += 60;
$ v. |7 d, R# K- ]* M) f else if( m_nJob == JOB_MAGICIAN )# | F# K! R/ @) i9 y8 X5 U
nPoint += 90;0 i7 r/ N l* V
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
* M" N* v3 ?5 Z- N: r nPoint += 120;: T' T: F+ B- ]5 B% J3 G
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
/ X- p9 U" o8 ~ nPoint += 150;# @: U+ J$ `2 G, ?# C O
else if( m_nJob == JOB_RINGMASTER )
* B$ I; @+ n5 U nPoint += 160;9 C) }" c* t" i |" B
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
' e6 z$ g; O6 _ s' J nPoint += 180;! O& K. K& J8 q+ P' \+ `
else if( m_nJob == JOB_ELEMENTOR )
, V6 ~! D2 g' J+ ~( d2 v nPoint += 390;
. s8 e+ o1 ~4 L- u7 S! S8 z else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )) `& B8 Y7 x& I! y$ E o/ i
nPoint += 120;0 n: w; B4 o! U5 h8 {
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
, \. v$ p5 H) W+ [ nPoint += 150;
9 V- f5 ?" c$ G. C else if( nJob == JOB_FLORIST_HERO )5 z# G4 O- C/ X2 h4 j& H/ b" ~' z
nPoint += 160;, I" _0 d6 Z4 x8 T q; J: g# a( Z+ n
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )+ @6 I9 Y" }9 T. A6 Z
nPoint += 180;
$ ]9 l0 s/ ]7 K. U4 ?3 u else if( nJob == JOB_ELEMENTORLORD_HERO )
' ?2 z+ F. I, U) t0 ], C$ ? nPoint += 390;) `( _" q& E5 w* y: W7 v* i( g& g9 G
3 _$ e W f1 R+ Q" {3 c* J( n AddSkillPoint( nPoint );2 J; g# W5 o; h) ^, d! V
m_nLevel = nLevel;
3 [0 q8 J4 M4 c1 k# ~2 m* {' }; L6 J- C
SetJobLevel( nLevel, nJob );
+ o) n& v5 B4 r4 O5 j, m m_nDeathLevel = nLevel;4 _* ^: Z' i+ k9 E% D
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
2 }! q6 Q' o+ V if(IsMaster())3 {" T* h- P' H- r: s7 s
{3 m, Q, _2 P: h0 j; |' ]
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108; y; x, U3 I% c7 [+ Z1 e$ q- U
if( nLevel > 59 && nLevel < 72 )
% H0 z. z- r- m dwTmpSkLevel = 1;$ d( V6 k; i9 P& b5 J
else if( nLevel > 71 && nLevel < 84 )
. @6 D" h' E0 t1 X! d4 k dwTmpSkLevel = 2;
( T* F. T s! ^! `' C6 i% g else if( nLevel > 83 && nLevel < 96 )0 E, {& S" k5 J9 \- y6 w9 t. t: e
dwTmpSkLevel = 3;( I9 N4 F" `7 O8 }% i
else if( nLevel > 95 && nLevel < 108 ); U0 o/ ? Z: i+ X3 F% t0 w/ |
dwTmpSkLevel = 4;
: k$ V8 r: H6 r: k. {9 K6 B: @, M0 J else if( nLevel > 107 && nLevel < 120 )* b$ W6 k, a2 C9 I8 q0 _
dwTmpSkLevel = 5;
4 I- r$ y$ m. a) B7 F( u for( int i = 0; i < MAX_SKILL_JOB; i++ )
. u" q u8 r }3 B: L {
3 C: G: l3 \2 u: M2 D% g9 {' G7 a7 n LPSKILL lpSkill = &(m_aJobSkill);. G' u9 M8 W. a X
if( lpSkill && lpSkill->dwSkill != NULL_ID ) e+ l1 \+ t* L* s2 s* H
{1 W' f( l2 W6 E* q! w
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); - M1 J3 g2 C( c/ K' S& f
if( pSkillProp == NULL )
8 S3 ]- b5 m' t$ p9 t, u& `0 Q continue;
1 ]+ q5 K2 y" ~$ a( N w: y if( pSkillProp->dwItemKind1 != JTYPE_MASTER): X8 @. a/ g b) K, }
continue;
! U9 \ h5 k L% b* X lpSkill->dwLevel = dwTmpSkLevel;4 @7 J" q1 v5 K! u
}
5 O! D1 i) Y& }( Y6 L3 x% } }
# s8 O; ~& m2 w& I }
; Q w$ j9 F: y' Q* _& w* E$ n) _$ h else if(IsHero())6 c% ~% s- s, j: [3 I* G8 [" p
{
& e& {$ I1 b% w& i5 V1 m1 ~- { for( int i = 0; i < MAX_SKILL_JOB; i++ )
1 w2 ?/ u- W: W0 q8 e3 c9 L { ; ?4 s$ N$ i: `. T- C" v. w% r
LPSKILL lpSkill = &(m_aJobSkill);9 o8 z$ d/ E g/ m- A
if( lpSkill && lpSkill->dwSkill != NULL_ID )
& L+ q& t Q% }1 O: h" I$ T* U {+ _1 V9 v/ p6 P- m
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
6 ^: S* ^! e, ^8 Y( Y$ v W if( pSkillProp == NULL )
$ y6 ]2 f" v% S3 s4 P7 ^- ] continue;
" w! B! n0 C- k" A/ y9 ^ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
# R z3 O! y( _/ Z! ~ continue;/ W9 S7 @8 ?# }# F% ^0 q# J. T5 {6 H
lpSkill->dwLevel = 5;
/ C1 ~4 c8 z' C! g; g* E; k( T }3 c" R* r2 M& F% p4 o
}
4 ?$ u; Y7 ?, W% p; m4 Y: P }
n$ u* s# a* p# D* S else if(IsLegendHero())3 g0 \0 t v+ G( k# w5 e
{ ~1 D" A, z. L" Q y
for( int i = 0; i < MAX_SKILL_JOB; i++ )
# _1 _, x. s/ j/ \, i" x { ( l3 s) o% n1 ?
LPSKILL lpSkill = &(m_aJobSkill);
% _& O( q) Z$ W% I if( lpSkill && lpSkill->dwSkill != NULL_ID )
% |, U0 [( m8 q4 R1 C5 P1 l. m {6 ` M4 l( i: M; I5 A/ I5 g, F7 p
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
7 ]' @9 u; `0 E3 h1 v if( pSkillProp == NULL )
" ^- k; w& U2 p! G% Q8 }/ L: f* ~5 P continue;$ k. l' O( @+ a0 @" m8 `
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)9 q" S5 p# D1 I4 p2 o
continue;5 Z% J! Q% O+ t9 h+ I( J ~
lpSkill->dwLevel = 5;
1 Z5 ?1 ^( \1 \% V' o6 u: H }8 n1 A7 r c' w+ t f f
}
1 b: `. e U( m Y% O: x. o3 E }: }3 ?- U; e8 h; G5 ~- H
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans4 N# J; _$ x- n$ [
if( bGamma )) L& }* N1 q4 F0 d/ z i- l
{
7 f& n. n1 z3 {- i* j2 t m_nExp1 = 0;
4 r8 ~: \; I, P+ R5 r }
- u4 n% A4 A4 N9 B3 ^% H; q& _& ^/ y6 Z( W# b, g) N
( (CUser*)this )->AddSetChangeJob( nJob );6 {, ^/ J. R3 w# m9 w) S8 {
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );5 ~" e( o, _7 m* k5 U5 K
9 K, u- E2 U) O n6 B
& j1 A/ \3 ^3 P) n#if __VER >= 11 // __SYS_PLAYER_DATA6 c( n( g( L- [$ F( ]4 `# `$ h y
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );# o2 B, B( n/ k" P5 W1 V
#else // __SYS_PLAYER_DATA$ d; C% Z- }& \
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );2 v* j6 C/ u# N# Q$ S ~
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );8 ^. x9 R, P$ u: A. @8 |
if( m_idGuild != 0 )$ M! w# g" E- D/ j
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
# j) [, q& P+ P: B+ P, r#endif // __SYS_PLAYER_DATA! N; b; e' R |2 |% N
SetHitPoint( GetMaxHitPoint() );
, f1 z/ x, R4 S SetManaPoint( GetMaxManaPoint() );
6 Y! n0 \& @" q9 `# F/ f: c SetFatiguePoint( GetMaxFatiguePoint() );, f4 ]$ d( ~* F- h2 p% \5 w
if( nJob >= 1 && nJob <= 4 )5 k: Z0 G8 P; {) g k1 X! |+ j; F& f
{
; C! {! s5 ^3 q% t9 z) M m_nStr = m_nSta = m_nDex = m_nInt = 15;
0 v. Q v2 w( ?3 o e m_nRemainGP = 28;
% v- a5 {' d0 a }) H; {! w% u' D* L* J; _$ Z* h9 a" \
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
9 s2 i, I) {3 V/ W5 l {
4 Z- Q: ?7 [4 |% e; O m_nRemainGP = 118;
: t4 y6 Y5 c" @3 [ //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;( {% q2 R- [ l7 i$ u
m_nStr = m_nSta = m_nDex = m_nInt = 15;
2 J- U' l6 S7 r1 L4 S }+ ]$ j) q2 e5 B9 u( y
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )8 z# l6 H0 ?% ~: I3 j
{
/ G; Q% ?: C, W+ f) L9 U CItemElem itemelem;1 r; k2 M' B# T: }
itemelem.m_nItemNum = 1;
3 `$ N/ Q( U& e itemelem.m_bCharged = TRUE;$ c/ Z( H1 I9 K5 u( }' a) d+ }
BYTE nID;
% H' @& A0 J2 I b0 O( A& ^( ~- m2 z$ @( P! S
if( nJob == JOB_MENTALIST_HERO )
8 @! f0 U) I) t( m$ G* ~1 ]% I5 o2 q2 S, A& T itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;/ }2 C, t j, d4 P$ P, y/ }3 g2 e
if( nJob == JOB_FORCEMASTER_HERO )
* D( r0 R8 o8 m, B$ y$ n( O* B1 a itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
3 q( V3 r3 [$ i% Q6 O8 P, z) X5 S; K4 `3 L7 c J5 Z/ a/ Z
( ( CUser*)this)->CreateItem( &itemelem, &nID );
6 n |* ]6 ] b$ ~3 l7 E6 j7 b& ~ }0 L% c2 O( ^4 t p: B# r
g_UserMng.AddSetLevel( this, (WORD)m_nLevel ); c* A+ I7 c$ Y) G$ U c- t
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
* ]0 R4 m+ }) q, c0 l& { ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );- j* P7 Y! @8 v* H
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );9 R$ n4 t. [: ~9 D6 G7 ~2 j2 ?
( (CUser*)this )->AddTaskBar();*/4 C5 ^0 F/ Z# [( V0 {
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );' m) S$ K2 r+ S4 m2 _( |+ N
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?$ V o% g1 \8 |$ }( J- G) F5 s
((CUser*)this)->CheckHonorStat();+ F% T3 r/ ~: `0 V0 G
((CUser*)this)->AddHonorListAck();
2 @0 C9 Y9 J7 \: m g_UserMng.AddHonorTitleChange( this, m_nHonor);; Y6 r! K* R; ?9 K
#endif // __HONORABLE_TITLE // ′Tà?
. C3 J2 j; U' y4 x }
# z/ @7 {9 w# x$ J3 \' A#endif // __WORLDSERVER# l; Q- b9 H! I g* R
}
( H A" k- j! D/ F+ Y- R: l9 l
# t9 b& m& a* {5 T9 h& |然后你进入functextcmd.cpp并添加以下* V4 H9 A. P( h0 F) N a
. Q2 P2 e& T6 ]
代码:2 a# Z# I2 {! I6 z% r' w- L
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )6 I3 f! U+ p2 w
下面插入
8 n+ z1 \* a2 B- h/ n: ]ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
- n m9 j2 O# _3 g: _8 l$ L4 O; H* J( j$ j0 Q/ Z3 ?/ x
然后你去" q7 P7 U8 Z% A9 D$ R/ J$ }& J+ y, v, H+ t
6 F8 K, G7 _4 A代码:4 i# s8 B& ]1 a$ k1 X5 k
代码- _3 _; h# [) n" ^' u% n
BOOL TextCmd_ClearPropose( CScanner & s )# V6 G# N. W( \. l% _; s2 I& {0 y
{, U C# u: l! h2 }
#ifdef __WORLDSERVER
4 Z! Q. [7 ~) C; d; ?/ Z, c) L CUser* pUser = (CUser*)s.dwValue;
7 ~8 G; V q1 p0 L* t g_dpDBClient.SendClearPropose();! ^& M& p9 Y: R& H
#endif // __WORLDSERVER8 D. G( O7 k* d l/ t1 F* G6 V
return TRUE;
$ B: E: k8 h5 v/ n}, u. H+ m" z" s4 K2 ?- j
下面插入2 a" f' i$ f9 j4 p, S5 n
BOOL TextCmd_rebirth( CScanner& scanner )
3 @6 V' Q+ W- L1 x& f{
2 t7 B. B, F9 G" s5 W3 H#ifdef __WORLDSERVER3 T- A. [- i) k- c) k
CUser *pUser;
: l3 b6 e N6 _4 y1 Q2 D. N& y6 epUser = (CUser*)scanner.dwValue;
; A$ ]1 |, s' u9 h& sif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())& R" J+ h0 n+ g: t* t+ ]( G
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);9 k% v( k1 U6 P5 v
else
, e- D( ?4 k% E4 ~! p/ H* BpUser->AddText("你还未达到重生条件!");
! F$ ~/ ] Y n9 G2 G$ P#endif. ^" g: a" \5 s
return TRUE;
- H, z) F% h4 n0 i+ M0 z}
& X \+ e R* p( ~; p: D+ f4 u5 u8 O5 O; w
( Y. v- B% p6 f1 f: d6 O, d3 J2 l2 Q: q# ~0 Q! O) @, N# k5 c
3 H7 ^! E6 `+ m! A$ q8 h1 a
|
|