|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
, x/ n2 O) B5 C: g: o' S: ?8 c
9 x- ^) C1 Y& [) x, zMover.h
5 v; b1 ]: U% D8 }/ y1 s( e代码: d+ T; O( \, _: R3 C' `# `* a; T
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
5 M" Y9 |/ C" l S* w4 v. w/ l
- G+ j- `- y- x, a( M3 e& p( ~下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 0 {3 o% j v( h* Y B8 j
. N) C# G" A) n* M1 H+ M3 V然后你去mover.cpp添加+ L# H$ L) S1 q: J) w" m- p) g
9 M. q( @5 Q. C- d, ^! ~3 y+ \2 ]代码:
# ^! o5 \7 E3 i9 G! J) i- A: ivoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
9 X& v. G1 E( u6 c# G( x{6 t/ g8 l0 O* {( V$ F- a7 B
#ifdef __WORLDSERVER& U: o3 O0 C# l; a) o8 `+ O; ^! V- N
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
6 t/ B) c' P5 X( g6 s MoverProp* pProp = GetProp();$ V8 V: E! t1 j' i0 c2 J! D# T* X
if( pProp )
7 ]+ [: y& @- }! f {% M* `6 J+ r& z5 E9 K) p S
if( nJob > 0 && nJob < MAX_LEGEND_HERO )* |: r/ t" j% j8 w$ n8 y" R
{
: R. K5 v' R9 G0 R6 p7 A. h4 c AddChangeJob( nJob );
7 N+ D: E4 M4 ?5 |2 ^ }else{
4 z! c, m5 m% ]' W return;
9 d- F4 U1 l7 d }% Z* _, F# [+ k) P3 C
int nPoint = 0;
9 v* U I @3 _0 [ if( m_nJob == JOB_MERCENARY )! H/ T% k3 k5 H6 D+ [# `, W
nPoint += 40;$ P% p4 p- v$ K# c& h9 X
else if( m_nJob == JOB_ACROBAT )
! z& J! C. b# _$ ^0 O9 l# o nPoint += 50;% M v: E$ G* b# `0 e! P
else if( m_nJob == JOB_ASSIST )) e7 t6 M8 c0 M* Z6 K% t
nPoint += 60;
& S3 X" |4 g( a$ R( Y) e# i7 ~ else if( m_nJob == JOB_MAGICIAN )
2 v; N' V$ g( W& o5 H1 E nPoint += 90;7 ]1 a$ I+ ?% {$ p) z @% Y, D
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
: `; s: E1 Q+ s# O% y9 M nPoint += 120;/ R% }) m' D3 { g4 y X
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
( h4 z6 ^: I1 \" _ ?! u) o' O nPoint += 150;
~ {0 x4 ]: s& P7 P5 w+ y else if( m_nJob == JOB_RINGMASTER )4 k1 L, _. @/ q
nPoint += 160;
6 ]- B" I6 P; P/ z8 J0 t3 E else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
- L. e: _6 e; S nPoint += 180;
4 [4 V/ C5 m% ~$ {" }) m3 H else if( m_nJob == JOB_ELEMENTOR )
# a% V" A# P$ C. p, e8 V. m3 s nPoint += 390;9 Y+ \, h/ q* t9 q' ~ S
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
3 B5 j; ]4 n% h3 R nPoint += 120;
1 L( @ t) t" H9 @! W" b else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
% K7 g# L: f9 ~5 T4 i( U nPoint += 150;2 q) D9 b5 {- G4 e2 s+ `5 q" t
else if( nJob == JOB_FLORIST_HERO )
4 J- t* V4 B/ A- K8 Y4 h4 s nPoint += 160;% f ^8 a; h! V$ U1 U5 h
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )" Y1 ]- q0 E6 ~! s
nPoint += 180;
6 f2 O2 x( o" O' ^3 f else if( nJob == JOB_ELEMENTORLORD_HERO )' K8 m* w6 P" T) c5 S1 l$ z
nPoint += 390;
4 G! O- {3 \# V1 I( x; ^4 m! Q( R! l
8 S& ~$ _# I2 M4 K$ U7 l AddSkillPoint( nPoint );
2 `2 l: c& l+ k$ S9 F; N8 ~' x m_nLevel = nLevel;
) K& s, |8 _* d
0 _% A+ w& P) o* e: I SetJobLevel( nLevel, nJob );, U& g# _# D& q
m_nDeathLevel = nLevel;7 u4 a8 I; N, a- ^9 u! Y
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans0 K& A: _" E% k/ ]! A
if(IsMaster())
2 p0 G1 D% V5 r) S {! Q5 Z, L Y G
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
/ x& [4 O3 T0 z a! _ if( nLevel > 59 && nLevel < 72 )& h1 O" B) M5 T0 x2 O
dwTmpSkLevel = 1;( d u3 i( X' a ]
else if( nLevel > 71 && nLevel < 84 )" A( O# t5 `8 u( o9 g' b
dwTmpSkLevel = 2;
# g' ?" C5 V5 A9 l else if( nLevel > 83 && nLevel < 96 )
5 r9 t: z0 m0 r6 ~ dwTmpSkLevel = 3;
2 ~ y* B. c/ O* g, v else if( nLevel > 95 && nLevel < 108 )
8 @+ u+ u6 Q& Y/ [" c+ ]1 u9 r( \ dwTmpSkLevel = 4;, S/ \& M) e1 u w! X
else if( nLevel > 107 && nLevel < 120 )
K6 a4 s4 C4 d( p% B. a dwTmpSkLevel = 5;! g' k/ d+ w, h e a
for( int i = 0; i < MAX_SKILL_JOB; i++ )
- X9 i0 \! v! D {
2 U+ Z) w8 B5 }! X9 K( |$ l Q LPSKILL lpSkill = &(m_aJobSkill);2 ?7 j4 E O9 K/ E5 g; v
if( lpSkill && lpSkill->dwSkill != NULL_ID )) j8 D6 u+ B2 ?/ U' t
{
6 F) O, h5 i: I+ f& v& r" k& K ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 5 l" T0 J1 H5 v) N, N
if( pSkillProp == NULL )
8 d" j6 K- ]$ j4 |, p% r+ I5 e$ Q continue;% }) _' U( l4 D0 x2 \
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
" ]7 R/ k/ ~7 Z" y* [ continue;% a6 L& r$ h9 B5 \. D- w
lpSkill->dwLevel = dwTmpSkLevel;5 V9 w+ V; S, U
}' O+ O+ b: R0 n
}
O5 L. b' o$ w }
5 q7 P% v5 ^) K) D+ v else if(IsHero())
; s4 J% E: g' j2 v% m$ x9 G {/ Z4 Q, ^5 A0 ]" @- W" z0 k
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 6 R5 V: S1 o4 Q8 F% d
{
8 l+ n' `' u, v: M, {* _' V2 j. A LPSKILL lpSkill = &(m_aJobSkill);
' T2 \* O7 |7 \. i) l# R7 p if( lpSkill && lpSkill->dwSkill != NULL_ID )
; `9 [' P# R/ y: T# L3 Q: f$ p {
' b0 J- W7 N2 R [ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
1 k/ r5 q7 o; t9 I9 n) z6 H if( pSkillProp == NULL )
$ g3 Y( _) W. ]2 H( @2 g continue;$ ~6 H0 n+ t8 ~. m& c; C1 I
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)& u, r4 V/ X$ l' {( n0 s1 |
continue;
( {% w9 W5 J# @. a6 Z lpSkill->dwLevel = 5;
0 x! e ^; @ c5 c+ U }$ [6 w: f0 L. r9 G
}, e$ Y/ t5 h0 d- h
}$ ?1 O M/ \& G7 v- c* `9 X: M
else if(IsLegendHero())& [& ~& b0 v3 t. B# D
{' q1 z/ y# ^) y3 R! {" j( J8 z+ J
for( int i = 0; i < MAX_SKILL_JOB; i++ )
; r! i' X9 K8 u1 G/ Z {
5 i. S# n7 X( Z | Z5 h2 Q LPSKILL lpSkill = &(m_aJobSkill);. w4 }( G/ R, i6 P
if( lpSkill && lpSkill->dwSkill != NULL_ID )% C D3 @) i1 ^9 X5 L
{* w5 k4 T9 x) u! p& s6 Z2 R
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 0 _$ _2 u6 f% D* T7 C
if( pSkillProp == NULL )
) d) U; X: i: I" C( e% n continue;
3 Y/ o* _ k6 V1 Q; p if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
8 }9 O$ R9 R- Q1 P# P. L+ T1 k1 C continue;. ?9 h" L8 n- v$ @
lpSkill->dwLevel = 5;
: P; e: R, e/ l& |& v }- e% }6 l# z' J* C
}9 y4 L$ S: x2 S1 ?; B" z& Z
}5 S) R2 n9 j6 T+ l# O9 r) ?8 H
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
: m% T* ~5 V( H' ~7 W if( bGamma )
( _' L+ q( v. p" w! [6 d { } f! O# X0 G# q Y6 q5 G
m_nExp1 = 0;2 x N6 n6 Z* n2 w: g
}
/ ]: L" A9 G! S6 t: N7 ]9 u" Y8 `0 w
( (CUser*)this )->AddSetChangeJob( nJob );
! ]$ F* j; t4 O: i4 h g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
0 n- d/ D* y( v9 [# `+ O1 n( I8 U. d( [4 H, y0 ]
. @- t5 ?8 g6 x/ q: N#if __VER >= 11 // __SYS_PLAYER_DATA
: L& l; _- y8 f! v, ]6 _9 @ g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
! C9 X# N/ d+ w: @* L! U$ \) N9 m#else // __SYS_PLAYER_DATA$ T$ Q( b9 [" L* C, i2 e+ f
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );/ G8 {' P& {- r8 a$ {$ u2 `
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );( W; l2 J) I# n
if( m_idGuild != 0 )' x; q; Y, l0 X7 [# m; j
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );, e! H: m0 \) n5 y7 V6 l% p# b2 ]9 v
#endif // __SYS_PLAYER_DATA: Q: O$ [- I1 n# I0 S9 r$ N) m; D
SetHitPoint( GetMaxHitPoint() );1 r4 \3 \0 n, \0 b3 J
SetManaPoint( GetMaxManaPoint() );6 a- @& z. |" v# ~" ~, H4 G
SetFatiguePoint( GetMaxFatiguePoint() );
+ y* }0 _1 ~4 Y$ g! {$ G3 h if( nJob >= 1 && nJob <= 4 )
" w2 X5 @. i a/ Y$ t+ h9 o$ i {" o/ ~$ w, J8 N2 r
m_nStr = m_nSta = m_nDex = m_nInt = 15;
( s7 S5 c$ R0 d" m! l7 U m_nRemainGP = 28;
! `! _# s+ ^, E2 b m9 U3 {5 [ }
* C( r1 q- p8 Q, G) H9 x if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
' W, S1 E, k0 {+ ~3 F, Z0 R4 G {& v; n+ k- E8 Y" a# a
m_nRemainGP = 118;; a0 A/ P \; N! I1 A1 W
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;9 I. e) k9 {: W4 C. ^ m! @
m_nStr = m_nSta = m_nDex = m_nInt = 15;
" K4 b" i* P! E, O }
& H& l4 Z9 `2 h# |- X6 F) E9 r6 V if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )/ a. P, M: a- z6 O$ A
{
) N8 X; e0 Q4 i x CItemElem itemelem;) }+ Q$ a( ]5 l* F1 s) T
itemelem.m_nItemNum = 1;. c- k4 a6 s* w; W: R
itemelem.m_bCharged = TRUE;8 F2 `9 U/ y: N+ |2 T- k
BYTE nID;3 |+ t1 h) i! X, M6 q. |8 S' V
0 d6 N e8 }" u: u; _
if( nJob == JOB_MENTALIST_HERO )8 e. i8 Z/ d" ]4 Q$ x
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
, o% v) E1 Z( U if( nJob == JOB_FORCEMASTER_HERO )
$ D, F6 D* [3 C) a1 ^. i% E. U itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;/ C7 ]! R8 g5 J' A" t) b3 i, k
0 ~- o. ?6 @. E7 M% U
( ( CUser*)this)->CreateItem( &itemelem, &nID );' P& h; w+ _9 n# z
}! Z* ]+ i. H. c# U
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
) ^9 P" M+ v1 F$ X ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );6 l& X( P8 A5 F+ ?7 \! @$ o
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
& z8 C7 {! R6 I" r1 G /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );. |( w$ d B# l+ B; g# Y
( (CUser*)this )->AddTaskBar();*/
( C$ V% R( D$ ~6 a6 K" l, A ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );* {" o2 R+ D3 u, Z! a6 w
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?4 {1 G( r3 b3 u. k# a
((CUser*)this)->CheckHonorStat();, M0 O; `$ j0 H3 T+ G" m n+ `
((CUser*)this)->AddHonorListAck();; h$ \4 g. b. B1 i9 t: }
g_UserMng.AddHonorTitleChange( this, m_nHonor);; I( N# x _: I/ m. j+ ]
#endif // __HONORABLE_TITLE // ′Tà?; D7 j: q$ Q# ]) J5 c: O; _
}
# t& w& O& P: f% ?# B% i#endif // __WORLDSERVER
/ e t8 ?& o' T6 A/ M N} : ~" [1 {4 @! v
& W0 Q. P- [" n$ G; }
然后你进入functextcmd.cpp并添加以下
0 s/ t% N- T' l- S, _6 A8 U8 j( _0 x# s! G. P$ ^
代码:) E6 c7 L. n1 u0 K0 d. G+ Z
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )( S B6 S( v8 V. O, ]2 F
下面插入9 c1 |1 x' I% P6 ^) _
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) " u8 l" i: k1 D( @7 J
3 J& m# v- B3 a# l然后你去
Y& F! ?3 r" R/ L% B" P, f+ ~7 R$ m1 h
代码:( F5 g8 t" P) P6 T1 l# F
代码
% a7 o7 `0 H# j! }* L+ ^+ TBOOL TextCmd_ClearPropose( CScanner & s )/ Y a7 }. Y. J3 j5 g9 w, _
{/ ]1 ~0 h* t0 H- `+ }$ t) b
#ifdef __WORLDSERVER- j- Y3 `" w; l* d* s
CUser* pUser = (CUser*)s.dwValue;# L" M! M- h/ u3 ^$ p
g_dpDBClient.SendClearPropose();$ b( w- F- j+ K! o: l# J
#endif // __WORLDSERVER
5 j! p- D& I. I+ Q" l return TRUE;
3 V6 t* ^; ^3 m1 @; K' L. p3 q0 s: `}
& M/ V9 Y/ @4 l8 H& P( E下面插入
( q. h4 e4 P H/ Y3 Y/ I' n4 WBOOL TextCmd_rebirth( CScanner& scanner ); E0 I0 E F4 u0 R9 ~1 F( P
{( k# y+ W3 L' }- T4 z
#ifdef __WORLDSERVER
& K7 \9 |$ m$ Y- M4 @+ W9 jCUser *pUser;+ n: b: x7 F. N. j
pUser = (CUser*)scanner.dwValue;
" i8 B* u+ _1 F8 ?3 `9 ?0 Cif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
$ Q& [, V6 r: \pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);& f8 l, v t/ j( K
else
- i' R6 M: J+ [- qpUser->AddText("你还未达到重生条件!");9 Q6 h- u7 M& e
#endif
) g* @# e% X8 mreturn TRUE;. L/ t5 F7 x7 x$ X+ g
}
* w6 O! E2 J& e8 w( S7 _
7 l6 ?( k }1 W1 q( q* L0 ?* o
* `; q6 m/ D& m3 q1 a, G* V7 R
6 [; I/ C* n/ w9 }# L
|
|