|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel! j! s+ @ w A/ }! ]. V
* ~+ K+ C6 Q& c) Q, |6 A% U
Mover.h
) d4 `* u0 U/ }4 J代码:
9 {# ~+ X3 N. T$ j. o0 t2 K: i找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
' f0 ^2 s) x: Z% R
0 U6 {2 {6 x3 Z% K下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
% I. l6 i1 m" [0 A9 X
, X: T% X' x# V$ S9 e: L$ `' ^然后你去mover.cpp添加
) _) M' |2 F9 M5 y; S I
4 U) M; |9 v. f* t6 A. w u代码:, G0 z4 H+ R5 i. h
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
1 }# ^% f, z' z{; ~$ h$ a/ n9 s/ c' w0 g
#ifdef __WORLDSERVER
9 i+ C" H5 v& L( h( ?* g' W7 }8 s // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó' q, {) ~8 o# `2 y0 g
MoverProp* pProp = GetProp();
* I, N" |. K% |6 q if( pProp )! h* c ]' c7 U8 ~/ p/ W
{, Z r- J$ O, T" I6 O) |, g
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
- F4 @) K9 k/ t, X% |- j& r4 | {
3 X, J8 j. `1 v0 S6 z' c AddChangeJob( nJob );; _( A4 Z; d' K# ~' S9 ?$ h
}else{; k, M) B3 I- m
return;
' y/ Y+ @; B C: _" O% P/ s& M }
& H% I* P/ h( N int nPoint = 0;9 T. X. `5 y* _+ f- G
if( m_nJob == JOB_MERCENARY )
! ?7 f& w$ Y" l6 | nPoint += 40;
/ F& y. {. \$ S6 n7 z+ d! H else if( m_nJob == JOB_ACROBAT )
/ U( T& M8 e2 A j- w8 ` nPoint += 50;4 W5 f0 c) R9 N4 n7 u7 U
else if( m_nJob == JOB_ASSIST )
. l% K/ G+ N8 o! n. E+ e& m nPoint += 60;
9 S6 I% \, @) F& z else if( m_nJob == JOB_MAGICIAN )
3 b; R% i5 K) X9 R! `8 v3 f v nPoint += 90;4 |( w7 c0 N1 y0 o
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )" i" e% w1 ?" H
nPoint += 120;$ V9 F5 L/ u$ T! c H8 E' W
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER ), V! y* p+ ]4 J" ]
nPoint += 150;3 C' ^; j$ {8 O. m# o) l
else if( m_nJob == JOB_RINGMASTER )" G% a6 I( v" D7 K) h) F4 K
nPoint += 160;
& Q6 n& s) m z( q1 I8 O else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ) o$ Q$ Y3 w. [. Y7 ~9 Y& [
nPoint += 180;
5 U7 M, `0 {) P, m6 N else if( m_nJob == JOB_ELEMENTOR )# [9 [" A' j* Z2 d! e. S
nPoint += 390;0 u, s3 |8 y- J9 t% A
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )* S. e6 y% N+ q& d
nPoint += 120;
- X, `$ H/ Q) l/ H! H% a else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )6 V+ U; p: u0 O1 v3 P; Y9 R
nPoint += 150;) y0 [$ I- |( D4 u# L T
else if( nJob == JOB_FLORIST_HERO )" e( r" F: L$ P6 u$ P( `
nPoint += 160;% s& \$ {( [% A, }
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )7 |6 m+ N7 |) x& b0 ]
nPoint += 180;& F# y$ w/ D+ V5 y( h7 l
else if( nJob == JOB_ELEMENTORLORD_HERO )
t) _3 W) F( V& H& ^7 o8 ^, F# e. q nPoint += 390;* {% u }9 T0 @8 U
; S, B& B# |% b, K! \/ K G AddSkillPoint( nPoint );4 ]* K: {$ @# |& ]% E
m_nLevel = nLevel;
, {8 d& T" ^6 U( U7 _$ I& ~* z6 ~- r, L# R
SetJobLevel( nLevel, nJob );
" E7 R# a! [5 e' K0 V m_nDeathLevel = nLevel;
# S) ?- C+ e1 J' W#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans$ X/ y* L- `0 v
if(IsMaster())
% D8 T, q" ^/ a- [ {
% X" r0 A3 U0 [5 M int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
& f0 d# _* |: \5 Z+ ^2 [! n if( nLevel > 59 && nLevel < 72 )
, H; `, a) v# g2 T* C9 e dwTmpSkLevel = 1;
5 f c. X( z- A4 C! t& n else if( nLevel > 71 && nLevel < 84 )
* t, H2 p" |6 A dwTmpSkLevel = 2;% m. K/ K8 {& I/ L4 c
else if( nLevel > 83 && nLevel < 96 )1 _7 M$ J" ~- N: c8 L3 j. O! \
dwTmpSkLevel = 3;
0 a- w( o* `0 [ else if( nLevel > 95 && nLevel < 108 )
- T M& a0 B% k9 ? dwTmpSkLevel = 4;
6 d4 b X# w2 R! N; J else if( nLevel > 107 && nLevel < 120 )/ z8 K2 {( y. X& ^" j' f
dwTmpSkLevel = 5;1 h% S Z$ @2 D" ~
for( int i = 0; i < MAX_SKILL_JOB; i++ )
! C' t; R/ V+ F" k# T. f8 Z+ p$ r {
& f7 ^ D- f5 Z LPSKILL lpSkill = &(m_aJobSkill);
2 C# I- ?0 S3 N0 k# Y if( lpSkill && lpSkill->dwSkill != NULL_ID )3 G* t f! \+ A' i9 s( C
{+ |, Y4 O: `" |9 |1 O3 }
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
% C3 r& Q2 V( O, Y if( pSkillProp == NULL )2 m5 E# ~$ C% l% r: P; E
continue;' j. w- o# D8 p0 l9 b& C
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
+ p2 }+ U/ F8 _+ J9 R' N3 T continue;
9 W$ M+ t) o% {" f( w lpSkill->dwLevel = dwTmpSkLevel;
* T. u8 j0 |7 A }
+ h7 {3 Q3 J3 ` C0 N3 a) s }4 m, }" C/ U+ l4 D! T
}
0 u7 D" K! B8 X, n& ]- `% z else if(IsHero())
% n7 C7 |1 C* K, X% ]1 ~) B {# ` k2 I- A7 O5 i# @# {3 b' C
for( int i = 0; i < MAX_SKILL_JOB; i++ )
. a3 i( ^7 n0 ?8 a {
! N1 ?0 {' u( d# X LPSKILL lpSkill = &(m_aJobSkill);
% N" G- w b; d5 l4 n% ~! J: A2 B if( lpSkill && lpSkill->dwSkill != NULL_ID ) b/ b/ s: K" y' _
{& }6 k+ C! k* }8 P5 v y
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
# e K0 B1 k% K if( pSkillProp == NULL )
2 e4 j9 p* _# a; h continue;
/ x6 ]7 Q! f b5 _. j& {3 [ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
4 |+ Z+ h3 K9 G continue;$ }* V% m; U0 W% m5 C
lpSkill->dwLevel = 5;9 P" h* O o3 R7 K0 W
}2 S& n/ R t+ i2 x6 |
}
4 h, p% o; Y( m( K. I' ? }
0 p2 K7 V, p& u5 K7 w else if(IsLegendHero())
4 F( ~* E* R, ? {
! Z O2 Q* R2 Z for( int i = 0; i < MAX_SKILL_JOB; i++ )
8 ^1 ?( C$ A, j9 } { : Y/ h. }- V9 E2 q
LPSKILL lpSkill = &(m_aJobSkill);
/ e: P0 k2 B2 Z- s. K if( lpSkill && lpSkill->dwSkill != NULL_ID )
$ ~5 G6 i0 s8 Q% a {' A# W/ n8 j. c, V
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 9 H% i# L/ G. Y% @ G) y6 L
if( pSkillProp == NULL )5 b* k, t* N2 ~) Z* ^' c n9 q
continue;
( @2 @; C0 t. \$ f4 O: R if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
- G& W6 R9 s6 n, t2 }4 k9 s. E continue;# O/ w9 y/ u* T. b6 ]1 L: z
lpSkill->dwLevel = 5;
) g7 Y$ C+ t; ]0 O b0 s2 L7 R }5 w' l; M5 [" A! B. G2 J% u$ I
}
& f3 p+ \$ n6 y# V. s }1 n# a, U% U6 w/ x8 t- J9 X
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
( R5 e9 O6 b) e% A if( bGamma )
3 _0 z8 c* j) d {
1 g+ k4 I1 L& V/ A, M m_nExp1 = 0;, a4 q C$ d. M
}
( z+ f' J- ~& `3 v# K" W/ u8 ~ a
( (CUser*)this )->AddSetChangeJob( nJob );
$ J5 ]' ^ B$ f! m g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );/ d8 y: [( X# t% B! H' q
3 i1 ^& X0 r0 O# G' T. `2 w3 p; q
0 n# j# e* v1 V1 O( K4 Y% X, `#if __VER >= 11 // __SYS_PLAYER_DATA8 _( C+ k3 |" d; ~1 e
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
5 D0 Z4 c k: t+ O#else // __SYS_PLAYER_DATA
4 t9 ^1 W* [, d, q2 I7 A g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
4 s" Q; M5 V$ o9 _( n g_DPCoreClient.SendFriendChangeJob( (CUser*)this );# P% l) Z/ D& V h. L8 R+ Q1 z3 T$ L
if( m_idGuild != 0 )
3 h# J8 N4 Q: {+ F) L g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
8 f1 r- `: l+ h. r$ S W, d#endif // __SYS_PLAYER_DATA0 H: Q% i0 ^0 z: H% C( M% {* f
SetHitPoint( GetMaxHitPoint() );
8 b2 a' I% |6 k8 L3 T" f# \ SetManaPoint( GetMaxManaPoint() );6 K' H! E, U8 r
SetFatiguePoint( GetMaxFatiguePoint() );
2 }; S0 n, e* R6 a8 V if( nJob >= 1 && nJob <= 4 )8 n4 _ }: v" Z- G# r9 l
{
6 M$ T3 ] a' ~! T7 N% p, a* N) p m_nStr = m_nSta = m_nDex = m_nInt = 15;& S8 W0 B) J, m' [; \! o& n4 l/ N
m_nRemainGP = 28;& x' H) Z( u" Z( {/ q% j
}
2 r' c+ A9 b& G2 A if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER ); s5 p1 u( O, c. g
{
9 N; V- \, q( E! f" I m_nRemainGP = 118;1 m! Y. j6 u4 e
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;5 I7 v, S5 p% E0 O0 Q& R V( t
m_nStr = m_nSta = m_nDex = m_nInt = 15;% g& v; [; d# R5 H" t0 Y) h: V# Y& o" u
}7 x C$ Z/ w! ^% I8 Z) [9 S
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ); [4 A- Z- ^* \9 Z. C: m* T
{) s& s' F6 ^) R
CItemElem itemelem;$ W" n) c# B; z& |7 |! t. e/ n' G
itemelem.m_nItemNum = 1;
1 x4 ? U& p- u* [: y! i9 z- i itemelem.m_bCharged = TRUE;
! B& q) X) ^4 O' t: P BYTE nID;- J) O$ A5 j" N, a6 x# }$ A# ~
2 R6 g: A8 f2 F
if( nJob == JOB_MENTALIST_HERO )8 d, @: R' `% N/ s# T' W
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;$ h. w$ N8 n8 z3 h5 M
if( nJob == JOB_FORCEMASTER_HERO )
. p& ?, u+ ?. q* w+ k( w itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
; ?. d/ T5 |, L3 {% U9 t H/ {8 k0 a7 M
( ( CUser*)this)->CreateItem( &itemelem, &nID );* D6 a0 J0 o" k4 G3 S- M, Q- l; ^
}
' ~6 N B9 F! K H! q; c. H g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
6 A' [, s j( g) j! A7 p, q" A* C ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
$ \7 h* {+ Z* ?. C8 E7 ?3 l ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
9 i* G2 x- c7 M* a+ U% j3 V& g /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );# K. V+ M8 k( K7 N
( (CUser*)this )->AddTaskBar();*/( {* g4 H8 ?' ]/ r! p3 b
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );3 l+ r6 V+ b- F1 g; m
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
[: e! u; r$ H( @( X6 x7 m: |3 L ((CUser*)this)->CheckHonorStat();1 j8 p) ]# o7 S) A$ I
((CUser*)this)->AddHonorListAck();5 f$ K: p, ]+ {# a5 R" K1 T P+ G
g_UserMng.AddHonorTitleChange( this, m_nHonor);: P; x, M) p, p+ ^
#endif // __HONORABLE_TITLE // ′Tà?
U n( c9 {) G2 L" B7 E }
( }' _! l8 t# t5 x; o#endif // __WORLDSERVER$ M: J* I$ k( N3 I& R
}
6 b9 j& ?5 M1 T7 E9 W
( x( \0 d7 C) \* o" p然后你进入functextcmd.cpp并添加以下- z5 p. h0 o4 f6 N4 v$ U; t1 b
# k% W6 b7 C: _9 i) p' D3 S代码:
3 ~# n! M2 u6 ?6 r/ RON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )! t0 d- k5 M: m* y) X. h
下面插入
; X% u! O* O( c$ I( \) G9 `. n. YON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
L) H6 Y& t3 v/ d- v0 C) X: Q" O8 H
然后你去- b' A7 n/ o4 n' T0 S! ?* H
% g# p3 ]4 D& B# b$ q7 N; G代码:
1 J5 e& E0 ]0 h! c8 [代码! U0 g& c3 ?* @
BOOL TextCmd_ClearPropose( CScanner & s )6 {- F1 {4 b5 U4 }1 K( T7 q
{
9 l+ @- {! _5 C9 C' s5 v2 f#ifdef __WORLDSERVER
% t; d& q8 J* z: w3 w. _3 O' N CUser* pUser = (CUser*)s.dwValue;1 K# g6 {. l: C
g_dpDBClient.SendClearPropose();
, U+ m$ w& T; N5 j# {' l8 h2 P#endif // __WORLDSERVER3 b8 i7 a r, Y- ^% c/ @8 y: }! m/ H
return TRUE;
- a# h7 W5 @ o; v}) p# S. @( [6 M
下面插入6 n2 R5 R. r- Z
BOOL TextCmd_rebirth( CScanner& scanner )
6 e' T' ?( L9 u: [2 s; d{4 _2 g$ m0 }3 n! m
#ifdef __WORLDSERVER" G- @4 t! T% A( n* [$ |, C2 c, \
CUser *pUser;
# n& X( W1 M% d5 E3 @# ypUser = (CUser*)scanner.dwValue;
; \" L+ j9 j+ i/ k* ?1 S# c. wif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())2 }* N+ r1 [" k, w! O$ _
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
" ]" |( x9 ?, C/ f4 d* K) B+ Jelse
/ a! P/ x' ~& p- v- x* I0 W5 b' QpUser->AddText("你还未达到重生条件!");- X7 K7 Y' k4 C" H! ~* I
#endif
1 d/ Y' y2 ^$ z! e# ?# X) oreturn TRUE;
$ \; Q4 k2 P4 f* A* Z1 o6 Q( X} - J. t5 O: K! ^ N8 e
3 k1 u) j+ {: [# p L: U5 M
; s6 r. V# w# I7 Y! P$ s' }
- o% l3 r! h/ P( K8 [8 A
1 K% x' w" Y* W9 r |
|