|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel5 b; t) ]; }# s# J7 u0 K
% A% A' S0 @4 ^' b7 qMover.h
4 m$ V6 W: ?. o5 |. S9 i+ Y: P0 \代码:
* B' I& H' `* M2 r2 J/ v% L1 x找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü3 R8 Z; v2 k9 Y
" p; z. h0 Q, N
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; ' e0 U$ e! A% k5 ^, C& ]
S4 I4 L5 |6 |; z& O8 k然后你去mover.cpp添加
" I' h( L+ h c" g4 [6 T t* J& V" I$ ~2 h [( O" G& i: X
代码:
( [* w% p4 n& z0 ovoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
. J! L' e0 z& Q" \" C# f{; C) H5 G4 ?' U9 m- Q; d
#ifdef __WORLDSERVER
6 _: O6 i' r8 R) s7 }1 } // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
0 f$ I6 q! C* D7 d, I4 Q9 k MoverProp* pProp = GetProp();8 \6 a0 K3 p% H4 M }8 ?
if( pProp ), O g# g; i, E9 u6 V* J. P& \- O1 |
{
" f! r, M L+ g, M if( nJob > 0 && nJob < MAX_LEGEND_HERO )7 w4 M, r% x3 s
{
" [+ l! s4 q2 R1 u$ ~ AddChangeJob( nJob );
1 E" u( \# y+ K) B m; b }else{
7 \/ i/ M$ s! m9 T return;
; Q7 D" n: s% P7 |; A5 g2 G! ?" F }
6 }7 O% e- n9 z( Y/ V) S; I# W. ~ int nPoint = 0;
" c R+ w' t1 M if( m_nJob == JOB_MERCENARY )1 n t' k4 o8 t1 F6 i% g( j
nPoint += 40;5 d& P8 v1 M7 O* A3 P
else if( m_nJob == JOB_ACROBAT )
E, m1 ?# }$ r nPoint += 50;
6 Z. I3 j- m- Y- e4 S S$ M4 x+ F( w else if( m_nJob == JOB_ASSIST )6 E/ N! L+ F o! E; I# \+ S( m& L
nPoint += 60;& [" S" Q- P1 f2 K1 q
else if( m_nJob == JOB_MAGICIAN )
- F _! E' {' [" J0 W- z nPoint += 90;: C3 V) Z$ B1 a) Q: u* W t5 q! W2 c
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
5 m' U. Z! C1 j6 F z nPoint += 120;
! G" U3 }, `4 O2 P5 c, p) P else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )4 Q Z5 V$ Z/ m
nPoint += 150;
; n$ C5 u" O( O' u2 Q else if( m_nJob == JOB_RINGMASTER )- `$ s* {: n/ E8 t1 f0 h8 L
nPoint += 160;
6 ^' g( s8 V- i, X9 N else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ) `; n8 i& Y( M V4 G
nPoint += 180;( M7 M/ t% l" b x; w3 z
else if( m_nJob == JOB_ELEMENTOR )
% N3 k; k) B. N! \2 U4 _ nPoint += 390;: t( W6 F3 D; | g8 X
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )2 @7 ^% d' m2 c" C" p: R
nPoint += 120;3 \: t% O* P5 d' C2 Q+ _: X
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
) \2 `( X- s" R3 c; ? ?. d2 a8 c/ F nPoint += 150;, B7 Y1 A( S8 E
else if( nJob == JOB_FLORIST_HERO )( o. V' |4 o9 m; _. d# E6 M
nPoint += 160;" q j5 d* X; C3 A
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )- |# m; S" \* P* @7 a
nPoint += 180;
4 \1 G) t( s+ m' g* b( {- I i L else if( nJob == JOB_ELEMENTORLORD_HERO )' L H0 G: l6 i% ~5 K
nPoint += 390;+ z0 E: c/ v, ?3 j
1 A+ @2 d- s4 W AddSkillPoint( nPoint );
- O$ b0 J C6 L0 p" r& V% X! k5 U m_nLevel = nLevel;: L9 U% g6 F( S X1 T
# E: B% G5 t( G' U) y- R; ~ SetJobLevel( nLevel, nJob );
+ _5 q: V. ]# e/ u/ t# y m_nDeathLevel = nLevel;
& J: x9 t, {, l j#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans: n+ B3 |0 A6 N$ L% ?. m) M6 {
if(IsMaster())
, H( X! b L" i% h' N/ X) {0 B) u8 l {& w% d1 u: ? F$ h9 j% c
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
8 Y- d) g: m! l; ^# k- }6 h1 a if( nLevel > 59 && nLevel < 72 )6 k; a9 P1 ~7 T$ U& S* n% Z6 |* w
dwTmpSkLevel = 1;
2 F/ w: l) {8 d4 D) B: L else if( nLevel > 71 && nLevel < 84 ) p0 a: N! G9 Y X$ U
dwTmpSkLevel = 2;) U. G7 m# K9 }- @$ K; N+ m0 V: f
else if( nLevel > 83 && nLevel < 96 )
6 Y5 x: H6 f, J; `; V$ C dwTmpSkLevel = 3;) t( e0 ?" I2 h+ I4 m: s* [9 u
else if( nLevel > 95 && nLevel < 108 )
5 L. W- B# C4 K. ` dwTmpSkLevel = 4;: j# m9 _1 a" {9 x: W% e
else if( nLevel > 107 && nLevel < 120 )( g, d( }8 W4 B$ U! l% z
dwTmpSkLevel = 5;. u9 l3 ^+ P7 q r! J% i0 c; C- S9 O
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 6 G# u; u9 M) P2 L# q, L; h; c4 f# d
{ - _2 m# e- l/ Z5 j: O! S
LPSKILL lpSkill = &(m_aJobSkill);
7 [" ?) ^% B" k+ L if( lpSkill && lpSkill->dwSkill != NULL_ID )
; Q0 J0 i3 C( k! q {
9 S k/ W, W+ _+ Q: X% B& v ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
9 y% _1 n) B- [ if( pSkillProp == NULL )1 S+ b* X* q r3 ^: b) S2 {3 @6 z" F
continue;
6 G2 L0 C' O. F7 o6 L6 H if( pSkillProp->dwItemKind1 != JTYPE_MASTER)3 O" ]4 Y- Y4 R! X- I" q
continue;" d' X! R; Z+ i3 i
lpSkill->dwLevel = dwTmpSkLevel;& c) v# K6 u0 X. G: _( |( j0 l
}+ _/ h# X% n+ W
}& l2 m4 \$ ~! o# _, y
}6 l# H3 [9 I9 f; v
else if(IsHero())
0 B8 {, L# q( C, N3 ? {/ E) ?( i( @8 g) P9 D, H
for( int i = 0; i < MAX_SKILL_JOB; i++ ) # [) e6 N" P( j5 @) I+ V
{ - K6 f$ L# `6 |
LPSKILL lpSkill = &(m_aJobSkill);
5 l1 P* X6 E' y0 P7 i if( lpSkill && lpSkill->dwSkill != NULL_ID )
1 ^) g# o+ N2 o2 y6 ^/ `6 z {
! s3 j9 G5 i6 r- m2 S( [ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 0 f7 G5 ?- N( e1 s7 T* O& H' Z
if( pSkillProp == NULL )
$ ~7 C. r% A2 n3 m. J0 ^8 o continue;
$ b& Q; `' b) Z: M/ s/ ~ if( pSkillProp->dwItemKind1 != JTYPE_MASTER). M1 Q6 p6 R& k( a; ~
continue;% b2 E0 k3 s+ a0 q5 [! n" Z1 m c1 [
lpSkill->dwLevel = 5;0 X, I/ A# D( z5 E
}
. d) s6 ?+ t# U6 @ }
. |/ Q4 e* e9 n, ~+ E( k- P4 _ }4 S2 C" }% i6 n' z1 {; |" v2 N
else if(IsLegendHero())
4 a! ]5 d8 |: e2 o* r. M9 q {
{( v5 C+ N5 u6 h for( int i = 0; i < MAX_SKILL_JOB; i++ )
v: k5 f' t! g. c1 c( ^) j4 W; `# _ {
^% P# d% Y F. | b LPSKILL lpSkill = &(m_aJobSkill);: L2 W# p& ]3 a. d* l3 ?$ V c
if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ I+ r g" }) ?: B { G$ {+ |/ T5 `: s! s
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
e7 p! K5 @ n6 q) V% P: U: E9 c' [ if( pSkillProp == NULL )3 u/ m' P8 `4 R+ F. _: l. G
continue;" \7 F: \1 k5 H8 Z" t; ?/ [
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
. p: j8 x6 ]4 F& z' Z! n continue;
- D5 _ n d, n* [+ [0 S1 | lpSkill->dwLevel = 5;5 G H: \+ c7 y' W. [4 T
}' k: ?3 ]5 `6 D5 Y# ~0 f7 L! T
}3 d" P) p- t# I# D* y4 W7 A. L" D6 N
}
/ S* D2 @ Y$ }4 m% x#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
& r; v8 n$ O {: W if( bGamma )
3 o7 {) K5 t% `4 f; J {
n* u8 _/ p+ U& I. { m_nExp1 = 0;- X3 f0 m }: _2 T, m' s# }, X! X) M
}0 Y6 W: h& ^; [ Y
% z( D$ |3 n% }2 P x5 q z
( (CUser*)this )->AddSetChangeJob( nJob );2 c$ O, [3 x+ k6 X" \' g% _
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );( z5 m0 B6 R0 h, l7 P1 [
6 r' y2 m( L* [# F" O% S
) ? g; N! t2 m1 s" B4 V#if __VER >= 11 // __SYS_PLAYER_DATA4 v0 y5 l7 {! a8 h
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
% G' v B! C& J4 ]# I; ^+ m#else // __SYS_PLAYER_DATA
/ o/ a# @0 ]& d, U+ q- k g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
. p" @" m" S" K/ }" g l! J$ P g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
* J7 e2 H5 d3 T+ \ if( m_idGuild != 0 )
; [) O2 V& a$ @. P* B5 A. Y g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );, T% V" c% d7 F1 ~
#endif // __SYS_PLAYER_DATA
8 Y# |1 {) F* {; `- J% } SetHitPoint( GetMaxHitPoint() );8 a% U" G; B; a! _- |
SetManaPoint( GetMaxManaPoint() );
2 n$ l7 {% ^2 B" ] SetFatiguePoint( GetMaxFatiguePoint() );1 n( M! f9 j: {7 R3 D9 Y
if( nJob >= 1 && nJob <= 4 )
+ ?. m( R8 d5 e9 V {
* Q5 m B; J/ h* _) ] m_nStr = m_nSta = m_nDex = m_nInt = 15;* M, _2 Q, |( ]1 u
m_nRemainGP = 28;
8 q! I u0 Q' d" }; V7 Q }
+ d0 |7 q4 D7 F9 u if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )3 l! B( E: \6 a: r, @: G
{
% A% M: J3 r: }1 A q m_nRemainGP = 118;
# F7 t6 {3 G- w" R5 F1 K //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
; T0 q/ Y. o" `; y m_nStr = m_nSta = m_nDex = m_nInt = 15;: l: \9 V1 q: Y9 [9 ^1 G3 L
}
* e4 s( t! B ~4 o( b. F8 a9 m5 j if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )- ^" N: V( b- O9 N/ n
{
6 x. K3 c7 _$ l/ F% W CItemElem itemelem;5 S3 K0 y1 D; `9 j2 R
itemelem.m_nItemNum = 1;
/ ]) S8 [1 O4 o# P G* c itemelem.m_bCharged = TRUE;
# g: F0 X( y0 @ BYTE nID;
4 V4 c8 k, R8 k2 n; L8 X# X+ w% K% P- P! a J) Z# \5 v
if( nJob == JOB_MENTALIST_HERO )
0 n2 }4 \ U4 D, |: d6 [ itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;5 G. C) J. f/ K# t m7 x! M2 c; {
if( nJob == JOB_FORCEMASTER_HERO )4 V: @ R2 h) z
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;! h; n! A9 @; L: W
) ]: s8 n4 d( e& r/ [ ( ( CUser*)this)->CreateItem( &itemelem, &nID );
: @4 I3 F+ Z3 e$ |) B9 p }
1 d# a! l5 j( G g_UserMng.AddSetLevel( this, (WORD)m_nLevel );' [& B% d" H' x
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
: b8 D: s( e G1 {) {& O+ T d/ K ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
y: [3 X T( Y6 \$ ?4 I$ t2 D /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
6 }2 T* P8 `# u ( (CUser*)this )->AddTaskBar();*/2 p. Q9 E! V& Z$ a Z( s
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );( p( D4 F2 _8 m8 Z* h( E( q
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
. G+ X( @8 G2 ~ ((CUser*)this)->CheckHonorStat();
9 D' u% u' }, W" I) g5 g$ ]3 X) P ((CUser*)this)->AddHonorListAck();- P! z; o+ j# \( t8 ?5 r V
g_UserMng.AddHonorTitleChange( this, m_nHonor);
) |0 u: K0 e, y2 d, N5 `3 P. S#endif // __HONORABLE_TITLE // ′Tà?
1 R8 n9 w0 r( m7 M6 J9 i) v* w }: V' d5 r& I. h
#endif // __WORLDSERVER, E, c; \% B1 C7 f% Z- R$ A- g
} 6 _: z3 W3 U4 w! L
& ~5 V! K3 L8 U* z3 o
然后你进入functextcmd.cpp并添加以下! z- c1 K5 B4 K$ n3 ?; ~$ C
# A7 j7 }5 ^5 o# ~3 O( [代码:
. l7 \5 N7 j6 L4 w6 }+ ^: AON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )) W+ ~: a+ u# ]) G; C
下面插入
' @, M! q+ D0 O, R0 A1 \ f& r) XON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 2 V' v& i+ ? C* g
. z8 S4 s8 B9 B+ \ T然后你去4 U+ `- [0 ]$ R' P0 G. ^4 H
' F" d2 F% y9 T5 _3 _
代码:1 N' w* U3 S- y
代码- X8 J. G: Y: b3 `
BOOL TextCmd_ClearPropose( CScanner & s )% P# |/ n+ `: s/ U& q+ m3 Z1 ]7 n2 }
{
" S* }# _- d1 N N5 g$ \#ifdef __WORLDSERVER
' l& q6 H6 t ~ CUser* pUser = (CUser*)s.dwValue;/ i" ^' J& A3 g0 z g
g_dpDBClient.SendClearPropose();
2 @# M# _# r; \% a) J1 G#endif // __WORLDSERVER7 v: H7 }! Z8 k+ d. \" B/ p
return TRUE;
7 |% C" S1 \6 Y& N# v2 e( L; q# m}, L' r' h1 [* e0 {
下面插入7 O# _* X6 Z: C, q. a# w
BOOL TextCmd_rebirth( CScanner& scanner )
# T% {2 f1 d( P4 w" ?5 z7 Y1 C{
# ^8 l9 h9 F' P#ifdef __WORLDSERVER
/ C2 C8 M H; uCUser *pUser;
6 @' k" i; ]$ w% r' c2 D) bpUser = (CUser*)scanner.dwValue;
: a0 M0 @; W+ zif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
5 }! j, s) M! W3 U7 d0 ^pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
( K: _$ H" H2 u7 o# ?6 R3 k8 eelse
. u% A; \0 V9 UpUser->AddText("你还未达到重生条件!");
6 w* ^5 t7 A8 h7 `: I! m: M#endif
7 }" q7 O" }! Q7 oreturn TRUE;6 Y6 s% U e# }0 \% l- `
}
' e: B- z7 l: H4 D3 o w: \- G) j2 G* z
4 c' k, m+ r1 u5 Z
! l5 X3 |2 C$ J/ w# O: u" W
# j; x% _" t a9 v! k/ J" [! p, d( X* w9 i* M# h0 Y8 K! i1 ~' n& L3 ?
|
|