|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
/ h! a6 |& l( P0 m: w" i4 t% ?% W" }
3 v9 s) C* O, R! dMover.h8 t o9 R2 H1 _' m' N
代码:6 Y& Z( z& g: n/ x/ P
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
) \: A# F* [* j3 ]) `2 J! G8 U* Q8 {! ^* o
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
, r p7 ^+ K7 e; t2 I9 X7 x1 }% Z t' h9 m
然后你去mover.cpp添加/ w5 Z- n* T% a8 @8 A0 J* T* {8 T
+ u! B3 F) v! i) R$ A7 J代码:
4 [; P/ E) L% f; h7 f3 @void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
3 R2 w" j2 ~: P1 W1 P" ^ I{2 s f, j/ h" J* [: _: ?5 z0 A& y" i
#ifdef __WORLDSERVER8 d3 p$ K4 O# R3 F x: [
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó0 _; j$ K- n# p5 S/ u5 }* `
MoverProp* pProp = GetProp();# s5 v% @! U& n* ^6 h9 k( {/ w1 Y
if( pProp )8 [+ i: ]' i2 ]" a8 U0 @4 [
{4 h# |" B: k. j7 q& n
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
: s5 A" V0 m- Q {
8 J( ^: C2 o+ |8 Q3 H, ~ AddChangeJob( nJob );
2 ?: F& N {0 R' N& w }else{
& S9 \& k% i6 C* m return; r2 |" e0 }2 G( V- y; _" X$ l8 N
}
: e- ^$ |" _( D& T; W int nPoint = 0;8 P1 R# Y, a# A) p3 d7 R
if( m_nJob == JOB_MERCENARY )
) e6 Z$ X* o" E' {0 l0 } nPoint += 40;# o" ]6 B7 u) x
else if( m_nJob == JOB_ACROBAT )- F8 s# V- z' s, R' x2 [
nPoint += 50;, R. J% T- {) l
else if( m_nJob == JOB_ASSIST )
! _& o/ h5 D8 s/ `% w nPoint += 60;5 o$ M! z+ H7 K! H# x; b( s
else if( m_nJob == JOB_MAGICIAN )
' m5 b( \$ N* ] nPoint += 90;% r" t. r. ~; j! h2 u
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
$ b5 X: K* g1 Y! F5 D# l3 y nPoint += 120;# t4 D- p# X# @2 A1 H3 q2 w/ g* L. @
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
, Z, p% y2 ]/ N+ P4 C G5 E nPoint += 150;& H' W2 `$ \# ]0 w& i* |5 h2 O
else if( m_nJob == JOB_RINGMASTER )3 m- t: Y' X, I# I' Q7 k
nPoint += 160;
: Y6 Z8 u& F& F% \% g3 [1 N else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
, a: F1 w. F6 ]0 m' y( O" G nPoint += 180;
; t/ v$ k; Y* u5 Y7 Z else if( m_nJob == JOB_ELEMENTOR )
2 W. m- T/ ]) u2 C h nPoint += 390;6 ` A0 i( R9 v. I8 z, q# R; {
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO ); d) g( I& C5 H7 p
nPoint += 120;
) T- L8 [. o& j else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )) T, U1 y7 h8 r( e$ |6 @0 o' T
nPoint += 150;* o- q! O0 X- O& _8 p
else if( nJob == JOB_FLORIST_HERO )8 N, Z H% V8 S8 f$ G' [
nPoint += 160;
, x9 B4 V8 A' E) a( i else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )& c6 {: s. O6 H& A% P l
nPoint += 180;1 h! K" ^8 `" J8 {6 D& V5 i
else if( nJob == JOB_ELEMENTORLORD_HERO )
0 s1 e3 X( ?% p) q+ l nPoint += 390;% T0 f* @7 p& z( \/ A6 y) c
7 p$ d0 |5 x8 n) r3 Z
AddSkillPoint( nPoint );8 a/ E2 b) Y5 c
m_nLevel = nLevel;
- o. i6 F* U0 K/ F* s/ u ` {: T- E- u, x- c
SetJobLevel( nLevel, nJob );
# {+ I- \$ T9 S1 I2 R! w m_nDeathLevel = nLevel;
) n1 `6 s( P5 w) t2 i#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
4 I, M1 z# ~8 ~1 [* ^, k0 M0 A if(IsMaster())
3 u% [" E; J$ j3 l4 y {
8 _* [+ f/ r, \ v" q int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
7 e9 R: _! F: l: n if( nLevel > 59 && nLevel < 72 )
0 L$ b. R2 R6 `/ O( c dwTmpSkLevel = 1;
/ w4 D! {) Q/ f2 C else if( nLevel > 71 && nLevel < 84 )
6 Z+ k" G& `5 U dwTmpSkLevel = 2;0 W: v2 _5 v+ s8 T" _7 Y- n) e' k1 k
else if( nLevel > 83 && nLevel < 96 )' m; u0 z. k u& {2 j, s
dwTmpSkLevel = 3;& I) i/ @, q8 ^" Y2 u9 ]' x0 ]
else if( nLevel > 95 && nLevel < 108 )
7 J2 e+ T- K, y( X/ q F2 \ dwTmpSkLevel = 4;. q& h# w* k2 W
else if( nLevel > 107 && nLevel < 120 ): i6 Q O7 y- ~2 t# N$ J
dwTmpSkLevel = 5;5 w+ Z& c! Q( w7 }5 m9 z4 B
for( int i = 0; i < MAX_SKILL_JOB; i++ )
R2 Z# X" m" K# V0 _3 Y: K/ }" `2 B7 X { 9 c; w' R& s1 B7 _4 P. C |
LPSKILL lpSkill = &(m_aJobSkill);0 _; u. j# e! o3 h+ N5 ]# w! z
if( lpSkill && lpSkill->dwSkill != NULL_ID )2 ? S" d. I2 V0 @/ W8 f
{
1 c V2 X X. i3 o" ^0 K+ k' [ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ; d+ x: X3 n5 Y. |; ?8 N
if( pSkillProp == NULL )
6 V% I4 n' {+ \+ p continue;. g! r! ^3 S9 F0 z* ]
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
9 a. H3 p( l4 [4 u) \5 e continue;) A2 \ g" ?% q! d
lpSkill->dwLevel = dwTmpSkLevel;
' U, {+ j. G) @+ f) u* D& H7 k }- J/ i% k& r! R& `: `
}
9 V" q# G. U4 }4 M# [6 { }
. w* `7 x4 l. ^' }/ Y. U else if(IsHero())
) j9 ~6 w% ?8 b( g+ \ {6 }. w) v3 B2 @* n6 }3 R% F" q
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 2 M- l9 s1 j! A; ^
{
5 \" J* K0 s- H4 e LPSKILL lpSkill = &(m_aJobSkill);
2 t/ N; G0 I' ?, E: H7 @ if( lpSkill && lpSkill->dwSkill != NULL_ID )
2 y& Q8 B: B7 \) w {
8 V" y5 O& h& n* y0 T: e- I ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
8 p0 @& @7 E8 H5 z, d7 p3 B Q9 n if( pSkillProp == NULL )$ A( ^4 R* U9 w9 t
continue;2 f y- H0 l# ?( j3 w
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)5 C9 i* j4 x6 ]/ e6 H3 G
continue;5 O: ]) O w9 \. E! v$ H
lpSkill->dwLevel = 5;0 D/ @, ~" a; I9 a7 V0 s, w+ k
}
" f0 C* M7 f! \; m! L+ [, ~, A }+ l6 r# I- T7 v# l- c2 P
}
$ C6 Y2 ?4 E& x5 v( O7 [ else if(IsLegendHero())
7 ]! {( Y0 ]7 m- u% r& s {* C! L6 t1 Q8 S( O/ h% P9 t
for( int i = 0; i < MAX_SKILL_JOB; i++ )
& c! `6 R R, R { 1 h3 L* ]* F; A5 b& v/ J3 l$ b
LPSKILL lpSkill = &(m_aJobSkill);
; T9 I% ?' g5 p* R if( lpSkill && lpSkill->dwSkill != NULL_ID )
) l, k9 Y3 I( e# Y& ] {
6 n' y$ b7 l: G" F9 o ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
, j; i/ b3 w; t7 x2 L: R if( pSkillProp == NULL )
: U+ `! g; j/ l7 a0 E* K continue;: `+ Z0 {) q: L _: E
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
# [4 o1 l$ h: {) n continue;# H" |) X' j9 B" m! i$ e
lpSkill->dwLevel = 5; ~9 D8 t' i# v8 B0 Z
}
9 _# S* @" h: d# s0 G }. u$ u* g. l2 V1 i' |
}
+ g% }: T6 n3 ~ z8 u! B% @/ J#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans0 D" n- p8 ^/ w
if( bGamma )$ a& _ q2 ]! j8 |! r5 D% x7 b
{
6 M7 K G0 W+ U( u9 a! N m_nExp1 = 0;% f& v; L$ W+ ^, T3 r
}
8 ]" @6 T+ R* o- q& w: Y+ O( c1 b* \5 z; H" L2 {2 H
( (CUser*)this )->AddSetChangeJob( nJob );
" { U$ [, A* D2 |1 y3 M q$ ~ g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );2 }% e6 d0 c4 e* e8 M: v! v9 G
" p& C ^2 V- r0 W2 ^: s: d- J v
, L: [! K6 }3 W; m
#if __VER >= 11 // __SYS_PLAYER_DATA
- k$ ~: D1 a" B# ~- E g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
. [3 S- E* `8 L1 y2 E, D! s#else // __SYS_PLAYER_DATA" t# e& ~% q% N% F9 F- K0 p
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );2 o) X2 a. u& c! Z: c4 j5 J" G, O+ i
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );, n ]5 G2 y T/ b: \8 ~$ I( o
if( m_idGuild != 0 )
B; a) A @3 i# q3 x+ D g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
, \, j, W/ s. m#endif // __SYS_PLAYER_DATA
( A# P+ e8 a0 q( b+ U5 A( g$ m SetHitPoint( GetMaxHitPoint() );7 j U5 k7 y4 B8 Y0 Z7 I9 Q9 \% r
SetManaPoint( GetMaxManaPoint() );1 \6 f3 F9 d$ M1 {" p. H# F5 W. k6 C
SetFatiguePoint( GetMaxFatiguePoint() );
: K: Y% ~ L& ^ e* A7 l1 }3 F0 k if( nJob >= 1 && nJob <= 4 )4 a* A- j0 k. s8 y; ^8 c
{
, d5 d( s" v3 V9 O& x6 o& B m_nStr = m_nSta = m_nDex = m_nInt = 15;$ X5 f! f6 I& R/ b7 A
m_nRemainGP = 28;6 V. {! W: M) D# H9 x% m
}
- g4 v. ?! |- Q7 @( b if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
* H7 P. y' N8 B* _/ P* `3 {- D {
9 Z# Q5 T" Z3 v( |3 @/ |& p m_nRemainGP = 118;
7 K# N$ }. y+ q; |( p7 `* M" j //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;$ P8 W# D d8 ^1 f
m_nStr = m_nSta = m_nDex = m_nInt = 15;" b w1 w( b: J: q* y6 p
}5 D- c' N$ M9 [" x
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )* o7 x# Z/ M: o" q4 m, M8 Q
{: f8 ?' W. s" E1 p/ ?
CItemElem itemelem;
) z c; T6 S- Y4 Y; F! r itemelem.m_nItemNum = 1;) U6 T1 o- F2 t0 J0 }
itemelem.m_bCharged = TRUE;
& x0 N, f! ?# `+ G( w% F BYTE nID;# F+ X1 Q' ?# @) r
8 Z2 `# K' K1 w2 L E. |3 P$ \; \ if( nJob == JOB_MENTALIST_HERO )
2 [+ ]! Q) Z9 u4 A itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
" U* C: r! } g* f) Z" z# W9 K if( nJob == JOB_FORCEMASTER_HERO )
6 ^4 E0 `! j/ C, \" {( X itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
6 Q$ ^7 l1 m j z" [0 K& b# e. p4 W
( ( CUser*)this)->CreateItem( &itemelem, &nID );
: D; T/ I; _3 {$ | }
$ r/ m1 w. v* P! \' r( G, ` g_UserMng.AddSetLevel( this, (WORD)m_nLevel );" c/ S, i) c0 m6 x( ?
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );' D' _/ }* u7 K1 c2 d5 X
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
9 `4 V I+ @$ N; o3 t# Q! I- n \ /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
$ ?5 h& M6 c% a1 o, L ( (CUser*)this )->AddTaskBar();*/5 O5 j8 Q3 l' B% m2 a9 k
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
* E3 t6 B! Q! [1 I#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
8 ]) @! e! o" ^ ((CUser*)this)->CheckHonorStat();+ v% ~9 v( [# o" R8 i5 H
((CUser*)this)->AddHonorListAck();9 ~- J4 ?& X! Q/ {' \
g_UserMng.AddHonorTitleChange( this, m_nHonor);- m3 B8 M6 R: `; L0 v( b
#endif // __HONORABLE_TITLE // ′Tà?1 ^; z* o& v: ~
}
) l4 d- u Z7 L#endif // __WORLDSERVER
" k% f( @" ?' @( K& g}
" X K# R. ]0 H; s; ]5 ^& j! K+ g6 E
然后你进入functextcmd.cpp并添加以下
r/ J- g" y$ b
8 I1 {/ A6 A; B* C6 p% w代码:
' f& {0 b* ]+ _ HON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
) S( e% T3 F+ X; d, j* Z) E下面插入
# [" U5 w7 \" U9 k) S: W# ^ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
( l6 O8 s1 P% u8 l9 z, t
0 h+ o3 g/ D3 s; S) |然后你去6 S' r* {* Q/ a! n% K7 L. e
% w, c0 L- Y& O! _( {8 f3 p% v代码:) J; e/ M2 g+ o% Z
代码
" J. h+ n; a% V4 L% oBOOL TextCmd_ClearPropose( CScanner & s )" ~2 b8 ~0 N# w' b! ?
{$ S$ u! |+ h, h& s8 F. A! X2 D
#ifdef __WORLDSERVER
" |( \% F% _. o( U+ B9 E) ~2 E CUser* pUser = (CUser*)s.dwValue;+ e6 C; E1 g$ i- n+ `# F' s- Z- i
g_dpDBClient.SendClearPropose();
' _9 h+ D E9 U5 v$ {#endif // __WORLDSERVER
" M/ f9 E6 N+ L& A! B l5 m# y return TRUE;
& `) v( T- m, f: u0 V2 A( I. v$ z D}
. }3 k$ R F& @! E3 W1 U下面插入
3 b0 L; x* j0 b: r2 D& Y, Z UBOOL TextCmd_rebirth( CScanner& scanner ): l5 q0 Z" I4 S+ G/ y+ c
{
6 U. r5 @9 m. E* s7 c$ g#ifdef __WORLDSERVER
4 o. P3 n8 }6 `$ @4 I" G4 }CUser *pUser;. P& _4 C4 u3 @% Q8 e
pUser = (CUser*)scanner.dwValue;
! I! z) l1 l! L; h# iif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
2 Q$ y+ {$ T: CpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);/ H3 B5 D8 ?; ]1 F" H! w6 ~7 c
else, Z. U# A6 H' W$ ~! t0 I! h& U
pUser->AddText("你还未达到重生条件!");
% R/ X1 w& t m# M3 _) I+ v$ l0 o#endif
$ d7 P9 s2 j1 s( {" \/ a% e' J. vreturn TRUE;7 |4 D% s1 G* z `" U( B+ p
}
) }6 _ N) W/ i8 e" V' a; k; C. g$ T2 e( v8 b
y. K6 T9 J8 C" I
! {: ^% g, a' i U0 S+ j
& N) G& |8 w! t |
|