|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
/ ^8 t7 \- P- I" p9 R K9 m- f8 I4 P% L/ z/ |$ J
Mover.h
+ A/ r+ a, Y1 p" s9 M9 W2 N$ }代码:
9 a y) \7 t8 G F找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü2 j! h$ {9 V* A! X Z
( G7 _* A% C7 g1 n/ z& i/ t$ ~下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
% l3 E; L1 B6 ? m, m! S( J
8 Z: W5 c }2 H然后你去mover.cpp添加
Q' y" b+ i+ j( a2 w7 Q( l
. t2 |: \# _7 q7 P代码:
! U1 z2 F! w! K( xvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
0 Z t) H6 a# @# r- L. p{! T3 s2 i' l- E4 Q) N
#ifdef __WORLDSERVER
' I& ]5 \5 T; ~9 W) B // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
6 p% k4 O' f b5 U9 W MoverProp* pProp = GetProp();
4 X Q" g1 v% E0 b, Z if( pProp )0 o8 c2 g) Z N7 H( J$ S
{! g; i, g6 |# F! o3 G" C2 \
if( nJob > 0 && nJob < MAX_LEGEND_HERO )* d( C, | C% q, e" ]1 Q
{
" V( U' S' ~0 [/ u4 y+ U AddChangeJob( nJob );
1 Q) W7 d. P5 A, V7 K }else{
& G2 V. Y; @% Y return;
5 p- R% K) T& C8 y; C2 r }
4 g# {( q2 U0 p) J int nPoint = 0;* s y1 B/ I) y( v: X
if( m_nJob == JOB_MERCENARY )
4 \4 b" L0 b7 r4 I nPoint += 40;
: i1 Q6 h8 L8 \9 f9 ?% ~ I else if( m_nJob == JOB_ACROBAT )- w: f3 o+ c4 O N! A6 W0 k
nPoint += 50;
2 e/ K/ N- c ~9 F3 m1 y7 M else if( m_nJob == JOB_ASSIST )
! Q1 l- G- f7 w. V( ~ nPoint += 60;
% T' W+ V7 x2 ~3 g$ \ else if( m_nJob == JOB_MAGICIAN )7 p5 H& \' D8 ]. P8 z# J- E# J
nPoint += 90;
; f( n: x( G* H/ @: f else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
3 u$ ?: B1 x1 b. C+ B! P nPoint += 120;
" P- v" x& e7 k8 W/ X. q* Z/ @6 l else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
/ n: f7 V2 F3 V1 s2 Q. [ nPoint += 150;
) I \: t) V! k) S3 I' U; Y9 A: U9 ? else if( m_nJob == JOB_RINGMASTER )1 k: Z' c) v5 v- G8 D5 C
nPoint += 160;
) s% x8 t2 K2 q1 s2 F else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )) C9 v0 k/ B' f# `& ~( f
nPoint += 180;
' E& P) H. j1 Z else if( m_nJob == JOB_ELEMENTOR )
0 y) O7 a" ?$ |* u' L" r4 A nPoint += 390;5 E" {; ^! v" `/ n' V+ K
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )# y% r/ u; X5 O6 \$ d7 F$ t
nPoint += 120;
2 f, u7 Y& ^ ^- r ` |2 H' U8 T else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
) m0 h0 O9 D5 w4 h) I! | nPoint += 150;4 a0 C; a0 q; c5 p' |+ k/ Y
else if( nJob == JOB_FLORIST_HERO )
0 ^+ c8 x7 I8 s' a9 Y nPoint += 160;) i N8 M ]% a' b* X) p% R; F- r
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ), O5 m$ A7 c% R& ^3 m7 L) I) O' `
nPoint += 180;
: n, X4 v% P) q) k* e else if( nJob == JOB_ELEMENTORLORD_HERO ). H+ d6 h& x! q: S) N8 J
nPoint += 390;
+ T. ^$ C5 v' r& m6 j! K6 ~/ C$ _
2 s- [* l" t% {& ?$ F, a9 R AddSkillPoint( nPoint );
$ R: L$ S4 }& P0 \ m_nLevel = nLevel;
) z, Q4 M ^% [" e( T( ?! W2 [0 b
SetJobLevel( nLevel, nJob );
* F( w M$ j; m' v% ? m_nDeathLevel = nLevel;# B5 L! }; x4 [- Y
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans3 B4 O4 f( N. a+ b& j. e* L, l- H
if(IsMaster())
! s. z7 `/ S' V. g; t, B0 ?) p$ n. | {
; Q# P$ z/ h6 ^6 z; f3 f. I int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
# b1 X2 X" @+ L( b; W/ _7 c( l& S if( nLevel > 59 && nLevel < 72 )
+ l& B# s, Y% i9 b2 Q dwTmpSkLevel = 1;
3 Q* Z, [# S1 s' s% B+ Y- U& C. u else if( nLevel > 71 && nLevel < 84 )
+ I, d9 C9 a' W) d [) \ dwTmpSkLevel = 2;
3 y& q, N6 N2 L( F7 f; {5 i5 b else if( nLevel > 83 && nLevel < 96 )
2 `7 G+ { H+ b! B dwTmpSkLevel = 3;
# ~$ e$ l# x J ?" m" Y else if( nLevel > 95 && nLevel < 108 ) i6 C' r) L/ o9 H. T- L* J
dwTmpSkLevel = 4;
2 v3 p' x% a, |" |: o else if( nLevel > 107 && nLevel < 120 )3 {( e% M( g0 x* }' s0 F4 O
dwTmpSkLevel = 5;
; \( @6 L/ s1 H n% P for( int i = 0; i < MAX_SKILL_JOB; i++ ) / n3 w6 S. J3 z8 [9 }; `, R, Z( }9 O
{
u, _# l9 O6 c X LPSKILL lpSkill = &(m_aJobSkill);
" B! p0 k. M- l8 J. O4 L; `& u6 R if( lpSkill && lpSkill->dwSkill != NULL_ID )
, L x, d$ f0 E/ S4 l {4 E- M% S$ e8 M/ ]4 S4 A" B
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 9 A' J6 s6 S- e3 c6 F6 Z
if( pSkillProp == NULL ). I8 `! W* Q4 }- b$ Y' M- K
continue;' l: ]* r& A+ Q& h( D
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)' K4 [$ V! d3 _/ Z$ `+ N# n9 }
continue;
2 J/ X. l5 U* i3 r* Y lpSkill->dwLevel = dwTmpSkLevel;* k' @' ^2 r! k5 k& H6 O
}
8 C6 k6 Y5 M" n' O4 `0 E! y; W }
/ A7 s( H9 E3 ~1 A- [$ K6 V }2 R2 I' H/ z0 Q6 `- C
else if(IsHero()): ]: z. b' _6 o
{
6 G: Y2 n8 O( ^, _0 n$ N for( int i = 0; i < MAX_SKILL_JOB; i++ )
6 m& |2 w) W3 V# O/ l { 6 J; m9 L/ Z; Z% M( \
LPSKILL lpSkill = &(m_aJobSkill);
% _2 j6 ?& ~- A* y if( lpSkill && lpSkill->dwSkill != NULL_ID ) {( s! K. z. P% d7 @- K6 _
{! ]4 K0 ^+ |) T- ?5 l! G
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
; N4 q1 n: \, v3 \# M- T+ N if( pSkillProp == NULL )
6 P, R1 R1 E* Y) b8 j1 O6 n continue;$ m# p1 I5 E# Z% E- g, A
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
1 |: X2 ?+ N3 {7 H continue;
9 O6 Z2 K9 f: x0 a1 Q- Z lpSkill->dwLevel = 5;
3 K% K( G) d7 C Q2 R. {* m } Z! V V R! b7 A r
}
; Q2 @2 D* c0 g& u/ R2 j }8 `; _: R) u' i0 y
else if(IsLegendHero())
! X: o' b( X- H! C {
/ d- y! ^$ T$ Q( w A/ z2 y8 { for( int i = 0; i < MAX_SKILL_JOB; i++ )
/ M E$ S$ r" C: D { 1 M: h2 A" X+ R6 H" a7 l. U
LPSKILL lpSkill = &(m_aJobSkill);4 C7 S' J& d2 Y0 V
if( lpSkill && lpSkill->dwSkill != NULL_ID )
' I- a0 {& [5 u2 u" E* ^ {; \- u1 S' k0 l8 o4 J) X/ a
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
, k' f- ?( x" V/ V% Q if( pSkillProp == NULL )1 B/ D% {; o, N7 L, Z! k+ a) a' n
continue;8 Z# ]% u: c2 S J& _9 \; u, g
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
, }2 z( p7 |4 N6 c/ \. Y* v continue;
. T$ i, y% D" J+ l/ l! p3 R% ~ lpSkill->dwLevel = 5;
1 E6 `8 K9 P! W+ j4 e4 w# y0 L }
& O- Y2 d2 J! I4 T* A$ g! T; q }2 D7 }' N$ }4 ~; O
}
% B) R( v2 r8 {4 T& n3 L#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
& E0 @* F, t6 U; _& N0 `* ]1 V# Z if( bGamma )
2 n/ @( g' ?( d5 Z3 O8 v4 z" p3 u {
( }' t& [8 H/ [$ g R& u$ i: { m_nExp1 = 0;7 {" p0 C" Z! B; K- A+ Z1 Y
}$ f$ ?- D( _% V+ @9 `, j
2 w7 y& Y. \6 M0 F ( (CUser*)this )->AddSetChangeJob( nJob );
8 Q0 ?" Z) O/ y1 ]1 d' y g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );( g9 o$ J; d% L& Q" `1 q
; n& M9 l( O b, x
2 D, v2 }3 w" G3 A& u
#if __VER >= 11 // __SYS_PLAYER_DATA
9 h% P- ~/ k- K ~& ^9 v( _ g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
$ a7 U8 [' `- P7 E#else // __SYS_PLAYER_DATA | V+ A7 ]0 v# e) Q- o; L
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
9 O" A( E6 c2 U g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
& R3 b- X' T% N& \ if( m_idGuild != 0 )
$ D4 z7 e ]4 t* ^3 e8 ? g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );4 W U3 o7 r0 p
#endif // __SYS_PLAYER_DATA
; k2 h* V' e1 P; B9 R1 U SetHitPoint( GetMaxHitPoint() );
. N- b2 e. {( _. t3 q% T) g, j* G* B SetManaPoint( GetMaxManaPoint() );1 B" a: u+ d$ T, J
SetFatiguePoint( GetMaxFatiguePoint() );
% i/ U, `+ y. {, c: _2 s g) a# ^+ e: O if( nJob >= 1 && nJob <= 4 )5 _/ T0 L$ s0 d3 S) `
{
0 S* I: m+ |+ @ m_nStr = m_nSta = m_nDex = m_nInt = 15;' X8 E/ v) _( ~+ \
m_nRemainGP = 28;6 F* c* [5 A: l0 M& a
}
4 D% a/ w' }+ i6 N# t+ a if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
6 g" O5 q: Y$ n; C {# g$ z7 _7 y2 O8 W) T
m_nRemainGP = 118;
6 o: A( d* ]% |( P, q //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;$ q" n7 _5 ^$ C9 D* p5 c
m_nStr = m_nSta = m_nDex = m_nInt = 15;$ u% \4 g! e( X0 o( E
}
) g6 L6 R2 y7 R9 ^3 [# b0 ~# U5 a if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )8 a: R; D6 h% Y3 n3 D5 v( _
{
" d/ d' K* W2 q S5 i# s- [ CItemElem itemelem;1 i2 W% R' o- S6 {' F4 t" R5 ]
itemelem.m_nItemNum = 1;8 k, t! n$ R/ Z7 e# W8 c7 G% d
itemelem.m_bCharged = TRUE;0 Z: x* Z( W8 a6 n1 G
BYTE nID;
% V( t% V( a% Z; m8 G
) j0 e% @4 q) }% \4 h2 n if( nJob == JOB_MENTALIST_HERO )
1 Z8 x4 K" } f9 k+ H' o. T! V# ~ itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
' k7 F2 I8 Q s& [5 s9 A) l; ] if( nJob == JOB_FORCEMASTER_HERO ): q* f) z2 S/ V
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
% l& e" G% f! s7 `: O1 m& N3 d0 n9 W/ S7 R
( ( CUser*)this)->CreateItem( &itemelem, &nID );
4 T i) C3 F* p7 ]) U }* r9 L" G4 C1 }3 S6 ]8 N# A
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
+ D" @ G! g0 z ]* h ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
( i: ^4 s1 r }3 ]' z& y0 n ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );6 F* V3 s7 n- i
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
0 e( G) A# Q! h. h ( (CUser*)this )->AddTaskBar();*/- t, Q X H! m
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
; x, k. v% H% x1 x& V, @/ l/ f#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
: c8 F0 L. y+ P: C- k! f6 X ((CUser*)this)->CheckHonorStat();
v- z6 [: l f& Q8 ^# d ((CUser*)this)->AddHonorListAck();
9 _ ^1 B- H& f; ~ g_UserMng.AddHonorTitleChange( this, m_nHonor);0 Z( I) j/ S- O5 I% g v$ b8 e+ f
#endif // __HONORABLE_TITLE // ′Tà? f8 _4 l# A4 P( L" {4 R
}
$ c& a5 q* S6 Q/ _ H#endif // __WORLDSERVER/ ?9 _0 @/ T# g, h. T
} , L& c+ R m5 x. I, Z8 I
! O8 C" m6 o& J- e
然后你进入functextcmd.cpp并添加以下
) H0 f& K, e9 E0 O& G8 x! S# l N6 s1 ]0 p
代码:
+ \: A& c4 W* Q( S/ FON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
; F6 K( {0 W9 w# D1 U下面插入
# l; @& O7 @! s, G0 a, E$ \ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) , g' O9 K0 ]: Y2 h5 F
! G9 y( L8 T8 }9 M6 {. |0 _
然后你去
1 I8 Q9 w* f" o1 t8 @+ t
( r g) F1 z d7 F代码:
- _* j9 A, r: V$ a2 W/ `" n代码
% `9 \" p8 N& ^# {: d, c, t% `, KBOOL TextCmd_ClearPropose( CScanner & s )
- J1 \4 B' m( n7 h{" m3 J, c. {9 y1 F5 Y+ f
#ifdef __WORLDSERVER3 T0 ]. V. V$ }$ d
CUser* pUser = (CUser*)s.dwValue;( u9 f3 o3 E6 `+ ]/ N/ r
g_dpDBClient.SendClearPropose();
. M6 g4 h1 j: h, x9 k#endif // __WORLDSERVER
) B8 ?2 m1 d! x+ k5 } return TRUE;
2 A. Y+ h' |6 ?; z1 [7 P}, F" S- o& r- \+ X0 J% O, m( f, b
下面插入" W; R/ V c) c( u
BOOL TextCmd_rebirth( CScanner& scanner )
( a8 q S3 ^( a; ?7 u4 i- W{* v% q) ~# ?$ p1 Y; A( z. d
#ifdef __WORLDSERVER
- b" ]3 k5 ~ B- r( Z5 s; }$ iCUser *pUser;
- k& v4 R. s4 IpUser = (CUser*)scanner.dwValue;
+ Q Z- \; O0 u% fif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())# o" m7 I- ]3 F' ^* j
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);& }& p7 R4 V: u
else
8 {3 z9 H' F( wpUser->AddText("你还未达到重生条件!");
9 J# O* x% U0 l, ^# J#endif
' `4 z8 r! r% _return TRUE;( u% M+ |) w+ h/ |- f5 Y
}
1 U9 T& R1 |! {8 V: c a1 t* B3 ~- h+ W7 o. R# _0 H
4 P3 _4 {# V& ~4 L9 n4 m; u6 Q
) B" i) o- y& Q- w9 R1 s; _2 S# V2 E% ^/ T0 r
|
|