|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
' ^7 d' k' I, H+ S
) V0 H; l) s1 U! DMover.h
5 ]$ |/ i* j1 y0 W; `代码:4 F/ R, j/ M6 p% A
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
4 ~8 q9 R8 g/ ?0 `( x r' F @4 o# |) Y4 C2 y( b- `6 ~
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 8 K6 ]( \0 ~1 J& t3 v
" D% W( A& t, F$ I+ ^
然后你去mover.cpp添加
9 K! D. y. }5 P
$ ]: l! r* E( h0 B# K& W9 O代码:4 d, D- {0 y6 @! x/ h+ z/ u8 z9 q
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )$ A& W+ K* @* x2 k: r# R2 v
{
9 N* z O1 O* s% }9 E#ifdef __WORLDSERVER
3 K; W3 D- ^3 n$ B // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó" d ]* B; c0 K9 Q X
MoverProp* pProp = GetProp();( j% E A) c7 }" J' N7 i
if( pProp )
" |- ^, B, W3 p6 d/ r- B {: ?; E: o- n# i$ u3 B
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
9 N0 v4 ?' I7 M: g% V9 ^ {
9 R/ G" R- K( \& P2 q2 i( K AddChangeJob( nJob );5 s" p3 a& D9 G' Q) k k( ?
}else{ [; R) i" X q. R1 e
return;) X# C% P8 [5 N1 x( v
}% r2 V7 N- M" D4 [9 m: m C
int nPoint = 0;
+ d% r$ p! e1 l8 Q( _& W5 u if( m_nJob == JOB_MERCENARY )- r( f, f0 Z' y p5 G- p: c8 y2 f
nPoint += 40;4 O4 h! C" l5 D# b; e6 _
else if( m_nJob == JOB_ACROBAT )
; F& a# a3 L0 l; E( r nPoint += 50;! {# M5 S/ K/ J8 |/ y3 Y v# F
else if( m_nJob == JOB_ASSIST )) L0 E) u: u" T' Z# c8 _* F
nPoint += 60;6 H, J. q1 M9 M+ }7 J0 K+ d# h
else if( m_nJob == JOB_MAGICIAN )
8 L4 _4 t2 D+ i! [7 ?$ J nPoint += 90;
1 f8 c% Y! q2 E4 ^6 _ else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
5 S5 A) D* M# |# n8 K- V/ R9 W7 F nPoint += 120;
9 A8 Q0 n1 O2 u* Z7 J9 q* H ~" j else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )" r1 E* c* B& Y% t0 C/ Y5 ]
nPoint += 150;. s L p8 ?* F" P
else if( m_nJob == JOB_RINGMASTER ). h8 D+ z4 G% S6 N
nPoint += 160;
3 }/ L3 O6 ]5 M! C2 K2 q& L, P else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
) z' `7 d: { k nPoint += 180;
; z: N, D Q! W* p, l( D3 T C else if( m_nJob == JOB_ELEMENTOR )7 B9 j5 k L; x' i/ }3 i) d
nPoint += 390;
1 d ~; y" g" ], B) u/ u- n else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )& n5 E- s! `2 U/ M
nPoint += 120;6 ~; N. \0 s9 E' z$ d
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )% C" B+ [+ z2 o. i/ q% v
nPoint += 150;5 H4 {' X2 D0 k" {' f: e4 s& z- W
else if( nJob == JOB_FLORIST_HERO )( ]0 e4 W8 @5 g8 R; |8 V
nPoint += 160;3 D" c1 i6 B) C C! O3 K+ t3 R H
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
5 ^4 Y- q7 S& d9 p+ Q) I nPoint += 180;
% U0 |& b/ i- u# O+ z/ J5 `8 a else if( nJob == JOB_ELEMENTORLORD_HERO )4 s8 a' ~0 |" b6 X( K
nPoint += 390;; s( h0 W+ V6 b" x
. S, m: H1 y- M
AddSkillPoint( nPoint );
! P1 ~( s0 i- g: T; w m_nLevel = nLevel;
, B2 `8 R' G; v" n# r5 B3 n0 H5 M6 P4 p. f& P9 l
SetJobLevel( nLevel, nJob );$ t' T, D; I Q7 J0 K
m_nDeathLevel = nLevel;
! L( a& [0 u/ y b+ m7 K, ]/ m#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans; R; ^( n2 b% @; I+ a$ ~) Z8 q! z7 f6 V8 ~
if(IsMaster())
' e7 J/ H- @+ A: }! e$ _ {
$ e8 _2 N \# G# f e& a int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
! s- d t# l8 z+ F" c5 m7 g if( nLevel > 59 && nLevel < 72 )
2 z8 x8 o4 r% c$ l7 ^ dwTmpSkLevel = 1;
. u+ F' M* n; U8 W8 T7 y% h7 k else if( nLevel > 71 && nLevel < 84 )6 F6 x9 K3 O R2 x m y9 M" p
dwTmpSkLevel = 2;& K0 b0 s7 c* U: y" t" e
else if( nLevel > 83 && nLevel < 96 )
7 t( G! n; p, d' n- I dwTmpSkLevel = 3;
p* R- I& ]8 L% d" ~- b$ ^; G( ? else if( nLevel > 95 && nLevel < 108 ); n% D, T* R8 k6 p. c8 Y
dwTmpSkLevel = 4;+ _; f! r% q) q& R/ Z
else if( nLevel > 107 && nLevel < 120 )
6 X8 f! J( N# o& L4 Y$ o dwTmpSkLevel = 5;4 H& |' x6 ?* F, v* A* q5 h
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 6 G! S. B2 E9 J; D u/ G
{
' ~+ o/ ^# F5 n LPSKILL lpSkill = &(m_aJobSkill);
/ Y" R+ `$ J/ m. v6 D if( lpSkill && lpSkill->dwSkill != NULL_ID )7 M) E; ~" P% M5 L5 L# @
{
2 C4 m4 E5 d' R4 F n/ k9 w ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); + x, A3 `6 G; N) M3 |
if( pSkillProp == NULL )4 t6 x2 `# [% e
continue;
# z9 ]( Z% j" [( ~ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)& v7 M1 _- l1 h! s# e1 ^% J9 \
continue;- \3 y8 q6 O% K! J0 j& e' D) b
lpSkill->dwLevel = dwTmpSkLevel;% I& X+ n1 U4 N; |; c5 W
}
+ z7 ~' O7 ^' O/ S' ?: x }: m7 q% |' h% {7 u
}
x: n. \4 H6 a$ d; [ else if(IsHero())% }" j1 n) T) h9 c
{
5 v% k: n, V+ n/ G5 H" u$ p+ N5 G for( int i = 0; i < MAX_SKILL_JOB; i++ ) : `6 V% E6 j% s* l' U- d& H- K
{ * }) T' n9 Y4 Z, |6 s9 M& N
LPSKILL lpSkill = &(m_aJobSkill);5 [& E3 A2 C$ t4 A
if( lpSkill && lpSkill->dwSkill != NULL_ID )+ C9 I9 g% p8 M4 `
{
1 b: G* I ]8 I$ W6 G ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
2 ]: c! b; a2 J7 E* V if( pSkillProp == NULL )
( C( W2 U& `1 e9 _1 {7 ^8 T( `, s ~ continue;
/ b8 n* Y3 \8 C% Z/ o if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
/ H+ d' u& u7 E, ? c continue;
* j1 P8 h' ~# Y, W4 Y4 |2 q lpSkill->dwLevel = 5;
( I' a# z. q* ~2 L, B }; _$ @, `+ ?0 X' m0 U4 f# |0 t# ]9 ~
}3 H( d( a, J& G, r3 K7 `. R
}: R1 n& h4 [' y# P: [
else if(IsLegendHero()), e1 p6 v. R- x& Y0 |: o
{
& Q& @6 d5 H& I+ x/ a0 c for( int i = 0; i < MAX_SKILL_JOB; i++ ) 4 Q% r, a. a2 Z
{ % Z( q# i3 `" M9 z8 m1 E( v% ?
LPSKILL lpSkill = &(m_aJobSkill);
% F8 ?/ W9 H# Q if( lpSkill && lpSkill->dwSkill != NULL_ID )& b' t d, y3 T/ H; n
{
4 F; ?* R, q* J) G! f7 ~9 T% F ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ' C; i+ o1 R5 ?+ q. x, `9 m! V- T
if( pSkillProp == NULL )
+ H2 M) s% j7 R1 W- q7 k' B continue;+ H" u/ y, v! W/ d3 ?5 ]5 M3 ]+ K
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)4 v# g- i9 @4 N/ x! m; H/ J0 [3 r
continue;( q; M( ]9 W8 m# S9 V; o: f8 Y
lpSkill->dwLevel = 5;% W. p4 k: \$ f7 z B' S, ` ?
}4 R9 t# p5 W$ |% m
}2 Q; F1 n# @' [5 B% `
}
% q7 X! o1 m: p1 u7 E6 H#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
9 L# e! y+ e+ X4 | if( bGamma )
# r6 g4 d# i& B0 j/ f {* A. C, c6 {' _# _/ J- h$ D1 H
m_nExp1 = 0;
8 v6 O1 ?8 h V- d }; d- s# V+ K8 V; N c
: H9 T+ V, M# x) y& f
( (CUser*)this )->AddSetChangeJob( nJob );
4 Q! \$ T! ~% z9 v. W4 R2 N g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );5 H# q- Z' m( v
1 E; z) \8 ?8 g5 e
3 X( `: B }9 I7 q; O5 N#if __VER >= 11 // __SYS_PLAYER_DATA: K, P ?9 U c
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );. h" x2 O$ a# j9 a" [, i
#else // __SYS_PLAYER_DATA! v& e, i6 {& H
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );" w! n- T1 T7 m& ~9 f& o
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );/ w4 Q+ l$ _5 p) [+ B- F
if( m_idGuild != 0 )
: o- { G. d5 y5 R g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
1 }5 P S! C- ]; P3 _4 l& h#endif // __SYS_PLAYER_DATA
5 d- B. k p) l$ U SetHitPoint( GetMaxHitPoint() );. F' h, m, M1 ~0 S/ V3 `4 `7 i4 y% f
SetManaPoint( GetMaxManaPoint() );
; L9 m, p3 _- m' m* W! S0 b3 j SetFatiguePoint( GetMaxFatiguePoint() );
. Q8 O/ i/ @! d if( nJob >= 1 && nJob <= 4 )* b. v6 R; r- {8 T: B1 S3 l
{
9 g& F+ k. V0 H: q) K5 I. c m_nStr = m_nSta = m_nDex = m_nInt = 15;
$ d/ a, R8 r) ~# R m_nRemainGP = 28;0 D( T& M; U, P5 Z8 {
}) G1 G% x# B& p
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )3 u' y+ @: @. x, H; @! O
{0 t @6 ]0 y5 e6 J
m_nRemainGP = 118;5 r( o0 D( ]; j& B' \5 v" c
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;! M0 ~7 S1 ?$ ~& R3 e* A
m_nStr = m_nSta = m_nDex = m_nInt = 15;
- m" e. `1 H3 Y% [ }9 B3 g9 R* S* r3 o
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ), l |4 Z4 K4 B% k$ A
{
( k% y. i7 v, L$ z1 f8 ?$ ^8 t CItemElem itemelem;
. f5 }1 W( `9 j$ |6 M itemelem.m_nItemNum = 1;" d% ~% l* P! |4 V9 Y1 q
itemelem.m_bCharged = TRUE;0 u) {( c( c8 H3 N2 R: P
BYTE nID;( b$ L x. i' v6 L; {6 n
$ |) q. [8 @1 E+ X W
if( nJob == JOB_MENTALIST_HERO )
% ^+ t! K- X; J itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
; l P; X! n! o$ q; S a if( nJob == JOB_FORCEMASTER_HERO )
' w& \. ?, r3 C' |+ s itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
2 \" e$ |! n! M6 k, [1 P( h7 @# C' s
7 f& M: P" l U5 x8 d2 R% F( R ( ( CUser*)this)->CreateItem( &itemelem, &nID );! m, s' i9 t3 w! J0 s; v) W
}1 J& j* g3 b& P
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
4 H! e( N% {1 f; S0 v( j1 d* U ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
0 ]3 K1 M2 T+ Z" h* v' I1 | ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
! c& T. }5 j( f( P /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );6 U. f3 H8 ]! o+ K7 \
( (CUser*)this )->AddTaskBar();*/, `; t( Y& l2 |2 n
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
! @# i0 V0 R: N* N) T$ _#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
! K: Z! Z9 j6 |4 ]9 e ((CUser*)this)->CheckHonorStat();
7 ]3 O* E ^7 D- X ((CUser*)this)->AddHonorListAck();# A+ m& M7 j1 i# x7 ~0 _4 b
g_UserMng.AddHonorTitleChange( this, m_nHonor);
9 l! Z# P, e% s D3 E#endif // __HONORABLE_TITLE // ′Tà?
@/ U. ]# M6 }; u9 n- e# p- Z }2 W9 y7 @, S2 M; I
#endif // __WORLDSERVER, R7 R! T P" a0 U( L5 W: F
} + w0 S; a; x9 u, Q0 F( F" G
& A0 X7 ^$ Q5 q1 N" b+ C8 `然后你进入functextcmd.cpp并添加以下
: d/ S% @; c3 _2 @4 B* G& L' G5 }0 ~- X2 g5 |' D
代码:
! s4 |" R7 k: lON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )" M. f' i" s! |: _' @+ b& f
下面插入6 H) _0 @# L H3 g& j1 B) e% V* V
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
. z7 ^- N4 m* }! P8 e
) ~8 n. g: G# ]- t- q- `然后你去6 e% y9 e8 I2 G S3 r
/ e6 Y2 Y9 A8 O& P6 H
代码:
2 X" D' e. b4 ~ m- m& w7 e% o代码, b J" h* W* s) t3 N( {
BOOL TextCmd_ClearPropose( CScanner & s )( s) x* C5 I: P9 ~) ~) a6 T
{
0 {: F; N2 d _) b; \( \) [: J#ifdef __WORLDSERVER1 u! z; ~" ~* Z5 c2 @
CUser* pUser = (CUser*)s.dwValue;
/ y) i# W8 Z& k! i0 O/ P- p( F g_dpDBClient.SendClearPropose();
* B8 [& l5 L& b% e% q#endif // __WORLDSERVER7 B O3 B2 p! y
return TRUE;$ _' y1 U3 `7 W4 i1 X+ F7 Q9 X! f% M# }
}3 H X6 Q. O7 k! J4 d/ l
下面插入6 d8 R3 D. N! ]& m, ^- h4 Y+ S9 A
BOOL TextCmd_rebirth( CScanner& scanner )) E; R6 @! s/ @( @! d9 Q6 w7 M- [9 H
{
9 l/ j8 o$ b+ l7 n#ifdef __WORLDSERVER
" ^6 D, P6 b# P7 u: ^* L# nCUser *pUser;
3 [6 l# V- ^# q, g7 zpUser = (CUser*)scanner.dwValue;
* k. c5 B% ^+ O; }+ Fif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())- Y+ B) ^' M% E: @5 b1 Z8 H" J
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);$ P/ c ]+ [2 O0 g1 w
else
1 I6 J& `0 h) j k" QpUser->AddText("你还未达到重生条件!");
7 A! y: g) N! t8 N: X2 z#endif
$ B& Y" N9 R' C# Zreturn TRUE;0 \6 @: `6 M4 T# v3 X$ Y
}
+ f. F! S# {9 l; n. K1 r+ i4 {4 x& k @" d a" I. f9 X8 \9 [$ e
) e. w. G- T: T# F8 \ b- Y
8 u. ]9 y% i3 [% X5 k7 @
( [( L0 n" h8 [; [) R4 G7 M" W( r |
|