|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel2 c8 ~. e- b) e. ~% N0 L3 p- H' ?
) t1 o& _1 T5 l6 ^
Mover.h
0 q/ y. g1 i+ C代码:4 n* l$ g9 _) k/ u/ s# Q; s
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
/ p) T) \. U; \) s0 A# p$ ?
w* ~3 E- H) Q5 E1 L, l. p下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
" t* ^% t$ W. M' S/ n- h
& O" @! \, v) ]) z* K然后你去mover.cpp添加
/ {+ C$ g& H) D% V7 H ?9 b1 j2 }5 f! a% _: a
代码:5 J( h( {7 U6 i1 D
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
8 l$ x* ]2 }5 \# Y7 `{
; y0 j+ }1 P; g1 e+ e! X#ifdef __WORLDSERVER* B) \' T }; R4 }
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
* r- c( ]9 r7 m4 z% n7 J8 n MoverProp* pProp = GetProp();5 S9 d- G8 S1 j
if( pProp )" z, l1 |7 J/ Z$ z9 u
{5 Q& I* `' F" }6 t5 K9 x9 @
if( nJob > 0 && nJob < MAX_LEGEND_HERO )8 a8 R( w' @; y
{
0 j; |3 X3 z( @ r6 D7 k6 \% z AddChangeJob( nJob );( d! o3 [& U. d# N5 y4 m
}else{
# O, E0 f+ K* U6 O return;2 Z9 n* Z; a% E2 B! J% G: d6 m
}# l) }7 \9 ]! \* ?
int nPoint = 0;8 d2 s' W: O. i, O
if( m_nJob == JOB_MERCENARY )
& n0 F+ t. z- H- h) L% M4 v nPoint += 40;. J# M1 G1 f& L
else if( m_nJob == JOB_ACROBAT )3 i1 P8 B3 w1 k9 r0 G! G8 Y
nPoint += 50;
. X6 o i* c9 H& L2 M else if( m_nJob == JOB_ASSIST ); G% g5 w3 L9 g* j$ j, h
nPoint += 60;
2 H( E& }$ m! J( w) Q% }% i else if( m_nJob == JOB_MAGICIAN )
8 ?9 N6 _4 o% ~( t nPoint += 90;
6 D- r( g7 h3 q; m- c0 D! ] else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )9 K9 U! c$ ?! V$ q/ A- z+ y
nPoint += 120;. _7 Y. |* j" l8 T% q4 C
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
7 F/ x0 N9 _: W7 \" H( V nPoint += 150;
+ y2 x. U( z7 v |$ a else if( m_nJob == JOB_RINGMASTER )
' T& A1 g% j _8 z( t nPoint += 160;
' u8 c1 g) U* ~' k4 D* M else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )8 v+ K1 s: |7 T5 X5 u5 |; s
nPoint += 180;; ~/ ^/ \8 e6 I$ w, W
else if( m_nJob == JOB_ELEMENTOR )
7 ]9 r) L: U4 s6 t5 u7 z nPoint += 390;
( T/ r9 D" u) _ else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO ): y! X0 y7 ~+ s0 i" O3 ?
nPoint += 120;5 f& ^/ N9 \$ s8 R" J" s
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
6 O' i8 H9 V( F/ [$ e nPoint += 150;/ x8 @# Z5 p' ^8 E3 J
else if( nJob == JOB_FLORIST_HERO )
2 r" o1 U+ S, _% j5 q nPoint += 160;
% H2 {) F2 J0 A0 q, m$ N* Z: K else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
$ E$ T- I3 Z; R nPoint += 180;) w% p5 @6 {% x0 g
else if( nJob == JOB_ELEMENTORLORD_HERO )
) U1 g# B+ a% G) E; j nPoint += 390;
, O! Q- ]+ V- b; a2 \& @
4 t& P5 n H6 u1 e. r0 W/ T AddSkillPoint( nPoint );
! t7 k& c4 ]. ?- J: U m_nLevel = nLevel;9 t/ L& q* T* A, ^( R
' x) f. b' l% O, j
SetJobLevel( nLevel, nJob );, w# q/ h+ t9 v4 y) s8 L9 I
m_nDeathLevel = nLevel;
7 r) B$ l. [% j* b- v% ]9 b- {: Z#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans* m6 V& O- i6 Z! m
if(IsMaster())/ f: U+ d" N0 ?5 m: i
{4 m* N9 P n: N" e5 z# E
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
& x2 \# Z0 `; n; }' Q8 K if( nLevel > 59 && nLevel < 72 )
4 f; b6 X f# I8 D) E dwTmpSkLevel = 1;: R( A4 o8 l+ K4 M5 @8 O
else if( nLevel > 71 && nLevel < 84 )( t' S! f7 L* t9 n5 q: C
dwTmpSkLevel = 2;
/ d! l# A0 m7 F/ Y* _' B else if( nLevel > 83 && nLevel < 96 )
: u& i/ p- q3 {, l! a dwTmpSkLevel = 3;* J8 h2 X6 r& Q0 v
else if( nLevel > 95 && nLevel < 108 )
) }" G r# J$ h6 F1 _; a dwTmpSkLevel = 4;
4 \* Y- X0 L( l4 M% D) W7 M else if( nLevel > 107 && nLevel < 120 )
/ L* r6 Z7 N" a% n3 p1 }: a5 H3 } dwTmpSkLevel = 5;1 W- |5 H4 {0 a
for( int i = 0; i < MAX_SKILL_JOB; i++ )
B$ O: g1 e [: w R { ! G& O/ }/ A; n6 J9 }
LPSKILL lpSkill = &(m_aJobSkill);
; S+ @- f6 w% ~# T if( lpSkill && lpSkill->dwSkill != NULL_ID )( O; W$ E- c: u. i" _
{
, |5 V4 z2 s- K- ^. L ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 2 q a5 W1 z: j. Y* @
if( pSkillProp == NULL )
; r L; l% E* o: M0 \1 O4 O& x+ T3 k continue;
/ F" B. D7 {0 q* N; ]3 y if( pSkillProp->dwItemKind1 != JTYPE_MASTER)! q3 b0 p" `7 S: y }6 q
continue;
^* \% o" A. ~0 n lpSkill->dwLevel = dwTmpSkLevel;% r* c" o# y% w ^: V0 p* Q. k4 e
}7 l* T$ d h0 q2 h
}
/ k; @, D' r# b0 K" P1 H/ h }' p% J) x+ U. Q( N8 Z
else if(IsHero())4 ^8 d d9 ^6 u. [: g1 J. ?+ T
{0 ~7 b5 m* b# V' Y+ \
for( int i = 0; i < MAX_SKILL_JOB; i++ )
* u8 h" F1 |0 u( V$ e$ Y; K { 7 H' y! }6 A2 G& S7 {
LPSKILL lpSkill = &(m_aJobSkill);
" E! M. ?6 `+ Q+ y6 A6 s if( lpSkill && lpSkill->dwSkill != NULL_ID )
. C5 b/ f* t4 F8 A {, _7 U* U3 ]2 Z
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
1 A5 {$ g5 l9 I) t3 a- e) H# T if( pSkillProp == NULL )
7 {$ J2 {: o \2 U continue;
$ ]( U; P- y: J+ X4 l, O if( pSkillProp->dwItemKind1 != JTYPE_MASTER)/ S$ U# X: s4 B
continue;9 h, K- e8 C+ r# u4 S/ |
lpSkill->dwLevel = 5;2 E* ?& q6 b0 h, f2 v
}
( H) p; b4 g/ z- s6 ^! M1 D5 N$ J% e }9 f; H3 f. j: |% q
}
3 O5 e3 m! B& y; s else if(IsLegendHero())1 z1 x. M) r9 ^) o- Q5 a6 _
{- x8 B, @0 ~8 G
for( int i = 0; i < MAX_SKILL_JOB; i++ ) " g. j: A6 m$ ~' M/ C7 s. `
{
* S8 ]4 d6 z* q5 m! U1 G LPSKILL lpSkill = &(m_aJobSkill);* ~4 V! p+ p2 U+ R" n0 C- }+ D
if( lpSkill && lpSkill->dwSkill != NULL_ID )4 W8 _; b% P$ R
{6 X5 c1 ^9 T4 O
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
( V2 v. a; g- \5 \ if( pSkillProp == NULL )$ [% I2 X) P' ~6 v8 A
continue;
; }6 z4 c' ]0 N w1 D if( pSkillProp->dwItemKind1 != JTYPE_MASTER)7 N( Q0 e) D, z) C/ g- c
continue;9 n5 g2 U' {% _& h4 p) j7 G4 }
lpSkill->dwLevel = 5;
3 T" v. A. q! { q, O }
/ e( ? F9 q8 B: c }, i7 h' y6 _# x9 v0 a) C- `
}6 f* N3 w! m; W( L: _/ f
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans6 J- f& i$ E* R3 ^/ y' u. U4 ]( J8 _
if( bGamma )
$ z6 L0 ~, N% t; U: M {
& z9 j4 L0 H O+ k2 \2 h m_nExp1 = 0;
% q# d- u+ j, l- `2 T- ^6 t$ { }& s3 [- y: w$ C' y/ k2 b
; K' N8 j, q5 H
( (CUser*)this )->AddSetChangeJob( nJob );0 n5 b4 _* k: T9 ?9 d# E
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
/ Z8 O4 u9 l. u, N5 n3 b* g
. g5 e/ D& _" Y: H
7 ]' g6 N2 u5 I9 k#if __VER >= 11 // __SYS_PLAYER_DATA4 W% k5 S7 L' w* ?/ {! @+ l% K% P8 i
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
( \6 r5 w- H1 b6 ~' p' j# N#else // __SYS_PLAYER_DATA( z, _ \' k8 M& W& y6 D2 L
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );; s9 B# i$ b( G* E# Y( W1 r
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
3 D- k& O/ X% I7 E5 N* S if( m_idGuild != 0 )
! q8 y$ C" O* H+ k" w g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );7 a0 ?" T4 I/ ?0 o2 x
#endif // __SYS_PLAYER_DATA
( f' y! r$ f. A% d; U X6 N SetHitPoint( GetMaxHitPoint() );$ H! ?% a; @* ~8 U, ]( ~% W0 O
SetManaPoint( GetMaxManaPoint() );( d4 M$ W K* v$ T9 |* M5 z6 ^
SetFatiguePoint( GetMaxFatiguePoint() );
$ r9 N. \$ v. Z9 b( [7 L& P if( nJob >= 1 && nJob <= 4 )# }3 W& T* C$ G2 U7 U' c
{! W! F; J. n" z# c
m_nStr = m_nSta = m_nDex = m_nInt = 15;- U! s ]5 d! o3 l, L% _
m_nRemainGP = 28;
* ~# J( o7 W& X( k& Q: m2 | }
0 V/ o+ M" S; v- o* S. E8 v* v* i if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )9 ~8 N+ R. r( B4 i/ \4 @
{
' d& I) I% H0 p+ Z( x. F m_nRemainGP = 118;* _" K5 z+ x( D' K" d
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;2 f1 |* D( j# F, |5 i& g. X
m_nStr = m_nSta = m_nDex = m_nInt = 15;& W' g% Q3 X' B U" z" s
}5 z/ t" o9 C, S
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ) s( h1 n+ x; Q, d* C5 J
{
, q/ v! Y' T1 F( {: K/ V3 d CItemElem itemelem;3 d0 k0 _# N- |4 ?/ L0 N' e
itemelem.m_nItemNum = 1;
* t. r" m8 P( N4 W/ R' E itemelem.m_bCharged = TRUE;( F4 Y; y* B" e3 I4 y
BYTE nID;
7 o" F0 B+ O/ I% {( s5 Z9 }5 W. @$ Z* v, u0 k$ C
if( nJob == JOB_MENTALIST_HERO )1 o0 ]; Z) ]6 [! n. f y0 A
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
0 }4 @: u7 P) d2 \1 b if( nJob == JOB_FORCEMASTER_HERO )
' p3 T4 T) v( O5 r' N- _ itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;5 b( i' @7 d( ?5 j' N G' v5 K9 r+ H
2 m0 Q% K# [, z$ F& [. q! M ( ( CUser*)this)->CreateItem( &itemelem, &nID );5 {' N m' C/ m. W
}8 l8 \. w5 |& G
g_UserMng.AddSetLevel( this, (WORD)m_nLevel ); E2 Q. ^6 G q7 t, s- h
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
# @7 w" e: t& j, e5 o, {, C( Z$ x8 r- _ ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );% K3 j, `/ M. [" s
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );- N! j- f8 F6 g& y' k' X3 J1 {2 @
( (CUser*)this )->AddTaskBar();*/
! a, R, i- s6 p# b ~% {& p+ d+ v ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );# y5 \3 A q. x; b9 `- [' N
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?1 `& a# I5 g2 n) x' j
((CUser*)this)->CheckHonorStat();$ |( X$ _3 G: ^+ r* f# f
((CUser*)this)->AddHonorListAck();2 `# p/ W( w. a
g_UserMng.AddHonorTitleChange( this, m_nHonor);
/ X8 D, V. o f( _; C/ c7 p. l#endif // __HONORABLE_TITLE // ′Tà?
1 @+ [) m' d4 O% m1 W0 d* l }5 X: l j8 M( u0 p/ H% d- Y" j* G
#endif // __WORLDSERVER
/ K6 C2 d+ A' B- W) e} $ p! Z/ g: J8 g; {* s9 y
& A! t! W$ B; t6 \# d; c) l" b5 w2 H然后你进入functextcmd.cpp并添加以下
" q% |9 p( F& w4 p& c8 t& V P( X* A8 I
代码:% S" ?6 {5 `2 \1 B0 K" B$ u
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
+ e/ s3 Q' [, g9 \1 [下面插入2 o$ L* `- g% T
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
; f6 c' Y+ j+ R0 _# j- f m, o+ L! @7 H6 c
然后你去
, K0 W$ ^( l" d; M% l$ J" s; d+ s5 H8 k
代码:, t: Z+ d" X W" W, I! l
代码, T( ~& k" k; d* z/ S. s
BOOL TextCmd_ClearPropose( CScanner & s )
+ I4 A" U7 l# W D6 M2 n: D{
. @) }6 z* e0 d& s4 C4 H/ F& ~#ifdef __WORLDSERVER
6 i: c/ {7 a8 {/ {/ `- ]0 X+ r. m CUser* pUser = (CUser*)s.dwValue;
8 q6 \" H8 j* ] g_dpDBClient.SendClearPropose();
# m' H6 P' F) G3 P0 g m#endif // __WORLDSERVER
# U8 |$ N4 P& h4 J+ W$ ^2 Q& N# C return TRUE;) ^- b+ }7 Z9 Y1 n$ x- I
}. N+ G( {6 ^; C5 Q5 K
下面插入
$ v0 I0 F7 b4 I aBOOL TextCmd_rebirth( CScanner& scanner )7 J) g2 }3 G% O3 Q$ b& w! _
{' a8 `) _: z* Y- d
#ifdef __WORLDSERVER) K- i/ u4 f/ P1 A# L
CUser *pUser;; U# e6 L' X) v8 |2 B! q
pUser = (CUser*)scanner.dwValue;7 f. H' D+ a% s0 J- G
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
# U W0 o: U n P/ i& fpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
6 L1 n! u+ Z4 ~else+ |$ @7 R9 P' r& r2 m
pUser->AddText("你还未达到重生条件!");
- [# c( n" @2 ?2 N4 T#endif0 w% y( v- p7 w% G7 T" h5 C2 Z
return TRUE;
9 G0 W' @ U- {! h}
( L; {, l8 P f# N3 x8 i3 z7 o% T8 I5 ^" V7 \
1 y- z- V/ r+ ~6 o$ T# O6 c1 c
+ ~' X( Q6 `/ k& V: |/ u3 q5 S7 e1 ^* f* U+ [3 o% b4 w# `
|
|