|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
% b9 v% Y+ _, |+ Y; {* u% `& Z5 `6 D( A5 `, g% |
Mover.h
; A$ T, C8 a2 o代码:
$ `) x8 h: C4 e8 g$ l6 v6 w找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü* U/ a( {! V p: t9 s: E2 p& D6 ~
" ^7 W4 q( z6 p# w4 U2 B3 E下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 2 A) I/ K3 k# [6 ?) h. K
5 Z% ?( O [9 c然后你去mover.cpp添加" ?/ R5 u; A- T
& d9 h7 Z5 i4 K( X7 g. p代码:
+ U+ I' C, x! p% z3 B( k" ^1 yvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
' b" n0 a: ` a: ?9 s2 }{- }5 \- X2 _/ K' v& A2 F
#ifdef __WORLDSERVER1 F4 T6 o- t4 x% `
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó, B) I) d2 A U# `
MoverProp* pProp = GetProp();& j+ ?7 a6 @6 L( | G. s
if( pProp )9 F6 c" s9 @6 X y
{
( P5 N, n+ z. T1 @ if( nJob > 0 && nJob < MAX_LEGEND_HERO )
" _5 i4 v. `# {% I {
* K6 z% R& O" E* [ AddChangeJob( nJob );
- B$ u0 n; m5 |) b& _ }else{
3 q1 y6 |( T2 o6 A/ s; Y return;: `& N( D1 d/ z2 \3 O
}
, i6 I! c% M( X! @ int nPoint = 0;+ y3 s, Y: m3 W4 @( K: O
if( m_nJob == JOB_MERCENARY )
6 W8 ?" S+ |7 z' G6 O2 W, w nPoint += 40;3 n" m5 I- [: \/ }
else if( m_nJob == JOB_ACROBAT )8 G$ g! V+ L! k- D, b# v. E: |
nPoint += 50;
. s& G$ [# v. K% j# t# G+ t0 I: v, _ else if( m_nJob == JOB_ASSIST )! ^5 y3 Y; V8 Q) [' F* T% {' B
nPoint += 60;
. G* c c8 Z$ Z, ]" {2 y else if( m_nJob == JOB_MAGICIAN )3 a- T7 V# X+ r6 O! [+ B4 s! `7 h
nPoint += 90;
2 L/ ^6 Y! ^ w3 i- q else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
9 T+ w! K" _/ U i- v; S nPoint += 120;( [* S: O7 @3 c& b) M# o+ C
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
' K( \- a2 `4 ?' b nPoint += 150;, C/ R2 U# a4 Q, T) n( l: @6 `
else if( m_nJob == JOB_RINGMASTER )( L4 U1 O- `' |
nPoint += 160;
6 V- v# Y4 f- D2 G else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )6 u! `1 W7 I. q3 k0 `, C9 q
nPoint += 180;
2 s! n; X1 ~9 A7 Z) L# X/ ? ? else if( m_nJob == JOB_ELEMENTOR )" s0 A) \+ r! K# I# F; m+ n: e) m: J! ]
nPoint += 390;- C8 f9 Q, O% K- ]: N& J$ \0 a8 |
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )4 G" b$ n& ~+ G6 }# K
nPoint += 120;# I. l3 m) _ n
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )( Z8 T# k. F# J% Q' L- ^
nPoint += 150;
! X0 o( [' J; J" y' D else if( nJob == JOB_FLORIST_HERO )
9 A, m) o+ e9 g3 Y" b8 }+ m nPoint += 160;
. b7 f! }& N& Y else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ); o: J3 O& Y4 x: c/ a9 M
nPoint += 180;( o3 q+ b5 C; y
else if( nJob == JOB_ELEMENTORLORD_HERO ) T @- a) H. ?# F, N- p s
nPoint += 390;
- k5 \8 ^( I5 w) k; R {+ I7 t
3 j- ^ G$ T2 T% {1 V0 X' n AddSkillPoint( nPoint );. a6 E4 ^6 l! [+ P5 Q
m_nLevel = nLevel;; Z! Y4 ~$ b4 \" L
7 u a' T3 X+ ~0 ^+ l9 o' p SetJobLevel( nLevel, nJob );
9 ^- i2 \7 A. X; O, }4 f m_nDeathLevel = nLevel;
6 e% Z3 G# [! l* @8 E/ g. h G#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
* J. Y1 o4 R7 `; J" A( X8 B if(IsMaster())1 _' v9 k. q. ~4 `
{" l9 U- N' E9 M+ |6 s; j
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108+ ~: N: F# u6 B1 f3 c
if( nLevel > 59 && nLevel < 72 )# n6 ]2 H6 z4 C% O
dwTmpSkLevel = 1;8 H& B* e z6 r1 o* ]& K
else if( nLevel > 71 && nLevel < 84 )
3 p# b) T# P9 Y( Q7 F4 T dwTmpSkLevel = 2;
% v& B% z! e$ d: M else if( nLevel > 83 && nLevel < 96 ). M+ a! o4 x; q1 ]2 i6 E
dwTmpSkLevel = 3;# n" Z9 G; }9 r U c3 Z7 D) ]
else if( nLevel > 95 && nLevel < 108 )- W: S( j9 D+ G
dwTmpSkLevel = 4;
: O6 Q# G8 z; w3 ~7 C( x else if( nLevel > 107 && nLevel < 120 )
3 k4 S/ @* _& k% {# f0 d dwTmpSkLevel = 5;
7 j# p! v9 ~9 Y! w8 v9 s for( int i = 0; i < MAX_SKILL_JOB; i++ )
( Q( a( W9 y% Z. Y5 q: c) R- W { 4 M8 I; A# [4 @
LPSKILL lpSkill = &(m_aJobSkill);8 ~/ u/ s6 T' _8 f0 Y$ J/ |
if( lpSkill && lpSkill->dwSkill != NULL_ID )+ L$ ~/ q' S, h+ y# W2 `; ]& N
{& V0 w3 H* T- P& M4 [' q
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
6 C+ n' o% Q: x( ?0 Q$ g" D( { if( pSkillProp == NULL )
) `4 S) ]# t8 Q continue;
; Y4 \1 Z$ C- z6 A; k if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
2 x2 T- L3 T- p/ l6 K% G& C+ F continue;
. R1 Y5 w( @" D; t- R lpSkill->dwLevel = dwTmpSkLevel;6 l3 D. Q; E% o$ B; ~# I" ~! e$ F
}
# t4 Z" I! x) z2 \" N% k1 _" D }
6 s0 I7 {* d3 C, i0 U% M4 m6 N( \) ~ }
5 |9 n+ a3 d+ a9 `7 @! q' L else if(IsHero())6 U4 ?& o) {/ P7 b! y: O7 B
{7 n* T& k; V6 u. k( i, m5 z
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ; q( C3 o; d1 b- ^" P6 z
{ + c7 r( I L* N6 a
LPSKILL lpSkill = &(m_aJobSkill);2 ~) C8 N: Y5 w2 d1 S" m
if( lpSkill && lpSkill->dwSkill != NULL_ID )& }* Y; c, L4 }, ?
{$ i1 }, ?% `/ V7 R
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); : z) e0 c& n0 `
if( pSkillProp == NULL )5 G2 n8 g0 C: f( r
continue;- V1 F3 A, x, h1 y) G
if( pSkillProp->dwItemKind1 != JTYPE_MASTER): ?* p: u6 E; X6 j
continue;; n: A# Z2 {6 u* p; N. h
lpSkill->dwLevel = 5;" L- p8 x5 ~, e4 O1 E2 X/ p/ U
}
( m0 n% h3 i; q: e: A4 ] }, g m9 l' j% I3 s' s
}3 [3 f+ S; T' `0 i, V' A
else if(IsLegendHero())! k- X+ @2 `0 g! L+ Y: Y5 |
{; a4 I% \$ }' c! p
for( int i = 0; i < MAX_SKILL_JOB; i++ ) + [) r: U8 G- t0 f, |
{
+ l3 B, i5 m( O LPSKILL lpSkill = &(m_aJobSkill);
' z: K6 I2 Q6 m6 h, b" G+ F* e if( lpSkill && lpSkill->dwSkill != NULL_ID )& n- O+ s' k6 S. k9 u
{0 T y+ L p1 L/ V4 }7 t% P
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 5 V& ^8 F M) `
if( pSkillProp == NULL )8 R; c0 P3 _4 r& P
continue;" S! i1 N% R/ `. K
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)# B' _+ K8 C* ]/ T
continue;" h/ i9 B" U+ S, e' M5 S
lpSkill->dwLevel = 5;3 g* ]) F* v& _. _4 ~# y
}
0 m$ X, f4 }4 `( l# E# J) [ }
- j. j1 J# k' a' l- z2 U+ N }
. c$ P/ {! u7 J, u% I0 O3 v, k& P) j#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans1 q# C d. k5 S9 B y b2 z
if( bGamma )
8 R. {! P# c w) S4 O( \1 O {& T. ?" V9 M6 n, {; M. O. u7 W
m_nExp1 = 0;6 }; Z5 R$ }: |6 L
}9 V4 G: z! ]* P7 ?4 N# K4 X
' U/ j N$ v0 j! \& o- F% J
( (CUser*)this )->AddSetChangeJob( nJob );6 t" u; @* Y: K$ U8 i9 M* t
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );6 \' w0 [% [: N& ~ h: ^. E/ n1 }& q
1 L& o- j& _ [" p
$ [- y9 N1 b: i M3 x- B
#if __VER >= 11 // __SYS_PLAYER_DATA8 |/ a; ]! {7 b& F
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
: X* {8 h% O1 x0 w( A4 l, m5 C7 k7 v#else // __SYS_PLAYER_DATA
6 t0 _: X5 k3 ^; j( G% H g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
& I: m5 u" E- _, E: f g_DPCoreClient.SendFriendChangeJob( (CUser*)this );* w! l# a+ I% j' Z0 R
if( m_idGuild != 0 )
+ r( K% g: u3 ` g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );: i2 K' j0 x) t* y* L6 i
#endif // __SYS_PLAYER_DATA* o# u a' I6 z2 t3 F7 `+ E7 A4 {; f
SetHitPoint( GetMaxHitPoint() );* t; A* D, t. Q }: e& t# V% f
SetManaPoint( GetMaxManaPoint() );
. C/ z- _: K. O* x SetFatiguePoint( GetMaxFatiguePoint() );6 k' b1 B% E# D+ z( M9 f, V7 p
if( nJob >= 1 && nJob <= 4 )% d& k' { N/ H2 W+ @8 f
{
8 X- j! d, k- E m_nStr = m_nSta = m_nDex = m_nInt = 15;2 j1 q9 Z1 c* R
m_nRemainGP = 28;6 P |% h* D$ j2 b8 Y
}! ^* i0 U& q1 x
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
* l$ Y. r2 Z! g/ l; m0 T+ @ {: `4 o n; t# v$ o: T7 i+ V( @# Q
m_nRemainGP = 118;6 {5 _5 U8 T9 b
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;$ S8 `, w+ v0 o0 v3 }& U' R8 U
m_nStr = m_nSta = m_nDex = m_nInt = 15;" { r$ u a R* V, P2 F8 e Y% o
}
: J( x/ O! m$ ~* T3 O' \0 h if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )/ N3 v! n$ z! u
{# d9 E$ ]7 S$ P7 r
CItemElem itemelem;
* Z% D# U# p6 L% `" C# S( F7 p itemelem.m_nItemNum = 1;
2 i) Q9 p! F/ L itemelem.m_bCharged = TRUE;. z# e- t' K" `2 E! } f
BYTE nID;
5 x8 |8 ^& }$ f* Y. B! b* H9 T
3 \" H. L3 G1 P3 y" S- ^ if( nJob == JOB_MENTALIST_HERO )& R M$ v/ w; K% ?# p% ]* \8 t6 _
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
7 V; v/ c4 M9 ~6 j' f, ] if( nJob == JOB_FORCEMASTER_HERO )" |7 d) _5 J5 ~7 ~" y; ~( V; f s
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;# g. y1 f" D6 K8 `# E ]+ N0 l
8 x. k B m ?1 q9 L) F$ a0 H
( ( CUser*)this)->CreateItem( &itemelem, &nID );9 t: c7 H O* M
}4 |4 k# g" J9 Z' d0 n$ u/ l8 a9 z
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
. f* M7 o- M( w M0 c ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
0 W6 J7 }7 g# |7 ?4 V4 G1 O ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );2 a [$ \0 x+ t
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );9 D7 G) z" c" H! R! g5 h) A
( (CUser*)this )->AddTaskBar();*/
2 B: X; p# P/ I7 E8 e2 l9 {4 w ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
( [ W4 _; P. J. F2 n a#if __VER >= 13 // __HONORABLE_TITLE // ′Tà? I9 T2 _1 ]# j0 s, b" `1 d
((CUser*)this)->CheckHonorStat();2 r6 G" o3 ~" O. q5 B/ X5 J
((CUser*)this)->AddHonorListAck();
+ k2 R# e( `, t) K+ G( ` g_UserMng.AddHonorTitleChange( this, m_nHonor);
; U: G* f/ i: B0 P- a6 o#endif // __HONORABLE_TITLE // ′Tà?; I9 l3 m) W* E5 c8 v& z' Z
}; v. T: x$ }5 g1 A0 J& I* y6 F# M
#endif // __WORLDSERVER r9 J" l& C- q$ M7 D+ J6 e1 d! o
}
: D+ |9 y" C; ^+ @6 T0 R
) i% s m( E; g5 ~6 y然后你进入functextcmd.cpp并添加以下
" S6 K' y) R, K/ K% F
- T8 H' |- u; m$ i代码:# I8 u4 C3 N8 y8 m: O' Q. D
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )8 B7 q$ @6 E% M8 E
下面插入
; ?0 ~* o( {* }" v+ x; w5 pON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
9 {5 c* k6 v; d3 t$ \, q O
& i5 F& u# Q# n9 C; l. \然后你去
0 R6 N. b+ i' w% {0 H9 Y4 T, |2 T+ m6 {" p
代码:1 S! W! Z) j: X; m) M \( }
代码" h$ q8 u8 o: j6 r4 E3 X- g6 p/ Z
BOOL TextCmd_ClearPropose( CScanner & s )
7 T3 \* j) m5 N3 w{
; J+ j0 o! _+ k#ifdef __WORLDSERVER; u0 |+ e0 k" n5 r7 O; a! U# ~8 y
CUser* pUser = (CUser*)s.dwValue;& C) g" P* M: F) h5 b
g_dpDBClient.SendClearPropose();/ L( f) Q; f S) h( M) S& [$ b
#endif // __WORLDSERVER: r. s1 v8 K; X8 b- e. ?
return TRUE;/ y. |- k) W0 u% F/ Q
}
0 q; A/ ?1 `1 e- _) x5 R; S* Z# d& w/ l下面插入
/ \) Y; I% {, qBOOL TextCmd_rebirth( CScanner& scanner )* {$ {; }4 o6 T% i1 B. u/ U
{1 U+ d, b$ G w3 N# ]4 ~9 @; O% k
#ifdef __WORLDSERVER7 L- F: C; n% H; r9 W
CUser *pUser;
& [" l1 _/ ^" E, j& j) s9 cpUser = (CUser*)scanner.dwValue;7 u" _/ K9 A) U
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
, H- P) H; q1 o! d& K3 Y3 s+ ZpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);7 Q- f+ P& m8 c) f3 N
else4 A- q3 ?3 o2 |! _2 H9 |+ H/ {
pUser->AddText("你还未达到重生条件!");
& i& H# l% ~0 D, M3 F2 ?#endif' V7 V* s% `1 Y" H7 |' s
return TRUE;
' U% T o% C" F# j6 w} 5 M3 x! y! j& C. R" y9 @! Z6 M, {
( T* F+ ^! g! O- ~0 V+ Z+ y
' u4 k( z* h; O- [4 c8 _
+ E3 C) y" L! h' ]& Y
/ i8 w5 d, ^4 y1 k8 W |
|