|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel# \& M+ @- W& ]
) ~: E' E- y! \3 yMover.h
# c& g2 t- h% Y8 ^0 q代码:
3 }8 P O/ x& y5 c/ x( h% y找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
9 P9 @( S5 {2 V7 ]8 {
8 h1 {- z7 U/ s2 [7 E& ^1 F下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 9 Z, @4 M; y+ G
3 _9 C- |0 D. r7 x5 N/ u
然后你去mover.cpp添加& H" O, N/ d7 ~3 K+ E9 N+ v# D. ]
$ o" |8 r, j8 B; F6 [! G5 R
代码:
' ~& Z" d7 d) E& n3 bvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )! O- q' x+ d. H, n4 g4 f, H
{
: N$ k& |- O1 R( N#ifdef __WORLDSERVER% W- p1 W# a- p
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
5 H3 h; e+ t' E5 u MoverProp* pProp = GetProp();
$ L0 m. \/ J! p2 ] if( pProp )2 |2 K) P T0 c2 G" u( P2 M( k
{. D) Y& _) o; |, Q: t& T2 S
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
3 B: z% K. F, j! Q {' p3 V* U9 w" d5 G
AddChangeJob( nJob );/ R6 o! X( ?& [
}else{5 @ Y$ g! m3 Z: ~( \+ h
return;6 E1 C- m+ a( a& o) ^) P
}
+ X- b* G2 R$ Q: T+ i* a int nPoint = 0;0 L# E$ [$ R; k. w! B
if( m_nJob == JOB_MERCENARY )" T ]3 p/ F/ ~
nPoint += 40;
) H! i2 h- [5 k else if( m_nJob == JOB_ACROBAT )
8 O2 ~" L4 Y0 N- N6 q6 h$ `! ` nPoint += 50;
* P( f, O5 M8 ~+ L else if( m_nJob == JOB_ASSIST )' B8 M$ p" {3 ~# A) C0 l7 L
nPoint += 60;. |4 I3 ]( |% T U: ~4 \
else if( m_nJob == JOB_MAGICIAN )
& I0 M/ F" z* s* Q; N e nPoint += 90;
1 d; O8 _4 j; N/ I$ {' Y% D else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )2 `' Q. T( V' j. h0 [4 m% K5 J
nPoint += 120;# m1 H' Q: s$ h% |4 s* G2 u1 V
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )8 B4 u9 C u! q7 C- F
nPoint += 150;
2 F7 F! {/ [3 C5 y' F4 g else if( m_nJob == JOB_RINGMASTER )
" a( U2 Y4 V2 ` nPoint += 160;
7 U& b8 g+ F: [3 v8 R' H4 Z. K else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ) D1 J8 ?# s* X2 i: g o+ Q! q
nPoint += 180;
9 y4 I. Q6 {5 e else if( m_nJob == JOB_ELEMENTOR )
' g6 k3 H" Z3 p6 r nPoint += 390;& ^$ E4 e n( j' @
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
8 s8 r* v8 M# o$ ]! O nPoint += 120;
3 k3 N5 B* ?8 j2 |6 M else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
' Q" S: x2 z% S4 I nPoint += 150;
5 \' i8 t% G" v( G% v3 S& ? else if( nJob == JOB_FLORIST_HERO )
0 D- W/ Q9 Y7 A% } nPoint += 160;* g3 k2 e8 c- [2 C! V1 Z
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )! o E8 Q" F# j4 z" c; P `3 S
nPoint += 180;8 {4 `8 o$ o% S; D
else if( nJob == JOB_ELEMENTORLORD_HERO ), `) g+ m2 i, I/ E% c) ]2 x
nPoint += 390;0 N* @3 {; |# _$ S% c& _
7 G' C _/ W$ H4 W) l# O$ ]. d1 P
AddSkillPoint( nPoint );
* F7 q I! k1 y* P* ^# e; g! J5 h m_nLevel = nLevel;7 X' m a3 a3 I. L7 t; m5 d& y
# D, w9 }. g' T b: J. k* ~1 M
SetJobLevel( nLevel, nJob );
( N' D- N& G" Y [' X) V+ R# j m_nDeathLevel = nLevel;
- o% b, O# M* E. P& o9 a#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans# m4 q# d4 O7 z
if(IsMaster())
# c' U6 M& W* Q: b' ?0 p {: Y! [: [! D k3 ^1 d
int dwTmpSkLevel = 1;//60, 72, 84, 96, 1085 V+ ^. d0 y$ L1 G ]
if( nLevel > 59 && nLevel < 72 )$ \ S T3 P, L3 j
dwTmpSkLevel = 1;& M9 t+ o% M2 P9 u6 F# d, Z! B
else if( nLevel > 71 && nLevel < 84 ), I/ d8 D9 [/ ^9 _
dwTmpSkLevel = 2;2 l6 ~# e* Q/ E2 \5 L
else if( nLevel > 83 && nLevel < 96 )
r. X, a8 d. A1 Z, @7 s/ R: @0 | S* Q dwTmpSkLevel = 3; R( V8 F, x, Y5 z4 L# D' ]3 a5 O
else if( nLevel > 95 && nLevel < 108 )
/ y/ m) N R( J( C dwTmpSkLevel = 4;
5 i( W% f; M" D' `3 _ else if( nLevel > 107 && nLevel < 120 )
: h# u4 R9 G) O4 l- Z7 ? dwTmpSkLevel = 5;
! g6 `, N+ R; b& H2 ^ for( int i = 0; i < MAX_SKILL_JOB; i++ ) 7 J v v0 g2 F& v* f5 s9 Q2 X. w
{ 8 I" u+ Q4 g& s. @( i9 N5 H
LPSKILL lpSkill = &(m_aJobSkill);
9 e- J4 O% t2 M, w. b' D' ^* X1 I1 Q if( lpSkill && lpSkill->dwSkill != NULL_ID )
/ O" C/ t# {2 `! s1 n2 H. L1 n {) Y! R2 h2 L. J0 {
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 1 o; f: A; C, ^( y# M
if( pSkillProp == NULL )
( @0 u% G g; C0 B2 U! r continue;
$ u) W8 v+ i% |" G$ Q# F# M if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
/ T9 l8 p) y1 G3 y6 i& n continue;
& K2 J$ g- I0 K, {0 T lpSkill->dwLevel = dwTmpSkLevel;
, p" @& L2 V& s; } }
2 s+ ?' O* I/ V$ K8 K }
; X5 B) Y' a" B+ H# u& ? }
6 i6 d( Z; w( Z1 N' A. b else if(IsHero())
+ b9 M& i+ m/ P. ^ {
" @ K( k" Z, } for( int i = 0; i < MAX_SKILL_JOB; i++ ) 3 K: o9 u* f. C, e' A' ~) m1 t
{ 5 }3 H9 H& M9 J% ]* W
LPSKILL lpSkill = &(m_aJobSkill);
, E" a# u/ X2 s( o3 h if( lpSkill && lpSkill->dwSkill != NULL_ID )7 N9 q7 ` b7 e2 E* n- s. I
{7 J4 m; S& y3 J, x/ x$ N
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
) L- c. \- _2 i' K' W8 ^ if( pSkillProp == NULL )$ N* j9 o. F. W" @+ c$ Z
continue;
r R, Y: w8 `' _$ v if( pSkillProp->dwItemKind1 != JTYPE_MASTER)8 G9 A- W) A6 ]5 R& ^: N8 l4 j
continue;
) Z/ b# S: ]/ L9 l6 F* Y& ` lpSkill->dwLevel = 5;
/ F/ a- a5 \6 ]3 P }: ~& V* Y3 S' [; i
}
' H( d4 d- f) `9 l# a }, X# q! Q5 \! h0 [8 U4 a
else if(IsLegendHero())
7 h, A" u) h s) \ {
* ]: L8 B, l7 o" I) t" K for( int i = 0; i < MAX_SKILL_JOB; i++ ) 7 i( t9 _ m+ ~( d) o% ~
{ a9 x' M; Y+ B- p
LPSKILL lpSkill = &(m_aJobSkill);3 D: U! @, _: l
if( lpSkill && lpSkill->dwSkill != NULL_ID )% k4 y' W) }9 ~
{8 n+ \, [* A) Y3 R
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ) Y5 j# t) I7 N& c# U0 ?
if( pSkillProp == NULL )
" U& x3 D0 ~; O9 O: S" H continue;& @( k* b0 V& {3 C- O! h. d8 C+ D
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
# B. B, Q [( N; C continue;
8 |" \/ [8 x0 @ lpSkill->dwLevel = 5;
5 J. z* G. b. n! e2 p' h+ W; Q }7 D1 t9 L5 Z2 l" H- X: \3 L
}
/ f4 N# g) ] u8 \5 N) k }
3 l$ U1 u2 Z- j; K( `1 W#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans# h" J& s- r( N: B
if( bGamma )
, C% K2 }5 f+ B/ z5 G( o' T" U( @. k {
+ ^; b+ _: \( O$ j m_nExp1 = 0;! ?' w, F7 `! D+ N/ }5 ~5 k
}
0 {# F, Z5 A; W
% g x- f) q. ]$ G ( (CUser*)this )->AddSetChangeJob( nJob );& J% \9 C1 C3 f+ M( \. A4 H$ g- P& k
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
" {% s" s: o b# Z" ]/ G# v2 z G, F1 @
7 h. E% D- u6 W8 @$ ~6 G. M5 W4 s6 r7 p
#if __VER >= 11 // __SYS_PLAYER_DATA# q. v" v- c5 |/ J i1 C
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
( `+ v1 _8 V' O4 H5 k. E9 _; G#else // __SYS_PLAYER_DATA9 S( N1 i7 F8 x1 \/ o7 t& S; U, c$ d
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
# Q* g$ g1 E7 p% r' z/ u% H g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
5 g: p! R4 f/ i( \, l% e6 M3 D4 \* Z if( m_idGuild != 0 )
: M. \1 ^3 Q- D5 m, E- N g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );- o3 ?& u6 S& _8 o. N
#endif // __SYS_PLAYER_DATA# H) g2 p( \, [+ y
SetHitPoint( GetMaxHitPoint() );
& p7 Z4 V* s2 h7 L: I; D7 Z SetManaPoint( GetMaxManaPoint() );( l, |, {2 m8 A9 Y
SetFatiguePoint( GetMaxFatiguePoint() );/ O# E- P% m- s+ G8 M
if( nJob >= 1 && nJob <= 4 )
4 v$ u% }; S, m6 F8 M/ T {
4 g) G$ p7 R0 t7 ~) [$ j m_nStr = m_nSta = m_nDex = m_nInt = 15;3 b! s/ i2 N& z# @# \9 l
m_nRemainGP = 28;4 ?5 r/ q5 a5 W: B+ x0 Q2 e w) Q
}
% M8 g/ D* g$ `3 q+ | if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
) [/ t1 r- E g) ~ {: f7 E" v: H Z' j% M3 p1 R1 j
m_nRemainGP = 118;
7 c7 Q/ A- x1 e5 }4 Y! |& \7 H //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
0 M! S+ s5 }2 J9 M& A m_nStr = m_nSta = m_nDex = m_nInt = 15;
: Y, }+ D5 w& E/ Q# @ }
3 p+ D- p! V W! k if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
) Z5 P1 d, @/ u1 \ {/ X% ^! C" X3 ~3 W
CItemElem itemelem;. S9 L3 @+ J7 n' O
itemelem.m_nItemNum = 1;% a1 `& V9 w0 Z% i; X2 e
itemelem.m_bCharged = TRUE;
' \* }3 b7 L9 s6 Z8 ~ BYTE nID;
9 u2 T. [# j( Z+ _1 F! r0 D; F( b# r; L
if( nJob == JOB_MENTALIST_HERO )
. ?4 Y& s Z: Q# Y; k) | itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;7 ^& x8 ~3 i5 w5 Y4 ~8 h) j
if( nJob == JOB_FORCEMASTER_HERO )
' B4 J% O6 R8 w" a8 o* e3 N itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;! S' Z9 u! q" o
v; b4 [, T0 O, c7 v3 ~+ z9 H
( ( CUser*)this)->CreateItem( &itemelem, &nID );
" }' t% t$ p+ d7 A- {5 u }1 `1 T1 S1 P- L9 ?" G
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
" C4 l; M( M$ | O6 a2 ?; I ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
3 q( D% z5 }- S; ]" M& Z7 w/ B ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );: f* H: `, [8 w* _8 C1 @) q, @
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
" m3 w5 i8 Z+ V- R& ]8 c ( (CUser*)this )->AddTaskBar();*/
$ B7 \: P+ Z* q; W ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
0 O* M( v2 u t$ \* P4 T; t#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?* k- N e! H2 w9 k2 X5 v1 e
((CUser*)this)->CheckHonorStat();8 s" V. E- I# o& c: R
((CUser*)this)->AddHonorListAck();& ?, i& r1 f1 Y: e/ u; W+ q0 N4 E
g_UserMng.AddHonorTitleChange( this, m_nHonor);
; }6 i: ^9 N" i9 |/ b7 l& h#endif // __HONORABLE_TITLE // ′Tà?( x4 r: L4 }; a4 {3 m1 R( Z
}0 m) V' _/ }' K) k6 d
#endif // __WORLDSERVER1 u* r: o& }! m
} ( R7 C+ G$ g3 C1 V3 @0 x
. L6 K2 j7 h; y- h
然后你进入functextcmd.cpp并添加以下4 L/ [7 Q3 Q) f, H U
+ J/ {$ G' V* R. x5 v代码:" U( e* p, d0 U, f
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ): X+ x7 T* ~1 c* z
下面插入
4 c, V% H: _( m. @& QON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ; l4 @( S8 T# q
% u# t" s6 \# C" E/ q" ^1 g. R然后你去
% H0 ?- P& @" R4 ]9 v$ u2 f4 w) o8 B. n" |5 V
代码:
8 w! T/ _& ~0 l% `) Y代码& q3 b' M7 a! j5 G* w
BOOL TextCmd_ClearPropose( CScanner & s )2 o6 h) P3 G- Y G2 d$ v
{" w$ O9 W V4 q i. q
#ifdef __WORLDSERVER" A3 m( k" E# A+ S& [; e
CUser* pUser = (CUser*)s.dwValue;9 u/ Q; }9 f% Y
g_dpDBClient.SendClearPropose();
2 w, P6 h% q; P! k#endif // __WORLDSERVER
# T2 \! E" p) s8 o( ]% Z return TRUE;
4 a7 q1 c- g4 f- C/ V/ M9 ]} X! f* y; U5 x5 K) d6 f2 t
下面插入
1 G9 L. a% k+ B; OBOOL TextCmd_rebirth( CScanner& scanner )* Z6 J& T9 h: _, @
{8 Q/ i) ?' A9 e; w
#ifdef __WORLDSERVER
' F' `4 X3 U, ~CUser *pUser;& i& Q4 b% w4 n! I* w
pUser = (CUser*)scanner.dwValue;
% A. l/ }8 J" \% U% `& vif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())4 f; \" B* l) C, `8 i! l( [' k c! z
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);* ]7 [# @) f; L1 W
else2 C. d: T8 l# t j
pUser->AddText("你还未达到重生条件!");
7 }: L; Q' E( S' b5 U+ c* r8 ?#endif
8 i; a/ u7 k0 ~# areturn TRUE;8 _( X( q; L/ t: L2 I6 f
}
; H( J. K8 d9 h3 e1 D. W5 E3 t" M; R8 P3 P
9 k' ?0 E1 e( _1 s( A1 D* \; v) R2 a
+ U% P5 n9 t0 E% Z0 G! g6 a7 i
$ q5 `+ U5 i( t w3 U1 U- |$ D |
|