|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel* Q0 N7 C) t% j" \, k
: t3 p0 s5 s( A- W: E
Mover.h6 J6 `% h0 r+ W
代码:* O$ G) J5 F# k$ e. c, i
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
* p5 i9 B! ~( p L! `3 v% n. \, ?6 N5 A% L5 j4 `
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 4 r! h, Q0 ^5 C7 J5 d0 x1 n1 G! I+ z8 P
5 C% u4 [7 h' x1 l- h0 s& C, o
然后你去mover.cpp添加
) M: o2 E# D2 q$ w% C. ]: M; Y" Q/ z
代码:: y" i9 ? ?( p5 W( [' x& F
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
$ c1 ~* t& i, E{
* [8 _: `$ A8 G3 U#ifdef __WORLDSERVER
' L3 B/ W, D* S: _' p+ d; \; X* O: [ // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
4 L- ^! U5 d5 U7 [ MoverProp* pProp = GetProp();8 l& F. f7 \3 o; l3 I8 u5 f
if( pProp )
3 s8 N: D" B: h {
% b- Q# n6 e) B! r if( nJob > 0 && nJob < MAX_LEGEND_HERO )
+ C1 e# Y0 r: `4 u- p7 H2 \1 s {
. P' y! x0 R4 ^ AddChangeJob( nJob );
3 m) _ e/ @( N7 a( I6 F }else{
* T$ L' a& Q: ]1 J7 q return;& W ?/ Z& k0 G4 B: ^
}
4 ?2 l1 o, Y& l int nPoint = 0;
- Q; w+ t( R$ j. g if( m_nJob == JOB_MERCENARY )0 a% o, h3 J- q% R* {
nPoint += 40;( k( a" X9 \$ c, E
else if( m_nJob == JOB_ACROBAT )7 v1 `* P7 N# Z7 W
nPoint += 50;
1 |* s3 Q" b* `9 u8 |9 T else if( m_nJob == JOB_ASSIST )6 d2 l& n. r. u. u" a
nPoint += 60;) @& I. `1 _* k9 ~$ [
else if( m_nJob == JOB_MAGICIAN )
/ ^3 c" [8 n9 T- n5 p( u9 e nPoint += 90;" A6 w; y& @- `( k9 f
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
7 Z) H+ Z$ F+ j6 U" Z nPoint += 120;
4 j7 Y( V' ]9 J5 ? else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
3 i& Z+ W% F; { Z nPoint += 150;" O M7 p; \4 l) d; x" L
else if( m_nJob == JOB_RINGMASTER )
: [/ L0 d0 O8 s, z3 W9 w nPoint += 160;- O( t2 ]0 X% v2 G
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
" j+ n& r' n$ [/ U2 H5 _ nPoint += 180;% N- N$ _6 T& Q b& C+ c/ ~. }: s
else if( m_nJob == JOB_ELEMENTOR )% _! N5 |+ I. I4 J7 `! e! G
nPoint += 390;0 `) Q5 ]1 n) f* G, y
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO ): l7 O0 ]' [: b. O
nPoint += 120;) b: F5 u7 L) V; v, i
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )$ D, z6 i* s0 y! ]; `
nPoint += 150;
* Z. U' @& e- }% L& F1 l& x+ @2 f else if( nJob == JOB_FLORIST_HERO ), J! ~+ r, Y1 n9 r1 T, v
nPoint += 160;4 U( ^6 g- o4 P5 B3 }- S
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )6 F. R+ V5 m. O4 X8 G
nPoint += 180;
g9 A9 v8 q' } A else if( nJob == JOB_ELEMENTORLORD_HERO )/ Y4 G+ `/ d& V( _) R
nPoint += 390;) }( T) ]1 x: c9 A
$ O( d8 `) j' i4 c: z2 F AddSkillPoint( nPoint );9 v6 v1 u6 x+ X2 F* f7 _% d
m_nLevel = nLevel;
1 V1 o2 [. |/ u2 D4 g& Z" \/ B: I# w
SetJobLevel( nLevel, nJob ); a9 h/ G5 B0 Z7 \* s
m_nDeathLevel = nLevel;
2 @0 j( E5 |. [( S#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans- u$ ]4 x1 W9 d9 Q# A6 E( u* [
if(IsMaster())
3 f6 X; t- Z: o {9 [$ S: e/ y3 G* k! B
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108# t7 o7 D: u+ B* X- K& r
if( nLevel > 59 && nLevel < 72 )
8 k9 ~/ L3 _- n! i& N }4 _ dwTmpSkLevel = 1;% ~2 Q8 ]* \) E U6 X1 J5 V
else if( nLevel > 71 && nLevel < 84 ). b* \. S' B- C7 s# q
dwTmpSkLevel = 2;; U8 g, W' @0 t+ Z t
else if( nLevel > 83 && nLevel < 96 )$ B3 O: w' g- u
dwTmpSkLevel = 3;
. g+ D. ]. G7 Y5 J else if( nLevel > 95 && nLevel < 108 )/ S, S) u) [: M0 ^
dwTmpSkLevel = 4;
) v; E- I9 D. l) D; C$ U else if( nLevel > 107 && nLevel < 120 )2 e$ ~, {& o! ^
dwTmpSkLevel = 5;3 m% \# ?6 D; D/ z) o$ S
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ' {6 |+ \) w# j D! M* L w7 c
{ # Y: |' x3 {; {
LPSKILL lpSkill = &(m_aJobSkill);
7 q! R9 |8 u+ t& p7 k x if( lpSkill && lpSkill->dwSkill != NULL_ID )
, y) o# ?; f+ a' }$ E4 A {
5 D4 V+ y1 o% ^3 z1 n& D ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); $ w/ m. c/ y/ |9 _
if( pSkillProp == NULL )
/ C M& v# {2 L0 I, ] continue;' Z: b) Y* q5 H/ J1 K9 o
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
8 }" I4 K1 p4 ^ continue;
5 ?$ ]) h7 b! U& O* ]* o" e lpSkill->dwLevel = dwTmpSkLevel;
5 U) H5 A/ E, {; Y) {/ | }
% A6 i/ x( V4 l; y6 c1 f7 ?% b }
& M( @* W$ |% j5 S2 y }
7 q* C( F2 k0 p$ n else if(IsHero())6 m8 \" G1 |; J. b8 x
{
5 b) C' Q2 e) ]* U2 o) w* i for( int i = 0; i < MAX_SKILL_JOB; i++ ) 8 e/ I; W0 X$ i% l% b2 J6 G
{ $ k' T/ ~/ ^% z% _4 x
LPSKILL lpSkill = &(m_aJobSkill);( y' o. r+ v, [6 o- z6 c# x
if( lpSkill && lpSkill->dwSkill != NULL_ID )
& g8 ?8 k: }' Y3 O- Z6 A {
2 y9 e. [' g3 V: b* G ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
5 j8 E' l5 U/ E2 H7 d! i if( pSkillProp == NULL )! ^6 n# g" Z* o! v: v
continue;
# X* T/ Q Y' H' I% `- H if( pSkillProp->dwItemKind1 != JTYPE_MASTER)4 L& {' l4 [6 j8 B7 r+ ?$ w/ `" z
continue;( p, d: F+ I0 T1 k# Z, J. ?2 }1 ?
lpSkill->dwLevel = 5;
9 G9 U4 X5 A- z6 X }
- \) b. j, e" d1 Q }$ U8 I+ f5 P: q& S- e" e+ u
}" \6 F# R, M7 ]/ y$ ]' ]4 L7 m
else if(IsLegendHero())$ V1 E9 r' @# U* P# E9 J$ V5 F9 l
{: c) B& P- ]. W. k# I& x$ G
for( int i = 0; i < MAX_SKILL_JOB; i++ )
9 W% R9 ]0 ~9 @+ z7 { {
3 {1 D/ K0 |; D G1 [1 n z( { LPSKILL lpSkill = &(m_aJobSkill);
: a+ u' n+ x7 Q- g2 o) R if( lpSkill && lpSkill->dwSkill != NULL_ID )
0 n% r7 p+ S% d {3 i- y7 Q7 D$ a$ |# g; ?
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); . ^, K2 L) \; b; Z& Q
if( pSkillProp == NULL )/ H4 M* Q* `! H1 t8 E
continue;
. M$ }; r M7 J! E4 a: [ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
! V6 a# w3 O+ A- T continue;
, O {% \, j4 L" L, y lpSkill->dwLevel = 5;$ N1 Q- q' F5 B' _9 K' I$ n1 Q4 F
}& E" o6 j$ U2 ]: n, p: G. d
}* ]. y1 X6 D% [* ~2 n$ J4 ]
}1 M: f& l1 `/ l$ J' w, C
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
3 r5 k9 Y. ~0 h0 Q if( bGamma )$ |6 l0 }, g1 r
{ U l: W8 z r, x
m_nExp1 = 0;
3 d: M E% q, U5 t& n1 { }+ `0 K0 q* g7 E0 K7 v+ x8 J# B' {
( @ y, r$ ~ a {2 I# f/ N9 }
( (CUser*)this )->AddSetChangeJob( nJob );% i+ x$ r# z4 B0 h3 j- x1 \
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );1 y- k: K7 {' m5 i1 B7 |; j
9 C6 x0 q, e+ c7 F! ~$ L! ?7 H3 C1 n
9 A0 `5 d& A+ d' S" M; I/ D C
#if __VER >= 11 // __SYS_PLAYER_DATA+ j6 b9 b# _. z4 j
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
: r7 |- N3 u: ^+ m#else // __SYS_PLAYER_DATA( t' R6 @% X, R& }4 O
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
: g- Z: I+ P5 ? g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
) N7 G3 [, V- G: k+ L" W+ ]. i3 n& k if( m_idGuild != 0 )7 z: u8 `, K: P! [, G" e, n/ `* o
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );# N; ^9 x' ~( v8 G0 [1 X( ?( \
#endif // __SYS_PLAYER_DATA
' y9 k5 S( ?7 Q3 q SetHitPoint( GetMaxHitPoint() );
8 k1 a S. ?" a) I9 L' o b SetManaPoint( GetMaxManaPoint() );; U- w6 E- G1 k7 Y
SetFatiguePoint( GetMaxFatiguePoint() );
" q& z2 e s9 h/ y if( nJob >= 1 && nJob <= 4 )) b& p/ j/ h" i# l" s) j$ | a
{" z+ U3 {9 C! I3 i/ G, ?. e
m_nStr = m_nSta = m_nDex = m_nInt = 15;
2 @# v% B; M, a m_nRemainGP = 28;
9 @/ b/ K6 W& V, t, u5 N }
( M) |0 p8 n- _: k" R; h if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )' h' z, Z0 k# R" u* t/ S+ u# r
{
2 C* L* @, a# t, Y- N m_nRemainGP = 118;0 ]& X9 ?7 m5 w% n6 U) M
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
6 C6 d" {8 ~% Z" I8 l! T m_nStr = m_nSta = m_nDex = m_nInt = 15;
6 y8 c5 p# `1 t1 X$ V }6 F2 p% D; k5 Y2 ^: b* C* ]. [0 v0 X
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
4 h; q. |" {/ K {* C3 v& s5 w* b7 O
CItemElem itemelem;0 k& w+ i5 T) q# G
itemelem.m_nItemNum = 1;
" j9 r- b9 \ u8 e$ C2 f. ^0 F itemelem.m_bCharged = TRUE;7 _5 l; W+ Z& K$ X9 O* C/ S
BYTE nID;+ i; h$ f4 s8 ?$ c# J2 `+ X! c! e
0 O1 x' c x% C7 {
if( nJob == JOB_MENTALIST_HERO )$ p. S8 ]+ f7 z+ I/ T% J5 o3 W
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;- Q& `0 K; {. j, [
if( nJob == JOB_FORCEMASTER_HERO )* r8 F. h5 n5 o2 j. T
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;% s. N \: V# c# T6 y+ z* F. J
: ]6 ~$ y% A4 ~* E5 } ( ( CUser*)this)->CreateItem( &itemelem, &nID );' R: c H; j; n. g; b9 f. h0 ]
}
% D5 b! e( K, W0 N) w2 Z7 U6 J, Z g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
7 Y1 @. g# K' N; z* h% I9 _2 a$ _; i ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
8 Y6 I: B6 ]( V8 l* x3 Y ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );, t, G! s9 c4 ^. B
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );0 J6 n J/ ~, d. F3 u' p
( (CUser*)this )->AddTaskBar();*/
0 Y: B; e* b3 H R ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );6 ~8 T n2 ^4 \. i+ l' F+ q" g, g
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
& i# |/ L( y; d4 X% e1 F ((CUser*)this)->CheckHonorStat();
! L- Y: ~9 h9 h3 a( o; G) z4 |0 R8 K ((CUser*)this)->AddHonorListAck();! I6 X$ d. _6 x; U2 g Z6 B; {
g_UserMng.AddHonorTitleChange( this, m_nHonor);
- w5 M: {9 B: Q' m- z( F# M#endif // __HONORABLE_TITLE // ′Tà?
7 t8 n8 ?+ \: ?9 B3 f# ~" S }
- d, V' \& @; E* M1 W+ I#endif // __WORLDSERVER
. j2 e) X+ c3 u9 T2 G# Y} 3 h8 q2 U' y4 j$ V7 y
( `* c; r0 M. L
然后你进入functextcmd.cpp并添加以下
' [4 B |' L! N: M- {# E$ K3 g- ~# `; S* B, @
代码:
1 w" Y' y6 N9 Q! L6 q7 lON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
! j. ~; J( y. h! w1 s下面插入
5 q& p& x8 Y; ION_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
7 v- m( r. J9 H6 J2 r# e0 o6 t5 c4 n. }4 G* h+ a/ M
然后你去8 T8 \1 t( W5 {, s
- E( _! ]- s) S ~( L
代码:
" [) x- C/ q0 I) \: @ r代码* P1 s6 s. I+ ]5 C
BOOL TextCmd_ClearPropose( CScanner & s )) Z* k. Y9 u0 L0 k0 x2 A" ^: n
{
* g) Z+ p% l9 w! D% L/ y) \#ifdef __WORLDSERVER" L4 G; R, S* n4 Y5 e- r$ S
CUser* pUser = (CUser*)s.dwValue;
8 l ^) }$ R+ W1 f" I g_dpDBClient.SendClearPropose();0 n$ V/ w' a* H
#endif // __WORLDSERVER) w0 ]" U7 G4 |4 ?" o! w7 k( W: u
return TRUE;
6 b. s& @9 C/ ?6 b. l, |}, o! |. T6 W6 b! o* a
下面插入) x& e0 G% m7 D$ }
BOOL TextCmd_rebirth( CScanner& scanner )
% W \7 r2 Q- _) J8 q{
% B" ^# [ V. n D#ifdef __WORLDSERVER
, _$ ~- I% c* k2 M/ f! Y1 YCUser *pUser;8 {+ k* [5 z/ X! ?
pUser = (CUser*)scanner.dwValue;2 e0 n9 n' j2 p# j/ U
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
& N: p/ Z Z& Z1 a8 n, ~! epUser->InitLevelPumbaaa( pUser->m_nJob-16,60);3 k! m* v' [7 @" P% X
else* N! X6 I5 Q, u+ ^, g7 X* i
pUser->AddText("你还未达到重生条件!"); ]# m" h& {! ]
#endif
' I5 l( R6 N4 n4 h4 U4 H$ Lreturn TRUE;9 |. Q x% j0 U D+ { j
}
5 b0 [/ t: W' p' F: S
7 o+ ?5 a e9 b3 N4 G
4 f' I) C# B" {8 c+ O" b0 E( ]! C. F0 P1 l# a* E9 S$ ]) k
2 A. ~: `0 T2 r! D" c) f, A0 R6 j8 H |
|