|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel) [: W4 H- q& ^; U [4 H
8 |" Q8 K8 E- f9 ]' J0 ~5 _: B
Mover.h. K0 f/ W* j" \
代码:
0 `* N1 K( P9 S, ^/ B! B找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü9 B. M* y+ k$ G
1 ~7 L$ s% X. Y; Y# M; a下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
& ^% E: i2 ~( P
) I4 K/ k% M7 ?. N: F% k: Z然后你去mover.cpp添加6 x2 t- r$ J, ]) `+ R3 s
( u; T: V2 D, y: Z
代码:
: ?2 u9 n2 ]" U% C( U9 Mvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
( ]0 z! b( }. O7 N{. D& C% D$ H) n1 B; a0 m
#ifdef __WORLDSERVER
' n% z" x* Q) ~' c+ ` // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
; s' Y, z; A& d4 ? MoverProp* pProp = GetProp();
( e6 q1 m' |+ | J; N! p if( pProp )
5 {2 j! R$ l9 \ s {
1 U1 O8 ^; H1 s if( nJob > 0 && nJob < MAX_LEGEND_HERO )
" z0 q# P$ k3 Z0 ~ {: N6 g( t) |+ R' C
AddChangeJob( nJob );
8 Q! g U( `. @: v3 k+ n' O }else{
9 G( s5 J0 h( |# d7 s! {1 d' S return;6 M; a; G5 a+ D1 ?9 Y
}
5 N; {, P8 i6 D( L( ?4 e; v int nPoint = 0;
( O+ _4 H5 l; R& A if( m_nJob == JOB_MERCENARY )1 Q% g& X R3 b R: V1 p$ }+ z) q
nPoint += 40;1 Y8 e* ?1 \( i0 ^ b
else if( m_nJob == JOB_ACROBAT )
1 H% V' u4 P4 `% o3 g nPoint += 50;
$ h% `3 v# e; j& h* t; t, t$ } else if( m_nJob == JOB_ASSIST )0 W& g% Y3 K w7 E* l$ p/ ^' w* L0 {
nPoint += 60;
- l: k4 B. P9 q8 [ else if( m_nJob == JOB_MAGICIAN )
3 W% H% v* z* z7 Y2 Q1 w4 b nPoint += 90;2 j; v; X! W. A3 l$ z1 D" |: s
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
% F. a# n/ ^. K nPoint += 120;
i# f, G$ b3 h* o else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )% l: T* `3 ~( U3 d% A1 Y
nPoint += 150;
, n) W7 b) l$ Y3 [# g9 x/ c! _ else if( m_nJob == JOB_RINGMASTER )
( M9 o% o a! Q0 m$ i# \ nPoint += 160;" Z5 j8 W/ } W7 q$ D8 S% T
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
2 y0 x3 k2 b6 x) W. G' d2 b nPoint += 180;
; C5 s! z0 }; l, E3 V# } else if( m_nJob == JOB_ELEMENTOR )
3 z5 I" _; R @' Q nPoint += 390;* Q" w& E+ X8 \, V7 |6 {
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
; i/ g$ G/ B0 c2 C& C5 | nPoint += 120;
f5 }% T* p' h% {" t else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )/ C0 |+ U/ Y2 b; v: @ H# m9 U, X
nPoint += 150;
, ]3 X' Y( o1 }& f else if( nJob == JOB_FLORIST_HERO )
3 v' y5 K$ O; m e nPoint += 160;4 _8 r: p% n: B# C% E
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )5 i1 c7 ^5 U8 z9 P
nPoint += 180;- f5 t# X1 b! I1 F3 t1 I+ u
else if( nJob == JOB_ELEMENTORLORD_HERO )0 J& R% n. l+ w8 b
nPoint += 390;7 v" F2 V% I/ H6 k- e7 I
# T: h+ c6 n" v$ N2 V/ e# ?% R
AddSkillPoint( nPoint );
6 `, ] V4 k* r m_nLevel = nLevel; D9 R3 x# n$ r% F
/ @+ K% r2 d5 E# ^& v! }: H0 t$ S# x SetJobLevel( nLevel, nJob );
) R# {, n% ] E m_nDeathLevel = nLevel;$ a3 u$ B. u; d0 J% o
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans; O% W9 E* p* ?- i3 ]
if(IsMaster())0 a# c$ v' G* z( `, ?( r1 I/ Y
{
! f+ {/ b$ S4 q! v9 f int dwTmpSkLevel = 1;//60, 72, 84, 96, 1083 D- S# M3 K" R/ D4 F$ b# s# A
if( nLevel > 59 && nLevel < 72 )& [" ^2 P) v i8 J+ V, @0 s
dwTmpSkLevel = 1;( w7 U- k. I Y& d+ s% T0 ?
else if( nLevel > 71 && nLevel < 84 )
$ A8 v; U: ?, y X, B dwTmpSkLevel = 2;
2 ?/ z/ h0 `5 y3 h! F else if( nLevel > 83 && nLevel < 96 )
+ g* x; U% L- j' z7 R2 O5 z/ y dwTmpSkLevel = 3;
; K. M& {% v3 J. L3 a else if( nLevel > 95 && nLevel < 108 )
# x, Y# m. V8 L dwTmpSkLevel = 4;
! A3 k( A" w$ a7 A else if( nLevel > 107 && nLevel < 120 ): I4 d# k0 x* C2 q: B+ p
dwTmpSkLevel = 5;
3 H; A" Z8 P) g for( int i = 0; i < MAX_SKILL_JOB; i++ ) : X p1 I2 o% w# y- \* i
{ : d' w: w& w8 I; G
LPSKILL lpSkill = &(m_aJobSkill);
+ M9 a0 g, G8 ]+ I4 C# }8 G8 P if( lpSkill && lpSkill->dwSkill != NULL_ID )2 w9 R* B+ @3 r+ m/ a! L' o
{6 ^2 B; f8 u7 J+ d0 [6 G1 G
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ( ]2 o2 q& E1 o5 T; W @1 y
if( pSkillProp == NULL )0 Q6 f* U5 H$ T3 z2 D- Z8 z. q
continue;2 s# T4 }3 H8 p/ H
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)$ F( b! {( f. s' x. H) v6 ~
continue;4 v3 q1 t- ~* `% S0 ~
lpSkill->dwLevel = dwTmpSkLevel;
( \1 ?6 j5 Z5 V& I3 q3 S$ Q }
, |0 q# {5 ^7 o1 s }
8 w8 j; X: V, x5 _ e }
$ b. h& C* A1 C else if(IsHero())% v9 N0 H1 a2 k; P5 U! r! k1 @
{( ^1 \8 H' Q1 c l4 v0 S
for( int i = 0; i < MAX_SKILL_JOB; i++ ) . u) Q- N w" G3 N) b
{ . T, E! e8 ]. R3 n+ o
LPSKILL lpSkill = &(m_aJobSkill);
. i; I: g* y+ r- H, z+ T. n if( lpSkill && lpSkill->dwSkill != NULL_ID ). u2 P1 T) r1 e* O7 P( N/ E5 y- ?
{
+ E% F- J4 y# {- S ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
$ A6 O7 l5 K6 g8 I3 H% R' ]6 `# M if( pSkillProp == NULL )* d7 a* w# N! u' z5 o0 s5 [
continue;: x/ N# ^- B, I$ ^5 N7 `& j6 W9 E
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
( Y2 V' B# y- [. ]% |( E" _8 Y continue;
' a3 H7 M8 P( e% v lpSkill->dwLevel = 5;; l7 j6 o# t; f- J9 z
}+ I! e b* F/ I- q7 {: h0 K" L
}- ?0 i2 F8 V: Y
}
% V0 H3 \: ^2 J6 S; o; [ else if(IsLegendHero()) F B* z$ h8 K0 B2 k; _9 C
{
3 |" B" L9 L8 I% N6 t- ] H( P7 f for( int i = 0; i < MAX_SKILL_JOB; i++ )
. a( y p* }8 T/ z# j2 M# J {
; n) `! f' ]: ?; X( O LPSKILL lpSkill = &(m_aJobSkill);
4 {% z0 _+ u, A if( lpSkill && lpSkill->dwSkill != NULL_ID )# a9 K2 \4 }$ _, Y" ]! W
{- v: H/ y$ l v* M: ^: i6 |9 {
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 1 l3 D8 E& t$ Z: D, {
if( pSkillProp == NULL )" y* j% W+ r/ O, W8 T" P
continue;
& P# s& \( S6 c' ?( e" G+ Q8 A* Z if( pSkillProp->dwItemKind1 != JTYPE_MASTER)3 ^: D7 q/ y9 n5 | s
continue;
; L3 \9 y6 v9 \% u, K lpSkill->dwLevel = 5;
, q6 d2 x3 z- C- r, m/ k }6 H/ t* Q( b$ l* I: v" E' v
}
F1 @2 V! O2 z [) z9 {, _. Z! I }
: p/ i J" u" a9 }! g3 j, `#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans& J; W, m$ @, ?5 @+ S& K
if( bGamma )
, r4 l6 a4 x' L$ F0 | H+ H D {2 y& A! q% w, M d( O) X# x
m_nExp1 = 0;7 G( e8 M4 P0 ?2 D# n- l8 c
}7 m1 n c8 p/ L6 a3 [
# y7 `0 B3 [) g6 q: \) P
( (CUser*)this )->AddSetChangeJob( nJob );7 N9 i. ?$ F+ g1 M, N4 `
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
1 O/ ~: R9 c6 r8 t9 D6 P1 C. z: c3 R' D1 _1 m' w" h( y
. i; Q8 r3 Q" ~! ], i: t9 m0 q( L& x
#if __VER >= 11 // __SYS_PLAYER_DATA& A) B; E% E! `; I& e0 o* t
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );; a0 @ d/ [; |( Q' Q. o4 C
#else // __SYS_PLAYER_DATA
7 X' C/ A/ c, U) }6 c# V g_DPCoreClient.SendPartyMemberJob( (CUser*)this );9 z3 r4 @* Q; t0 Z! T/ @4 n0 R
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
% @6 { a5 p6 D8 s% { if( m_idGuild != 0 )4 ^8 p2 ^3 Q* n! d/ e- g
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );1 v, ]8 }/ z* A3 L( w4 ~$ E
#endif // __SYS_PLAYER_DATA
& l# c% g. ^' L- f; F SetHitPoint( GetMaxHitPoint() );, w# j, l P# m' c( ~
SetManaPoint( GetMaxManaPoint() );
! t) t' B: u6 I# i. C+ M" s SetFatiguePoint( GetMaxFatiguePoint() );7 p: H N5 x* Y9 Q! S
if( nJob >= 1 && nJob <= 4 )
$ P8 k$ j9 o5 R( J( T5 v {
6 x9 N2 H) R) T# P( f m_nStr = m_nSta = m_nDex = m_nInt = 15;
& j# p+ x- S. g4 N/ ~1 m W m_nRemainGP = 28;
' A/ J) z. E; J! O }
2 B' s: X! U$ s5 [4 ~5 _8 T if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
9 ^3 _' s+ h1 A5 ` {9 S( c. h; b. p6 D( V9 K
m_nRemainGP = 118;3 f$ f# m8 j4 M% _% c2 A/ i
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;5 T' Q& g! d) K/ ?
m_nStr = m_nSta = m_nDex = m_nInt = 15;
8 L0 o" x. ? x3 h3 b }
5 M) J$ l6 T. z% Q if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
% [4 F$ K- e( S6 L* W {
8 n8 I0 e0 ]2 m/ }' r* ?( s& T CItemElem itemelem;
8 E( K' O8 t$ M, _1 R, m$ c itemelem.m_nItemNum = 1;* a( A) `) _2 z8 f
itemelem.m_bCharged = TRUE;. @. i/ h$ P9 @3 o P4 C
BYTE nID;
6 U" }" }9 h, W0 ^
, c8 X' j9 v% U" Q R# H9 A# p if( nJob == JOB_MENTALIST_HERO )9 j: m% O6 u( q2 j; o" ]
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;. V5 v6 k; l3 b9 |+ u$ s
if( nJob == JOB_FORCEMASTER_HERO )3 V' w) u! u( \% F/ g0 o
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
! J: M" y* e! @& e8 U, p- ~( a; a* T9 x% L
( ( CUser*)this)->CreateItem( &itemelem, &nID );
5 d+ i9 c4 r/ }9 G9 e: g }
* ?2 g D* \9 P g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
; {: s8 R2 v9 b ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );" n4 X9 B! ]) W4 S& E
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );: x0 J9 J) I$ i, z5 j
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );9 O9 O+ r: o9 c$ e+ o* l; n5 W
( (CUser*)this )->AddTaskBar();*/
3 Y2 w$ g( [0 K2 O$ K1 @ ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
" e* J3 _$ }" C" k% j' h# q! t#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
3 e& ^" P5 P. i' v2 \- ^; K" H' x ((CUser*)this)->CheckHonorStat();
+ t( F( ]7 K) P5 b d8 W* { ((CUser*)this)->AddHonorListAck();
) H7 [2 V" R2 ~ ?8 C% Z0 q g_UserMng.AddHonorTitleChange( this, m_nHonor);
: o# ?0 B. Y0 |& V( q! W/ M#endif // __HONORABLE_TITLE // ′Tà?1 O! k, m% w5 Q1 @& X7 N
}: P1 f. w1 E, D* w
#endif // __WORLDSERVER& p1 a4 k( g+ H' \3 L$ H
} & @" @. |1 G+ E1 P- W
8 [6 V% t$ H$ @- [' t6 h9 V4 S7 P
然后你进入functextcmd.cpp并添加以下% O+ I. l/ I8 k4 ~' F2 h j, A# j7 m' q
$ ^- g/ ]( Z# P" g @
代码:
; h$ C |9 `$ e9 X* s1 `( _8 PON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )7 E. l6 K' K, n; g5 h5 X
下面插入
j7 H: q. P% {2 S8 \; {! j ~ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
2 k. Q, s! S' ~% c
% n& z: X& |. D# i然后你去# ` u! H% n, C, `; d0 u
& H: p1 ?2 a' ]/ @4 F; O+ i代码:
9 n1 A6 f `7 Q O' Q代码0 B. G7 n7 U {9 P2 G! Q
BOOL TextCmd_ClearPropose( CScanner & s )9 e: a8 E* t2 o/ u. f: m t: |
{
- S. [) u: _% n8 ~3 v0 w6 P l# ~#ifdef __WORLDSERVER6 J! x9 j6 x! B3 _7 y! x3 z
CUser* pUser = (CUser*)s.dwValue;! f) y2 ]- {( [0 C8 ?0 r' V, N
g_dpDBClient.SendClearPropose();
' H2 [9 K2 N, {8 t& X#endif // __WORLDSERVER1 Q, O2 d% E9 {/ J+ s* \
return TRUE;" Q" B" \: ?0 S' f' Z
}
9 ~+ t/ A- r k, }3 u下面插入' ^0 D9 A E8 G8 X4 u3 Z
BOOL TextCmd_rebirth( CScanner& scanner )# G3 F% V* u, s0 x! ?8 z6 K% O
{# P7 F0 t# t2 v' g
#ifdef __WORLDSERVER
! M1 o9 i7 ~% r4 Q( s1 w J2 {CUser *pUser;3 K7 U* Q0 f0 o6 ]$ Q; s4 N
pUser = (CUser*)scanner.dwValue;# k1 R, M) Y- y1 E5 g$ v: \6 V- d2 n
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())0 L% @# W, M8 f) G# y x. _9 ?' s9 B1 X
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);( E5 J" f8 M% z1 o$ M! P+ U
else
1 S4 \; C6 `( gpUser->AddText("你还未达到重生条件!");
8 p. d+ f# f- G) z% K#endif0 N7 U& u+ U- }! _6 v& x0 R
return TRUE;. A+ P" J9 _( z+ @* p
}
. Y2 w. r1 a6 h8 O2 I \ [+ h/ h# d% D+ m% m
2 A3 J* ^0 v$ x
2 j5 y# w# {0 j' m3 E5 O; {# p. T g& |# m% `: ^
|
|