|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel r, D4 {4 O8 [6 ^
: z1 |4 C K; {8 QMover.h
8 e. z$ c3 Y$ R* Y! h3 J代码:
( k0 _0 q& w, `% m$ `2 d/ [+ u找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
' L; m1 R* C7 p. H+ v7 M$ L2 E3 F3 e/ F) y
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
/ s- D4 F3 H, @- R) o' q9 b3 F. P! K0 H; [) U5 F1 r" x- @
然后你去mover.cpp添加
W2 V2 ?: W: Z) a$ J X$ H7 D% u
5 }8 H+ [+ _6 e4 \3 H- j代码:3 U, p) B% k) Y7 b1 S
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
" e, z& n# d+ S1 Y0 E- A, l& t{$ j) D8 r3 S# C
#ifdef __WORLDSERVER+ V7 P* w4 o. K
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó8 L% g1 e. _% D `
MoverProp* pProp = GetProp();
' X0 }9 \! n) ^2 O9 W if( pProp )
1 o. s5 E o( J4 N5 ?, o6 e% R! L {
6 ^) Q$ W3 z1 s, G- w if( nJob > 0 && nJob < MAX_LEGEND_HERO )
( q2 l" p: B* W' D {
7 g0 b( h+ s, X) |" b- U AddChangeJob( nJob );
1 j. R( J1 R" j4 U: V: {2 _7 c }else{8 d* ~5 [$ Z3 H; @5 Q4 h9 d
return;. Z: j4 r+ D) ?: W. m; w: v4 x( p
}
0 m9 j& n9 P( i8 i$ g int nPoint = 0;) b) g: b$ u4 R( a R+ P# [& N1 l
if( m_nJob == JOB_MERCENARY )3 W; `2 Z* f6 _% p$ I7 d' s/ I
nPoint += 40;6 f, k" C* j7 f: R; q1 [5 |7 ~2 A8 J
else if( m_nJob == JOB_ACROBAT )7 ] ?7 Q$ i. C; z% `, o2 n& m( j
nPoint += 50;! Z) Z1 A: [1 P9 `
else if( m_nJob == JOB_ASSIST )& K- B$ G+ z8 z& P
nPoint += 60;8 }6 p* [& f3 w
else if( m_nJob == JOB_MAGICIAN )
9 j( C# a* Q( P" n4 m nPoint += 90;/ x+ O- E" Z( n* c L& y
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
9 [3 c' O- m/ ?& f5 o3 s nPoint += 120;
9 {% Q( n9 Q: l- ~% w6 Z else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
: k7 p% Z$ X1 v9 E* V: W nPoint += 150;! V' C7 z4 K. K
else if( m_nJob == JOB_RINGMASTER )% @& G |% M" Q0 ]% ?" J8 L
nPoint += 160;4 f2 d7 `6 {/ Q
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )0 C" u) f1 U C- D \$ L
nPoint += 180;
3 {# ]3 w% R* m& c! f. G% ~3 Q# T else if( m_nJob == JOB_ELEMENTOR )
- b1 z; Z/ T) q* R) n. G9 { nPoint += 390;7 {+ I/ F8 s, K6 s
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
( y7 I" f6 {/ c& E nPoint += 120;; D$ ?+ N! [& M- c6 G, ~5 Z
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
6 i1 f& K, K0 Y3 z; U* u nPoint += 150;. m8 f) }3 A* V S- K
else if( nJob == JOB_FLORIST_HERO )
# a0 |+ ?( x0 F6 s2 Z) ?$ y nPoint += 160;) u; b3 j# Z4 |" B4 M
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
' I8 `9 f2 ]! \3 i+ V6 d4 i nPoint += 180;
" r- U. g2 V5 v6 ] else if( nJob == JOB_ELEMENTORLORD_HERO ), N0 O7 `2 X4 Q y4 W7 r# r4 s3 g
nPoint += 390;
) M) F5 {* h) @4 f6 N) J2 V/ Z: |+ N" F: V5 F
AddSkillPoint( nPoint );
0 s8 A! j5 g/ I' }$ s3 O m_nLevel = nLevel;! P0 x% R7 u+ u/ O {6 v5 N
2 P( W8 E/ @* A; ~8 H
SetJobLevel( nLevel, nJob );- @9 L. w- P! k2 c# L
m_nDeathLevel = nLevel;# @9 ?" k+ r0 `+ X
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
4 B7 I) i. _5 m8 {" c8 |/ k& H4 D if(IsMaster())5 B% d% c& v6 Q; l. |" s/ r
{
3 o. M; X+ B4 g int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
0 u" j) {9 C" g. R K if( nLevel > 59 && nLevel < 72 )9 M" m9 z: h4 @5 q" s0 O8 O+ T" x* v
dwTmpSkLevel = 1;5 ?+ S* g5 O% E+ U& Q
else if( nLevel > 71 && nLevel < 84 )
% g% @% e6 k) ] dwTmpSkLevel = 2;
: {$ I8 @) [7 y6 D% x4 V else if( nLevel > 83 && nLevel < 96 )
+ t) }$ ^" x4 s A' Z( Z1 d1 V dwTmpSkLevel = 3;+ Q5 U6 l# o/ ~% z: Z
else if( nLevel > 95 && nLevel < 108 )
$ [+ k( p$ V- y0 X6 ` dwTmpSkLevel = 4;
* l3 I& s3 ]( } Z+ w else if( nLevel > 107 && nLevel < 120 )$ t% G9 \1 n3 P( N6 C: D
dwTmpSkLevel = 5;. {8 [2 c4 @, Y3 e9 A; x3 L( ?
for( int i = 0; i < MAX_SKILL_JOB; i++ )
0 c0 U3 Z" U! k1 N4 _, a! h { / j' B8 T& i4 }# _% C
LPSKILL lpSkill = &(m_aJobSkill);
% P) X# y6 @; q9 ?1 |$ z if( lpSkill && lpSkill->dwSkill != NULL_ID )2 p+ ^& A( Y5 k, Q* Z
{6 p4 ` U/ y" f: N; ~, H
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
$ H' `( W5 \+ w8 g if( pSkillProp == NULL )& h) o- T w- H' y& P' b
continue;8 D$ G4 u) r, S! R- \' n
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
& h( u6 h' h- x+ h- c& @ continue;
6 w: K; n+ e8 u7 {4 `( N7 z lpSkill->dwLevel = dwTmpSkLevel;- C m. s# `6 ~* p8 T% ~
}
( _# S- f* L$ d' O" Y }: p! v2 W% c2 p, N( ]
}4 @: p$ p! N% X6 B: }% u
else if(IsHero())! {; Z. R; Z: c: r
{
- z9 N, j# z1 O; ? for( int i = 0; i < MAX_SKILL_JOB; i++ )
0 A; p* Q" ]0 v; z8 F; \. d% R {
. H0 a" q0 n8 S' y/ Z+ T/ N& c LPSKILL lpSkill = &(m_aJobSkill);+ L& q" d8 x ~* X- K
if( lpSkill && lpSkill->dwSkill != NULL_ID )7 Y+ X. K5 V9 c! a& E; ^1 ^
{
1 }" {3 B5 @9 y0 Z7 A3 N5 j ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 0 }0 L4 e0 g' }) {( {( @" a" h
if( pSkillProp == NULL )% S2 g: c- q+ e g. t2 n7 ^
continue;
9 z. y+ z9 |' K) P5 C5 P4 T if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
5 S/ f8 L+ }1 N continue;
; O/ D! t2 C0 e) X. [) k; N0 t lpSkill->dwLevel = 5;
7 }9 V4 T) F0 }3 F: m }
0 H$ t& J, o, k, @6 X }. b+ i& R; G( p# o$ M0 q
} c. v' T. {* t- _
else if(IsLegendHero())
% v4 k- k# z8 [/ w& x @ {
* P& T ]" ~9 }# N1 M for( int i = 0; i < MAX_SKILL_JOB; i++ )
# T" ^, y' X/ V" N. F6 A { : m4 a) f4 a. Y; a( y4 |
LPSKILL lpSkill = &(m_aJobSkill);' q3 e- u6 p2 |0 ]
if( lpSkill && lpSkill->dwSkill != NULL_ID )
2 L5 B# ]! l$ K- H9 G& _" F! P {
! R5 b* R$ |+ \+ I$ I ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 7 p! l6 f! R2 {, O x& ~" j0 q
if( pSkillProp == NULL )
+ B+ m! l* I& h r2 |7 p- e continue;
3 u! [& v5 Q- O1 P1 [6 | if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
. g/ z; z- p% I1 T+ q d6 T* I* J continue;7 B7 l4 H/ t2 U8 y
lpSkill->dwLevel = 5;
# M8 v" d( `' X( B& c0 Q$ q4 L }/ S! {5 I ?; P* ^8 v: F" O
}
3 x3 q" e& m! Z$ t% c- T: ~ }4 t/ W2 E* b: ? E
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans! d. Z9 ]* } b9 Z$ t1 A
if( bGamma )/ I1 D* k u" S1 a
{, ?& R @) M& i: B2 p1 b; q
m_nExp1 = 0;; W" \/ X: m3 V9 C& @( _
}. O% q, V' S" D+ ?$ r' T) e
& @5 }; a1 R# s+ b7 r
( (CUser*)this )->AddSetChangeJob( nJob );
2 n3 s2 D7 ? b, r' K/ i( W# ?1 I g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
- q( m* n6 U: C
5 T5 [7 q3 H, d9 d Z( q D1 _/ a
* S \2 E# N6 ?4 _: G' ?3 [#if __VER >= 11 // __SYS_PLAYER_DATA* W, G% h: k' {8 i% x& G- m
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );+ F7 I9 m- e, n3 U
#else // __SYS_PLAYER_DATA: T$ ~, n) C X; `5 a3 ~1 p- n
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );+ `" |8 a% [1 X$ a' l# W8 V
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
/ t9 [) e9 b; f4 p, { if( m_idGuild != 0 )
; W O- c Q# V- B( _. V0 A# K g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );- K6 |+ q0 W! ^) K* c& Z# K2 x4 w
#endif // __SYS_PLAYER_DATA# q9 _1 j/ }3 K, |0 S# R& L3 s
SetHitPoint( GetMaxHitPoint() );) H" S3 `3 |5 H4 @0 c
SetManaPoint( GetMaxManaPoint() );1 X5 [, N6 Q+ Q* s' E
SetFatiguePoint( GetMaxFatiguePoint() );
4 f: M$ K9 ^: \0 m, i; B3 j7 f if( nJob >= 1 && nJob <= 4 )4 |( C4 d/ h# U( D& N! N
{
& V. X. s( ]( J) S# {- T m_nStr = m_nSta = m_nDex = m_nInt = 15;
% f5 H: R9 W; d( I$ v m_nRemainGP = 28;
) x0 r) i7 j3 Q& O, i( o }
/ W" M7 W, J5 V if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
, i" S& j7 v" F6 {( H% B {2 V/ `- a7 l. X6 Z' V# _
m_nRemainGP = 118;; s! n4 x" i7 y8 U! T+ N
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
9 C) H% O) S$ b m_nStr = m_nSta = m_nDex = m_nInt = 15;
- \1 Q! G, o4 X% s/ J! F! U }
* l" q. Q* V; K; x if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )/ U! `1 K5 i* T8 ^- \( {; P
{
( k1 X0 `1 p- {% V7 w2 j8 a/ _ CItemElem itemelem;
% N0 @' X5 v0 S; Y6 |7 Q itemelem.m_nItemNum = 1;
7 M8 |6 |0 }/ W" T! Q6 N7 V itemelem.m_bCharged = TRUE;+ V: V6 w; w* y( y4 |; V' \
BYTE nID;& w& L- p( Q* G6 l' X* G% _
s* K6 N, c7 J2 J9 i
if( nJob == JOB_MENTALIST_HERO )
7 T0 S* c$ f* v; d9 J9 B! Q itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
6 a. W7 ^$ T+ e if( nJob == JOB_FORCEMASTER_HERO )! {' U3 ]1 i1 }9 w. O; y3 n0 J
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;: Q& @+ }& H; {) K! e4 t
8 o6 G4 |0 f2 ]' _# w0 C2 c ( ( CUser*)this)->CreateItem( &itemelem, &nID );3 Y3 c) Z% R% ]; Q# ~; v( \
}5 C1 L4 _: C8 b
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
o" N- p/ ?1 @ ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );4 Z" n: O5 ]0 _ e, ~/ a" v3 u
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );9 w# j# K3 J3 Q5 X+ l
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
0 H4 M$ I; U0 V7 F, ?* K ( (CUser*)this )->AddTaskBar();*/
! Q; q; T0 P5 l+ k ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );! ?* J3 G9 D9 V4 g$ b5 t8 M F" i
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?% u8 \* F* L$ c+ h8 i/ d. {
((CUser*)this)->CheckHonorStat();
+ h4 W, \! ~! | ((CUser*)this)->AddHonorListAck();( Q' I' y; K2 A. u% j# h x
g_UserMng.AddHonorTitleChange( this, m_nHonor);: `" g6 s$ E0 X, @! d) J& H
#endif // __HONORABLE_TITLE // ′Tà?4 l0 c, g8 u: r- x7 R; @" f1 z$ z$ U
}( o( r3 }/ A( g A
#endif // __WORLDSERVER# {( H2 Q& ^. w! }3 u
} : ?* n( ?/ Y, x9 l1 n
* S0 D& |6 s# s' p: V/ A; D/ N
然后你进入functextcmd.cpp并添加以下
' @6 y8 _( I" c N* z3 i
3 ~2 u4 l$ y8 P代码:' _" h. [& q( k# ]. R
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ), O1 }) k# T, q- ?; o
下面插入
x; L2 P) Z; |9 ~ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
L1 D0 g1 i* ?3 V; G/ b. L3 |. z3 E1 L/ ~
然后你去
" N6 Z3 I N) n" R( j& f& y& O5 a$ d6 K! D4 M
代码:: z1 e) N& ^ W" t& M# g6 |, `
代码: v. j! A! a, q; N5 U
BOOL TextCmd_ClearPropose( CScanner & s )
% J& h5 o5 ^$ R4 Z# a$ b7 f2 j{; l. e/ t1 K* P& N+ H" v
#ifdef __WORLDSERVER' p- J7 h7 d0 I* M3 h1 Y( U* F V
CUser* pUser = (CUser*)s.dwValue;
4 a5 N: J, e* i Y' f% Q g_dpDBClient.SendClearPropose();$ [8 ~& U }. z1 J" C
#endif // __WORLDSERVER
# A: I# U% W) O# V; Y7 } return TRUE;
. X, o( n' r: I& i, m1 q* u' u! b/ z}/ S! o& A2 D- v! @* h: s" U
下面插入% ^+ q1 K& u \; i: _$ d& A
BOOL TextCmd_rebirth( CScanner& scanner )2 n2 @$ e. A. A8 F2 j/ S% i
{
) n/ k' {3 Z8 m#ifdef __WORLDSERVER9 M+ K, @* q$ K" W& r" ~9 K
CUser *pUser;
) R; u. s! D& q" P: _pUser = (CUser*)scanner.dwValue;
, ~( W8 b' P( h; E8 N: Q# }if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
, B! G' a& B+ T0 G/ ~ \8 xpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
) @! ^& h; o. @0 U. x v/ c6 _' xelse
% F6 m O* w4 p9 lpUser->AddText("你还未达到重生条件!");
$ K7 T& R' P5 H7 ~#endif L" H9 r; @8 m P- f
return TRUE;
+ p& H# f# V1 G}
, P+ h) B1 T2 g: y x& B
% z2 N0 m1 g$ ]$ T {# \, N+ s" }8 e0 G0 U3 @2 b' s
; e1 u: Y8 S$ G% r& n7 G3 X8 Z+ N: O; j
|
|