|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel+ }7 v) L4 J( A; p4 F7 A
$ g" q7 v$ A9 r& u+ \4 V; r1 @- H
Mover.h
; ~1 V; ~. d+ {( r/ O9 t代码:- b& F3 O6 B: D2 i
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
* \- F( B7 ]8 P# @8 z! L5 a2 d! o* t. Y. [5 ]
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 3 [/ c: X( T6 p( d+ R
9 j# H( w2 H( G. S3 H$ l3 J
然后你去mover.cpp添加
# X& f- ?# b- d. h4 z- H# p9 D8 Z: \ X# d5 b ]
代码:
. Q9 B i( v* T: b. Zvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
, X* r. b6 H& n/ o" V6 J; m{
3 r l" l8 L8 F# Z1 J% l$ E#ifdef __WORLDSERVER
) y k9 ~% O- v- E // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó2 V3 {% @9 i! T/ }3 T* [
MoverProp* pProp = GetProp();% G- k" P a7 K/ N( E! P
if( pProp )
" b3 ~" N/ f& X( { {
0 G+ M- _+ q; @3 `! ~+ V if( nJob > 0 && nJob < MAX_LEGEND_HERO )
% a* A6 V/ f- k' n2 |$ a0 w: x9 c {
7 s4 v, A2 @' @2 l AddChangeJob( nJob );; R' m% y9 o7 D. a' \+ Z
}else{& M8 C" u) ]# E) k. g
return;
: `1 [5 ?* l3 ^+ r2 [ }: ^& Z6 M9 P! O, H& k6 Z% ^- ]
int nPoint = 0;
5 q6 ^: R3 ?/ Y: O+ a$ Q6 }9 } if( m_nJob == JOB_MERCENARY )
' H- { L/ R3 j' |* k; T3 { a nPoint += 40;
. B) _9 E' h* z; S7 U8 ^% `6 V else if( m_nJob == JOB_ACROBAT )
0 N9 u6 G2 g: F0 }* ? nPoint += 50;$ L+ a* z+ e$ C1 I( L+ [) \7 q
else if( m_nJob == JOB_ASSIST )
. v( e+ |/ X& I; j+ A nPoint += 60;( H" L( j7 s( @# h4 W6 H; d
else if( m_nJob == JOB_MAGICIAN )9 @' p$ x4 E8 P) f9 s
nPoint += 90;% s# N- p, p, ~. G& z7 V# J
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )/ v5 W& v5 I. S" G. M% Y
nPoint += 120;" H' {1 E# i" K3 k+ r& _
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
7 t, \" x' \; Y5 \+ t nPoint += 150;2 |& z! Z" ^+ m3 V& q" h
else if( m_nJob == JOB_RINGMASTER )
, C- C% _3 T% o; S nPoint += 160;
: p( h0 X4 i* z' y! D* e else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
# X4 J$ l' K& Q5 _6 { nPoint += 180;" E: i7 c; `8 a, ?4 ~2 s& C& Q: d
else if( m_nJob == JOB_ELEMENTOR )
- ~$ q; r$ ^: W3 Q" U nPoint += 390;
' F+ b( Y* i/ G4 Z& \0 E% u9 C else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
, s7 N8 b8 \1 T nPoint += 120;9 k) ?: Q" {" w8 Y
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )2 O) F% G4 M% e& `$ R" Z
nPoint += 150;
6 i+ E' R6 o9 r9 f( H. `7 Q; C+ F else if( nJob == JOB_FLORIST_HERO )
% o/ }. K+ R* P' B! m" u' }; q nPoint += 160;
1 S! L. g- j6 K' z0 _ else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )$ r; b( O8 {3 U# }- y1 k' ?$ Q2 N. r
nPoint += 180;5 j6 o2 T' w+ _' s. k
else if( nJob == JOB_ELEMENTORLORD_HERO )' z8 s. Q6 Y) E, U$ j q/ p1 s
nPoint += 390;# O& w, s2 W# |
9 m% ?; U. [; B q4 q
AddSkillPoint( nPoint );
. V/ \$ s7 I/ M$ c: p8 `2 H m_nLevel = nLevel;& E7 g. S. y% h2 ^" @
n% T* f E( `7 g: F$ X
SetJobLevel( nLevel, nJob );2 m9 J+ S. e5 a- T
m_nDeathLevel = nLevel;
% M2 i. \$ v+ C#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
# }8 p5 L, i; [' Z _$ }4 H2 p; U if(IsMaster()): h+ f9 O: ^7 g. W9 E8 u7 p; H
{9 k$ q( ~$ [$ i& S* ~& {1 T
int dwTmpSkLevel = 1;//60, 72, 84, 96, 1086 _7 {4 ^9 l: s/ I6 e/ D
if( nLevel > 59 && nLevel < 72 )
( z* w. u) J3 \8 W4 Y ` t dwTmpSkLevel = 1;
3 ^ ?) s# N# E d/ Z else if( nLevel > 71 && nLevel < 84 )* n% i! k9 w+ s* q( m
dwTmpSkLevel = 2;
+ ?) V* U' c. X( N else if( nLevel > 83 && nLevel < 96 )$ m9 j5 a6 O7 g6 @0 W$ h
dwTmpSkLevel = 3;
- `+ c, ?% W7 M0 ]0 b else if( nLevel > 95 && nLevel < 108 )( B( L, F o0 @: d' G
dwTmpSkLevel = 4;
* K" O6 Q% {3 i% T) z! X: k# H* W7 G else if( nLevel > 107 && nLevel < 120 )
% U4 Z. }1 }- X: V$ G4 T$ ]2 r% V dwTmpSkLevel = 5;
) ~& F$ I- `- @' p, Z for( int i = 0; i < MAX_SKILL_JOB; i++ )
8 b& A! \4 ]4 w; w* z5 E' b. Y/ N {
; R' i/ [2 ~8 l/ x LPSKILL lpSkill = &(m_aJobSkill);
; w* T0 F* k% o: }& F' i/ V if( lpSkill && lpSkill->dwSkill != NULL_ID )
, X3 ` d8 n( o# f* A: y4 L {0 j/ u% _7 N+ i$ s$ |+ O
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
/ [( i. A, G( o/ X if( pSkillProp == NULL ) F9 f4 s, O- [9 Q$ l h
continue;$ G4 v; F) z: r5 A+ ]# \* s" J
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
3 |3 D8 i- g8 \3 Y! o continue;, l- T3 O* c9 n1 @; k
lpSkill->dwLevel = dwTmpSkLevel;
7 K0 V3 X- R$ {) x- Y2 o" L2 v }
( T, P2 H/ T/ { }
|: F9 f% x& t# p d( j }. l: k" r: X! O3 Q) M9 k" {
else if(IsHero())
9 {5 i% F4 E! @ {" k+ i* s. J+ Z9 E
for( int i = 0; i < MAX_SKILL_JOB; i++ )
; s+ p+ Y9 n* d, J" U$ j# S1 p {
5 [$ h& h8 ~ j- K1 C LPSKILL lpSkill = &(m_aJobSkill);8 X0 I6 B5 K- h" |$ {$ B
if( lpSkill && lpSkill->dwSkill != NULL_ID )5 h+ c& z7 R2 }# h9 g: q+ f' M9 y
{ l+ |- F" ]4 z8 o
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 1 R; Z0 w3 l5 W8 z! S' K/ a
if( pSkillProp == NULL )
% W2 l' q9 `: m! d3 H, { continue;* Q7 H6 g+ Y5 e* r1 p; o' E
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)8 |1 b' q* Q) i0 P7 I/ y
continue;- _- }1 c9 |7 x8 k! X i& _
lpSkill->dwLevel = 5;
! Q) T1 m, J- ~/ o, | k/ u3 o } |2 B0 ]6 w6 e7 X& B1 d
}
: e3 N' ]3 L) u# A) y5 s }
f# g# d6 V$ ?7 k1 ]8 D else if(IsLegendHero())
7 `5 _$ G+ M1 o {
3 P( l( d+ C8 S for( int i = 0; i < MAX_SKILL_JOB; i++ ) % ^5 D' Q: ^8 ?2 c
{
1 [8 o6 }+ Z/ T$ _8 E( k LPSKILL lpSkill = &(m_aJobSkill);1 l: d5 ]3 f2 I
if( lpSkill && lpSkill->dwSkill != NULL_ID )) F. B2 ?- z1 P J( u0 C: M
{: r# j1 E" V9 J- X ]
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); {" B5 a M5 y$ x" w! [' S( r
if( pSkillProp == NULL )
" x2 n* x/ [0 _: V5 G/ s# ~$ q continue;1 R* v6 F6 z+ U' p& |! {% Q- w, N
if( pSkillProp->dwItemKind1 != JTYPE_MASTER), [! @0 A$ K7 O' ]- M
continue;3 a+ n; {) x8 x( @8 [$ p
lpSkill->dwLevel = 5;! a9 S6 p4 u3 V
}
( K1 j. y! g# d- w2 `) } }
( x" b; Y1 _3 c/ u3 w; s; Q }
' c5 C/ O& j! N0 O) V: o) V( }1 e#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans" X& S) i* l) t4 b" N4 C* t& P$ {
if( bGamma )
Q4 S9 H" ?. } {1 [7 l J8 H- x
m_nExp1 = 0;/ K0 u- b& v3 u/ M1 c
}; P6 Y4 B! @+ A# |; K3 G& | c
6 ]% l2 f- u, g
( (CUser*)this )->AddSetChangeJob( nJob );
W) K% }0 _$ G. h' V' _) U1 d g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );8 d( A- ` I3 ^. J$ C. p! J6 E- F
1 H2 f' C! X' q9 K
N4 d9 i% A6 R: Z, B
#if __VER >= 11 // __SYS_PLAYER_DATA
/ c* k2 x. J/ d: a- Z2 l" O$ J( q g_dpDBClient.SendUpdatePlayerData( (CUser*)this );9 I, D( z( l9 B4 @ s! L7 y% [- _$ V
#else // __SYS_PLAYER_DATA
5 ~" ~! r7 [6 [: j0 R. M g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
9 K X( m* u; f6 v" I7 v g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
8 a! \) H& A: n3 e if( m_idGuild != 0 )
" n5 Z C3 \# ? g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
; b: R0 F' ^ v#endif // __SYS_PLAYER_DATA4 [5 G/ v0 E0 n' w7 U6 I! m, ~
SetHitPoint( GetMaxHitPoint() );
! s1 g. P8 |0 n SetManaPoint( GetMaxManaPoint() );
" s, K! U7 W* g2 u" B% q {+ h SetFatiguePoint( GetMaxFatiguePoint() );
$ y$ k1 J% H# ?( W# r4 J. ~ if( nJob >= 1 && nJob <= 4 )
2 m( C! d/ i S0 A1 g9 R" E* B( R {
6 L7 d6 a* i5 H m_nStr = m_nSta = m_nDex = m_nInt = 15;+ y. a# o& X" V
m_nRemainGP = 28;
: ^0 K/ l/ q9 T0 M$ | }
: X& T( p# k( y7 Y if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )& Y" E7 n. f3 ^4 R0 ^0 p2 J
{
4 w4 B" @( h8 v" y8 m+ U- Y% |$ A m_nRemainGP = 118;
; D0 f- ^9 g* ?9 ^: Q //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
, j4 r7 H; D. R m_nStr = m_nSta = m_nDex = m_nInt = 15;
% J( ? A! [+ h4 f }
2 \: s3 v& _: F. ` if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ). o* _$ \! n- X4 w
{
3 z. r9 ^ F3 `6 j5 r; [ CItemElem itemelem;
! B9 w! P2 N+ V4 Z5 s2 ? itemelem.m_nItemNum = 1;. v! O% Y0 N) ~3 {
itemelem.m_bCharged = TRUE;
) F7 D3 e* o: z W9 _1 Q BYTE nID;
8 X7 S$ m: t/ a3 s/ T; s5 [$ ^0 N) q; ]5 Z+ s
if( nJob == JOB_MENTALIST_HERO ), V/ {; ?& \" j6 r
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
1 T' G1 W: v- ^4 p5 c h8 F if( nJob == JOB_FORCEMASTER_HERO )) b6 Z4 L2 @( L* |
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;6 O3 J2 C! S4 e" [
1 F4 P& E/ N6 z
( ( CUser*)this)->CreateItem( &itemelem, &nID );
X) `8 h* h* P( H5 t1 T" u: e8 G6 H }
, W: R. A8 {# U6 d g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
% m0 p. ^5 O7 u1 s9 `& K ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );% `! k7 F% k: w; {0 A' `
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );- U8 Y) W& G( p) [$ r. s
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );' t5 @) Z3 g- P- W5 D3 p, z
( (CUser*)this )->AddTaskBar();*/
+ _5 t# i3 ^: ^7 L2 G ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
( M$ E& P3 e0 ^% e$ x8 ^ z#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
y, O/ d3 i' R" @: c- v7 b ((CUser*)this)->CheckHonorStat();
4 z0 `5 t3 F* G, t: M) E0 y ((CUser*)this)->AddHonorListAck();
x4 g6 M" o* O# q# ~ g_UserMng.AddHonorTitleChange( this, m_nHonor);& \" F% _: C; N: o. O7 N
#endif // __HONORABLE_TITLE // ′Tà?+ r* w2 r$ [8 a ]
}
* G3 }% U0 o+ d' h6 \8 u/ S! E( k#endif // __WORLDSERVER
9 S8 P6 a4 }) y- |}
4 n. D @5 s; i4 y
4 e p7 u1 E9 x: `4 ?然后你进入functextcmd.cpp并添加以下. w- o; `+ p ~' Y( l! ?" D
( z( O% j4 j9 H& C0 Q% g代码:
" a0 T- L. I, ^# K% q" MON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ); S. |3 H4 d9 Y3 n
下面插入
~- H: O4 W% L8 W5 \0 T+ t1 P2 lON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
! ]+ a; b8 e. h1 [! I+ |( g/ g) v6 d# w! J
然后你去( S: y7 u% y3 c
8 u' u% U& l- J* y# ?: c
代码:
" g' e$ X$ Y: e8 z' S0 N9 |# u代码' G0 F1 W+ {3 j- `3 f2 u
BOOL TextCmd_ClearPropose( CScanner & s )
( P! ~3 X+ V& I{4 }5 o$ ~! c' V7 g, x
#ifdef __WORLDSERVER# @8 w: ?. Y% j* x
CUser* pUser = (CUser*)s.dwValue;1 o3 ]" P' p4 M! ]9 r' ]- ]/ o+ k8 Q
g_dpDBClient.SendClearPropose();1 u. k0 M$ L, t& g" A
#endif // __WORLDSERVER5 t, m* t* c b7 C8 x- v
return TRUE;/ q6 x; u: v/ Y4 E
} q9 |# M+ z: C8 `' D+ z
下面插入* @3 _/ l/ b7 ?* t) u( M" I+ ~4 F: H
BOOL TextCmd_rebirth( CScanner& scanner )' S @' Y/ A! o& d9 P; e% d7 C
{" {4 s0 y/ f* }5 \- Q
#ifdef __WORLDSERVER* w" R9 F( [! P" v
CUser *pUser;
( F" x4 N0 l) f2 a" ]3 x& f' ?" x# |& {pUser = (CUser*)scanner.dwValue;
7 ^, P: m1 S* \if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
4 B, n6 v4 k" {2 n$ SpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);+ E/ x! m+ n) f5 ]' L
else
+ l5 N4 j0 f9 L6 ^" H, WpUser->AddText("你还未达到重生条件!");/ I7 d0 U2 O! c5 N0 X
#endif- B3 R# t9 B9 N5 j" ?8 g
return TRUE;) q, o n. Z# ?* c3 ~% }
} - X6 d# t4 }4 ?, m5 h( s& [
6 [$ N/ n3 B0 C; c& \
, d: Q* [: U, b" P# C& @9 L/ ^8 Y$ t1 X8 x! H2 o% v- c4 b/ L! A. O
# g& E$ b) o' G6 ], N
|
|