|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
; v5 x: q8 \( j8 G4 } `- _; ~/ O$ S
Mover.h3 [; G5 |' H( B# u j3 v- A: P7 o1 S2 [
代码:. t! e" E$ L2 g s- b0 }
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
. `( v9 l( i8 g: _, d
! P: `8 u7 W: N8 z下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
8 U. i- V4 x- A1 Q& o: I/ W( ]
( T8 Q9 B) e3 G% f然后你去mover.cpp添加' h0 @, }! U' M/ Q0 {) _
) c+ J \ ]' O代码:
/ y; t# D) y% t8 C# c5 {0 Qvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
- I4 s( a0 g% @; D9 ~! z, V: {{
4 o$ c) z- s' X% s' C1 K4 H0 A! x#ifdef __WORLDSERVER3 S( \% K8 [' ]0 N, k/ v
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
( X% [7 G& p* e( m MoverProp* pProp = GetProp();& n2 n" y0 b* V" r! {5 R
if( pProp )
: ]6 |' a' d' u* z7 q0 Z {9 \1 r0 c4 H9 C3 ~0 d# i/ n0 Z g9 K2 S
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
9 o# [4 [- m$ r: F) h {0 Q4 y! [2 a4 o& @! d4 `0 Q
AddChangeJob( nJob );
7 w: L! a; l' V' c2 l' N: K }else{
7 L& Y3 g/ |- O$ r8 N, } return;
% O; h) \* f7 Z8 r0 _6 P2 ]% d }: t& Q# _) d5 l) ]! _
int nPoint = 0;( U& s% q8 u9 N1 c* a! F0 b
if( m_nJob == JOB_MERCENARY )
9 C1 h% r2 c# \% ]9 T nPoint += 40;5 s- \ _0 _* Q8 G
else if( m_nJob == JOB_ACROBAT )3 y$ f7 i, E# t: m! k3 Y
nPoint += 50;( h2 s5 @0 B# N) V w0 o/ x H+ ]* D
else if( m_nJob == JOB_ASSIST )
$ P* b3 r3 l, T: p v) o nPoint += 60;
/ o( e4 D- n" V" ]7 x1 K8 y1 y else if( m_nJob == JOB_MAGICIAN )& _/ g% x1 c! l5 C* F3 I* j
nPoint += 90;9 V& x! V% [( r p0 G, S3 x
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
' X, ]" |( k. u! y; q9 V% T' T1 R* V# L nPoint += 120;+ P2 }* k1 r5 G) B* ]9 _
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )+ a* M0 S% k# [, `% j& J
nPoint += 150;$ z: ]# X/ q' d; o" V2 i
else if( m_nJob == JOB_RINGMASTER )) V5 o$ T6 p2 k2 R9 a. B- o& {
nPoint += 160;
( }- O5 r5 ~" }6 }: A. w# |9 ? else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
2 O0 S5 F) C* L1 H0 d" j) Q! E9 G4 @ nPoint += 180;# K: [: j, t7 a0 Y. |
else if( m_nJob == JOB_ELEMENTOR )3 K1 [' [- Y- g7 J8 v, p; X
nPoint += 390;3 F) U: g# k) G. _
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )6 b, N6 S0 x1 K7 J t1 ]! I- W
nPoint += 120;
i; V+ g0 c. i5 {2 L else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )! Q& b1 i" W) p/ l
nPoint += 150;
6 D+ f' Q6 f* o; C d, j else if( nJob == JOB_FLORIST_HERO )
* P# X# M* m; B; ]5 ^( J nPoint += 160;8 p3 l- u/ o( p6 X# k* E+ a
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )" F1 n- y% f: q% F( \
nPoint += 180;! m/ c9 w3 }. d$ D) q0 o# A5 Q! ^
else if( nJob == JOB_ELEMENTORLORD_HERO )
, [& H7 |- w/ v nPoint += 390;. D: A2 D& A3 ? L8 U0 x
8 E7 P0 U, m5 g+ }; v) s/ I7 w
AddSkillPoint( nPoint );
* j4 n: R& A. I$ x+ F' d) w m_nLevel = nLevel;9 ^6 ]% m8 g& n
( C& q( d, k/ Y8 i SetJobLevel( nLevel, nJob );
; b& A+ i. j' S0 A2 Z; P$ \5 v9 K m_nDeathLevel = nLevel;4 R8 [3 V1 [# H( Z1 E) {
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
; ~; K. @# l B9 J. |. g- z if(IsMaster())- D5 p" X2 t: W, P0 w5 r$ ~
{
( F: C6 E% F" ]8 S int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
+ C1 m% z1 z) ~' h# Q/ n if( nLevel > 59 && nLevel < 72 )
3 i% o Y5 ^/ m dwTmpSkLevel = 1;) |( ~6 X$ j8 A6 I! f
else if( nLevel > 71 && nLevel < 84 )! X6 N) P n# N9 N# i, d- e
dwTmpSkLevel = 2;0 f1 p+ |7 U* X( \" f
else if( nLevel > 83 && nLevel < 96 )# j9 K0 z. \: }( M# c- k
dwTmpSkLevel = 3;
5 ?" W) A3 n- | else if( nLevel > 95 && nLevel < 108 )" U, J8 |5 T# C7 D+ Y/ E2 i5 o
dwTmpSkLevel = 4;/ h4 k. x* d. b6 c& `; v' ^1 e* R
else if( nLevel > 107 && nLevel < 120 )
# W' u+ z* `& ]8 x6 }7 } dwTmpSkLevel = 5;9 I+ W2 G5 o; m- {6 m/ N) `5 n
for( int i = 0; i < MAX_SKILL_JOB; i++ )
. d; n% q8 s7 V6 P( H {
1 y( l$ A8 [" }% r7 s# ]# V LPSKILL lpSkill = &(m_aJobSkill);1 M+ ^# @- n% k; |+ u0 |5 M* O
if( lpSkill && lpSkill->dwSkill != NULL_ID )9 D: y* |8 E1 V5 F2 g, I
{
( O/ |8 w: z& d( N ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); + w5 S' U) W. `
if( pSkillProp == NULL ). s! B: b# @5 {' V- g6 U2 F9 h
continue;
- i+ ~8 b8 t/ T! n/ \3 V if( pSkillProp->dwItemKind1 != JTYPE_MASTER)3 ^% v6 k2 l8 L3 \6 i2 n& ]/ ~; Y
continue;! q9 ]8 j: n# c8 V' H& x
lpSkill->dwLevel = dwTmpSkLevel;
/ l4 l! ?5 s3 B4 W0 p: A }! u( w5 r; F; O- P4 z& m1 f
}! [ F- J9 A! W& i, X
}
6 `+ j# A/ z# p& s8 w else if(IsHero())2 r/ u# W: _& N5 p2 f& F
{
) i; z, Z- H! H: F2 d$ J7 d* h for( int i = 0; i < MAX_SKILL_JOB; i++ )
4 ` g. H7 L9 V- a! y% n { : L8 v- c- z. u- j
LPSKILL lpSkill = &(m_aJobSkill);
, L9 W4 D0 [5 x1 } if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ ]+ y4 j+ b/ A. f {
6 U1 F% L& }4 M& |+ a- G ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 5 v3 y# b! `: n2 s5 D- z
if( pSkillProp == NULL )
' E8 b$ p- }/ a2 b/ k% g0 ` continue;8 Q" [9 K& Q# f3 E5 K/ q: L# X
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)3 R0 b+ q" U: _ s$ l& h
continue;6 ?* C7 g. B* B& G" j) r
lpSkill->dwLevel = 5;
8 _ P0 o& s6 ~* S4 R }8 f- e7 M2 ~5 @, X
}1 z6 g8 L0 W) {7 r0 _4 e. u% i
}
6 w- }/ c" J8 e% x, w8 [" A else if(IsLegendHero())
0 d, u- o7 I' u {
0 I* i: J$ l4 R4 N9 S for( int i = 0; i < MAX_SKILL_JOB; i++ )
0 u" P+ A) K0 @" @, q {
6 T# \$ Q [5 u. A) _ LPSKILL lpSkill = &(m_aJobSkill);
/ N) a5 x$ n- o8 n# B; n9 t& l if( lpSkill && lpSkill->dwSkill != NULL_ID )
6 X) Y, u8 D1 X# L, Q5 ^ y7 s0 q {
5 G# f( W8 Z7 f ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
# a1 B3 B4 N- A- ~/ Q# Q" p% ` if( pSkillProp == NULL )1 B+ e0 H! Z. \# W
continue;2 l$ C0 A t m9 t% j
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
6 Z4 C! I3 h* c/ t; J' U continue;9 ?! r& j6 `' n
lpSkill->dwLevel = 5;
5 W: W, ~7 |6 j- v! Z. _# j% } }( j3 B1 l% n& U! z& b# _0 t% b
}
1 R+ u8 I# ?, {( d$ n }
, k) O) ]# G5 p ?# r- K& F$ d, }! ~#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
: C9 H# T" ]2 J0 v& M: ?- S if( bGamma )
. @: r9 V8 [/ ~' w* Z1 n7 P( A {- f/ g* G9 n. E( g2 H( {$ J) o
m_nExp1 = 0;
0 e# V& t: J2 C }& ~& H5 `$ D3 Z# G; `1 l- X
: F9 P1 Z/ H; e+ O
( (CUser*)this )->AddSetChangeJob( nJob );
6 c( r/ [3 R$ G: Z# B g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
9 C1 D# i; Z E' E4 N
" f0 Z4 N+ `( D: m" N: h- @; |" X8 s
#if __VER >= 11 // __SYS_PLAYER_DATA
Q) x, d# I& q X& X C7 z g_dpDBClient.SendUpdatePlayerData( (CUser*)this );- b) R7 L; P0 B9 P0 z; r
#else // __SYS_PLAYER_DATA& j+ l. F7 E7 V& c! W( ~" z6 c+ W
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );2 y& F* ?; f* p+ U2 k
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
6 B" N% N3 \5 h5 e3 w4 m if( m_idGuild != 0 )' p: O. t3 f0 P' X! K4 f* K
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );% `- U$ k- J$ k" h
#endif // __SYS_PLAYER_DATA
* O& x; l! i. T* Y% O! p SetHitPoint( GetMaxHitPoint() );7 q1 ~$ j, X% G9 j
SetManaPoint( GetMaxManaPoint() );
4 [7 N2 }( X d6 y SetFatiguePoint( GetMaxFatiguePoint() );! v# l, p: n" k" k2 z, I
if( nJob >= 1 && nJob <= 4 )& P( s0 s4 x' K
{9 _4 b; }4 ]6 l+ P0 W- |) x3 Z0 k Q
m_nStr = m_nSta = m_nDex = m_nInt = 15;2 p. Z2 ]' p1 Z" X
m_nRemainGP = 28;
* P4 X1 T0 x9 ] }
+ ^! ^) q( c/ | n if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )8 U* W2 k5 N6 t( E
{: |$ L6 T6 `! J6 p: ?* q0 \
m_nRemainGP = 118;
/ ]5 }9 R% `" p7 ?; ~ //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
6 B% [. b7 R8 u8 F m_nStr = m_nSta = m_nDex = m_nInt = 15;. n3 E9 g7 i8 _/ O
}% F# S/ a4 @ W9 F) z% ]
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
! y O& s1 z* y+ M {
. {6 i) z6 r2 [8 [! r% r) N CItemElem itemelem;4 f) {) N% G2 O4 v6 ~% O
itemelem.m_nItemNum = 1;
/ K7 |9 c* {- B% h% r5 k itemelem.m_bCharged = TRUE;% g4 x# ~: P6 Y! S$ \" l# B4 Q
BYTE nID;
) w, \, T( W% f" O; L, A- K3 t
" }6 D7 T7 z& P9 E- [+ e if( nJob == JOB_MENTALIST_HERO )
: K Z: \% z: h7 t- b4 Z' \% H7 m& g9 b itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;. M' |! ?1 z3 B, y: c# h
if( nJob == JOB_FORCEMASTER_HERO )
4 ~- |8 p3 S( y. k3 e2 j) J) ^ itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;2 u" c" X! u9 h- B. s
* A. ?+ n$ [& \) K. E ( ( CUser*)this)->CreateItem( &itemelem, &nID );
B! l- b& M" p5 e- x6 t, r }
* j! C6 o/ p1 ~& M) e g_UserMng.AddSetLevel( this, (WORD)m_nLevel );9 V7 N c% t4 f4 s+ ]
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
/ Q- U* E; i; }* Q* h: T/ q ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );4 r ]; | }$ W8 T' w" y2 \/ i) v
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
8 F1 \" W9 Z9 o! G ( (CUser*)this )->AddTaskBar();*/, w: a2 z" t- t4 j) {2 Q7 p$ y
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );6 r2 |3 }' U9 f8 C: r
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
" G; _( _# a/ u, i: x7 l% l ((CUser*)this)->CheckHonorStat();7 e6 m5 y, u7 V% @* @0 f4 s# I4 C
((CUser*)this)->AddHonorListAck();6 q# |$ Z/ I2 l* k7 h1 \: i
g_UserMng.AddHonorTitleChange( this, m_nHonor);, g& b! @/ l7 o4 f
#endif // __HONORABLE_TITLE // ′Tà?0 g) l* l6 k; K" }
}
9 R% p, y) l [#endif // __WORLDSERVER4 O0 K# E1 ~' {) | A3 T8 W
}
- |) ?! |1 r& `9 a4 V/ J* Q
, z6 f5 T. O+ h/ p然后你进入functextcmd.cpp并添加以下
# R" I9 r7 ?2 J! ?" M& z* j) q9 I7 p7 @. c! t9 O5 i4 K7 c
代码:/ H7 X. C: Q Z
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ), B2 s k! }* q
下面插入8 p' u; s# S9 w) w
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
! p" R* X5 O0 E( x4 b/ V0 {% y' w8 l5 N+ Q! M/ c
然后你去( O* s8 K9 ^6 W# }% \
+ U6 ]) D3 g' D代码:
1 t8 a+ S3 p0 d$ [7 c代码
' L w- {1 {9 k" a% }# R/ k% M* s) hBOOL TextCmd_ClearPropose( CScanner & s )1 A8 H6 L- R: C5 }. n# h
{
6 q; ?: |6 H8 p- a: l3 _#ifdef __WORLDSERVER$ g4 ?- i$ w0 g: o8 R( l2 K
CUser* pUser = (CUser*)s.dwValue;
' v0 x; c. e' D& C% S$ } g_dpDBClient.SendClearPropose();8 Z6 {# U: A1 ?" d
#endif // __WORLDSERVER6 _' G3 T, _$ V! \/ V5 g, @
return TRUE;1 `: q8 K0 z! L- e, R* h
} C) }7 n! T9 e7 [6 n: Y5 x( e4 d' s
下面插入
; s/ Y; [6 @) `) k! Y$ ZBOOL TextCmd_rebirth( CScanner& scanner )' f3 q2 B1 m/ d# n1 r
{# r' a1 E; M) M' p) d8 l
#ifdef __WORLDSERVER, P( D0 j* I/ _8 h7 u4 A! V. M
CUser *pUser;; e" l- Q6 ~# ?& H: A% ]$ {
pUser = (CUser*)scanner.dwValue;" U4 D9 v' a f) Y- l; A! k* V s
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())8 Q" b$ A' V' h! e; A! Z" U
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
" Z9 k+ ^( ?) O* b d" G% I. |else/ W* s3 m; I' ?3 `. b( |( M0 f3 q
pUser->AddText("你还未达到重生条件!");
. N0 q/ p4 N: s# J#endif
& ^0 o. ^+ O0 `8 h* g7 ^return TRUE;
, R8 y8 F; M3 ~. j7 ]3 S" T}
, R' ^- r: ?$ l( s: [
: C( k& m+ y6 r: T) M$ u7 k. \8 x- p0 W
" _) z2 F" x6 |0 A8 L9 K
( P$ h' ]+ h- W& h# a |
|