|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
) S" f) G! b! ?6 u8 N; X* i! E1 d" [3 L5 ?" D; @
Mover.h7 H7 R- y4 _3 a. ~4 e
代码:
; E- O b7 r- j2 d8 P找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü0 o6 L8 R" J! a* z& M% h
# H0 e# P- y M$ W& F' y9 l+ L4 G# C下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; X: x# J7 I( w' |; v1 |1 N) Z+ L2 f
: ~8 V& K; W6 R$ u7 z, s3 Y" v$ ?, K# M然后你去mover.cpp添加( `$ F) y0 s5 {+ ?6 c
9 B0 R# @' O6 u# M" W3 _9 |代码:
: C- S% V8 z' ^6 ^% Z9 o3 Qvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
: f, b+ C" [' [8 \- V: Y1 m: J9 V5 e{
; [% a& V; [) u#ifdef __WORLDSERVER
( F% o4 v. g9 N$ K4 M // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
" U- ~$ M9 l% n3 \- X3 l S MoverProp* pProp = GetProp();9 D/ R1 X/ a3 f) t' u3 ~
if( pProp )3 f+ M1 i7 e( Z; r% a; I# t
{4 I/ P; [# [8 U7 `! u/ ?
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
1 ~1 {7 s) e( v* t1 c/ N {
/ z: H) u6 r2 n* W, ~8 G: o! X/ m8 h AddChangeJob( nJob );
) W, Q6 L% x6 L, y) Q5 [$ L h }else{# y" ` G7 R. S8 S8 ~7 M2 s
return;
! p" x R8 d% c. H; _7 [ }
; ?& g/ r4 C: v E: F1 A int nPoint = 0;% ?, r" E5 n4 d/ O+ P& l
if( m_nJob == JOB_MERCENARY )) n) N" Y& R8 a6 ^+ J
nPoint += 40;; ~( B0 U* b9 |- r8 q! |( Y
else if( m_nJob == JOB_ACROBAT )
) _9 _( X4 D2 |$ I7 s" G nPoint += 50;" S' R4 k5 j$ s9 F) z) b
else if( m_nJob == JOB_ASSIST )5 n" f& |7 Y3 A4 y8 L+ u
nPoint += 60;
* K2 S4 P2 X$ e: C, {2 p else if( m_nJob == JOB_MAGICIAN ), R% S( M% m L( z
nPoint += 90;
9 H8 e& ^( v5 D( G else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
2 f; ?3 w' r& ?) q5 Q9 O: C9 Z1 Y nPoint += 120;
! B- r+ q, a8 c7 B9 P0 F& y( z else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
: c/ _' Z# m" W! c5 v! c nPoint += 150;
3 c. Q! p% m; |1 ~8 b( l else if( m_nJob == JOB_RINGMASTER )$ t+ r) G% X$ ]# @1 h- s
nPoint += 160;
/ t. |$ n- M4 R: x2 _, c$ V else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )7 J& A/ L% ^7 i9 v
nPoint += 180;
! S' Z' X0 Z' P7 v, e/ d else if( m_nJob == JOB_ELEMENTOR ): _; o5 c3 T' g( \
nPoint += 390;
% M* r1 [7 S$ E! M0 h1 \ else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )) b4 i7 k, w+ G1 }6 V9 D
nPoint += 120;
/ A8 P2 G3 A' q2 |5 f8 R else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
+ g2 A+ ?" E( W nPoint += 150;7 a. a$ ^9 t M9 {" |
else if( nJob == JOB_FLORIST_HERO )
7 ? G/ C& q9 v0 O0 s" G0 u6 K1 N nPoint += 160;
E4 c8 `& H7 b! w else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )1 ?$ g3 u$ T( _8 \# U) M
nPoint += 180;
7 {! l7 ?% M, Q$ M- Y% H else if( nJob == JOB_ELEMENTORLORD_HERO )( ^. `# Z0 ~" I. P2 y
nPoint += 390;, `* R8 X2 E: J1 j- ^# w7 Y Z6 F$ J& U
" j& P: S5 F. t: j9 f7 Q: p AddSkillPoint( nPoint );
6 u4 r- N$ `4 c4 @7 x% U m_nLevel = nLevel;
) _& G; R( v5 Q8 t) r2 o( n0 x6 \+ P ?& A0 s
SetJobLevel( nLevel, nJob );0 ^3 G4 E) h5 m: K
m_nDeathLevel = nLevel;
4 M! w( y% J2 L$ f8 B$ Y8 g/ X% q#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
; W+ |7 j, ]5 h- [% x if(IsMaster())' o* B& e4 F9 _1 Q8 v0 L- N- j
{: D' p% j0 v1 H& A6 v6 x, Q+ v7 y
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
) a- G* B. g- \, r if( nLevel > 59 && nLevel < 72 )
5 s: h- e- ~* C# R+ g dwTmpSkLevel = 1;* n7 [! @: e j: @
else if( nLevel > 71 && nLevel < 84 )
r+ _. ~ g+ D, t! ]8 S T' j# P dwTmpSkLevel = 2;
. Q4 @. s; T6 B else if( nLevel > 83 && nLevel < 96 )% E1 s, y; C& }. J, |: z8 x" O4 c
dwTmpSkLevel = 3;
( y; Y& S) L, `! g else if( nLevel > 95 && nLevel < 108 )3 [6 |" \7 \8 `/ @: j
dwTmpSkLevel = 4;
# G' j. ?8 I6 t" V3 n: W# k else if( nLevel > 107 && nLevel < 120 )
5 |0 B* H* K8 g0 j, Y dwTmpSkLevel = 5;. E/ p( q- B1 X9 _. a/ T+ ?
for( int i = 0; i < MAX_SKILL_JOB; i++ )
" y9 j/ K k/ A$ Q { / M4 P3 b7 F7 ^2 z$ R
LPSKILL lpSkill = &(m_aJobSkill);
# z0 v% `& `! [. O* P3 X# g& f2 D; u if( lpSkill && lpSkill->dwSkill != NULL_ID )
4 J9 [% M2 X# ~ r1 i R, ? { _( y, R V. y5 ?4 d& b
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); * r. Q! ?7 t( M A$ N9 l
if( pSkillProp == NULL )6 M3 z8 W' {7 H1 E& l. i% V
continue;
( X z5 S+ [2 b' e# Z if( pSkillProp->dwItemKind1 != JTYPE_MASTER) R. {' r& J4 x4 O( U1 `+ ?
continue;) {1 T3 h5 N8 X8 I U+ }
lpSkill->dwLevel = dwTmpSkLevel;
# _0 v. y( B* Z7 V" F8 G5 W6 @ }
1 {) R8 N1 A& y; _+ Q; ?( r! [ }
% a; B; v- d/ v/ j }
% G0 w7 i: {0 ]# X else if(IsHero())8 S8 H% [$ }3 D# ?# H6 C# o
{
( n% q( X, _4 I$ z U2 R. T7 j for( int i = 0; i < MAX_SKILL_JOB; i++ ) # B9 M3 y5 z$ z- [: m+ t" i
{
3 t* |3 W3 `8 n9 X8 b7 c LPSKILL lpSkill = &(m_aJobSkill);
' O, e; u8 v6 E if( lpSkill && lpSkill->dwSkill != NULL_ID )
7 @1 F* d- k# N( f3 V4 i- Q- Q* c {
! B) u/ T' W6 u1 e ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); , B& {% c( K. P
if( pSkillProp == NULL )) G- }( T2 p1 ^. k' w' H1 v5 i7 J' D
continue;
6 N$ B0 |2 Q5 k" u9 ]% y' {2 n if( pSkillProp->dwItemKind1 != JTYPE_MASTER)+ p% ^& v8 D+ s% d. H5 \
continue;
- }& T5 }4 a, C lpSkill->dwLevel = 5;: f& c5 t0 V) D% s# C3 E! v
}! {9 [. }& h3 M1 N
}- }9 X8 U7 k! l; f$ ~+ r
}
0 ]2 V& b( |" |& X5 V& w4 j R else if(IsLegendHero())
0 x0 x6 u1 O( r {, ^4 s5 N D2 `0 k0 D
for( int i = 0; i < MAX_SKILL_JOB; i++ )
& B1 l b( r- ~/ ]' r0 X8 G { $ S/ N5 |- B" ~+ g9 [
LPSKILL lpSkill = &(m_aJobSkill);" d9 u! @6 [/ s6 o8 Q8 n
if( lpSkill && lpSkill->dwSkill != NULL_ID )% w4 ^4 q) l4 T1 g4 U
{( X5 B( J0 m W! z4 f2 l: R. m, |
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ' M5 ~. T* |2 P0 s
if( pSkillProp == NULL )
# [) X0 J4 M/ V( }# h9 [, j continue;
" s* ]6 Y$ [1 I% R1 h% j' ]1 r7 c if( pSkillProp->dwItemKind1 != JTYPE_MASTER)5 O/ K5 Y& a5 ?% @1 F8 n* ^5 q* e4 Z8 S
continue;1 \) s( w( M: b5 C, I$ v! W7 f
lpSkill->dwLevel = 5;& G9 F. B) n% t
}
$ [+ m q* d; S# t( ^0 q) _ }
+ i5 `4 [0 Z( [% g4 K }- P- P N1 O3 n6 L h& f
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
! q8 e! _7 O9 y* } if( bGamma )
9 t7 F- o) \! u: b1 S {
0 W# j3 ] M4 j9 D8 R$ z m_nExp1 = 0; z5 t$ C8 G$ m, ]9 j6 K2 b
}. n/ E& S* i- o( x
8 T' s. b, W7 i& Z+ D
( (CUser*)this )->AddSetChangeJob( nJob );
0 |' W, D8 c+ [ g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );' M, ^4 m! e: U" F; d
# r6 q1 \: c" j3 N( o4 ?7 ?- N1 h4 e7 [- D
#if __VER >= 11 // __SYS_PLAYER_DATA
# B& q( `+ m% q- a a, J T2 N g_dpDBClient.SendUpdatePlayerData( (CUser*)this );8 ~+ Q/ m" P# m+ r4 k& C# E; N2 _" F
#else // __SYS_PLAYER_DATA
+ _# I8 J0 U! r% [6 C. u! t# h g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
5 t- _6 A9 `$ j& S g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
4 ?' w; Q7 m; C if( m_idGuild != 0 )* F0 ]. T- \1 u' H1 t' @9 Y
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );5 o) ^) n/ o( F4 g/ d
#endif // __SYS_PLAYER_DATA
0 f" B x: M$ J" i, A8 ?: u1 \ SetHitPoint( GetMaxHitPoint() );
) O" i/ q* D: }0 o7 r$ R3 J- L SetManaPoint( GetMaxManaPoint() );
0 B& d0 x3 P6 t0 J* ? SetFatiguePoint( GetMaxFatiguePoint() );1 ~8 a% g" ^$ E7 C. m
if( nJob >= 1 && nJob <= 4 )! c) Q' v9 K" e: g2 A
{
+ z& o* Y4 q( `; L* [ m_nStr = m_nSta = m_nDex = m_nInt = 15;
6 n) n% M( K* u) V- j m_nRemainGP = 28;
& }2 p: O+ G9 C }0 e7 t4 x+ H2 E) y3 B
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
9 e W4 ~4 t6 e {
! V" e/ b% |' v% U( F m_nRemainGP = 118;5 M4 @8 m @* g7 R( z& X. s9 r9 {
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;, d" L& `/ M7 L$ N/ q& p/ L
m_nStr = m_nSta = m_nDex = m_nInt = 15;3 |9 N! r+ u0 ? z4 Z x' i6 R
}
' `. `# W* U" A# ~$ d! n if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
+ }# {! d- C/ i2 L) I {
6 w- `% z, m- N$ d; G6 i CItemElem itemelem;2 T4 K) |3 E f6 [ n
itemelem.m_nItemNum = 1;( m) I6 n. u4 h( I
itemelem.m_bCharged = TRUE;+ ?( {, J7 E% i! \
BYTE nID;( g, S7 c. C! K, i' ^, Y& _
; E6 }4 {" F {- ^& x8 e if( nJob == JOB_MENTALIST_HERO )
7 D8 W- f" @; I$ l# v5 Y itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;/ |8 u. S4 H& B6 u
if( nJob == JOB_FORCEMASTER_HERO )
& T! j5 P3 W; H; w itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
% y: R, F% t8 ~* |* n9 A l: T3 r( U9 i/ q" F3 j- t" Y
( ( CUser*)this)->CreateItem( &itemelem, &nID );
% x* D! U: q- Q7 m }
, I' \1 H- L% l8 j% z g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
; Q6 R: b7 {: V, I7 s; S; V5 h ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );8 t8 W: U f( i: j6 r1 C% b
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
7 O+ _2 e7 H2 q% ^ R9 z! |9 L /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );0 U, G n; {" d/ g, _
( (CUser*)this )->AddTaskBar();*/
4 y" U: L+ h% _! d ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
. a: F9 l1 ^- p; B( m+ b" C/ {#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?( o# L3 t/ M! r6 E- ?* x: s5 d
((CUser*)this)->CheckHonorStat();7 {, n* M! |% F' U" K6 c# u$ X
((CUser*)this)->AddHonorListAck();
' A" P; ?( k2 I g_UserMng.AddHonorTitleChange( this, m_nHonor);
: H; ^4 C, g- H! @#endif // __HONORABLE_TITLE // ′Tà?, G( \: T* W& Y! O$ e& `
}. c7 D4 e, j) l- R$ x
#endif // __WORLDSERVER
, H( v( O& m' }* J! {} 5 Y; v; \( F% [; d6 I6 z8 E0 t( |5 O
3 B& d' j) o" F" z* V# y然后你进入functextcmd.cpp并添加以下
* ]7 s( C" ^) Z, f' M. m4 w0 r% a$ U4 }/ `; H2 d/ S8 W% o
代码:2 n5 J7 Q- e, q* I( ?
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ), j& @& z0 q# w4 T' N+ ?
下面插入+ N- R7 E7 P/ K+ E0 ~5 ^
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ! }. K1 ?- ]. x: V6 t* D% C; D
; E7 u- D# K1 d7 n: E然后你去( Z% a9 x# [+ l/ Y5 D
% p5 e! E( q1 s代码:- E. c; F( y& ~2 T* b
代码
4 \: } @0 O) R, |9 \BOOL TextCmd_ClearPropose( CScanner & s )
) K( l1 ]1 g9 p% w7 }) C! D{9 Q, i! g1 B" M& y7 N4 m
#ifdef __WORLDSERVER
: d5 O' T7 ]( D* h CUser* pUser = (CUser*)s.dwValue;
+ ^% O0 d, S! r# w5 O3 \2 d' p1 I0 k g_dpDBClient.SendClearPropose();8 H& I; P; S2 A) z+ v
#endif // __WORLDSERVER* t( M+ R4 y! N) i/ n
return TRUE;
6 U0 y o* A3 P" U" N}
0 x5 M6 x. y/ @8 \下面插入) e: f h X! ~ j* O8 z' w
BOOL TextCmd_rebirth( CScanner& scanner )7 P. ]$ V( \ {- V5 ?
{
1 K; y. c6 o% }4 B: D& l#ifdef __WORLDSERVER
% q' i, i' p }3 B3 wCUser *pUser;
: s3 c _- S* O; A9 ypUser = (CUser*)scanner.dwValue;
% T* E; J& `" M1 z4 c" Y5 ]if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())* h! o% \# S( J* l
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
# Y7 I* w+ g$ i: s! ~else. `* K: `, p* O* t/ ?8 a
pUser->AddText("你还未达到重生条件!");
9 a- y* n5 f9 ?8 K#endif6 h. `& m2 t" d' C- i0 B8 r
return TRUE;
" M& \5 s; W9 F2 g" i} 2 h& O7 ]% X" B! i1 D' U
; ] l, v! ?5 k+ S
% P. R* O! e# n5 {- Y4 V4 b
+ E2 `( p/ l- H9 ?. p B. f0 I
8 L3 m0 @( e' U4 ^' a; `- x |
|