|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
* T' y3 G; K4 m1 k8 \" g% I* Y b: X# m: F( [
Mover.h: M& C) H5 |2 o! X, ?$ Q6 n
代码:6 v3 v1 d' ~5 Q* P
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü2 _( _) b" a% Z
" T0 T# O+ b. u! l9 i* K
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 7 @' Q7 \, g" q- L! j% j# t
. x$ d& z- ~8 k7 ]- x& B" \# U, K p
然后你去mover.cpp添加6 p: J: ]; G8 F: @
7 {& @8 y' Q! m4 f
代码:" c9 e l- [1 }( X# y
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
5 E9 K' {4 K& \" {{
/ y, ]9 w. ]5 t5 N8 c#ifdef __WORLDSERVER
5 `0 y# R. {7 F n4 h7 f, e // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
0 C( ?& v6 a% }* k" ~ MoverProp* pProp = GetProp();
& y4 h/ P( D i/ s1 U, o. Z6 w7 r if( pProp )
2 h% [# \. p3 x( b {# t/ d R- P4 @) R' m9 C' Z
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
$ y& L& a0 W) y, J- o! v {9 \# U1 V0 q4 L% F4 a
AddChangeJob( nJob );
& Y) G0 S- ^/ W0 ] }else{$ [, w2 h8 _+ \5 a! w$ h
return;
; H! s3 V4 p- I+ F h }: B, o" E% S& q9 m$ i0 D7 i( J
int nPoint = 0;
* D- ~' g) z. b if( m_nJob == JOB_MERCENARY )4 s/ t2 d% Q. R; I
nPoint += 40;5 H( w5 f8 M, a5 w0 V
else if( m_nJob == JOB_ACROBAT )
0 A! s" w& e j5 @) E nPoint += 50;
$ y. Z+ y3 I& _5 ]& P else if( m_nJob == JOB_ASSIST )
7 N5 s! }* [4 k! X9 p7 V nPoint += 60;
9 M1 a4 C5 ^4 Q% I8 p else if( m_nJob == JOB_MAGICIAN ); @. ]6 f, b# H
nPoint += 90;2 ^: R- ~8 l$ }
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
& \8 P l1 w6 b. K$ @% m$ D nPoint += 120;
. b$ X ]$ }) \& f! v8 \7 p else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )% _( @; n T6 o8 N. e# |! q: S
nPoint += 150;
9 O" M3 I9 @" U. O7 r7 M3 }* c/ Y else if( m_nJob == JOB_RINGMASTER )
$ }& k! C& R7 r: N nPoint += 160;
' i) I& B8 |; ~, i5 R1 d else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )/ I% N; b- Q2 u4 I
nPoint += 180;
/ _# {; p( s" \/ G J: l2 @ else if( m_nJob == JOB_ELEMENTOR )* n. g2 u+ r4 q: V
nPoint += 390;
2 N% Z# y0 w/ I3 y# l else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
, r2 ~6 u2 h5 o' g9 k6 {* { nPoint += 120;' W6 t0 ~: K2 A
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )8 w) o. h3 R5 g" d
nPoint += 150;; ^4 U: i# H* m9 |; v0 H
else if( nJob == JOB_FLORIST_HERO )
* K, p( b+ r0 Z1 W0 S' s, y nPoint += 160;4 A K7 h' J! h/ B! F7 X
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
* m; i! _7 O( C nPoint += 180;2 s& R9 i& f6 c
else if( nJob == JOB_ELEMENTORLORD_HERO )
. ~5 E; ]+ S+ j& } nPoint += 390;
) v" O. d! N. T+ @3 L; r
8 n/ I6 A/ V& x {0 q AddSkillPoint( nPoint );
! b; L r7 H1 u3 E4 i U" M m_nLevel = nLevel;% m9 M: v' A4 o! j5 E! F. j
5 p- u& s3 `: f9 O' P
SetJobLevel( nLevel, nJob );
4 O) L$ M/ ^( b' D5 M m_nDeathLevel = nLevel;: m) p' |8 ~# s$ |2 q
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
) e$ g9 P' J K x if(IsMaster())" G) Q a% l) p2 b5 ?
{( |7 i+ I( R+ d* ^3 q5 ~; ]
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108/ D* ^! p. u0 e, i+ o4 ^
if( nLevel > 59 && nLevel < 72 )0 j m1 \ L; o* s
dwTmpSkLevel = 1;
/ {9 i9 S; t- R ?& a& Y% ~7 f$ ` else if( nLevel > 71 && nLevel < 84 )
Z" R4 O X3 q6 x4 q. T dwTmpSkLevel = 2;
" J, Z X1 o& b/ N else if( nLevel > 83 && nLevel < 96 )
) M, q2 W4 p. @! i dwTmpSkLevel = 3;
2 n" f, b8 C3 t; B; f1 R else if( nLevel > 95 && nLevel < 108 )2 h3 A. z& ]* \- _( {
dwTmpSkLevel = 4;
9 ]3 _) t9 Z% l5 d7 S6 a else if( nLevel > 107 && nLevel < 120 )/ _" \& v/ m4 o) w
dwTmpSkLevel = 5;
# T' G5 B' D8 B3 U for( int i = 0; i < MAX_SKILL_JOB; i++ )
3 W$ e1 U: u R! Q {
8 q# U. ^1 g0 ` LPSKILL lpSkill = &(m_aJobSkill);
$ v: ~3 A* h7 p& H, `( u" ? if( lpSkill && lpSkill->dwSkill != NULL_ID )
- V `* U# O* ? {! }3 D3 e# @# R4 w8 Q% q& J& C
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
; D6 T3 ~" `5 f$ W% O if( pSkillProp == NULL )
, ^2 F" A+ O6 l: v, a5 _ continue;
; N5 S& M* d4 g, w if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
8 G3 ?( E% M& F. Y0 H1 u continue;3 K O) z& f3 E1 j2 [( R b
lpSkill->dwLevel = dwTmpSkLevel;0 K: b) o: W5 g
}; I- B' n- B/ j/ V3 N7 p9 W
}) o, M4 a2 S- y+ X4 m9 s+ R
}5 C3 h: `% C- q% z) ?' z9 v
else if(IsHero())
. S3 y; n" q. a+ x1 V {
* x+ C: V E+ c" _4 y- ^2 W' A6 `; L for( int i = 0; i < MAX_SKILL_JOB; i++ ) ( Z2 w. B6 G2 Z# z1 a$ _
{
% u1 `3 q8 Y6 \& [ LPSKILL lpSkill = &(m_aJobSkill);
2 k$ j" X1 g$ \- P# F. j+ y if( lpSkill && lpSkill->dwSkill != NULL_ID )
; y/ R: I' c8 c5 E; Y- T B: G9 u {( s% v4 _& H! o' |. D P* A
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); + x) c8 K1 }( o7 _
if( pSkillProp == NULL )" V, F o2 {4 A& w7 z
continue;
5 m0 t. U* K! H+ p& u4 _2 X if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
$ C9 _ B4 s1 }6 g; \( T0 S continue;6 s* H, k' b; V2 J* X
lpSkill->dwLevel = 5;
( o$ t0 H+ P5 V7 X }! M! H J0 }/ X- `" q+ n/ Q
}! `6 W1 D$ l% P" ]$ R3 C$ x3 V' I
}. k2 r: f+ P) b3 x% Q/ d
else if(IsLegendHero())
* H/ `- ^6 x% N) C {* F1 z4 R! o" i/ w2 U
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 3 h0 o0 X h7 R, r- N3 Z
{ . O0 y* t9 ]0 {# {8 W
LPSKILL lpSkill = &(m_aJobSkill);$ e7 q/ A; R( R, S9 `
if( lpSkill && lpSkill->dwSkill != NULL_ID )6 G: M. G* i) }5 m( I
{
) e# |- X7 {/ U1 ] ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 1 v) ?6 `; g" e% ~
if( pSkillProp == NULL )4 [2 u! l8 w& j" O
continue;6 o& z$ `: b; I7 r4 X9 z
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)7 s0 \ w( E3 V5 E2 x1 X) b
continue;! P8 V$ @8 u6 G" `2 Y# n
lpSkill->dwLevel = 5;- h: P2 C% l6 o8 O/ G( t
}# M" r3 [6 |& Q+ [2 ^% @. v
}, g- O# ~; h9 o3 S6 A1 u
} s0 X, p* h Y ]
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans$ U; t& f6 |3 E
if( bGamma )$ r0 l8 E2 ?. G8 S: ]
{: b1 s; e; @2 [
m_nExp1 = 0;8 s8 w4 U* v* O) K( R7 X6 b
}% M: {8 G# Q; T/ ?' `- d
+ j$ Q' ?$ i! K. `
( (CUser*)this )->AddSetChangeJob( nJob );
, v. z8 X& M' Q$ X$ H g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );! J2 I. F6 ?# M% n# j9 ]
& W4 @1 p( Y" x$ K" z
; B Y+ p w( c% ^6 W* ^( t' }#if __VER >= 11 // __SYS_PLAYER_DATA
& i, @# M& T& _" y3 Q$ r: c g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
& _( D7 S$ O# B1 o#else // __SYS_PLAYER_DATA
1 M# _2 Z1 W$ M, ?% `, ^ g_DPCoreClient.SendPartyMemberJob( (CUser*)this );0 L* G8 f. l' ]3 a$ h
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );' T# V) W% u- `, Z, F
if( m_idGuild != 0 )
8 n3 a' u P5 e: q3 T g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );$ o5 U" I# K* x# _. G+ s
#endif // __SYS_PLAYER_DATA
8 m% O0 W, h P SetHitPoint( GetMaxHitPoint() );4 Z) T) x5 L% l8 ~+ P# D' J
SetManaPoint( GetMaxManaPoint() );
8 z/ c c0 O# E* t. { SetFatiguePoint( GetMaxFatiguePoint() );- Z3 x1 d. z1 R
if( nJob >= 1 && nJob <= 4 )
$ G2 {6 d' ]' e3 w4 t# ] {
/ E" V" d' g3 A+ u! k m_nStr = m_nSta = m_nDex = m_nInt = 15;
; r5 q2 @4 { [ @ m_nRemainGP = 28;7 W4 Y1 _( x- Z' W
}
7 _3 v2 ^3 l' c# C/ N E& J if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
e# s$ q6 J( S1 t/ f {
+ N# R @+ u& j. X3 k- ~ m_nRemainGP = 118;4 D0 M) q/ \( C4 _" {
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
4 R/ k O- }0 Y% Z1 L) D m_nStr = m_nSta = m_nDex = m_nInt = 15;! V+ e7 ^. f" H; V# s9 g( i
}
+ p5 ^+ o4 n! x( C8 n if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
$ [- D' D8 L3 a7 d3 u" [2 Z {
0 q# a& B+ X+ `; w7 _3 q2 X4 I CItemElem itemelem;+ N# e, X% ]' g; C# t7 V
itemelem.m_nItemNum = 1;- b/ D3 b- N& [; _
itemelem.m_bCharged = TRUE;( C8 e" N2 R# R' P% s
BYTE nID;3 K5 z# _! e8 s' K5 x
1 |; W8 |7 _- x; e3 y& M if( nJob == JOB_MENTALIST_HERO )& F4 k2 J4 L5 v
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
1 Y5 T. a- A4 s- }# l# S4 _ if( nJob == JOB_FORCEMASTER_HERO ); I& _! |7 {3 a O, V
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
; x0 T! ]. @) A# m( W9 M
, n8 j9 C4 T( ^" g5 | ( ( CUser*)this)->CreateItem( &itemelem, &nID );! F" p. U3 V( W/ Q' z
}
) Y t3 Q* ~9 O3 \ g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
4 L9 f! j: E. h k1 ? ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
" Y4 m) l# q: A+ e$ z7 C- `* i1 \) b ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );* }; M, X6 E* P) [0 U8 e
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
0 ]9 D$ Y+ Q: y6 M- Y3 D) X5 | ( (CUser*)this )->AddTaskBar();*/- \6 Z0 E2 Y8 F3 H5 B
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );( q9 X! E m5 }1 Q3 V7 V, P {3 u
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?9 ]8 z" n, ~) q3 S
((CUser*)this)->CheckHonorStat();. q& b! I) S( d9 Q: P
((CUser*)this)->AddHonorListAck();1 o) ]& ?3 w) \* F
g_UserMng.AddHonorTitleChange( this, m_nHonor);3 _) x. I7 w1 {, g* h
#endif // __HONORABLE_TITLE // ′Tà?+ g1 N& N# B' Z* O! h1 q6 W# ~9 [. H
}- ^1 u: g) e- n$ G% F8 o" I9 H7 t
#endif // __WORLDSERVER- m' u9 R- k) i, o( C6 {2 h
} 1 ^5 {3 I1 h" P% q* X% ?; ?
. ^/ [+ D6 j3 M3 A) k5 \+ k
然后你进入functextcmd.cpp并添加以下
) ^9 k+ v0 e, N6 K( X% C0 s. T
& k9 B8 L9 ]: z! Q代码:
* N! t7 L+ K) M$ ZON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )8 D4 `+ e5 i/ _$ ?; T& e9 |
下面插入
: L# E; n* n2 _; g. C4 J# ^ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) & N+ p( f$ R0 j/ o
! v! Y: z/ r& f7 p" ?9 \" R0 s% i然后你去
, ]; c/ g# l% M: [9 z; v* r- w4 b4 [: s/ z* V; r6 n- x. }$ W
代码:
& y; c- h0 A9 ?6 Q代码
) f2 N3 l0 M0 |4 ABOOL TextCmd_ClearPropose( CScanner & s )( @" A6 x' v- {; A8 g S
{. ]. ] c% `" V d; R# z2 I
#ifdef __WORLDSERVER
! C7 M J5 D0 _3 d CUser* pUser = (CUser*)s.dwValue;
7 y2 i/ @: j2 N% y% {2 j' h n g_dpDBClient.SendClearPropose();
y w5 c' w% a8 j" B) s+ A#endif // __WORLDSERVER
( k& c, P. q' a, Q0 _ return TRUE;' W' [- L; Q3 m. Z' k5 ]- ^: a5 G
}
: B' A0 f* I& Z+ ^" H4 r) P下面插入! [! r) X$ O2 E+ J7 I8 Y- b! |' M' z* L
BOOL TextCmd_rebirth( CScanner& scanner )7 F5 ~7 Q9 C% U& T; i5 s
{8 j8 j& M- v% b% b3 Z4 `
#ifdef __WORLDSERVER7 i7 ~- O( c# V! } Q) F
CUser *pUser;3 W. d: u% s0 ]
pUser = (CUser*)scanner.dwValue;
9 b* _7 h; `- ~* r; c# Xif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
/ w H2 |5 o9 ?2 }, f gpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);; x$ K5 |( o5 Z9 `1 _) h
else
- `. m2 N) B9 L4 J; D4 wpUser->AddText("你还未达到重生条件!");! c- b, G5 R3 n6 v: f* k
#endif- B3 X s$ r/ `6 Q. ~
return TRUE;- J5 g- G/ F+ ~$ a* w1 k
} % G' J( w1 U9 {( i) J
# D4 I+ q( g* H0 n8 Z5 a5 U
0 u# I$ P- l# V. H: M
' ?) D0 C1 r4 W5 _
) z+ i* Q" ?$ M2 e2 Z2 C |
|