|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
& {5 [/ W) a4 y' J6 l$ c" R* B9 t/ |5 w$ [1 N' a
Mover.h
6 ]# I6 u6 D) m) }* [ f, N$ I+ i9 K代码:/ e6 e% j# M, i. X y* B
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
; @) S2 X& A* l& R+ B9 v' E
# U9 e( O2 F4 e. Z+ P% s. I下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
' K% q) R0 }( Y
! N) r7 `. B" O然后你去mover.cpp添加 {1 G2 @ ?* e# ~" v
; x) B n1 D9 g! ~7 q
代码:
+ Q2 N+ W6 f j$ @4 g! ?/ u [void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )7 R1 S* m/ ?- e0 u
{
: k0 {+ X5 g- H#ifdef __WORLDSERVER6 X5 b/ B# Y( w/ l% y4 [3 s
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
9 o x8 h( Q2 {1 M# j5 L MoverProp* pProp = GetProp();+ e' [* e2 T, e# c1 U
if( pProp )
2 O5 b w# T J7 ]7 o" Y {" R3 C3 z/ X; u0 n, T1 O
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
' b0 l7 l3 T9 p9 \/ l! ]* G; n) I# d {
) e3 D4 E7 L. c; D( }4 Z AddChangeJob( nJob );& }! H+ r5 P$ H1 M
}else{
6 B. s6 {6 v* q. I* M9 ] return;
' q9 j: Z" E8 X# B }
9 O! {% U2 ?7 m7 e/ e! F' b* @ int nPoint = 0;
# U1 M0 x0 ]# I) S9 h0 V if( m_nJob == JOB_MERCENARY ): |$ M9 {/ U2 e
nPoint += 40;
, O4 Z8 x, ]' t# I6 u7 y; \ else if( m_nJob == JOB_ACROBAT )0 N& O8 j+ {1 Y; a0 p) K
nPoint += 50;. |& w8 M/ i' P3 ], n
else if( m_nJob == JOB_ASSIST )( h5 ~. L) _6 Y9 ?
nPoint += 60;
) V' ^" o: v- g9 A. I/ ` else if( m_nJob == JOB_MAGICIAN )( B% _/ [. N# P( i; R
nPoint += 90; B! @; j$ A& ], b8 D
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )* A3 w$ [0 t5 u: P$ ^% {
nPoint += 120;
5 z* L; ^* G7 d! X8 \4 F! h else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
" k, g1 ~/ m- \4 w nPoint += 150;( F% k! `6 i' z4 N" W7 k
else if( m_nJob == JOB_RINGMASTER )9 ]! f9 o( t6 C
nPoint += 160;
. S+ o7 b" u. R2 m! _8 Y2 E else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )0 g; L! R/ A2 R: q9 ]
nPoint += 180;
! N- d; P# U( C else if( m_nJob == JOB_ELEMENTOR )( P5 V5 P4 ^0 S! g0 \; M4 E8 l' m
nPoint += 390;0 R- Q5 k# I/ v3 O) v
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
8 S2 ^8 B- Y) o9 u4 V/ [) R nPoint += 120;
" R5 ^/ l( {& f, K6 ]8 Z9 h else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )/ e& V' G' {% T+ p& A k$ F$ C5 c, K
nPoint += 150;
! e I% u: }% P' E6 O$ o9 D else if( nJob == JOB_FLORIST_HERO )
# @5 @' [6 N- b# y. @/ a2 P% ` nPoint += 160;
4 R( M* H9 c3 u8 Q else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
# g/ P' b0 s# N1 |7 [ nPoint += 180;& p% \2 \" k/ N# x
else if( nJob == JOB_ELEMENTORLORD_HERO ) c" A- `. I& P9 T" E* X
nPoint += 390;" @ [ V3 K( y6 ^
) ~% ~+ k0 D% V- p* A
AddSkillPoint( nPoint );
0 U# t3 f" f/ b* ?8 d m_nLevel = nLevel;8 O/ V( J* m: V: [$ h0 G+ `/ [: M
* Z. @. @/ z$ K' e) ]- ? SetJobLevel( nLevel, nJob );4 ^# q) z2 F9 {/ i
m_nDeathLevel = nLevel; J$ e: p, z$ ]+ Z# Z, k# l
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
P" g) m6 c/ v5 y @+ @ if(IsMaster())/ I& }: k: ^" s0 r2 E' q
{
) ]8 p6 [0 m" v. L int dwTmpSkLevel = 1;//60, 72, 84, 96, 1084 c+ F# U% K! f' t0 w% I
if( nLevel > 59 && nLevel < 72 )
0 p; y6 i: k+ o, Y0 B dwTmpSkLevel = 1;1 b n- e. E8 e& ]# p( \% q
else if( nLevel > 71 && nLevel < 84 )' a9 t4 U, `' S: y
dwTmpSkLevel = 2;4 C" t& e" e; C6 A
else if( nLevel > 83 && nLevel < 96 )# H6 V6 y* ?( j; `
dwTmpSkLevel = 3;0 B8 m( k+ E. l/ a
else if( nLevel > 95 && nLevel < 108 )# y4 A$ Y o4 @. g
dwTmpSkLevel = 4;
1 y$ D: F1 ^% n) B- l2 b else if( nLevel > 107 && nLevel < 120 )" ^# E6 U. q# q* I
dwTmpSkLevel = 5;' R, W$ P7 {5 p1 `: m+ K
for( int i = 0; i < MAX_SKILL_JOB; i++ )
. }$ _; S+ v1 y5 u( C {
+ c8 i, P- g7 o7 Q2 y# l4 M: F LPSKILL lpSkill = &(m_aJobSkill);1 B! N2 v" T [! X& D
if( lpSkill && lpSkill->dwSkill != NULL_ID )
0 x! w! ^4 X3 R9 p1 Y$ _6 p {% c6 ]* t% M" m- ]1 }1 t0 w
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 7 ]/ q3 f* k3 ~
if( pSkillProp == NULL )" X1 I. ~1 N; k. a/ r, e7 h
continue;. J" V0 P; c& C0 L! C: H( [: r; K
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
: [8 l2 `! i4 H9 p/ R; f. i continue;
, l9 u+ G# l! L( S$ { lpSkill->dwLevel = dwTmpSkLevel;
& ^6 }" l/ D2 h4 p' [ }
& K" q5 w- {- o! ] }& H+ a) c- F0 K5 R4 P6 e+ s- k( v
}) f5 y& b K t- N7 V O
else if(IsHero())" S; I: Y U% e7 E* T' r( y# f
{( o2 y7 Q1 c, \9 W" S9 r7 w
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 3 c1 Y" K; F3 v% E q$ F5 a
{ 8 W" }- M! u! K# ?8 f0 D8 k' n- l
LPSKILL lpSkill = &(m_aJobSkill);
! m6 E/ u( n2 {+ m if( lpSkill && lpSkill->dwSkill != NULL_ID )& {1 z" U# X) c3 W8 J3 Y
{
1 a l5 c r; Y ^2 N. _ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
) @) E: |5 k+ f4 S! g1 q/ x3 ~4 c if( pSkillProp == NULL )
3 R' D* _% m) s$ z. k0 Y continue;
! z8 d: t# U* k if( pSkillProp->dwItemKind1 != JTYPE_MASTER)2 K5 U2 C* E5 F. c1 @
continue;, g7 d( ~0 P3 f5 p
lpSkill->dwLevel = 5;
# ?* ~- x, {" O% ?/ g% o5 J) D }
! v c( w6 c+ Q. J }
2 Z- \: j; ?, g+ J( V" R: ^. S }/ d" r7 \7 z! ~6 M! M/ o+ t
else if(IsLegendHero()); c$ {; n) F4 D9 K
{
6 X& N: z0 k/ T H+ x( A; ` for( int i = 0; i < MAX_SKILL_JOB; i++ ) 5 G1 E4 C; E p, D, i! v
{ ; b, \. h3 ]" ]" H! Y* D
LPSKILL lpSkill = &(m_aJobSkill);
' y1 M- P5 A0 s2 }! k3 i if( lpSkill && lpSkill->dwSkill != NULL_ID ), f# D, x U4 k( H* F
{9 d9 q5 v- M; T+ e0 `( h( i% O# O
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
& P& C# ~7 @+ O: x; y- v7 I% k+ { if( pSkillProp == NULL )
: l4 w4 }: e7 L; F$ A continue;
; _* ?3 K: j# H* j, I. [ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
2 F7 n6 `% ]0 A0 g; @# G continue;* q& a0 k# N7 d0 u+ {
lpSkill->dwLevel = 5;
% k. T% S- W4 _+ g( z }0 G# T: A. p7 _5 ?. V/ L5 L! k
}
( i- n: ^1 j: c3 n) {$ g# k }
. A8 G$ z$ p9 u5 R, d" f9 G9 M#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans0 {( O- t$ J! N3 \; s
if( bGamma )
$ \0 Z8 c# f; l5 b. X {$ f- ^& C# I5 N& k2 c$ n8 G7 O
m_nExp1 = 0;9 p1 e4 u7 D5 H" u3 [
}/ X2 S5 Z3 C+ k# K2 G Q1 x" A, x
$ |( X9 D7 U5 V$ n/ }6 U- C5 i$ B ( (CUser*)this )->AddSetChangeJob( nJob );
5 ^* l1 c' u6 {+ g g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
6 x$ G0 e% H* x
4 a: i! ^8 C6 u" `! i' U- h; c- S
3 t' @/ N; i4 V& P& {: d#if __VER >= 11 // __SYS_PLAYER_DATA. F$ d, f+ n" N! S( h2 u
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );$ }, p( o/ c" X$ d+ D
#else // __SYS_PLAYER_DATA: G6 J9 G1 O S% j, C+ j
g_DPCoreClient.SendPartyMemberJob( (CUser*)this ); y" F: i" b$ b3 |
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );5 Q! ~( a) z& v' `! x- o' b
if( m_idGuild != 0 )7 k% y6 i7 V1 C7 b
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
' h ]: D% z8 Q#endif // __SYS_PLAYER_DATA
, B# _( H5 X. m9 v. z+ D0 o SetHitPoint( GetMaxHitPoint() );- k; D0 Z2 E2 Y! J) U' p
SetManaPoint( GetMaxManaPoint() );9 b j& U) w1 g+ a3 E4 E
SetFatiguePoint( GetMaxFatiguePoint() );
5 Q0 W+ I( ]2 P) `4 p7 b if( nJob >= 1 && nJob <= 4 )
6 r8 d5 f6 Q% c7 K4 f {
/ W t0 ^) y7 H+ T; t2 e m_nStr = m_nSta = m_nDex = m_nInt = 15;
m: ?1 D4 z' h5 |9 P m_nRemainGP = 28; Q5 I: H5 T1 \. ?3 p/ T* _
}
+ Q/ {+ w% Z$ L1 B if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
) F% y& `2 O8 L" r' V% F {
+ g4 \: m; h* ]4 @ m_nRemainGP = 118;
# L% ^5 k( B s4 K //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;: s. ^2 m" ^' F
m_nStr = m_nSta = m_nDex = m_nInt = 15;$ `8 }6 l8 K+ A( y1 N0 z' z
}
: j# P5 R) ^1 ]8 M/ y5 l if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )+ o; F9 l4 Q! D
{- _4 A1 M4 C+ @' ]. |7 l
CItemElem itemelem;
! b0 V/ D, `9 D$ C itemelem.m_nItemNum = 1;: I4 ^! O* @- G* W
itemelem.m_bCharged = TRUE;0 l+ N; a/ n+ C- T6 [) i0 |* b
BYTE nID;
1 Z0 @& T1 ^" d- Q: ]. M* G( h8 V# B; f) ?+ k9 V; L2 I5 p4 Z3 D4 D
if( nJob == JOB_MENTALIST_HERO )
9 D: C# K' N& E1 W itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
9 n- \3 y9 C! ?* `. q* _- e if( nJob == JOB_FORCEMASTER_HERO ) G9 S; C' g& X% t s2 I
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;' g& \6 e* T$ g8 O
1 q6 P: X9 E5 \8 S, r7 y1 O/ _: R ( ( CUser*)this)->CreateItem( &itemelem, &nID );& J' |6 [! }) D4 H
}
+ C9 @" p* ^ _9 `& e g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
, b( \/ ^+ v- _1 R9 V ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
# b/ m2 `1 v8 u) e: S6 p0 ] ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
5 w3 F9 q5 l5 a: E( Q" x2 q, A! t /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );( @ c3 Q/ I8 s
( (CUser*)this )->AddTaskBar();*/# R& Q9 _8 z$ X, d* I" G7 T
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
5 g' }3 o. e9 ?* l; O4 p#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?4 C; b% ]/ M6 [ r& s
((CUser*)this)->CheckHonorStat();
6 F! l8 u; P9 `/ F8 ~ Y( O4 d ((CUser*)this)->AddHonorListAck();
. H( L2 G! o6 h3 p% g8 y! b2 s! P# v g_UserMng.AddHonorTitleChange( this, m_nHonor);
/ \2 W, p+ g* C7 I#endif // __HONORABLE_TITLE // ′Tà?
* [6 W/ L% B: [( ` }6 t+ M, }: z; R! D/ ?
#endif // __WORLDSERVER
$ m% ~' B3 b6 e0 w4 e8 g} * L7 a! r# ?- r; q; ?
; r, W$ \# b* r, v" l$ _* ]
然后你进入functextcmd.cpp并添加以下0 P0 \6 N1 g% s" r( w$ e, @. T J1 h
( o* t+ ]4 P+ A$ L; ~: y- K代码:
2 |; R* R: M" E' U4 @- a# eON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )2 Z; U3 o, M1 p8 G4 u$ t4 Y7 u
下面插入
! i, E( L. B. ^/ v. a5 JON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
% K! N0 ^; m. _% }8 B1 s; z s0 u- l3 R
然后你去+ P5 z# t4 q8 ^) B. ?) B
& O7 d( \4 t' g5 V
代码:
, E' v! R8 o1 j. ]: J代码
7 ~$ i$ q( d- R. qBOOL TextCmd_ClearPropose( CScanner & s )
1 G2 Y7 v2 u# D; M: V{
9 Q j, M6 ?; D8 F#ifdef __WORLDSERVER/ }& e7 G3 G/ Z6 g2 Y
CUser* pUser = (CUser*)s.dwValue;
0 p4 ^6 c7 U) \7 ^ g_dpDBClient.SendClearPropose();$ V. d4 B: O& A( W# M' B
#endif // __WORLDSERVER
( t J0 Q1 D3 o4 L6 H return TRUE;- F4 K& v, b& I. T8 R1 U
}9 p& o( k# t3 U& A, @- n
下面插入
/ Z0 c- j0 W' s" Q5 KBOOL TextCmd_rebirth( CScanner& scanner )9 n2 U1 E6 V+ G, V8 |
{
( M; g7 h. W5 D#ifdef __WORLDSERVER
, n8 J, l* `3 w/ D1 s: E( ZCUser *pUser;; h# D) m/ ~8 P8 Y) s: T7 {
pUser = (CUser*)scanner.dwValue;
; h! j* B, R- z6 W1 u0 eif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())) ^5 v2 c- @& `% T- F8 V2 p, g+ V
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);+ i5 H! P+ M- A
else3 G! m- }% Y d4 _. [3 y
pUser->AddText("你还未达到重生条件!");8 t$ V+ T- h! T& |
#endif: \3 _8 L& V* C O( Z
return TRUE;
, _ G8 h# _; P3 z}
h# J5 H6 J& G$ T
% k( k5 E$ V1 j% `( j* a& ~$ l
" o& x6 M; d' [2 I7 \3 | p
s$ F$ o% ~& V# c
|
|