|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel6 H' f& g, N9 e* t
) J, V4 P! v8 `' G
Mover.h
8 j/ p) Z }( h6 |代码:& `+ H. M6 l& F$ a2 N
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü% {" W' R7 D7 h& {
" W0 ], u+ X$ i( O( M! c9 N- C下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; . s- ^7 \* O# s0 p; y
( e; j! n* a- {
然后你去mover.cpp添加
& q8 E7 g# Z2 V: G5 Q' X8 b
7 B3 v# B- ?7 [. [代码:/ |) j9 }3 Z; f
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )4 X( V( b5 c* h# ?$ @* J: ?: `: L
{
7 b# q5 S# w" t9 t) K3 i/ c#ifdef __WORLDSERVER& X$ Y' T" X2 K2 f
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
/ W9 K, y& z: J X5 E MoverProp* pProp = GetProp();( Q; \4 h9 l0 ]4 V
if( pProp )$ _8 C) `5 l3 w% p) f/ r
{
# v [, j3 u. V+ z9 R4 m5 v if( nJob > 0 && nJob < MAX_LEGEND_HERO )4 z, U& o- q2 h$ U }" |
{! U4 s r& `$ p6 c: x6 {5 p0 y
AddChangeJob( nJob );8 k1 i2 X; ~6 Z5 `9 s# J! ~
}else{! e" |7 h# q9 D A% b' {
return;7 l8 y# m S/ e
}9 {: N$ b* n, O+ I! e& y
int nPoint = 0;
) J# P" `2 T% k3 Y3 z: Q7 b if( m_nJob == JOB_MERCENARY )
{) I4 ]* u% b# |9 I! x nPoint += 40;6 G/ w+ d6 n% D$ {- T8 ~8 k0 o6 B
else if( m_nJob == JOB_ACROBAT )
! \# _; L: a# p2 Q2 J, T nPoint += 50;
, t7 c' S: Q5 f" z+ r else if( m_nJob == JOB_ASSIST )
( N, D/ r* x$ }' j' S @ nPoint += 60;9 L: P9 W+ ]0 B' `. a% P1 e) A1 W3 C
else if( m_nJob == JOB_MAGICIAN )# ~% b( d$ C6 f* n- u
nPoint += 90;0 d: j6 j8 ^! q8 S# q- v
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )5 l% S+ @6 w6 O/ Y' u
nPoint += 120;
6 [0 J9 m& |, F! `& N' h else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER ), n* ~ \* z! x
nPoint += 150;' X3 R$ r# x+ O) @# t. {# M
else if( m_nJob == JOB_RINGMASTER )9 [- G, E. \9 D# u
nPoint += 160;% F @& J1 |4 x
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
& u# q; e: H# l I4 U2 H; _ nPoint += 180;* T& R& M* e* u' |
else if( m_nJob == JOB_ELEMENTOR )6 ?- V9 b6 v \/ q
nPoint += 390;5 s, g7 P7 c$ ~3 t1 n
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )0 u& V$ _0 J; K# ]/ A+ _- A1 w
nPoint += 120;% `0 W4 k( p M: O, Q6 u: {
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )- g( e( D: _ x6 A+ |2 K
nPoint += 150;
4 Q& t# v* z: t- {, p5 ^* A( l else if( nJob == JOB_FLORIST_HERO )& D8 [& X4 |& \7 r+ I
nPoint += 160;8 p$ U0 j/ g* P% G
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
! A$ A, u5 d+ R& E% e/ G' x8 L+ g% S nPoint += 180;
p4 G9 ?. l& G) w$ Q7 h else if( nJob == JOB_ELEMENTORLORD_HERO )0 I# U$ {. L9 w# Y' H
nPoint += 390;2 v8 o$ D+ S3 {6 Z% o
; \. F: w5 H/ B/ _9 O AddSkillPoint( nPoint );! ^( |& u0 W+ ]7 w' d* b5 Z/ b
m_nLevel = nLevel;
9 ~9 T5 |! \# ?9 U' T; z0 O
8 d u' l4 g9 x$ ] SetJobLevel( nLevel, nJob );
2 u; ?# z m" w m_nDeathLevel = nLevel;
7 J7 r9 F5 _! k d4 Q: F+ e$ q- l#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans& d. C+ a9 i) W2 H" z2 `
if(IsMaster())
% D, e/ R6 U% {( _- J {5 x) N9 }$ k9 ?" ~/ A2 g
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
% b7 _3 J, P8 {1 d# z5 d if( nLevel > 59 && nLevel < 72 ). F7 F$ ?5 Q: s9 q# u
dwTmpSkLevel = 1;1 d. Y$ v# |6 Y2 _2 {
else if( nLevel > 71 && nLevel < 84 )0 u+ B& \) H7 Y5 R
dwTmpSkLevel = 2;
& ]) t7 o6 I' _ else if( nLevel > 83 && nLevel < 96 )
1 R6 |" |: E2 W/ K2 A$ K3 l dwTmpSkLevel = 3;
) g3 a, ?. V2 f" n: t: p else if( nLevel > 95 && nLevel < 108 )
6 L& z: t' \, e. R5 U dwTmpSkLevel = 4;
- S0 u9 p1 e; x& i2 T4 |; G! ?- s else if( nLevel > 107 && nLevel < 120 ) `7 Q9 E9 E' A; E- w9 y% i2 L ?: a+ ^ z
dwTmpSkLevel = 5;. ~% E. f) @( p0 n$ Y& }5 z
for( int i = 0; i < MAX_SKILL_JOB; i++ )
% _8 s# M# Y$ E7 U {
8 O) F6 Y" z- \7 Z LPSKILL lpSkill = &(m_aJobSkill);! o6 W& }4 x& R: K& W
if( lpSkill && lpSkill->dwSkill != NULL_ID )+ j3 P0 i. c2 L' p3 T
{
. n* A. [# }* S5 n ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
6 M% F$ w/ J+ _. K% `2 S# ~. f if( pSkillProp == NULL )
& n9 w5 c/ n" h+ U$ W1 f9 O continue;
0 i$ C- B: n0 R' E% P b/ N3 R8 u if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
/ t, p# }" z2 Z4 Z continue;
. g( Y, t n9 J8 [! [ lpSkill->dwLevel = dwTmpSkLevel;6 }# x& ^- S( Y i4 @4 h: T; V' i
}, K8 u# w7 o* L g- ^5 g ^- Y
}' z9 a" P5 h7 [
}
2 j& O" p, q1 F8 Q% g( L$ O else if(IsHero())) {! r; H, v. Z# m( [# G. H9 o6 a
{1 a0 N/ X& m5 @# u# [
for( int i = 0; i < MAX_SKILL_JOB; i++ )
2 x! t- e0 d- P {
% Z. t5 R2 s% e5 o7 H m, N LPSKILL lpSkill = &(m_aJobSkill);
7 H) ?* `5 w# r% I" m% T if( lpSkill && lpSkill->dwSkill != NULL_ID )+ _! y1 r; {. q \5 N8 H7 m" c8 Y
{
# ^. a; t7 K$ Q, @ }/ j ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
# ?9 a9 `+ Z/ v% k' e! c if( pSkillProp == NULL )- }: s9 x; m, e$ p6 Q
continue;, Y$ Q/ H; q5 d% i
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)+ `6 B4 H% ]/ [) w* Q1 m8 _
continue;. V2 ?. ~2 z4 G, t3 J' l! y5 y8 Y: T
lpSkill->dwLevel = 5;+ O0 A( _* ?: ]4 k, Z2 V
}; e. m3 ^" @ w$ g) j2 h
}
2 t3 U6 B2 B: L; q4 E6 q1 v8 ? } m8 g& Z* K" W0 U# s/ W8 W) @/ q
else if(IsLegendHero())
( e2 U. h0 [8 O! C! q: U8 X {3 v' [* y' _) n
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 3 `( A! u2 Y; Y+ G0 ?2 C
{
- y- o$ l; T9 U& y' Z1 [: x8 \ LPSKILL lpSkill = &(m_aJobSkill);
) h5 ^' i2 B/ p, j% \: }& m b, T y if( lpSkill && lpSkill->dwSkill != NULL_ID )
' l8 c( v: _0 O2 A {' {( ]( P2 D2 X9 }- N& E. w
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 8 `' N* M1 B* Q
if( pSkillProp == NULL )+ @1 G0 x; U$ z+ ]& N9 s# @
continue;+ Y$ ~/ W) n3 d8 j
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
4 C0 c0 @8 c% n/ W4 t# j continue;; Q Y6 b3 ^/ Q8 l7 X
lpSkill->dwLevel = 5;" z$ `* k* S0 J
}
% E) ?6 ^7 q& g, w% [% ^ }
; c% T( R6 v! @% N/ @: @3 E0 l* i5 Z }) G' s( ]& Z3 @8 i
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans1 l) v$ H5 V% D% C8 t/ Q- f
if( bGamma )
% p9 F/ ?3 l) c& M {
4 a! {) |% Y3 k r m_nExp1 = 0;( f: L' G2 U$ _3 S! g
}* d& u$ s- }0 z9 c
+ F/ U' E( a& m6 ^, ?
( (CUser*)this )->AddSetChangeJob( nJob );
5 o0 A' N3 [6 S g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
( ?. d0 G6 k0 I y$ _9 Y9 k1 c3 f$ d" a7 {
' H$ g8 f1 m" F+ u* i+ v# A- Q#if __VER >= 11 // __SYS_PLAYER_DATA
* p: s) Y( |. c0 \, F: ]% a2 e g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
6 W% E. K6 \! T$ d- ~" F: W#else // __SYS_PLAYER_DATA
0 H% F- U/ R% B% R. Z7 s g_DPCoreClient.SendPartyMemberJob( (CUser*)this );4 n+ U8 e8 g8 ]8 R4 b. U
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
- T1 X% A( c( p7 ~6 i6 j: I: S% n if( m_idGuild != 0 )* [# n7 o( b" |" y
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );3 M) u: t3 p! R& c- E5 b
#endif // __SYS_PLAYER_DATA
k' P p# M* a/ v( S, ?9 @1 m# G0 w SetHitPoint( GetMaxHitPoint() );" z( @9 M6 f7 S1 H N
SetManaPoint( GetMaxManaPoint() ); x# ?2 _! w4 p7 T& L4 O: K e( X, \
SetFatiguePoint( GetMaxFatiguePoint() );
# a, d. J3 G6 B$ I _' U; J/ C1 n if( nJob >= 1 && nJob <= 4 )
3 J; ?# q6 P i1 G7 M {4 w7 H5 y, Y/ W& b f% |
m_nStr = m_nSta = m_nDex = m_nInt = 15;) ?7 y$ |# ~" q" m7 x, n
m_nRemainGP = 28;
+ _* s6 z+ Y" e- y, l; m( ~1 L }% ]5 e9 y5 w4 I8 ]* _
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
" S5 t0 m( N- P7 X) \ {0 w; d- K0 I4 W
m_nRemainGP = 118;5 q% J1 C1 X: W! @
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
D4 B5 i8 j* x7 i0 o m_nStr = m_nSta = m_nDex = m_nInt = 15;1 \8 _' @, } O) [- |
}( L( k5 V( Z" c* i% y( F
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
9 D6 v7 W3 y/ L$ ^ {0 B9 Q& F( i& G+ s
CItemElem itemelem;
: `% N2 Q. m, T6 a5 p0 L* b" Y itemelem.m_nItemNum = 1;
, C% v; p: J: y" ^! k1 |. P% ? itemelem.m_bCharged = TRUE;
. q" T* l) q1 `1 Y* A" m- @ BYTE nID;
" i( f% F. m8 f& T |3 f, _0 r# C! R! D1 Z8 A% M. ^
if( nJob == JOB_MENTALIST_HERO )
8 z: r3 k6 i H ]# o itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
1 z* D! W# k* l$ \ if( nJob == JOB_FORCEMASTER_HERO )( A: q1 e! M4 B! M/ E9 k# Q( D
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
- ?9 `/ N' R- h9 S1 E: @
# j( ^/ b" Y9 `3 o7 c ( ( CUser*)this)->CreateItem( &itemelem, &nID );
) d& Z2 [* I" u( T! L X' _, e) [ }
/ x8 V- n0 U( Z. l( W$ f g_UserMng.AddSetLevel( this, (WORD)m_nLevel );" {! ]& r' K: b: B7 d& }. x% Q
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
! n& G! W7 D, {" t' P ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );) f( k. m; {% N( c; I2 ~9 \3 E
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
: B; n7 i5 }2 K$ k ( (CUser*)this )->AddTaskBar();*/
1 j2 ~5 f# J8 k3 n8 c1 @ ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
0 e- `: A" s% ]/ p" _) B! R#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?$ Q0 r& K" l |5 t" Q0 J4 F+ K' q
((CUser*)this)->CheckHonorStat();( L7 x1 c) P! H' S, r
((CUser*)this)->AddHonorListAck(); s+ S6 a8 ~$ P- V9 M! }& Q' B+ q
g_UserMng.AddHonorTitleChange( this, m_nHonor);- s9 [' j* l# U- {
#endif // __HONORABLE_TITLE // ′Tà?- V) M: S3 U7 G. S
}# {' m9 E! k4 [* I) L# G
#endif // __WORLDSERVER
" A8 X1 P9 _- c% s( d} - p- {0 ~5 \& Q9 ?
. i( g9 x+ ~5 |3 H1 ]1 G
然后你进入functextcmd.cpp并添加以下
& o+ Z+ q0 S6 Z! V
# x* L+ S/ S, u4 C' e: y代码:
0 F5 _" H' m/ h' x, t8 ^ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )3 R8 j0 N8 E x7 A: V' t+ L) }" i# c
下面插入6 l2 G- ]# \' v4 c g2 X; L( a
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
1 j% d/ K2 u5 C$ j9 M) Y& J; g, B" ^% n: n+ [% i( a' t/ ~& A
然后你去
: p( F1 b+ @. @/ R
+ ~9 K: Z( T& V# R$ E7 @" k代码:
; b9 J `5 ^% ?9 a& y/ S代码
2 j# k. m* G, ~/ ^! a# MBOOL TextCmd_ClearPropose( CScanner & s )4 h1 w! n/ {; Q6 [' n
{5 F$ e/ g7 V9 o$ E
#ifdef __WORLDSERVER
5 B1 I, P0 y3 }/ L4 v/ X8 [* i! S CUser* pUser = (CUser*)s.dwValue;0 O& P9 N" x* z. w/ o2 r0 j+ {8 p
g_dpDBClient.SendClearPropose();( g; S3 \& J& p. ] `. C, y/ u% A
#endif // __WORLDSERVER5 s& k# A3 E% D. ^' `, u6 ]4 h
return TRUE;0 z* P2 ?1 E- @* F" p
}. c5 R5 \6 G1 z
下面插入
, U, _( o3 ?$ oBOOL TextCmd_rebirth( CScanner& scanner )
2 f6 }! j# W' N5 i( _. B{
. f8 p3 Y( m! L# ?6 }#ifdef __WORLDSERVER- W O3 @; U0 C& {' E
CUser *pUser;
; D5 V' D4 }5 \! wpUser = (CUser*)scanner.dwValue;5 @0 o& ]6 m6 R1 C+ j
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero()), q# h/ G4 j1 E5 C3 _
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
. b" X6 Q# e4 b$ F2 h5 e" u+ Q6 W6 Pelse% L% q' ?* E! J4 ~9 r! D
pUser->AddText("你还未达到重生条件!");. s3 H8 |7 |& |6 i" c6 W1 U) [
#endif' n) V; E* v+ P- b# ~ [9 b
return TRUE;) d+ ~- c8 a3 `1 M ]' A
}
v: T/ H! o- i) E- r. s8 k% D" p- M& X& R! H- t1 X
& D1 M, E) q6 h; n2 }/ Y
, R8 t, o) \) u. H6 W$ b: `
; W9 X3 Z3 o' N |
|