|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
* j% |& n' \4 A0 i+ p5 t# c$ ^3 \8 G7 w
+ L) g" ^5 P% p- g% wMover.h
" ?+ v& {% [6 J% m0 o# Z代码:
( `- R7 i3 P$ Y5 o找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
. ^/ C5 k% x( A1 ~5 @$ V2 i
7 t' i; h, S# h6 U, a* B: N" h% K下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
% r/ q% g* g# f) j; s' U& X7 B K5 V1 m. V
然后你去mover.cpp添加3 Z$ ]" i6 \/ [7 O
8 m N, T0 M) @7 p7 d代码:2 k" B% Y- b# n, k2 Z5 x, c: g
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
+ e; i/ b3 ~8 o! w3 c{
0 S, c8 D: T3 d1 i1 a#ifdef __WORLDSERVER( W0 ^" V9 I" M3 ~) q* h; a
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
3 C* [/ Q% ]! `+ Q8 Z4 d MoverProp* pProp = GetProp();' i6 O- Y0 }& x8 G2 t' X
if( pProp )
C' C$ V9 z2 n& q" X" n {
" w+ A+ e" q4 l2 x5 m$ C8 w if( nJob > 0 && nJob < MAX_LEGEND_HERO )0 C1 S2 N/ Y* C% `
{7 @+ o- C$ E/ [; M5 d4 |& ]
AddChangeJob( nJob );" T% ~6 n+ H( y6 x
}else{
8 o! E% \+ Q8 L, g! O& i. } return;1 H I; I. q; N1 J# f
}4 z8 Q- B Q3 P( _" L/ Q
int nPoint = 0;$ k: `$ E0 h# x* O. |$ ] B
if( m_nJob == JOB_MERCENARY )
/ V: B/ [6 O- p/ d nPoint += 40;
' S9 \1 H3 V5 K: k- D: ^6 ^ else if( m_nJob == JOB_ACROBAT )8 {# p7 W# C9 f5 r9 N1 F7 V' w9 T
nPoint += 50;$ V( E, z7 a L' O/ ?
else if( m_nJob == JOB_ASSIST )
+ c1 l9 O& _- S1 G& I2 K nPoint += 60;9 W' O/ {/ D1 K7 Q
else if( m_nJob == JOB_MAGICIAN ); m4 u7 G$ ]4 M1 r+ J$ N0 Z$ |
nPoint += 90;
+ x4 y; C% d* G else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )1 v6 c" v p# ]1 w& Q
nPoint += 120;( A4 ~" a: N5 q5 @6 l3 ]
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )' K6 b. q+ @8 _% N1 P
nPoint += 150;) G; s% v9 B0 p( ~8 U
else if( m_nJob == JOB_RINGMASTER )& h& O& t' I# g! T7 ~% v
nPoint += 160;; }, T3 `" I* { n# E
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ) A+ E! o3 U" \$ N
nPoint += 180;
( K8 \, h7 e5 n( k- l else if( m_nJob == JOB_ELEMENTOR )* h1 {6 T' d7 I/ N* N
nPoint += 390;! O/ M8 O& T( H r& K
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
$ C' B9 G. _+ L, j' v nPoint += 120;
5 T& P2 P' E5 e) @1 J \( ]7 C else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
6 z0 }0 p! w; ^ nPoint += 150;: R5 O: z5 n- f
else if( nJob == JOB_FLORIST_HERO )
" J" K# c1 N% X- T. n5 ?/ F5 x nPoint += 160;, z) B; y% |9 X3 c% h
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
; _7 p0 V! S2 N$ q/ a: k* P! b3 N nPoint += 180;+ H- q% _& X$ L* G; [5 @
else if( nJob == JOB_ELEMENTORLORD_HERO )
" g; Q/ @; j6 G. E$ b nPoint += 390;
% q" J2 |8 Y) {# a2 t( I
1 e( |$ ?* w; C) {! Z- v AddSkillPoint( nPoint );$ C2 }# Z; ` f% t! c/ Q: m
m_nLevel = nLevel;" q9 U4 r2 b! ?. {
! M5 |9 i# q3 P: X/ L7 o' O SetJobLevel( nLevel, nJob );5 p9 L, _. a- D- t
m_nDeathLevel = nLevel;6 W; G+ S* `5 w e
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans! N5 h9 M& B# _9 Y, ~
if(IsMaster())
* k' O' n7 L7 P& S5 R( ?- o {1 M# S- f% m" j* Z! ]
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
0 U% f( }' D3 O! ~& ^ if( nLevel > 59 && nLevel < 72 )
. s+ J% H6 t! [1 O0 z7 S( M( x dwTmpSkLevel = 1;) O3 H+ c9 B/ _; {( H2 O5 A% N
else if( nLevel > 71 && nLevel < 84 )3 C0 } E& z* U0 e& D( Y
dwTmpSkLevel = 2;) d$ Z- L) Z( ~9 j
else if( nLevel > 83 && nLevel < 96 )/ I% X3 b4 o; D/ L
dwTmpSkLevel = 3;
+ B, d5 G. M; |! u/ a% v* }3 B& F8 i1 m else if( nLevel > 95 && nLevel < 108 )+ Q; T' H& j& {& Z- P" `% M
dwTmpSkLevel = 4;
9 X3 n5 w. M: \( a, s5 n else if( nLevel > 107 && nLevel < 120 )1 n* x3 n9 d9 G8 y9 R
dwTmpSkLevel = 5;
; o( ?/ o! P+ @: h for( int i = 0; i < MAX_SKILL_JOB; i++ ) # q* l$ F( o4 I; w, f7 y
{ - h _3 q5 \" S8 p
LPSKILL lpSkill = &(m_aJobSkill);
K' B; W+ `5 l% N- A7 t3 t if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ G! W( O. X! T" m1 g8 U) s {
! L$ A, o/ f, @1 f ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); , k5 i/ W T) m5 _8 H: Z9 Y5 S$ C
if( pSkillProp == NULL )
# _ Y$ I7 S9 |8 f& I continue;5 V. R# x' F# l7 L, [- d; ?
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
9 v$ p2 W3 T4 e1 b( j continue;
1 w5 @* C9 T4 N" n9 G# F6 H$ r lpSkill->dwLevel = dwTmpSkLevel;# M r3 [3 L# b6 q6 U% l4 o: x
}
/ P8 i9 Q7 A5 t8 y4 k I) P }
5 V4 p1 _5 N0 P* y }6 D( X( I( ^) \/ m% s( {
else if(IsHero())
k. M2 k# Z' D {
1 u. l9 j5 O) M+ H1 [, \/ P3 p% Y for( int i = 0; i < MAX_SKILL_JOB; i++ ) Y- s) J5 Q( l; z' E( ]
{ $ y7 F6 l% v. g! x
LPSKILL lpSkill = &(m_aJobSkill);2 |1 W4 S: z, i: B0 e
if( lpSkill && lpSkill->dwSkill != NULL_ID )
S5 p( w8 }1 O0 E' \ {
9 h) o3 S0 A1 h, e ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
& M! h* Y6 P$ K1 |4 k4 J( ?0 U( d if( pSkillProp == NULL )- J- w8 S) G3 F
continue;
0 p; r5 V; K" S/ Z if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
" I" G7 }* y. ?* G continue;2 T% v+ C; r7 J! |8 u# `
lpSkill->dwLevel = 5;9 G* R! Q% ? S5 A# L
}5 s6 N! T) I) q8 e6 g
}& Y) l' N/ Q, I0 M$ h) Z
}3 h9 c( T7 X# }6 }; ^
else if(IsLegendHero())
4 T; O% r" e$ a' F! h {
T! o% I% t! u a for( int i = 0; i < MAX_SKILL_JOB; i++ ) & s% l- @. S" D8 o/ _$ o3 m
{ - m7 |# y- q, \. ?' b0 v' \
LPSKILL lpSkill = &(m_aJobSkill);- @( |, Q E I' z
if( lpSkill && lpSkill->dwSkill != NULL_ID )
6 q0 }! j. o- W* h* T {% v3 O9 z* L6 d1 Q7 c
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 2 {$ e# i8 r5 b# Y
if( pSkillProp == NULL )) Q) |7 s( W0 \- |5 c
continue;! m/ R( V' _ i1 ^ h2 i' `2 Q. |
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)9 }( [+ L; L& s6 m( @
continue;
8 Y+ H. l) _+ f3 l7 U& T% n lpSkill->dwLevel = 5;
: L1 E- I- A# u0 U; J }, @0 k8 D, X: w
}( L" N9 p5 {2 P& x
}
; U H) Q" j# ]/ R A! s#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
/ _& E; L: w. Q; Y2 u8 {) O; A9 ? if( bGamma )
" r; q0 s* q+ r$ \3 I6 ?# m {
: x# M) K( ?5 M k; d# V" h m_nExp1 = 0;! h3 m2 \. @ F
}$ z0 T4 M- v4 ]
' m9 T) d3 y% l$ U, s. o8 { ( (CUser*)this )->AddSetChangeJob( nJob );
! W/ w- S; Q- Z* F g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );; q; J7 T" f- O+ t2 T
( v3 G# j) r$ s( |
4 ` F$ i4 ]' ^0 Y# F#if __VER >= 11 // __SYS_PLAYER_DATA& O0 f9 q# [/ ^. W/ M
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );7 c1 G7 g6 S$ x0 D% w/ u2 l- c# y
#else // __SYS_PLAYER_DATA
# `0 V6 M5 a# c( d B g_DPCoreClient.SendPartyMemberJob( (CUser*)this );1 R. ]1 H/ b s6 m! x
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
& W9 u( V, l; \" I M b; n' h. S if( m_idGuild != 0 )
# I' d: B: [0 V g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );$ X/ x$ a; L7 A0 t% R
#endif // __SYS_PLAYER_DATA
: C$ |0 b* a1 N3 @' ~ SetHitPoint( GetMaxHitPoint() );' l2 Q2 X7 l" |2 N8 ?- g& D
SetManaPoint( GetMaxManaPoint() );) D& U" ]* L: P9 L5 E
SetFatiguePoint( GetMaxFatiguePoint() );6 }5 p+ @8 m$ T5 B6 a1 v' A+ I
if( nJob >= 1 && nJob <= 4 ), Q7 Y$ w+ K! a6 g$ N( I: Q0 O- S! w
{9 [7 R: R* z6 R6 \4 S9 Q% d
m_nStr = m_nSta = m_nDex = m_nInt = 15;
% Q' u. b* W3 _! j: c6 W( u4 n m_nRemainGP = 28;
* T7 {" z9 y1 \2 O }, X% r, K. T6 e) G( ]
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )7 y: w& [) A% F8 M
{) e4 [6 I9 k! o6 z8 Q5 c
m_nRemainGP = 118;8 h3 f* u; p: |7 h+ K# R# F
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;& n% M. {2 @, L8 R( k+ t8 X9 l
m_nStr = m_nSta = m_nDex = m_nInt = 15;
% |7 W- A" b3 f- s5 |7 L$ w% m }
) S0 y* |; U* e" w if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )# C7 ^* l) n$ {# l
{3 q# E/ b. x6 g, \5 j+ ]
CItemElem itemelem;% R8 o9 r- }+ B$ {6 ?: F
itemelem.m_nItemNum = 1;
2 q2 u9 L ?# V0 r1 i6 T itemelem.m_bCharged = TRUE;
. \' `: Q* {8 c# \) O- n1 s* o BYTE nID;
$ Y) ~) r4 ?8 Z+ N, A, ]6 G( N; e
if( nJob == JOB_MENTALIST_HERO )
* M% t2 a% x, C4 V4 a itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
r4 z( o' |" z7 d if( nJob == JOB_FORCEMASTER_HERO )
5 u5 O; v7 N$ r( [" |5 G# ]1 }; j: I itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;) U, u3 X8 ~6 p. `1 L
, q! S7 N/ c1 p h' Y% p6 q ( ( CUser*)this)->CreateItem( &itemelem, &nID );7 q( P1 z3 }& v( w
}$ e6 }" B+ c- x B. h9 q* e [
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
# m) |' {; S t w+ v- I9 a: i ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
* |: a! i$ \' o; b0 ]; n ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
4 H& B2 Q: m, _, G. C /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
8 O6 U6 x2 {: h+ J8 q* | ( (CUser*)this )->AddTaskBar();*/
; {8 w1 e5 n. r) ^' i0 z; ^8 k3 J. | ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
" T/ {( Z9 g8 B) k#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
" f L% d) v* U b+ I' B ((CUser*)this)->CheckHonorStat();2 S* T6 q" H, M( J: }. o( X: g! Z9 a
((CUser*)this)->AddHonorListAck();8 p3 x, c ^2 z" [/ @
g_UserMng.AddHonorTitleChange( this, m_nHonor);* N5 G% k5 t2 l+ J! |, K& Z
#endif // __HONORABLE_TITLE // ′Tà?$ U9 e# b" t" f' _6 Q D
}
' X: ]5 C( i! `#endif // __WORLDSERVER
' @+ R; t' y4 G9 \% k4 D3 t} 9 K1 U I e5 y2 |
C3 Y+ e! a! A5 n然后你进入functextcmd.cpp并添加以下
3 S2 J) e8 h9 N5 E
! G8 ]# n( _$ a# s代码:
) o9 x' i! }1 Z3 e8 U6 |ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )) h) X% c P. b# G! b
下面插入( m/ d; A: p4 h% e6 \
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
9 b; k3 D# B4 `" b# _& f i8 d8 @7 |
. v! f, L- m7 b' ~# R# d) R8 w7 U然后你去
' L- r2 H0 s' ^/ `1 p
8 C7 q2 N6 {2 R: q代码:
R" N8 T$ S$ {$ P( }$ k8 v/ L代码
/ M* c) K) ?3 r7 p% Z* bBOOL TextCmd_ClearPropose( CScanner & s )
, y3 p Q2 c& j; @% R' w{
; _/ z# O# x2 f$ K#ifdef __WORLDSERVER% c/ I, U! ?+ P \( G) r
CUser* pUser = (CUser*)s.dwValue;
/ g" }4 j" v1 D$ s g_dpDBClient.SendClearPropose();
; |& e+ e) M {( y" Z8 D: I#endif // __WORLDSERVER9 D- P; A/ X& l
return TRUE;* B2 L! B! n. p- I9 r
}
6 g( V/ o) a7 n下面插入! r# ?! N2 V) P7 p5 r
BOOL TextCmd_rebirth( CScanner& scanner )
4 S T3 r9 H% x) A7 z{# z. I' v% w3 H
#ifdef __WORLDSERVER9 m5 ^ d% ]0 I$ ^ W$ m
CUser *pUser;$ N3 L6 `& n4 X, L2 U
pUser = (CUser*)scanner.dwValue;
p8 p- H: w8 G5 Cif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())/ x5 j% X0 V( C
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);7 Y* ^+ @& q& W; G
else5 E& U7 c$ i `; u7 O
pUser->AddText("你还未达到重生条件!");
. W/ Y* Y) J2 Q; I9 ~8 G1 Z#endif
- }8 t3 T. a5 U3 y* e2 a! u% hreturn TRUE;
/ }# @$ s" i8 G/ u} : M! u, L; I' X {$ E4 _) w6 h
- M8 y7 j, f% I: v
# ~7 S2 m8 `" A
( O( E( \: D/ O6 `4 \9 F
\+ ~( o* R4 D# v9 Y1 h& ~ |
|