|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
. a, _& c6 V& I Q" N! |8 W% g* v/ E/ F* A
Mover.h
' }, h8 A- ^0 G- q代码:
: O: F1 d5 l- c0 u/ K7 h k找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü# h' t8 c: s/ L
, ?2 R2 S( B0 O. z
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 3 ]- T8 V4 o! j1 M8 g
$ G" i {5 x' Q3 g9 o8 Q E( m
然后你去mover.cpp添加) s9 N2 N" n; V# }
, X* Z. s( J: @% m- V: S' Q( _+ z代码:
1 i6 r/ ~4 H" e$ h- bvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ); I( E+ G- d2 {% c
{ D# f/ e3 A" n8 u+ V
#ifdef __WORLDSERVER8 S' _6 A- u; b2 D1 Y( W
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
4 i1 z8 L6 m" k. [3 ^! K. L MoverProp* pProp = GetProp();' c* w( Z# R2 n/ {* L2 U! U
if( pProp )
8 @# v" m, Z$ C$ c {9 v& c6 {4 L% j1 Q! t, L
if( nJob > 0 && nJob < MAX_LEGEND_HERO )6 b" _- Z) w. n$ I
{' H! ?+ [. ]& e& H5 { y
AddChangeJob( nJob );' t( l3 Q) I$ X5 I" m4 n
}else{
( l5 N/ P1 B+ X4 ~! Y; k return;3 g8 S# C0 Q" p- U) S+ E; R
}5 x- _( {& y/ h* V# t: q. {# n% K% b
int nPoint = 0;/ e: R) r3 E& s# C
if( m_nJob == JOB_MERCENARY )
4 F6 q% X# c4 W$ J5 d( @* p nPoint += 40;
( G. c7 G! ^1 a0 |. ~ else if( m_nJob == JOB_ACROBAT )
# ^' U7 c: q/ L1 ] nPoint += 50; N+ H; V' v4 g, m# o: H
else if( m_nJob == JOB_ASSIST )
. @: {3 |) }) _% E" b; p( O! o nPoint += 60;9 J0 _7 d6 B( [
else if( m_nJob == JOB_MAGICIAN )6 @# r, b, B6 u, F0 F
nPoint += 90;4 b: s/ x0 P1 A1 q2 D3 D1 t: ] _
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )# y( t2 E" g4 F2 {
nPoint += 120;* ~' ~; L% n: C: ~& M8 N
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )1 b( X0 ^1 L& R* y2 d1 U
nPoint += 150;
5 D0 R# M8 y' T7 u/ Y else if( m_nJob == JOB_RINGMASTER )& D, l0 T' q, O+ m
nPoint += 160;7 p5 m! \: r, |
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ). F, r* b8 r2 i1 i
nPoint += 180;
! ]6 j6 [0 X. @. Q3 J else if( m_nJob == JOB_ELEMENTOR )0 s5 E: I6 x1 g; ^$ s+ n) D. ^
nPoint += 390;
+ u9 P; |! O+ Z5 k6 W: k4 A( { else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO ); y+ J' O* v, y& Q- }2 ]! i
nPoint += 120;
5 h/ B. w: }, t) l else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )1 l- d7 o% v" K% f1 h
nPoint += 150;* q1 E! i( m" x7 K
else if( nJob == JOB_FLORIST_HERO )
5 y7 y0 H! a D# j nPoint += 160;6 e6 n2 w- O8 A' F
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ), i* W* P D5 M0 J/ {
nPoint += 180;
5 F/ f& w/ S# S. ^ Y else if( nJob == JOB_ELEMENTORLORD_HERO )+ d, B8 g6 x# }! x/ T" x: }% n
nPoint += 390;6 \1 [0 x( q* h" C# b7 t5 P/ m' \
, q' A+ |1 w3 g7 U& F; {5 }+ o AddSkillPoint( nPoint );% c3 X* Y4 Z1 |# J3 E
m_nLevel = nLevel;1 @; r- V5 O# B' L( A
7 V3 J3 [, f* B7 m7 M SetJobLevel( nLevel, nJob );( k9 E! Q3 C3 T6 v7 z* w
m_nDeathLevel = nLevel;5 D% H M$ u! f) h
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans7 R8 g) R3 I# k, u
if(IsMaster())& _ w8 F5 d& S& ?$ L
{ \9 Q8 J/ m8 Q
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108( F" D/ W. n, J/ v e
if( nLevel > 59 && nLevel < 72 )
7 y2 T( r R2 s7 E, @ dwTmpSkLevel = 1;
% \ G2 m# D9 Q) X g, b else if( nLevel > 71 && nLevel < 84 ): m: U$ N. Q7 d& C5 R* V3 \
dwTmpSkLevel = 2;+ Y- ~& K5 W7 _- P) Z. v
else if( nLevel > 83 && nLevel < 96 )
+ E/ {0 w* x! {$ r7 m dwTmpSkLevel = 3;
: v( i2 Z) {. K else if( nLevel > 95 && nLevel < 108 )
' h- G# O8 N9 x3 d" v. m3 A dwTmpSkLevel = 4;/ ^' X9 E. M/ C) V, |( _
else if( nLevel > 107 && nLevel < 120 )0 z- s( e2 M! V% J0 l
dwTmpSkLevel = 5;+ d- B$ ~4 W& ^: z
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ! g* {4 Z4 p# s( c
{ , d% F7 B3 \9 {; p9 p
LPSKILL lpSkill = &(m_aJobSkill);" x4 N9 T3 s6 j
if( lpSkill && lpSkill->dwSkill != NULL_ID )
8 s5 A1 Y: g2 C7 n, g) P8 W7 r {
* t1 Y/ H+ ^1 E3 O! X/ E9 N ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
& C/ h$ F* E4 O; }* w if( pSkillProp == NULL )
/ z) z* q' W' f/ q: j8 o continue;
7 X0 v8 @0 m# e1 m/ j$ o: `! }0 U if( pSkillProp->dwItemKind1 != JTYPE_MASTER)$ X/ D9 o- _% j+ a' I, l' }
continue;: S8 z' G3 `* N8 ?) G
lpSkill->dwLevel = dwTmpSkLevel;
1 s' ^8 M5 `4 R! T }
" Z' n& `6 c. G, | }! ^& b5 a. g) Z, t$ K: I
}
' v ]1 k6 O6 N, n. E else if(IsHero())
4 x4 G9 |0 D9 v+ K, f {0 j {, W2 D& R
for( int i = 0; i < MAX_SKILL_JOB; i++ )
* B. |; e; _0 ~ { & M" R" F x8 x
LPSKILL lpSkill = &(m_aJobSkill);) Y2 H9 }% F2 x! Q8 M
if( lpSkill && lpSkill->dwSkill != NULL_ID )
3 z) `3 ^- x2 R: R {9 Q8 f) a5 m) E8 [ F
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
- V$ v N1 m p: B) {: C3 R if( pSkillProp == NULL )
: |" f! A# m) K9 d6 H) w continue;, p) N; v" F2 C$ Q$ P' ]9 F, l
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)' J$ D+ M* `2 {! u$ p
continue;
3 k' m4 ?) k- J1 B+ V9 N8 H; y lpSkill->dwLevel = 5;: r9 P+ ]3 h4 {- l' k! U# T5 V; a
}
; A# m: e( G0 x3 J% B% q }
! O' m" O8 S* Z$ H }! ]/ d& e) k8 l- y
else if(IsLegendHero())
' S5 C5 H+ \. ?8 t& x/ s/ [8 Z3 Z {
+ q1 O' G, n! t+ o3 k0 V& H; ~ for( int i = 0; i < MAX_SKILL_JOB; i++ )
4 o* N! Y' r9 @2 H% z5 q2 ?# l, _9 w {
: K9 _$ t1 k' E' n% I LPSKILL lpSkill = &(m_aJobSkill);
1 x1 q7 X0 W, o8 T) x if( lpSkill && lpSkill->dwSkill != NULL_ID )" K& N9 K4 d4 s) H q$ E6 n1 E
{
2 r8 p' u) j+ Q! I* H ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
" e; V, s6 H4 P6 @ if( pSkillProp == NULL ), D2 x! ?8 f! f" t- O
continue;! Z2 i, M# T4 N! W+ Y5 o# Z5 @% U ]+ S
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)4 U" f! v O* M, J; Z' L* p( ?
continue;
_: z# J5 B( o; O$ j- g' o lpSkill->dwLevel = 5;5 N+ {- X+ Q! Z) V0 u0 A! u' B8 y$ l: ]
}; k n- D5 d: ~% F" l
}7 g0 J( p6 b8 ?7 ^
}+ v* T/ T4 i2 |( k1 B- B3 B
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
6 @6 h5 }. B* Z M/ p if( bGamma )
) F# C& E7 K* c {' {( W3 _. [8 {$ S) R( q
m_nExp1 = 0;
7 O. l+ S `+ E% t }0 l ^/ ?8 R' }4 W1 V3 v1 |
" ]: S* Y) r+ m" o: E2 E% x% z
( (CUser*)this )->AddSetChangeJob( nJob );
c. [& d: @5 @% k! R g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
; C! O" u6 C% V. g W& w( i5 S+ \
4 ?, X7 U9 u( U& g- U4 _/ e7 F+ J/ P+ m
#if __VER >= 11 // __SYS_PLAYER_DATA
, ^/ l. m8 D+ Z# h' `! k5 q g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
' Q' i+ |3 ~0 ?8 h6 n$ j4 E#else // __SYS_PLAYER_DATA& g; M& H4 J( G' e3 l
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
5 |) m" l* s$ P& a g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
" O5 B1 n/ i# B; ^( C" D0 ^ if( m_idGuild != 0 )
2 `0 F" ?; D, m( U" b$ H. R6 R! v0 j g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
9 L0 Z$ X# h( K#endif // __SYS_PLAYER_DATA7 K9 g" g E6 t5 J$ S
SetHitPoint( GetMaxHitPoint() );, N! d0 @4 B8 Z9 S
SetManaPoint( GetMaxManaPoint() );
% i6 F+ |7 H) e S1 S! c SetFatiguePoint( GetMaxFatiguePoint() );
3 L3 s+ `+ f6 `& a% l4 h, L if( nJob >= 1 && nJob <= 4 ); J/ A/ \; L+ p5 E2 l- R2 O |1 H
{2 z7 ]( x7 Q5 e% O' _6 `# D
m_nStr = m_nSta = m_nDex = m_nInt = 15;: `4 x) c# `6 P
m_nRemainGP = 28;
6 V' \& n4 f7 L }
7 Q6 O( R! @9 K: V- y5 G if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )/ G" [- |# B- ]+ E! J7 G
{
/ z: D( J& g1 P+ v- M m_nRemainGP = 118;
Q% P- D) e& Q+ B/ G% S" m //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
7 P' Q* E# e' w$ P m_nStr = m_nSta = m_nDex = m_nInt = 15;
$ i/ e- r% O; C# r9 K, k7 q } s8 s& h( u& W; r
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )& k6 z1 l' Q7 |
{/ ~* J7 ]/ b4 e% x2 I
CItemElem itemelem;- U& V# K/ [' t. i0 m' ~# J
itemelem.m_nItemNum = 1;! _" Z( B) z* v$ j) B% e
itemelem.m_bCharged = TRUE;
" t- X$ E: y$ @) @' I1 s BYTE nID;
: X9 \2 ?* V' M ~! M9 @8 I1 T0 L0 Y& y
if( nJob == JOB_MENTALIST_HERO )
* v* [, t! M2 A) x0 K6 b9 q' d itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
' i( u8 d2 b M2 b! s if( nJob == JOB_FORCEMASTER_HERO )9 c# ]7 \' ?, s. ~0 Q
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
: H' y. F1 k4 r. R1 U& ^; d$ I2 k& r/ ] j( T) y( P7 W" {! W) }
( ( CUser*)this)->CreateItem( &itemelem, &nID );3 ~ ^( S" t+ U% Z* i
}2 X+ D3 Q( M0 P% {
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );. w$ g" u6 T- Z& \ e
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
7 @% m8 h6 k9 ^' m2 V% e ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );' s& @7 n: y) Q( Z1 {
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
/ c( }" s! `+ i6 ? ( (CUser*)this )->AddTaskBar();*/% z* p' g0 A" p: m
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
5 k( Z( v' K, e0 h$ C/ C#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?& Q9 P" z2 ?. P! I- j
((CUser*)this)->CheckHonorStat();
$ v# s' F, c9 j4 P ((CUser*)this)->AddHonorListAck();
5 z3 W3 a& d1 c6 X0 d& Z g_UserMng.AddHonorTitleChange( this, m_nHonor);# y, y' B- ?& a- |
#endif // __HONORABLE_TITLE // ′Tà?( `+ \/ Q' f. }$ ^# ]3 M# n7 n
}
W ?6 q( o/ O4 M- F/ I7 {3 k#endif // __WORLDSERVER: r! N Y( i6 ~% J {8 Y l
} ' ]( a( o& J/ ~+ Y
- }- B/ W& r- Y) |. c+ b4 M/ P然后你进入functextcmd.cpp并添加以下 X, n: V* P# E5 z+ M8 @
& y" L! K( Y, a代码:9 ~( P6 f) @/ k7 X- a: {' i5 G
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ). V& ?# i9 D8 H. H
下面插入# k g7 a7 M0 m( [* C
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
* S. z/ l1 B- |, S$ M' I4 Y8 c/ J: n! a
然后你去
* v) c) I+ B9 s d% H6 m4 ]
# H& B- D# O8 d代码:
( ]6 o9 {. H# x4 I9 D/ k0 {$ Q代码. j) ^& A4 F% S9 P; _2 V
BOOL TextCmd_ClearPropose( CScanner & s )" P' {* j+ p. ]$ c/ Y2 c \! _% \
{5 C3 [2 S+ B. r8 x' Y f4 [
#ifdef __WORLDSERVER/ i1 y/ _3 y" v5 Y( j7 }% q5 I; K& B
CUser* pUser = (CUser*)s.dwValue;
[' L, H+ E" e. \" P( U g_dpDBClient.SendClearPropose();# M |$ G% t! p
#endif // __WORLDSERVER
) E4 e7 T% f3 Z* n% x5 `) D return TRUE;4 v9 |2 S3 b1 l! n. A$ a
}3 L; R. T$ c2 b" z
下面插入
7 h) y- X* g4 P& A( B$ NBOOL TextCmd_rebirth( CScanner& scanner )3 ~, g# ^5 ?5 M/ F
{0 i% `/ W9 R$ n
#ifdef __WORLDSERVER1 H% @. M& s: c+ T2 J$ G
CUser *pUser;
- Y; V. L% d6 L% R: E `0 ~* XpUser = (CUser*)scanner.dwValue;$ a4 I. v( G* n/ @; ]9 x% M; f
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero()), |" h+ U8 y4 P. @( q
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);- T- |$ J: R" i4 ^
else
1 K6 W7 M( q3 s+ HpUser->AddText("你还未达到重生条件!");
: O: D6 B# V T, o1 E2 c#endif2 z; S% Y( G3 K3 V. z
return TRUE;
* K; s9 B) a5 ~, M6 W} " ~1 h+ p' X' X+ q/ a
: [6 P$ S! K4 d1 E
6 R* j+ N% B) y
8 S# T2 {6 S! E; [( y8 x- v
8 W0 ?* m( I" \' y5 {7 o4 R |
|