|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
' _1 w- j1 W2 {3 R! v- |/ m7 v- ^9 N% T; ^7 d1 ?
Mover.h2 A0 m. B$ u. J2 e8 Q, n7 Z4 B. n- G
代码:
) v% K# W( E; y# f; t9 c9 }+ U4 O2 l找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü$ N" O6 |: g- X" B/ f
. j3 O" b7 X% h L' ]- R5 F8 t0 `
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
8 h! Z! n2 r7 o) M' U2 }% F8 x- s2 ]. R/ g$ b/ |
然后你去mover.cpp添加* c; L$ _8 c7 t7 o! [
1 K+ T3 R/ H1 c) z3 P代码:& z+ Z3 W5 q% g7 d& K, s) x
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
4 O: d5 n! d+ n3 _3 _# I" l{/ r- t7 x- m- h0 t
#ifdef __WORLDSERVER
" @5 f, ^- E1 }3 O( j' E2 y // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó4 S5 w8 a; \& \1 s4 `& E
MoverProp* pProp = GetProp();- W3 X, ]& x$ C k" J5 [
if( pProp )
* ~& M% l3 g1 O2 G. J) B) p {
& M; ~; {4 C; ~# O if( nJob > 0 && nJob < MAX_LEGEND_HERO )
! M; T' s# v8 ^# ]$ S+ ? {
7 d. H D, n( X* N, r0 c AddChangeJob( nJob );
4 x6 e7 z0 l1 N: ]' ~1 P }else{
/ F# a$ i5 H' d& s- }# y; Z return;! u# m+ m. q; P( q# U
}
$ o2 n) \3 `/ t/ x int nPoint = 0;) ?; q8 c- A, e; K' @' ?
if( m_nJob == JOB_MERCENARY )! H! ]+ b8 H1 {) ^& |: _, j
nPoint += 40;
3 Z0 \$ e. s4 z5 @ else if( m_nJob == JOB_ACROBAT )1 K: Q- g& `+ d0 Q/ z) z5 d0 j3 k
nPoint += 50;
3 \$ {1 f4 \9 }; U2 ? else if( m_nJob == JOB_ASSIST )
; q" _- H6 h9 v; t( z% m: E nPoint += 60;: X* N T% e2 Z7 c
else if( m_nJob == JOB_MAGICIAN )
2 z* Q% e7 k. ? nPoint += 90;/ b" ]& z) |; |3 s. n* H
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
- y; \+ o1 C3 {5 a* E! n7 I1 V nPoint += 120;
5 V- x3 H" _! i6 q else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )) I2 z9 x' ~( M( H: F3 d6 G
nPoint += 150;3 \' Y1 s) E$ Q' o8 O3 z2 r
else if( m_nJob == JOB_RINGMASTER ). T" L$ g% b; g% T
nPoint += 160;
7 J& o" h5 v: k% S else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
* b2 I* H, @3 i( J' D' {; W2 V: Y8 W nPoint += 180;2 W( U" P2 E- s
else if( m_nJob == JOB_ELEMENTOR )# C2 x7 X& y" j6 z( ~: Y
nPoint += 390;
3 D. h; Q8 V: v" P- S, H) v6 v else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )- G' Q. X3 N( J! G3 k- u& d
nPoint += 120;, m- t4 H3 I& ^0 d0 x7 W: i% }
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
2 \$ k/ M4 E/ G# q nPoint += 150;( T, Y) z: V8 _6 Z# @# k
else if( nJob == JOB_FLORIST_HERO )8 Y1 ]. L, J2 w$ a
nPoint += 160;1 o) j A; @' w# Q
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
% H+ g5 W% E# S& l) J6 }9 | nPoint += 180;
: L. {% B/ k, l4 n/ H else if( nJob == JOB_ELEMENTORLORD_HERO )
! B' _' g2 N {, M) N/ C2 T# ~/ q nPoint += 390;
8 ^0 _. u2 G/ |* R7 w% k n4 K/ |( p: ]( s) l2 x
AddSkillPoint( nPoint );! F9 q: W4 j' Q6 x2 L
m_nLevel = nLevel;
9 t E1 ?& K V4 _/ \4 U' J4 |
; v r: J9 y9 L5 \' n& i SetJobLevel( nLevel, nJob );
- _, U b; [6 Q; E# x$ c m_nDeathLevel = nLevel;
( N8 [. n. W5 G; w#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans2 o3 y }" `4 h/ N, Y" c
if(IsMaster())2 ~* x" |- C7 ? h
{
9 R5 M2 x4 N( @2 g int dwTmpSkLevel = 1;//60, 72, 84, 96, 108: G$ U7 `6 B7 @0 w* \$ L
if( nLevel > 59 && nLevel < 72 )5 h7 P: y9 _; X2 g2 V& C4 o
dwTmpSkLevel = 1;; G B( T5 J* k5 w: W9 I
else if( nLevel > 71 && nLevel < 84 )
3 b/ B7 |8 t2 N$ I9 `/ k2 l dwTmpSkLevel = 2;
; u4 c4 P8 l3 @+ y; @. r! z& B5 E else if( nLevel > 83 && nLevel < 96 )( R' Z) z0 \" k ]! P u- G2 D
dwTmpSkLevel = 3;
# \2 J( U1 d! W else if( nLevel > 95 && nLevel < 108 )9 u& b* l2 t0 t h
dwTmpSkLevel = 4;# i! `9 Z' z* \6 w/ f
else if( nLevel > 107 && nLevel < 120 )
, E M6 A5 u; M) g# F dwTmpSkLevel = 5;
# K$ e( Y0 w" [$ M1 z+ N for( int i = 0; i < MAX_SKILL_JOB; i++ )
" V0 @; z6 h; p6 \) _1 V { 9 J* d! {, e" y5 \" w* G
LPSKILL lpSkill = &(m_aJobSkill);
% ^2 j3 v, a, {5 d if( lpSkill && lpSkill->dwSkill != NULL_ID )
& L; L2 \# F& M& o' l! T {$ a0 s' H; h, s) {% d/ V
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 2 [" _# _- F$ s5 E* V
if( pSkillProp == NULL )3 j p6 Y; ?/ V% M0 |4 n1 Y
continue;
) k, D' w% p( O; k0 P if( pSkillProp->dwItemKind1 != JTYPE_MASTER)3 h0 r* Z% d5 q
continue;
4 r5 V, w5 r6 G lpSkill->dwLevel = dwTmpSkLevel;& g3 ?( l7 w9 w2 P. W7 F0 }
}
1 [+ Y; {+ w1 A6 B& S( p& j }
& x6 ^2 ?; V0 g, X" i8 M }. H% d. _: K# k3 C: o4 _/ x
else if(IsHero())$ T; i# u6 M# p- r6 N! U
{
* C2 J5 K$ \3 D8 Q( {, b for( int i = 0; i < MAX_SKILL_JOB; i++ )
- p% T; t/ ~* q. J3 w' m { % r2 r% m9 e6 t
LPSKILL lpSkill = &(m_aJobSkill);6 Z5 _# J; w* B) T' P5 v# q M
if( lpSkill && lpSkill->dwSkill != NULL_ID )
1 D0 E a' \% z3 } {0 e& X5 U0 ?: w0 ^% v
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 5 L# \- `' T* i& O* O% c
if( pSkillProp == NULL ). ?5 S# L; M! U0 O* ~/ O
continue;
+ m$ g" C' L5 \! `' |6 Q if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
" j' E8 |$ O) D3 X' `+ j continue;
( s$ X, g% g; \& q lpSkill->dwLevel = 5;
1 G, f* M7 u$ }- B3 n }! U/ {- z5 \7 _" _' O
}
- m' \5 O# N9 s: Q# C, U }% @1 @8 g, Q* o
else if(IsLegendHero())/ D- v6 b# n* h* {1 b+ I
{' G1 S0 w' t/ `( h9 ]3 E
for( int i = 0; i < MAX_SKILL_JOB; i++ )
3 N0 t! y1 M9 j# B+ n1 G { 9 @7 v: ]. |9 |! ]4 {- F
LPSKILL lpSkill = &(m_aJobSkill);
% z( D3 j' `$ z4 @7 ?7 q if( lpSkill && lpSkill->dwSkill != NULL_ID )# O* }' U8 `8 f( E4 }
{
) B% @- \1 w. b; W1 N ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
& L! T& R- P/ i/ A if( pSkillProp == NULL )
4 |3 Q# A5 a2 x D9 `3 e6 t continue;$ R3 Q8 _# N7 ?& d- K* W6 s6 t7 W
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
5 B% H; { P+ |" r( ?6 n; I continue;
% {( K% C q. M. }) } lpSkill->dwLevel = 5;
3 B/ v5 U) [ P }
( V9 A, s7 G! @, D/ I }
0 q5 S8 B; \. T% f5 d }. s0 Q% h% J5 r' w2 Z3 t4 k$ f
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
+ W2 q+ y4 H4 g5 y& h* p; b3 e if( bGamma ); b: n3 `7 `3 a" M; n2 E* @# N
{
) _, M5 E3 z# W) d% A$ l* g, G1 b m_nExp1 = 0;
# `9 i9 e: }; ^/ q }+ J* m9 d; e. U! ?
) z* ], u# [5 J ( (CUser*)this )->AddSetChangeJob( nJob );
; I& l( } R5 r; P* [ |7 I8 s g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );4 {& d9 `! J# ~/ m, @6 O
: |5 A4 p0 V& M
$ I( g+ Y7 P; N: G7 A0 ~#if __VER >= 11 // __SYS_PLAYER_DATA
2 X' w" k& v: M) O) f0 K g_dpDBClient.SendUpdatePlayerData( (CUser*)this );* q4 x% H2 c$ y8 _) j4 `0 p
#else // __SYS_PLAYER_DATA2 N. U# F' {2 V
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
( G3 g% Z) Z9 W }9 ^0 ~ g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
9 G2 O6 x4 o* M6 O# q( v3 ^( y3 H( ? if( m_idGuild != 0 )# ]* Q' V: {; Y! w2 q; u& O- k, ~
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );( F) |9 r4 w/ \! W' @
#endif // __SYS_PLAYER_DATA
7 N5 G- z1 t- B; A" X SetHitPoint( GetMaxHitPoint() );
[: C; W7 N7 N! I. t7 M SetManaPoint( GetMaxManaPoint() );: N& A9 t; w2 S& b
SetFatiguePoint( GetMaxFatiguePoint() );
$ }( \2 p2 Y0 R- _6 X% X if( nJob >= 1 && nJob <= 4 )
+ |5 ]7 A5 ]: }2 _4 }! c {" C3 w6 |! j1 s' V; N7 y
m_nStr = m_nSta = m_nDex = m_nInt = 15;
3 ]5 Y& D$ h+ b3 O- y, _ m_nRemainGP = 28;! \* j+ U3 O& c
}. Q9 h6 |1 \. U( e
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
: d9 y9 l- a" g8 X" Q! R {
' I0 e) ^0 |5 g; [8 N m_nRemainGP = 118;& e" f6 {* u8 E. O( @; v; M3 y9 M7 X( O
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP; B2 n# L8 S: P1 ^) |
m_nStr = m_nSta = m_nDex = m_nInt = 15;1 d$ Z, t- N0 l$ s( D
}
; Z4 R$ x/ T( {8 S U if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )/ k" u, s9 f% t; S+ ?8 [
{
) y: a4 U) r3 K2 O CItemElem itemelem;" y& C! K/ Y8 E2 H$ z N9 A
itemelem.m_nItemNum = 1;
+ m0 [' \) F% v5 u. C4 F itemelem.m_bCharged = TRUE;/ ~$ p2 e1 d/ e2 o
BYTE nID;% v+ n$ H: b! _5 s. a9 X! M
6 V O$ R) t* t* H if( nJob == JOB_MENTALIST_HERO )
; `+ v$ q# K/ S! O itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
# x# h% e7 B- ^% k8 p if( nJob == JOB_FORCEMASTER_HERO )! E o, V) F1 J, {8 G8 v; L6 g
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;+ |/ g) Z: l( l4 [+ v
1 r* {& ^8 `+ l7 N4 A% c
( ( CUser*)this)->CreateItem( &itemelem, &nID );+ g, o; w; X( S5 R) x2 b
}
: l+ O# U5 P+ [ g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
1 {9 R1 H2 G: g1 `8 z ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );4 W+ S; w+ ~$ W$ q. B' T
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );: P! o0 L& _: Q% p% n5 O p% b
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
$ s3 K, t8 r: c8 \1 L) E/ i- w ( (CUser*)this )->AddTaskBar();*/- Z6 Q% `( P$ g7 G, h
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
{8 K J+ |$ m6 K#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
2 h8 G& r9 f2 z1 q/ a B ((CUser*)this)->CheckHonorStat();- q4 B( |% M2 q9 j1 Q" Z8 U
((CUser*)this)->AddHonorListAck();* ^+ c& g9 d* P0 S, [3 S
g_UserMng.AddHonorTitleChange( this, m_nHonor);
5 c% @4 g' ~8 }$ o# Q f; U#endif // __HONORABLE_TITLE // ′Tà?
( C3 C! Y% T8 K- r0 s: r; ] }
- a( w9 i$ L" r5 J#endif // __WORLDSERVER6 m% X' `+ D( q6 s7 _( H; r
} * l8 V/ x; W" @0 m3 n1 ~7 q
6 @/ L+ e2 `8 D. M* y
然后你进入functextcmd.cpp并添加以下
3 n4 W& [* ]' ]5 [ ?
2 @" c' T7 @7 x. a代码:
) v" V' B5 D! T$ s( J( l/ `ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )& g$ D4 S( H" Z1 n. v' m
下面插入) f" h7 K: G; o8 N* {, \2 t2 P
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ' s" b- [9 a5 b* I G
4 S2 s9 N3 E2 w1 K' ^" Q$ W
然后你去2 ?$ Y7 p& _- F" q4 ^
/ A& ~2 u/ N/ L7 `, r! ?7 V/ @8 z代码:
- B5 @) A5 {( l4 e; H代码) @" g+ _& g8 A2 b
BOOL TextCmd_ClearPropose( CScanner & s )1 H- z' v, }: B$ G1 Y: K
{
1 i# i \0 {" D# m# [, \* O0 c e#ifdef __WORLDSERVER3 ~0 p$ S$ g, [) E/ ?" i
CUser* pUser = (CUser*)s.dwValue;( w c# g0 Q8 k# D( }7 m
g_dpDBClient.SendClearPropose();
& n8 w6 V: z) p3 ^& d#endif // __WORLDSERVER: \; w/ ~2 z& v6 w x
return TRUE;, ?% ^$ h( Q* D
}
! j# K5 _ T+ o2 R( i' i下面插入$ p$ n* y; a2 t j3 \# b6 O+ M
BOOL TextCmd_rebirth( CScanner& scanner )) R7 i$ O- H# ]2 P+ ?) y H
{+ z9 B1 O% [3 z9 a2 v/ ^' V$ ^
#ifdef __WORLDSERVER
! `9 T ]1 R. v' iCUser *pUser;
& A) i7 n+ o! ]pUser = (CUser*)scanner.dwValue;
4 ^: q2 {" ~! E, B* L: k4 ]if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
* ] A. }6 o R6 s5 `2 Z6 b1 hpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);0 X$ u4 q8 W0 J7 t2 d7 L
else, b2 ~% H# X2 b8 x, C
pUser->AddText("你还未达到重生条件!");3 l' Y9 h H' o; c' i' S$ r
#endif
; g x, m. s% ?- Nreturn TRUE;
/ [9 n7 L4 v+ B}
% v0 q( [: ?) D. M5 d. f1 |- Q' k; S0 \+ q1 Q) i
) H3 Y9 }- L3 n* j* p6 A% w6 A4 e' h4 E- x
( Y# s( x; B8 g& a |
|