|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
! K; J/ C) T. Z# _! L5 X4 g( v& x1 a8 I+ I
Mover.h
1 j# H* m, f/ x) Y% b2 Y8 b代码:
2 n% v8 r3 c. x5 e6 n找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü( C# v1 G! T" u7 ?9 c" @
7 L$ k1 {" m# K; k下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
; {8 d P8 n: z. o* _+ ]
" {) @3 V8 o6 K5 `; a0 a! C" B: B然后你去mover.cpp添加1 f9 m" @: O5 y N
% x7 K& `% a4 x: _代码:% U- [9 j& ?0 ^3 p
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
' `; [0 K( B& i$ a{/ t. r6 L+ P: m% W% h5 \* {9 f
#ifdef __WORLDSERVER
; C) B2 d- I5 i; s: `" \ // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
6 B' J) e5 D& R3 z) h MoverProp* pProp = GetProp();
' E+ d% y& R7 p: n6 j if( pProp )4 T4 L. m$ k3 X; y4 l
{
' H+ u3 T8 q5 G if( nJob > 0 && nJob < MAX_LEGEND_HERO )
; ~1 A8 Z+ ~- a0 B( X; }4 c {
/ p/ a( k0 ^. v; X+ R! h AddChangeJob( nJob );
" K9 ^5 q) G B: S6 { }else{* O a$ z, x) o7 L* u4 _ a
return;
' N& p# ?8 n: ~ }! c4 p& R! o3 r9 g% C A
int nPoint = 0;
% p f: s% B. ^: A+ a; v1 ^ if( m_nJob == JOB_MERCENARY )7 V( F7 u1 ]3 h' j3 x
nPoint += 40;6 P, g, ~8 Z3 O3 B+ l4 h
else if( m_nJob == JOB_ACROBAT )% J1 a0 @- N* J4 n* ]6 r/ z
nPoint += 50;0 c- D% \* R* s6 ]! N
else if( m_nJob == JOB_ASSIST )0 |; n l9 i ?
nPoint += 60;
* d& b, f- j( I; A2 a1 N' I5 I else if( m_nJob == JOB_MAGICIAN )
+ A5 |3 k0 d/ y! q8 S nPoint += 90;
, m' }* }; i- J) A1 ^9 u else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
& p/ m4 {5 r7 J( v# d' x' w! ` nPoint += 120;
5 h* q0 n% R) g1 b* G+ \& K else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )0 I' q) A+ ]5 @5 u8 f8 g8 H
nPoint += 150;$ |% c& X) z% q1 R+ G0 M& ]; p: B& Y8 X
else if( m_nJob == JOB_RINGMASTER )
h4 I' W: o' U4 V Q- L nPoint += 160;
0 ?" B8 a2 R6 Z3 ^& O else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )9 [; w! h- z) K1 X% J
nPoint += 180;
0 L( X+ K: L- e. U; S+ |4 Z# S else if( m_nJob == JOB_ELEMENTOR )
# x0 S8 t8 ?$ N2 H: X nPoint += 390;
/ j1 t) e7 t9 T7 u- e3 {9 L else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
0 e+ V2 @2 H5 G nPoint += 120;
; j2 [, m [9 ]; d% M/ L else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
4 p) Z' t: J) H# H8 s/ i" J nPoint += 150;
7 {# A/ I% |6 v. S6 L" r7 V- n: z$ C else if( nJob == JOB_FLORIST_HERO )
( q+ w5 u0 K6 {6 r3 m nPoint += 160;
2 k. Q& w/ m) u4 `$ u* \ else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ); C- m% P' `( y3 K
nPoint += 180;* h$ O u% v4 S: Y' O
else if( nJob == JOB_ELEMENTORLORD_HERO )
1 f. }4 z g, Q5 x2 q. `0 R& O nPoint += 390;
c3 m4 M6 |0 x+ B6 Q, w, }+ [" T) P! I( R3 R
AddSkillPoint( nPoint );
7 H! ?* `" D, P+ R) h) I m_nLevel = nLevel; z2 O% M, m( c" S F
9 P3 v, i; ~2 Z* p/ I9 t: Z' ^ SetJobLevel( nLevel, nJob );
, \. F- V9 ^. {0 t3 O9 V4 w m_nDeathLevel = nLevel;
% ^! y6 {- ]6 X/ ? [+ {#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
7 U& h# v) e9 t( e/ Q( {! }0 f7 } if(IsMaster())0 p) v" ]- L' J: b$ S6 G# R. t
{
% E$ t/ z, ?' J, e; C8 t int dwTmpSkLevel = 1;//60, 72, 84, 96, 1080 O6 a3 M) ?7 P) I
if( nLevel > 59 && nLevel < 72 )! o4 K, v0 M* m
dwTmpSkLevel = 1;
6 B+ x, M+ c6 v1 Y; c2 B% e else if( nLevel > 71 && nLevel < 84 )
" E. h( D4 P/ v0 l/ H- C dwTmpSkLevel = 2;
9 ^8 e: F- v3 i2 [; @+ M& e else if( nLevel > 83 && nLevel < 96 )
- G8 S/ ^, z4 j! M dwTmpSkLevel = 3;% A9 W$ \1 k- d; j( O) B( K- E
else if( nLevel > 95 && nLevel < 108 )* E9 G3 ?2 M; ?' n8 v8 I
dwTmpSkLevel = 4;3 B5 m: E d& x; ]( |
else if( nLevel > 107 && nLevel < 120 )0 x9 V- Z" ~8 {
dwTmpSkLevel = 5;- C1 o0 o; z- K4 H
for( int i = 0; i < MAX_SKILL_JOB; i++ ) , z: ], {; J- L! T6 J" D
{
, v2 ]7 ?9 s: B2 f Y4 |6 u( M5 w LPSKILL lpSkill = &(m_aJobSkill);
( X2 l, v( v2 b) H) r' b& g if( lpSkill && lpSkill->dwSkill != NULL_ID ): J' C, k" s# F# v9 g# f
{
' B$ A. z4 v) H. b! C+ x6 j ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
8 |* q* F- E. u+ I- l; J: M if( pSkillProp == NULL )$ p! G3 _8 S5 k) b8 v: V. o# B
continue;
. V1 [3 O( x; C# c( w$ X if( pSkillProp->dwItemKind1 != JTYPE_MASTER)( C( R. p9 d. m( l, e# y9 I
continue;
! f2 d" @0 J/ b, a" z lpSkill->dwLevel = dwTmpSkLevel;1 Y- f, d9 p, G; ?1 J1 S
}
' h6 f. K" _* @4 o }
( a# |/ P9 P1 a9 v9 E. G* q" c- m# a }
. b/ n: p; M- T3 Y else if(IsHero())
6 I7 p- P( t, ~- i1 Z) B1 | {0 y$ g) T+ ~8 k( z
for( int i = 0; i < MAX_SKILL_JOB; i++ ) . u) n, X+ }& n8 O. D4 l3 e
{ 8 \( U- b- Q! E% c6 Y6 R
LPSKILL lpSkill = &(m_aJobSkill);
9 M* @6 H4 K5 Q0 h% ~+ ]' L+ { if( lpSkill && lpSkill->dwSkill != NULL_ID )3 I E. W0 B' V8 r" n' ~
{; j) ]; [4 C6 b& }; `) \
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ; Q i4 u1 o- h7 j- ~2 m$ ^& U8 M
if( pSkillProp == NULL )0 V9 y B+ @3 }
continue;2 k, t1 |! ?! S* n- u
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
8 ? P( m( y% Y+ h continue;
, L( {" S& b: j M ^ lpSkill->dwLevel = 5;
: q$ F" G: j5 O }: H7 s3 q3 a+ n5 O9 H1 K
}# q6 [3 l, C' M5 i+ I6 A, a f
}
# W# C H8 [ N8 x8 n6 J else if(IsLegendHero())4 ~* B5 F, Y* S# Z/ @6 k
{3 o% j3 [6 b* _6 E& Y9 q
for( int i = 0; i < MAX_SKILL_JOB; i++ )
4 n7 r0 S, h, E- N { . C T! B q/ q" d3 B9 s$ y
LPSKILL lpSkill = &(m_aJobSkill);0 }7 R# P* |0 Y R3 V5 B
if( lpSkill && lpSkill->dwSkill != NULL_ID )5 v7 s( I# Y! E8 T: K: _3 P
{7 z( v; t- K f4 \7 f% s
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
" H9 ~; r1 c: g2 I if( pSkillProp == NULL )
5 s- Z4 }/ U0 _, F0 `. f continue;
, S8 N7 a; F* p. n: J) N if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
$ F6 h( I1 c' [ continue;
1 u' \- {( q+ i+ ?4 s/ y' [% x8 Q lpSkill->dwLevel = 5;* Y' c7 ~1 c2 a9 j/ [2 }4 F
}
* m, I- T6 v4 y: G% ]: M ?3 b; n) Z }
5 r! I' T+ n0 o" P0 F }
1 e$ ~* a6 L" ?' Y- g. h#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans- x2 R3 h" i8 j" Y% w( ?/ Q
if( bGamma )% J- M6 O' [* T% l; \- o/ x
{
8 A# I; Q7 {+ d" v m_nExp1 = 0;
5 N' W% B& f9 `3 g: { } a1 @- A, z2 A
6 r/ U7 s0 h$ t: S ( (CUser*)this )->AddSetChangeJob( nJob );
- M/ g o& b/ x0 K% q1 b% d8 L g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
: J. Y# d! m% [6 V* y" ^5 X$ K$ r. @8 z. X; k# |) d! {
' o$ j& \4 O$ S/ _5 x- w7 @0 X#if __VER >= 11 // __SYS_PLAYER_DATA* |: R4 G( |( }- D" O# K3 D7 E. C
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
" @7 w, t8 P: p0 F' i) a#else // __SYS_PLAYER_DATA
/ t! B8 v8 `" c g_DPCoreClient.SendPartyMemberJob( (CUser*)this );+ O X( m; u! ^3 v
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
. ~3 H) K2 W$ g+ j/ a if( m_idGuild != 0 )
+ K Y, f d" w; j; J, ? g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );# G$ p5 t6 `/ @+ O- t- \
#endif // __SYS_PLAYER_DATA
1 \/ h: N S0 f5 @2 k; ^/ T SetHitPoint( GetMaxHitPoint() );
5 @) E, ~; L) y) F1 M3 i$ H) w SetManaPoint( GetMaxManaPoint() );
* m! ~: Z, K$ f0 \* j SetFatiguePoint( GetMaxFatiguePoint() );; o$ p) m& z2 a
if( nJob >= 1 && nJob <= 4 )
2 W* S6 [: _- U; I# ~ {
9 m; O+ _# Z6 e m_nStr = m_nSta = m_nDex = m_nInt = 15;2 e/ i( f- i1 K6 J2 d
m_nRemainGP = 28;
/ z5 M1 ~# \" C, w9 S# X! N }$ R) R" z0 s' `& a( a D0 H
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )" Y5 t' ] ^* ?7 _2 N$ A- t/ a
{
6 H0 J! B# d- Z' k8 a' U+ O m_nRemainGP = 118;
. S3 s, y! L% B7 } //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
" h( g. e! s8 ` m_nStr = m_nSta = m_nDex = m_nInt = 15;
, P) S1 B6 Q) E0 B0 }3 Y j' y }! {5 ^& o- q2 l* e& s; k
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
% @& E4 @2 C, E. ?" V' ^2 y7 E/ U {
) k% _8 i# O/ Z8 q! a CItemElem itemelem;
, r. C* a& g' w m8 o) H4 _ itemelem.m_nItemNum = 1;6 X6 A& i$ `6 W9 r- [
itemelem.m_bCharged = TRUE;
( ~# D0 c6 H- V BYTE nID;
- S* k0 f' `6 J0 j! T
) M) P3 Z' z; C# L2 g8 h if( nJob == JOB_MENTALIST_HERO )
2 j& e" [( { {9 ]9 n0 V* s itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;( U @% j; y& Q' L% X. z
if( nJob == JOB_FORCEMASTER_HERO )9 F0 \' ]) l m, u$ Y( [
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;9 T2 E- [8 s* y, J. {
2 V* X) y9 K3 r9 m- M- {3 Y0 k
( ( CUser*)this)->CreateItem( &itemelem, &nID );
! ~! r$ _8 j0 |& P0 U$ N7 w0 H/ r } R. ~% j5 L* V+ b2 L( @
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
7 V/ A/ N+ c' L0 ]5 b# } ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );0 p5 f2 `& m. C- |
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );( V2 ~/ c" t8 P" b" S4 V- l
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
" i I2 l# s# y/ W0 Y ( (CUser*)this )->AddTaskBar();*/
- O9 {) }& I% {. ~) b3 G7 D ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
3 {3 \% f6 t7 n1 t2 U* g#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
8 a/ P$ x6 U- d" Y; S$ a: a" M* i; l ((CUser*)this)->CheckHonorStat();0 O9 x5 n7 l0 E. _) a
((CUser*)this)->AddHonorListAck();% @1 O% x" b4 x m4 T7 @
g_UserMng.AddHonorTitleChange( this, m_nHonor);. r0 {% m' b, S# B% n. | [& h/ H" l
#endif // __HONORABLE_TITLE // ′Tà?7 M# E9 m7 `9 H4 r P2 C1 v$ x2 B
}
! B0 T v# J P$ C( q; s1 m#endif // __WORLDSERVER
6 }. ]+ R) g3 a/ p/ I}
, P' Q& A% D, z3 N. d* ^ d1 x* a
( i9 k7 Y, m. n0 E4 K/ i) c! ]5 Y然后你进入functextcmd.cpp并添加以下- a5 ^- U, R) n
# `1 U1 _! {" k/ c7 d2 ~代码:& D& v, b, J' l' Z4 [% ?& o, l+ z
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )8 @* X6 F( Z* A6 P
下面插入' u/ ^" N' I6 d5 U3 f$ s2 g [
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
/ m* L5 t& t; f3 r8 L2 h/ k! I: V0 x4 r
然后你去; q. I b$ }1 m. Q
7 l& J+ H; j9 K. J代码:
% f& d: N- }: V- T代码
) `) m$ _3 z u# o; }9 \BOOL TextCmd_ClearPropose( CScanner & s )
2 B+ s6 k1 q7 ~, I) N$ k7 m4 |2 w{
& W% G1 \; Q+ l' }& _% l#ifdef __WORLDSERVER
; [. S0 Y9 `! d* Y# g% d CUser* pUser = (CUser*)s.dwValue;
5 t8 ]4 Q9 O- d$ s. h g_dpDBClient.SendClearPropose();
( A- W7 e) ?' A5 p" s#endif // __WORLDSERVER1 G/ n* L8 h* O
return TRUE;
& h+ Z. ^$ ]: R! d9 M6 Q& s7 d6 R}
8 M0 [# j" v7 e下面插入6 V, R a4 R& v+ ~7 D& p
BOOL TextCmd_rebirth( CScanner& scanner )
# w6 F% A0 d/ D' L8 @0 q0 q' K1 x{
! H/ [' Q K& g( W5 m% I) ~& G#ifdef __WORLDSERVER) Y+ I2 z$ c! i
CUser *pUser;
% o4 M; P/ C; ipUser = (CUser*)scanner.dwValue;
' W, \0 ~' _. _if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
1 B0 m- L3 m5 RpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);! y: ], I) [- f* l
else
& x# u4 a! \: T% G- T7 ~% ?pUser->AddText("你还未达到重生条件!");: Q! k8 U7 R U+ H% F2 L+ K
#endif
$ H# e; S3 [# treturn TRUE;3 h8 r7 A9 I; t5 D0 e& f4 `
} . v. F$ R/ @! M; e i! a6 x. h1 _
* R. o. x: i1 W8 y# j
7 K! x5 h/ ?# M4 R0 r" z" d9 t$ w
- P9 c: u2 {5 E0 [/ ]
" C+ d. b7 z4 A0 F# r+ @ |
|