|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel8 m5 x6 T1 R2 B, g
( z( A, {! d: z* s
Mover.h1 d2 c3 n/ D2 U, f& e. J
代码:
- L# B1 |3 t9 o4 r找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü, Y6 L9 ~3 o0 e" _; f0 I+ O) z
% L, L- e. }5 R- g) V, G下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
0 _7 {, w$ U D* @* d- O6 ~4 y ^" P# k$ f) Z
然后你去mover.cpp添加* N& g: v5 D3 M$ s
. m6 m' E0 ?/ M
代码:
, `( z# v1 K* Z9 @void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
) v: V( r0 X1 r( ^+ r8 k{
8 F* f ~: y2 y4 [, a, o8 p#ifdef __WORLDSERVER
- i, V& o! ^6 H7 V# H. s( o; s // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
) w$ [4 t: w7 e/ C2 n/ M3 n& U MoverProp* pProp = GetProp();% _ w3 ]+ X h
if( pProp )7 Y% B4 x; Y. S4 |- d9 n
{
4 u- S- |) X- N# o5 u" U1 s+ E if( nJob > 0 && nJob < MAX_LEGEND_HERO )
# i7 \$ v$ E3 ^" w6 F6 M {
+ ^1 \' O) S8 v' j0 v, f AddChangeJob( nJob );
% c; K7 ]! ~& g0 p' m) @, D" o }else{
' H$ ~% _/ c J3 H8 W% y& W% N return;. }. r- I7 ~; P
}
# h5 M; D1 f9 l% D5 u# j- a int nPoint = 0;6 O: v: q- {+ i
if( m_nJob == JOB_MERCENARY )7 \# c+ ^+ w0 [5 x) w) ^+ W0 o$ ^- M( C
nPoint += 40;4 M; k# F0 x$ V* E
else if( m_nJob == JOB_ACROBAT )
& Q. g4 v; F. V2 j) o4 p( b nPoint += 50;. R0 S6 {2 Y: u( @
else if( m_nJob == JOB_ASSIST )
* M+ s. J2 e% @# U nPoint += 60;) T4 m2 b$ h M* Y2 b
else if( m_nJob == JOB_MAGICIAN )! ~$ @! C6 l6 m# [. m
nPoint += 90;9 y8 r8 P0 `" A l% }3 w. C" k. I
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
+ s% s. R4 M+ i1 [" B1 Q: \# I/ } nPoint += 120;
# P9 D( B! l- Q5 V else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
, Z* b4 n* V6 O nPoint += 150;* o; `6 `+ P9 K- U0 i$ Z
else if( m_nJob == JOB_RINGMASTER )% i: L- i2 Q4 k" d
nPoint += 160;6 u, N6 c. h/ I( X8 h
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
! `6 c7 n. g0 j% K3 z0 m- q' U nPoint += 180;, J5 @: d- l" [4 M' o1 n
else if( m_nJob == JOB_ELEMENTOR )
4 m* H" f) T# z2 K, z nPoint += 390;
N# c# E1 s2 Y8 m5 Z else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
- _9 L2 \# G {" R; {( H nPoint += 120;
" A* M, R3 `7 i' f) ?# d else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO ); B& _" A7 b' j: ~9 X
nPoint += 150;2 @- e7 D d; G5 o3 J
else if( nJob == JOB_FLORIST_HERO )+ J& }/ L) m# i$ G5 T3 j+ i! x
nPoint += 160;# Q6 S0 Z8 i* N8 g' p( Q. q& l
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
1 ~( W5 S d3 L nPoint += 180;
6 j$ L4 `& f- I6 X! A' o9 [+ O else if( nJob == JOB_ELEMENTORLORD_HERO )
4 d" H8 C' z: B nPoint += 390;
, a7 n/ T# o8 {) O7 W, w( i! {
6 L% ^3 H1 S# ?- o- E% X6 c8 u AddSkillPoint( nPoint );0 G; D8 j1 ]: m$ P6 F' | u& g
m_nLevel = nLevel;3 Q7 |% p2 `1 P) m" u3 g
5 u) c9 g0 `+ ? SetJobLevel( nLevel, nJob );) e! O! |7 G/ o5 C9 ]
m_nDeathLevel = nLevel;
J" W- y4 ?; ~#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans$ @& ^. V$ G- E" g; |, f
if(IsMaster())5 q! G* |8 D( O: M* Q
{
6 _- z1 b# e% D, I( F7 r4 u int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
9 v ~; A. D, X% ]- V; `" j if( nLevel > 59 && nLevel < 72 )
4 E# j( G) V# c" ?0 @; H* Y9 J dwTmpSkLevel = 1;
2 U$ H$ `, d8 @8 J0 G# k* K( j else if( nLevel > 71 && nLevel < 84 )' U! [+ Q$ @+ ?" r$ |
dwTmpSkLevel = 2;
^' @) H4 }& S else if( nLevel > 83 && nLevel < 96 )
) d0 F; w8 j i' Z2 W dwTmpSkLevel = 3;& W, Q. z7 S* D( {- j& e/ V
else if( nLevel > 95 && nLevel < 108 )! H+ Z4 V2 I+ M: s/ @
dwTmpSkLevel = 4;
j0 r, l, F+ a. v# t+ q# J else if( nLevel > 107 && nLevel < 120 )4 i3 o6 {4 M, Q6 t3 Q! g- U& ?, g
dwTmpSkLevel = 5;
# b7 M L8 n% }/ l$ e( b+ d6 X( \+ t for( int i = 0; i < MAX_SKILL_JOB; i++ )
; d4 Q: W, _9 r* I f {
. v a& W u7 q$ Q; d LPSKILL lpSkill = &(m_aJobSkill);5 Z7 o; w# ]1 y& z" h
if( lpSkill && lpSkill->dwSkill != NULL_ID )
" G# M( y% t/ ^& T% C$ N8 { {3 q t/ F1 O) o0 l! X! J7 E3 X
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
" ~: Y0 {% }. a" ^2 L e1 ~ if( pSkillProp == NULL )
% S; r6 | ]5 K5 W" Q continue; f; O" {# _7 B) A
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)" D! a. @5 m+ P. L: p: m
continue;
7 s- ?& k g8 d) r0 r lpSkill->dwLevel = dwTmpSkLevel;6 M4 G9 @: a1 K2 {
}
% I7 i/ ]6 s6 ?; ]- o) c2 \/ [ }4 D$ G. S# i$ `3 b# Y% w
}
$ G' \6 Q$ \! w* ]' P3 | else if(IsHero())" Z1 W9 T) U& _
{
7 v' J& ^1 V% T) A" y for( int i = 0; i < MAX_SKILL_JOB; i++ )
8 g# E+ b x: ^1 a { y a, c$ @* a& K& C: p
LPSKILL lpSkill = &(m_aJobSkill);
. q `- o! |) @: z if( lpSkill && lpSkill->dwSkill != NULL_ID )
0 z: t' G8 T) b9 x" N; M2 T {
# I9 x+ t* b5 [+ P* X/ t+ t ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); $ a4 m0 y+ a0 I% R l/ i/ h
if( pSkillProp == NULL )
% K4 l% m o1 _* O continue;* N, `2 Z9 U& {" R( f. k
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)8 {$ d0 D$ O$ T! d* S, G$ N
continue;3 h, u0 { v( p- d$ e6 t
lpSkill->dwLevel = 5;
! {' m" l: u5 M }6 b: K- N# a1 D7 C# R6 n/ c+ ~
}
7 h0 _1 {" G$ l }
6 v% h/ G. i$ Q1 _: I else if(IsLegendHero())1 F# L- K |9 |. }; u' S( b
{
8 ]4 y; F# C- t9 f1 U1 I5 D* ?/ O/ | for( int i = 0; i < MAX_SKILL_JOB; i++ )
, S; ?8 k8 _+ J* G2 S. [) U6 u {
9 f) l( {3 T9 e- x' l" I7 \% Y3 j LPSKILL lpSkill = &(m_aJobSkill);
0 A0 q1 n* T7 b2 N! |! T if( lpSkill && lpSkill->dwSkill != NULL_ID )" C0 M3 G% p& n' o' s2 a
{
9 H9 Q6 ?% J' s) u1 R, R ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
$ f9 B5 P2 O; C% i if( pSkillProp == NULL )
4 Q$ R* E( I' n& ~) P( H$ F) E continue;
- O* B0 t7 g* @/ k! P if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
7 B0 B5 y$ g d% |9 F6 r1 P3 A continue;
, ]& U& I( f/ [ lpSkill->dwLevel = 5;7 z: [/ ~0 g, b
}
$ ]- B S& r( E w. c! n6 D }$ C" V8 U2 V- N: k+ ]1 H5 {* t
}
) W1 V7 @, h( H% w& D4 S+ [* @- j#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans: w* ~+ d% E+ W% P( K9 z# n
if( bGamma )& n x7 [' M# j* V7 @4 v
{6 m1 ]! \# }. _: O
m_nExp1 = 0;
% B7 ?( f- `) d7 T9 ~: L* w, c' u }5 d; `( W9 k- S1 T+ u* G
' n, W: q4 K/ u0 X" V ( (CUser*)this )->AddSetChangeJob( nJob ); q2 V% ` P; v& C
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
6 f9 j c# r- X' z6 E) H
) i* F2 Q$ ]/ }% |- I ~" `3 c# \4 }
#if __VER >= 11 // __SYS_PLAYER_DATA
3 E# a8 o. r. f g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
6 S$ }* s4 g( ~* c' v$ z+ ?9 I* D#else // __SYS_PLAYER_DATA
1 P$ m# ~/ z, j. p) {% d( Z) E% T g_DPCoreClient.SendPartyMemberJob( (CUser*)this );# ?" [ C& U; b K
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );+ d1 s3 O* E7 [7 ^) M
if( m_idGuild != 0 )
6 @7 q. ]) G3 ~5 K g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );" n0 {. l/ R8 p
#endif // __SYS_PLAYER_DATA; R) l2 a3 R+ t2 \- }( T& `) ^ t
SetHitPoint( GetMaxHitPoint() );+ ^) S! W6 g- u. a4 D) q
SetManaPoint( GetMaxManaPoint() );7 [+ [) o" x2 @+ M& O# F
SetFatiguePoint( GetMaxFatiguePoint() );" D5 q! ?) r: i4 Y4 r* D
if( nJob >= 1 && nJob <= 4 )5 x# _& [9 }2 S/ i! j3 c
{
! L6 L% {7 k) [. P m_nStr = m_nSta = m_nDex = m_nInt = 15;9 J) ^* h. ~0 A/ ]% S
m_nRemainGP = 28;& x' t+ a, p5 |. R3 H0 R
}
" J# Q% J7 ?+ l x3 x1 L4 Z7 ` if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
n" l/ f6 u) o! J0 J {
$ A& }- ?6 \) t6 l) i m_nRemainGP = 118;) l' b5 a Z) X6 o5 V# z
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
( f. U% J: G" ?) R" o4 I9 N m_nStr = m_nSta = m_nDex = m_nInt = 15;7 {1 R2 I+ @+ C1 t# g. n5 [
}6 k0 `& B4 b6 \" E: ]
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
) z1 X. o9 K. L: c' | {* t& W" o X: F$ {
CItemElem itemelem;9 v/ ~( B. a( B y! ?( ]
itemelem.m_nItemNum = 1; y j% u- i o8 j, R
itemelem.m_bCharged = TRUE;
- h; {: r! n' z! F2 j' F BYTE nID;3 I0 S9 x3 }& W) O$ N4 x5 _
; d/ \0 x# l P: Q; s if( nJob == JOB_MENTALIST_HERO )' T: |$ r r4 d3 J% v
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
! V- ]& b; Q' l. ]; i* z9 g if( nJob == JOB_FORCEMASTER_HERO )
; s3 G( v" ~* X; M8 Q itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;) L. C9 E* M3 y0 T; R0 c
1 q& i. r4 L5 n, X# a
( ( CUser*)this)->CreateItem( &itemelem, &nID );9 A4 N: y$ n3 h+ x' P$ H8 ?
}
! \( v. [7 E' j8 v6 |- q5 b7 T g_UserMng.AddSetLevel( this, (WORD)m_nLevel );7 b( D) n# A+ N
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
( g- X% u" I- L ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
0 X# Y3 J7 J; f1 p: ` /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );6 v5 U& x$ G' x2 ~
( (CUser*)this )->AddTaskBar();*/8 I+ z: ?( M1 r. `
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
V& o% V) ^; m% `% M3 ^4 M6 R0 e#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?, C) R& d9 C$ z
((CUser*)this)->CheckHonorStat();
! N. M6 O/ d7 Y! X+ g e( C* p ((CUser*)this)->AddHonorListAck();' q) w: N4 q" }6 J, T7 t9 w$ ?
g_UserMng.AddHonorTitleChange( this, m_nHonor);' B' Y+ w0 W0 g8 K9 l" e* l, I/ o
#endif // __HONORABLE_TITLE // ′Tà?
: y9 G0 L/ J- s }
$ f9 J+ A/ M: D* H* |#endif // __WORLDSERVER5 u L/ N! Y, `
} " }. d) x$ I/ U% \
. s q% L: |9 i9 ?然后你进入functextcmd.cpp并添加以下
, E" Q5 B, H' Q
0 f- @9 x d* Z9 Q, F, \代码:
! ]/ u2 o0 }9 u1 h& w! ?7 T% m/ b. QON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
6 i4 v- h0 V$ ^/ Z& m下面插入
M9 y. j* w& q" O9 |ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) : R, ?7 ?) }8 Q) z. D' M, I
; H- t( M) ^( [& ` m: E然后你去
2 s' O6 T0 f4 ?; \
4 C3 G) T' X6 \- ?) ?3 {/ m代码:$ _! L; R5 o7 Z/ p5 r
代码$ @0 d4 v4 B1 b8 k. i
BOOL TextCmd_ClearPropose( CScanner & s )8 \$ t4 J& m$ k7 p* f
{ E* ?& I) a, C9 H- b5 ?7 B
#ifdef __WORLDSERVER
- S, {0 J% |2 ~2 }1 x CUser* pUser = (CUser*)s.dwValue;
) z% f4 z) {& _: a( D7 x% ` g_dpDBClient.SendClearPropose();
) Q `, b. Q& ^/ g0 j#endif // __WORLDSERVER7 J3 F5 h' H! Z9 T G; I" ]- n8 a
return TRUE;" J6 V7 g f* U/ k. z5 n
}' Z. Q1 Y3 n- A: w, C& z
下面插入( w2 }0 a5 L, _ g4 b& l
BOOL TextCmd_rebirth( CScanner& scanner )' d. _5 n) B# A* \6 A
{( ?, o7 P/ T, Q5 C1 X/ ^; M& B
#ifdef __WORLDSERVER' |! p0 f, Z$ E4 s9 v: W9 E
CUser *pUser;
0 p/ N# M( J% e; S% h, s1 ypUser = (CUser*)scanner.dwValue;
# ]: r) x$ p" I+ l rif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())7 T1 k5 {6 f V- F
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
% f! f+ c- {) u$ Eelse! u- i' g8 |" @6 x. Q8 J
pUser->AddText("你还未达到重生条件!");% W( b+ Q6 P4 I+ o5 ^
#endif
( E! n: J6 r. Sreturn TRUE;1 M# Z, o# v; r; \/ k8 s' }
} ( `& B. F) a! w* m! U3 q% }- d
/ q' F* }# U8 d1 f7 t1 a6 K
2 `2 R: ?& M' J$ I% S
, r9 I: W! o. J) y Q
+ ?3 M- Z$ s; x$ `9 ?/ Y |
|