|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
5 r' ~+ A1 T& R* {# \# L0 L! T$ J7 U
Mover.h
+ I8 T6 y4 v! w2 [) ^# l* k* H代码:
+ R( k. W4 i7 [找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
* |0 o1 y6 T, U4 |2 c* z4 O0 \7 P# m' \5 p+ F
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
2 z: u9 Y& H- i) S4 o1 r
" Z# C% R; _: e7 h然后你去mover.cpp添加5 |1 z$ P% j# S# {5 k; g, G
' l% C2 D2 W# A( f6 ]代码:- r7 N+ z: Z/ v2 Y9 y4 G2 _
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
$ V1 e( L! V$ E" B* X# p, M" w$ Y{* O2 ?* Y* r) f- q4 M- w
#ifdef __WORLDSERVER @8 C2 [2 @" i
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó9 k" y$ Z3 G) a1 p& l
MoverProp* pProp = GetProp();) \* d8 h" e# }; L- J* q( Z
if( pProp )
: O, J( i1 n, N {- D# Y3 d: w4 M$ |& c. p
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
6 t$ p$ G# Y+ f: u/ z. ?$ r+ R- s {/ f! [* R. E( S V+ ^, e( R- ]
AddChangeJob( nJob );" e9 r2 ]- s; ^( d8 l* ^/ {% Z
}else{
0 @4 ]1 u, U$ y return;
/ Y. B; s5 ~: {; D }3 Q8 t# j* z- U+ w o+ R' b; o/ f
int nPoint = 0;) G! @! h, Q0 i* T
if( m_nJob == JOB_MERCENARY )
1 D3 U, H. U. U7 e& f nPoint += 40;
) ?1 }+ M7 v3 p4 }% S else if( m_nJob == JOB_ACROBAT )- {! N6 K( s. I9 z/ Q$ E, s
nPoint += 50;
& O7 l( U+ N, n$ d0 b3 z3 i. t else if( m_nJob == JOB_ASSIST )3 ^4 [: a: I* C; \; ?' u
nPoint += 60;7 P- G! F# T, O! \
else if( m_nJob == JOB_MAGICIAN )
. C+ G6 _) u( T' m/ { nPoint += 90;3 N6 }* v3 _$ l
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
: f; Z& G$ f' J s nPoint += 120;
, o1 }9 X, Z- b* w! F else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )- d2 ^2 ~* {& P. |8 `4 d, X m: H7 c
nPoint += 150;
- E, x5 [5 A. ? else if( m_nJob == JOB_RINGMASTER )
4 C6 a6 G; p9 {4 _ nPoint += 160;
+ r! t, ^- A: o$ q# y5 R: g* ] else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )! Z q Q, |8 R& @8 `7 v4 I4 u
nPoint += 180;9 s3 R% h) G: L5 P: ^' c5 I
else if( m_nJob == JOB_ELEMENTOR )
9 `( q: Q; P5 o! Y. m# f' r nPoint += 390;7 x' X2 |- c5 W: Y/ b) m, ^
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )5 O. Y. n* q7 b% N- ^0 w
nPoint += 120;, T: e A: x7 h
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )6 [7 ]7 H1 A- S X, Q& M: l2 m
nPoint += 150;
( N( X, q4 i4 E! {# o else if( nJob == JOB_FLORIST_HERO )9 \5 }2 L5 K& W9 ^
nPoint += 160;
: ~+ F/ u: F4 _+ ~- A: D else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
" O; `( i% L5 b nPoint += 180;5 Q: |* O0 z: W9 B
else if( nJob == JOB_ELEMENTORLORD_HERO )
/ ^# U, Y p$ A3 d nPoint += 390;2 P. b" F7 z7 v+ e8 |
5 x' [2 ^1 X. H g. e! m AddSkillPoint( nPoint );. k' I5 ^ a$ F
m_nLevel = nLevel;* ]$ [( C( [+ @6 A7 }" x; `7 {
1 U( S7 T% D G. F$ u* l
SetJobLevel( nLevel, nJob );; |% t# R S, c1 c: |
m_nDeathLevel = nLevel;6 `4 ~" K3 d2 k0 s, ^, ]
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
4 l; \! I' d4 a# E% a if(IsMaster())
7 ~0 r2 y N% D) J {
6 B+ s' V2 _! W/ l9 W int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
, t$ _8 w5 j& E m7 i# ^& ? if( nLevel > 59 && nLevel < 72 )3 }, o5 q) J/ @. z
dwTmpSkLevel = 1;
! a! A- O% w+ P+ X else if( nLevel > 71 && nLevel < 84 )
0 f7 N5 q' Y3 n) H* n9 z dwTmpSkLevel = 2;
: D) H! ]* s( s$ q$ O else if( nLevel > 83 && nLevel < 96 )
8 p" c! a: Z D. b2 f dwTmpSkLevel = 3;, {. D4 }) Y" S: k" e
else if( nLevel > 95 && nLevel < 108 )* A6 I5 u p# L `+ F
dwTmpSkLevel = 4;/ E! Q o) V8 R$ J
else if( nLevel > 107 && nLevel < 120 )
* F, Q" ]9 h8 j dwTmpSkLevel = 5;/ Q) m$ {, k) N/ ?' `" f
for( int i = 0; i < MAX_SKILL_JOB; i++ ) , ]) p( [7 T( `4 T$ J u
{
: g8 i/ E4 \' l* S9 L$ j LPSKILL lpSkill = &(m_aJobSkill);9 z( @7 G! V# L" I( i, p$ k% w
if( lpSkill && lpSkill->dwSkill != NULL_ID )4 ]5 ?6 w% s$ d+ \$ w
{
. k( F/ u4 t8 w ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); * F; {# e% i3 w5 E* W @: x' h
if( pSkillProp == NULL )) ]$ a0 b% _1 @4 m+ j
continue;5 R1 Q9 F: a( C* u8 U
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
* C, Y* Z/ F2 I. s1 d. U1 W( a continue;1 x# C6 a9 V) G7 [. P
lpSkill->dwLevel = dwTmpSkLevel;
- A4 A# C; U7 R0 v }, k* Q7 ^) H' s' v- y1 j
}0 @# Y. `( @& f: M# S
}* c' T j) @( J
else if(IsHero())
# h4 C, d+ Z# i6 l( w# n: ~3 u {
% [2 d1 _5 ]2 `: F/ h for( int i = 0; i < MAX_SKILL_JOB; i++ ) / P3 m, ~6 n+ }6 b# K
{
* v) @8 A% y/ ]) } LPSKILL lpSkill = &(m_aJobSkill);
& n- y: w+ o' `6 y+ `# E$ a0 @4 p: K if( lpSkill && lpSkill->dwSkill != NULL_ID )( L( [! {2 s7 V- l8 `3 B
{2 e: E1 U. C e
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); , u3 ^9 j* A0 S0 g5 a- E' h7 m
if( pSkillProp == NULL )7 u: ^: R# F0 O
continue;& R8 |& p$ F8 \- b
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
8 |+ ~, C7 l) _' X9 u continue;
0 p5 ?) G7 E2 R- L6 T& P @ lpSkill->dwLevel = 5;. o6 y) M( S5 n
}
( N2 w5 d. L# j' p( C }
$ _1 y, F6 Q, X; w }7 {; U5 J' u; x
else if(IsLegendHero())- r3 l. o0 C. x2 E) ]4 y M
{
I. n7 X$ f) D1 T; Q for( int i = 0; i < MAX_SKILL_JOB; i++ ) 0 x7 O* h/ x K! e9 ~! L8 R
{ + k9 m8 M4 k3 p3 ~$ B
LPSKILL lpSkill = &(m_aJobSkill);2 o6 D/ [7 r4 B; B/ Q( H
if( lpSkill && lpSkill->dwSkill != NULL_ID ): Z8 A; h# h. T+ ~' z
{
9 l1 U+ w9 D5 x ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); + ? q8 e) D- z2 V. ?8 A
if( pSkillProp == NULL )0 B9 L' Y$ e( _- ~$ Q+ g
continue;
* i5 g% Y% o# g& X# |) B if( pSkillProp->dwItemKind1 != JTYPE_MASTER)6 k" Z3 \% _8 P$ z3 _ F, d
continue;
5 i, C3 U4 z) ^5 K& ~$ Z* ` lpSkill->dwLevel = 5;
/ S6 l5 F2 m- D7 B) R) K }
* J2 z1 y) O, w8 {( d }
) J) z9 {4 A: z6 r, h1 R k) A$ C" K }
}% G% P) Q# X#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans& b: i% k! u) [. O
if( bGamma )1 g! p; p6 k0 A) O
{
# M1 i) g/ ~( t- A" F m_nExp1 = 0;- ?- r$ b) ?& g1 J& R, G
}& |+ u% q/ o/ J% C0 P$ ^' {1 C
( {) A+ f/ b2 Z; b+ S# Z ( (CUser*)this )->AddSetChangeJob( nJob );# r! ?6 z0 W! i: H7 v. U
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );! b. k: m) M8 g$ ~0 h
4 Q) }1 W3 s$ ^ k2 M
$ }: S0 r# v5 P; w#if __VER >= 11 // __SYS_PLAYER_DATA$ U) L, T, @% u# `; |8 c9 m3 J
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );6 v$ F/ s; t2 ?; m/ G1 T+ T
#else // __SYS_PLAYER_DATA
$ l w$ H+ F( x; n1 `8 z3 ^4 k g_DPCoreClient.SendPartyMemberJob( (CUser*)this ); S0 A1 r0 A% p* j! V; R$ n
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );) h$ i2 s) u& K4 }9 A7 j; ?' |
if( m_idGuild != 0 )
* ^: r8 B" m0 }2 l* a; }3 U g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
$ u" Z7 }3 p \#endif // __SYS_PLAYER_DATA
$ w7 v" C% m# c Y+ I2 ^ SetHitPoint( GetMaxHitPoint() );" j, h2 U8 e2 {2 q
SetManaPoint( GetMaxManaPoint() );6 O' M8 F/ W' \* f
SetFatiguePoint( GetMaxFatiguePoint() );' w. G" K+ n* x2 v+ @
if( nJob >= 1 && nJob <= 4 )
. ~; Q0 a+ i G7 V* ?/ X" e {1 e# b. m* k$ h" r! n$ F( Q
m_nStr = m_nSta = m_nDex = m_nInt = 15;" _0 e& ^) u5 Z( h- X9 p- \
m_nRemainGP = 28;4 y; T; k, O' @& \3 J5 k; n+ ?2 T
}
5 V/ m# _7 k) F; |' w' e; t" ^/ E if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )- E( c* i3 k7 K) t$ [2 t% y
{3 V, b& I2 L! Q! ?6 Z: D
m_nRemainGP = 118;2 b: Z* \$ O* A, |, U0 C, {
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;. y7 [1 i" K9 B
m_nStr = m_nSta = m_nDex = m_nInt = 15;% {" Q' p. X* c2 F# U
}
* z. |3 a0 O1 R7 e( e% y6 v0 Z if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
. q& @- a" H8 [* B4 d {
& U4 v( I" ], l: J CItemElem itemelem;/ x1 ^0 T2 c7 D7 f
itemelem.m_nItemNum = 1;4 v/ @2 d# w. K2 R6 ]. l) C" D
itemelem.m_bCharged = TRUE;+ x! p- [! Z) b0 g& c$ M7 f
BYTE nID;' M! J; `7 T% b6 N! z
: O# {- E$ q8 N- U9 b. N9 A' I if( nJob == JOB_MENTALIST_HERO )8 T; }8 l8 @5 I5 i' K
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;0 R/ t1 l$ [# Q$ `8 ]
if( nJob == JOB_FORCEMASTER_HERO )0 u7 B- C' I8 M! o% D0 M5 w, e7 ~
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
* F5 o) r! @2 F1 C' d
; F$ h: J% ?- D ( ( CUser*)this)->CreateItem( &itemelem, &nID );
8 r d* j. k& a/ w' V4 N }
$ R0 z, }* b' X4 B3 U1 D2 \- \ g_UserMng.AddSetLevel( this, (WORD)m_nLevel );6 k6 T7 `+ v7 v9 N! m
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
) B# a- a a0 y, l# a ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
% `; B7 M' \5 c, _" a. Y /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
3 i& U/ t3 v) c5 M1 @2 F9 ?1 @* } ( (CUser*)this )->AddTaskBar();*/1 k- [; @& z% k. G P+ A
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );9 z$ ^, I; R0 M2 V
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?0 |8 {1 X7 i* L4 l0 S D
((CUser*)this)->CheckHonorStat();
9 I6 r- M) m3 ~9 L+ T3 J! h l ((CUser*)this)->AddHonorListAck();9 D5 m' {+ ?7 E- W8 M" P/ o
g_UserMng.AddHonorTitleChange( this, m_nHonor);" {2 d9 y0 e! b9 a% w
#endif // __HONORABLE_TITLE // ′Tà?" C% E% H/ V4 r# E: I8 {; q; |( B; p
}
1 ~ O5 X0 W# j; h#endif // __WORLDSERVER
9 s) w( F# h/ s- H3 Q( r}
7 x. q1 d1 U; E: D0 x' a3 {% j8 L3 E
然后你进入functextcmd.cpp并添加以下
' U9 k- k, |. a# f+ V
2 F# O# o$ w- t7 d# D/ z; P+ s2 g% ~代码:. U9 J, J% W" @( i2 Z4 H* D
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )/ K' S4 P% I# k' @
下面插入
3 |/ J- F% Q' D' J& ?& nON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 9 O$ w. V2 E4 v, h
/ f7 s/ L4 V) d# W3 j' H( f然后你去0 s- U, i0 ]$ t% Z2 i' f( Z8 U
8 w+ A, D. Y, v/ Y( P代码:# H: J& W$ F9 | n
代码
$ j& _3 I* `0 D& L. D/ g6 Z, HBOOL TextCmd_ClearPropose( CScanner & s )
% Y% C8 |8 G8 @9 C1 [. [{
4 S6 L& G, S3 K+ t- W- k, ?#ifdef __WORLDSERVER
( u( e% B8 g% [: h; Z* M2 e CUser* pUser = (CUser*)s.dwValue;
( l- H$ |! n( v+ b, n1 o, E g_dpDBClient.SendClearPropose();
* J9 A: h) m/ d. k% d8 d2 u#endif // __WORLDSERVER
) ] \2 r: t d) G return TRUE;
0 C2 H- z4 o1 B}
. f7 D* L2 O( a a下面插入
& Z& `- U; y9 g2 k' `* [BOOL TextCmd_rebirth( CScanner& scanner )+ s/ {6 Z4 Q) j3 z- I$ h. A
{
0 L: c& e1 L5 ^#ifdef __WORLDSERVER P, @ C L" x
CUser *pUser;5 I0 S4 S: p- I( A
pUser = (CUser*)scanner.dwValue;
& r, s+ v- j4 w8 B& wif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
1 m- ]9 B5 s& H$ Q7 t/ D# DpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);- \4 U8 u J. b- I) r' G4 D
else- u$ |: Z$ K1 g9 Q
pUser->AddText("你还未达到重生条件!");
4 Z+ k% k1 y, f" m7 m! W: G# l t#endif2 V- u' |/ D5 J% a Y
return TRUE;2 ?4 R* |% B/ j/ _
} H5 K) }/ g0 D( }
& ^# d5 B: c f4 h& I; u
6 M. y. O4 g2 b
) T0 {" C! Y' Q5 ?5 h* t9 t
1 g, G3 S b" [3 W% a% }, d |
|