|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
6 ?6 h' g0 P6 m$ u# y
N* e1 y+ @' }9 q2 N3 _& r0 GMover.h9 h3 z5 `( P/ ^/ z0 O' X
代码:
" h! Y# V9 y. B! k找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü! S& a/ H, \8 A E" k7 J" Y I4 i
& F3 z$ w I( r! a' _% V+ _下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 6 d) G5 W; n+ e, c6 x' K
) a9 l0 {( [" M# W6 p3 S7 X U
然后你去mover.cpp添加
% ^6 i. Z9 G/ q) c3 O7 W' f8 \, v. b6 H' J
代码:
! @, N% u1 ?0 m$ R$ R8 pvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )$ K" x5 q: E9 G0 a9 X
{3 @0 \/ k9 z. z w |# N5 S
#ifdef __WORLDSERVER
6 @/ ~5 V" n! j' o' ^$ F: ? // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó; }/ Z# P0 Z- R2 H- Y, k
MoverProp* pProp = GetProp();" A: h: U3 c. N' {1 I0 Y3 m
if( pProp ), ~; C R/ ^+ X4 _, |/ c, M
{' G: D3 q! w8 I% U/ {2 @9 t
if( nJob > 0 && nJob < MAX_LEGEND_HERO )% Q. a: E8 h4 ?3 F
{& t" [( v, U0 I
AddChangeJob( nJob );
3 M9 e. J; ~% V+ V! g; C2 b8 E2 d( s# g# [ }else{
" m& V4 }! d- p return;! X2 U, T8 B- S4 G6 m- V7 h
}
4 ?2 S1 X2 H0 ]: E- Z int nPoint = 0;0 M9 p6 H" I3 |+ y0 V) \. A
if( m_nJob == JOB_MERCENARY )+ I! r' G$ o( w" \
nPoint += 40;, J! {, R: W. g
else if( m_nJob == JOB_ACROBAT )7 S& X# r; H, f9 G1 g! t
nPoint += 50;
n+ W) M( G e' q G4 V4 B' C else if( m_nJob == JOB_ASSIST )% E5 I0 }2 H+ b a
nPoint += 60;
9 q7 T* B8 U2 P, o$ _ else if( m_nJob == JOB_MAGICIAN ): m! k( X$ u4 O8 f9 {
nPoint += 90;9 v/ I1 u1 h V7 n9 I ~
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )) s. r0 L; N. b5 b$ k! {3 n
nPoint += 120;
; _' z# p/ z* v else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )/ a [1 X" N/ E2 @
nPoint += 150;
* z4 H% [* L' P6 Z* `1 L else if( m_nJob == JOB_RINGMASTER )& z4 F; o# p) f2 p1 V4 Y
nPoint += 160;8 e1 n3 A7 e2 M
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )8 P4 ^% ?* Q% y' m D* [
nPoint += 180;
6 [6 }' E5 D! M& K8 }5 G else if( m_nJob == JOB_ELEMENTOR )8 U) }7 O# y% e, v" q& l8 d
nPoint += 390;
* u9 b; F3 a, T G1 g' N9 p else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
% Y$ L0 h+ C" p0 v9 m8 T nPoint += 120;: X6 W0 U" ]8 X: Z$ z% T
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
& v& |! w$ t6 I* K' g9 \) R6 V nPoint += 150;% j' [; ?, p$ X! \4 g. n1 d1 X
else if( nJob == JOB_FLORIST_HERO )
* ], i% z6 ]! y9 k nPoint += 160;# b7 H4 z' V9 k7 @
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
5 n/ [( P% E3 k nPoint += 180;3 |) L2 b% e( R4 y3 V3 |+ j; t4 ^ x
else if( nJob == JOB_ELEMENTORLORD_HERO ) J6 }5 M+ C% {& c9 Q& B0 l
nPoint += 390;
+ e) F8 a# Y' f! H7 y0 h F) v0 j/ _) `
AddSkillPoint( nPoint ); f# j( C/ O! u5 F; K
m_nLevel = nLevel;
9 ~' @5 c+ Z1 _" d
" T5 |3 H- C0 O5 q SetJobLevel( nLevel, nJob );
- r. {% l, ~; ^, \* s1 }8 C m_nDeathLevel = nLevel;4 x7 K( u, I5 `& {2 x4 @
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
. |& X! b3 z, Y6 D f if(IsMaster())
a2 f7 }3 c; h- l/ S6 w8 i {
6 }2 c( J7 N4 z1 |1 d9 c& h, S int dwTmpSkLevel = 1;//60, 72, 84, 96, 108; l7 r! h* b: z6 a
if( nLevel > 59 && nLevel < 72 )' n) y/ s7 h; ]" j) p
dwTmpSkLevel = 1;0 r( @5 |. Z+ x
else if( nLevel > 71 && nLevel < 84 )
7 \/ Q. O, W P7 A+ H dwTmpSkLevel = 2;
8 ?' }/ U: V; v7 ]" W% ?( K Z else if( nLevel > 83 && nLevel < 96 ), l6 K0 x' E0 ~0 t; a5 ^, t% m
dwTmpSkLevel = 3;8 u0 ^, z9 k" N4 D N' h% o
else if( nLevel > 95 && nLevel < 108 )1 Q3 Q- \( Z2 s3 F
dwTmpSkLevel = 4;
* u& \# s0 a# Q+ Q( d else if( nLevel > 107 && nLevel < 120 )/ g1 b, Y' \2 Z( C9 \# j, f
dwTmpSkLevel = 5;
9 B0 L8 { v" L2 H+ s- \ for( int i = 0; i < MAX_SKILL_JOB; i++ )
# ` p, m/ Z2 ^% w' ~3 q/ l% J' ? { # h+ s j6 ?, F
LPSKILL lpSkill = &(m_aJobSkill);* Q9 N% C8 M6 ~! D, F* s
if( lpSkill && lpSkill->dwSkill != NULL_ID )2 B/ d0 N6 P# y0 e. T
{
4 H- @1 e0 B. S7 j* `3 A a4 _ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
" g0 J1 Z' m1 o7 p( X8 O if( pSkillProp == NULL )
& ]6 T; c- C. w$ y+ i6 a continue;6 I9 u- k5 | E
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
6 ^7 D8 `1 g) q3 i continue;( o& @+ x2 M8 t0 w' b% f, x
lpSkill->dwLevel = dwTmpSkLevel;, N; i# \' P; q, V: O8 `2 X0 N- P
} \! U4 f0 O8 H0 `! V
}( k& G0 G: s0 f3 R8 a
}
4 ], E' K8 i9 W$ d) Q else if(IsHero())" f y1 ~# Z7 S
{
& U) W1 I, z) h# Q8 {% L for( int i = 0; i < MAX_SKILL_JOB; i++ ) ; V/ Y; V) R3 b: B5 u% ~
{
$ g( o) n6 X5 G4 j: k3 u. p- A LPSKILL lpSkill = &(m_aJobSkill);
. W6 ?3 j! o; S2 Q if( lpSkill && lpSkill->dwSkill != NULL_ID )& B9 B/ t2 q" L' m7 X8 ~: Z* d
{
" g) O$ x8 I. o5 x/ J ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); * I( D, t! G' G2 @( _
if( pSkillProp == NULL )$ v2 a+ U- K N7 @* U2 R2 \
continue;& _; R5 F, c! y, u3 A, E1 m
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
$ Z4 r0 K, D# i, [7 U# H+ \) i continue;6 {. D4 ~" m# N9 }
lpSkill->dwLevel = 5;) B3 h: E- P0 O$ c; W8 W# z
}, T6 s# I, n" N! R3 N
}
/ V* _* K6 P k) c6 [ }
E' r: Q, Q3 n else if(IsLegendHero())
5 g- X( E! H A" }$ y' I {
& c% ]8 p: i" D$ D( ^. J4 } for( int i = 0; i < MAX_SKILL_JOB; i++ )
3 w$ N" M9 F a+ h7 M. J. e { 5 E) `4 @* e1 g) w/ x0 s
LPSKILL lpSkill = &(m_aJobSkill);+ R( L' M! B } D7 Y0 j( s
if( lpSkill && lpSkill->dwSkill != NULL_ID )
9 e$ Y8 f9 W- {% p/ j {
" i7 X1 P0 Y7 S6 @. I ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
' t: d4 f& a! S/ l if( pSkillProp == NULL ), n; [8 z2 _- P y1 G- [+ ]
continue;' V% v( r p8 P' d' z/ e
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)$ O6 q$ K3 S3 h& m; B* N+ Y7 Q9 e
continue;
7 Q5 i; I( P3 n# K( h4 X9 g lpSkill->dwLevel = 5;5 }9 S* e' N3 K. {; s
}
; j8 p: L! m$ d! a }
$ G9 T2 L, `" C8 C } m3 q' T- [, Z; b1 f4 r2 g
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
3 m( w! {+ ]" V2 n if( bGamma )
1 `7 s+ o2 m; [" c {5 G7 d7 {/ M1 R. g# ^1 V& |
m_nExp1 = 0;- J4 B( t- D: l R5 u& ?' h
}
8 O% ~3 N6 _: a Y% K" R; ~: [/ k) F) T
( (CUser*)this )->AddSetChangeJob( nJob );; d. F. m% @# j' h, \. o
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );8 ]0 k B; @0 f, a1 J
5 A! H6 Q4 A0 N4 b: E+ A
9 Z8 i1 u9 F/ Z7 ?; f7 g; V
#if __VER >= 11 // __SYS_PLAYER_DATA
, \2 X$ t0 @2 b g_dpDBClient.SendUpdatePlayerData( (CUser*)this );( S- e0 M, m& f- |' v& W( }
#else // __SYS_PLAYER_DATA* l# o# ^; u; ^: m( ]
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
) u0 r) `) k g; e" C g_DPCoreClient.SendFriendChangeJob( (CUser*)this );+ n0 R6 K/ A& X3 ~! g
if( m_idGuild != 0 )
# |/ |/ X* ]3 y) A6 R g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );* X0 {* T3 \# l
#endif // __SYS_PLAYER_DATA( u4 u5 d; y$ N0 J7 r8 w
SetHitPoint( GetMaxHitPoint() );
) [6 t J+ g& k- m$ V9 } SetManaPoint( GetMaxManaPoint() );
5 n! e$ _7 E# @( {# ~2 u. L4 Q0 [ SetFatiguePoint( GetMaxFatiguePoint() );* ^& E9 I! v* L% V
if( nJob >= 1 && nJob <= 4 )9 n' q6 O& [# w4 H3 V
{2 F4 y4 E" Y' T+ b) _# @" J9 Y
m_nStr = m_nSta = m_nDex = m_nInt = 15;- i3 D6 Q. m0 ~( V
m_nRemainGP = 28;
# v, @1 @9 C2 \4 _$ p: u5 J, C/ Q }
* C5 o$ K; M2 M if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
. P; f, l5 V; r% E {# t W; }% q7 o, \2 A/ U. R3 \
m_nRemainGP = 118;3 Z v/ t+ p4 u% g
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;* ~; `, [0 E ^" v; e% B, C: b
m_nStr = m_nSta = m_nDex = m_nInt = 15;
( P! B/ @7 s$ \" h8 y! L1 h P }8 W4 p) g* M8 f ?+ q. t6 {! d+ L
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
. j5 D7 d. |0 B7 R/ |* w b1 B {# ~: E- k8 D9 ^- V. L
CItemElem itemelem;' L/ a- W5 C1 ^) t3 c: L' N
itemelem.m_nItemNum = 1;6 Z0 i+ G" j# {6 j" w
itemelem.m_bCharged = TRUE;
6 z7 |4 X/ j* v y# c/ P& ? M) K$ y BYTE nID;
) C# S( x. ?1 v9 ]. m7 l/ A: T# F
% x& v4 @6 P* n# d+ o if( nJob == JOB_MENTALIST_HERO )
/ }% {# {' l0 \- ] itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
2 D8 F; r( R9 e: @, K if( nJob == JOB_FORCEMASTER_HERO ) h2 v" v2 v0 Z) }6 o5 e
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;. T# y. _2 y) }- e, L4 b2 h; y0 ^ {7 i
; P% R2 Q* [& u+ V+ x ( ( CUser*)this)->CreateItem( &itemelem, &nID );
) H2 t: L- ~1 f( g3 k }7 Y: f! {$ S$ P! o8 i
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
- Y# E5 ? d" Y$ r9 f! ]" [8 I2 a, \0 K ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );) Q! |0 w, g2 q
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
& b5 |% p( ?3 u' _* i! \3 Z /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
3 I/ @$ z5 m$ h7 N) J7 m1 g ( (CUser*)this )->AddTaskBar();*/! B( j% n9 \0 L( b
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );1 Q& C, S# c& n' s6 R3 p# X/ k
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
9 r* ~- v7 t* z0 K" @7 v ((CUser*)this)->CheckHonorStat();
0 P* X- G+ w, ^* \( Y( C/ m# x ((CUser*)this)->AddHonorListAck();
# m; h; m+ R6 B# [' q! n; t9 H g_UserMng.AddHonorTitleChange( this, m_nHonor);# H1 h$ K# g9 }, y4 f
#endif // __HONORABLE_TITLE // ′Tà?, V$ b5 ^7 e w% H x6 Q
}& C, z$ ?% r6 M) A4 n
#endif // __WORLDSERVER
5 ~) d# L7 Q9 ?5 j! F} ! R" c$ g. r3 j- m. S! P
+ V& ?7 W( }" }% \然后你进入functextcmd.cpp并添加以下
4 F" H4 {: }) U. n9 I
3 h z* ?8 ]3 N代码:
4 t4 U$ G6 Y1 W! t/ rON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )5 z8 I1 L2 n5 ^ P, ?; a: o
下面插入
6 w; o9 {7 g0 W; m$ m: ^$ `- |ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) * N' }; p, j1 y3 `- Q7 l
6 F$ ^' b \% A1 U! Y l然后你去9 g! @: c; }2 I
$ F* P9 ^, y) t% w
代码:
& Z/ R* T/ b/ k7 ?3 g) M# @代码
" ?9 M' K! f1 m$ F HBOOL TextCmd_ClearPropose( CScanner & s )
, |( ~# `- K5 W. X) O5 j; i9 ?* i/ D{
$ D. P, s7 p, z0 Q p8 K( b$ ~#ifdef __WORLDSERVER
' H. O# [5 t; T- m) Y, L7 A3 b CUser* pUser = (CUser*)s.dwValue;
, I5 n. E# O0 K- O- @0 d g_dpDBClient.SendClearPropose();
+ G- T. Z: M# F0 G#endif // __WORLDSERVER
' ?* L1 e5 O9 J* g, d& {" J return TRUE;
; v6 s( V4 [( Z4 L; J5 J. N}
% E0 s0 v# b% B' M下面插入, H% Z# E, a$ K4 H
BOOL TextCmd_rebirth( CScanner& scanner )4 }* k. k B' I( D" Q6 P. k
{
0 d$ J3 T8 H7 j. `3 {3 ^2 ~#ifdef __WORLDSERVER2 ]7 V" I6 M: u. \/ M
CUser *pUser;( V9 J2 ~( E3 G3 q! ]: |
pUser = (CUser*)scanner.dwValue;) |/ [7 J" o4 k
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
# B. n2 V" {9 |pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);: x& V6 F: v* j! ~. h% G
else
0 t" }# }" F0 e+ R4 [; G' \pUser->AddText("你还未达到重生条件!");
. q0 w* w' ?( n#endif! f/ k3 K. E! l4 M3 T& h% v9 \4 q
return TRUE;
2 G; P2 E3 x; o4 X4 {}
, K0 d( \: N! q8 O3 B3 r. f& W0 Z: d6 k! k, b0 X
) h5 g; F" h w7 [# O: Y1 e
8 V& J/ g, z+ t3 g% P
& r$ R8 L- Y- O# V/ L |
|