|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel, s) c& w$ Y9 L) S! i4 j9 ^- X
) E* T C5 l" Q% E5 E% b+ F
Mover.h
i4 w/ E! ~* a( [代码:0 k+ ?' Z, D% v* u* B, l! |
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
2 z7 N7 ^0 }( g! i8 ]8 L c6 ?; C" [+ H) p5 y
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; . m- J% H K& V) V G
; g) |5 \/ [; } U然后你去mover.cpp添加
' u% U2 t8 L$ q4 n4 N+ S0 s
% `, @: g# i+ r9 P7 ~代码:
3 N5 s3 v# `' g/ Yvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )$ u; r2 Q7 B6 q# k) \
{% A8 c; w9 h4 f4 a
#ifdef __WORLDSERVER/ w8 x S' @+ x- h
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
) N/ C& f: a5 H2 L1 [1 R2 p MoverProp* pProp = GetProp();/ d$ }3 w U" t9 D
if( pProp )
4 ^8 d. C; {+ T: r) p6 p( m# f {
+ @8 i4 r' e) W4 g7 F% d- L if( nJob > 0 && nJob < MAX_LEGEND_HERO )& w2 ^0 \ ^$ L/ h4 _* z. `
{0 ^4 G! \/ R8 [1 L/ D
AddChangeJob( nJob );* _' e4 P6 B7 k8 Q0 G
}else{
/ d1 _" c1 ~5 L) }8 S% }5 c return;- G! y* W$ Z$ l; o. s4 M6 O& g, V
}
( A3 V5 E! w% J int nPoint = 0;9 `2 R5 C. _; t6 \5 I$ e2 H
if( m_nJob == JOB_MERCENARY )5 P3 M- p1 U& H8 {
nPoint += 40;
. p$ C9 I# R" D8 Z* x' o- K else if( m_nJob == JOB_ACROBAT )
( m! ~+ R9 v5 h) n' }1 P& ~) T nPoint += 50;( N# X; |4 R* f1 |# D$ v3 R
else if( m_nJob == JOB_ASSIST )7 A$ T; n& d( _) U& e/ l
nPoint += 60;0 p8 o! @* X7 j! ]& C" G( s
else if( m_nJob == JOB_MAGICIAN )
/ T) w2 G' R1 M* `6 t nPoint += 90;
4 I3 ^5 {( V1 w# F else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )6 s5 C8 |: u- Q4 {' Y
nPoint += 120;
' P8 E( \1 W5 }; v- Z% N( W% l else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
7 t) A. C V V' j6 g( g nPoint += 150;
. }' r- ~2 R/ \4 F: z* s& n% p else if( m_nJob == JOB_RINGMASTER )9 }+ o7 ]+ N ~3 j) H- |8 T
nPoint += 160;- o5 H& ]" D* u1 I
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )# c, e, b" v1 n' t
nPoint += 180;( p# W# F3 s7 T- e
else if( m_nJob == JOB_ELEMENTOR )
: J5 I0 S- {; ^8 h5 Z: Z nPoint += 390;
( `) q- C! _$ y2 W0 A else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO ): ^9 a7 w9 f0 d2 J
nPoint += 120;' X" Q3 |, \$ ~) @7 o' h4 Q
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )4 Y g0 V5 n+ r/ Z6 v
nPoint += 150;
2 e4 z) p4 M) p2 s% o else if( nJob == JOB_FLORIST_HERO )
+ D6 S! ^" H) `7 n4 b nPoint += 160;; z1 d1 G+ _: |4 O9 ~
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
0 D) _) D8 ^( s1 R8 E nPoint += 180;% H+ I. |! C3 Q
else if( nJob == JOB_ELEMENTORLORD_HERO )' J! n- W7 A9 V, Z& L
nPoint += 390;+ s$ b6 ]# G, d1 G; {
/ \- _3 J: O+ A9 y/ x AddSkillPoint( nPoint );
" j. f4 K. L* D4 S- V$ i2 I m_nLevel = nLevel;/ [* Z* `2 g; A4 h- n
% G8 _" `6 N9 w' y7 b9 o/ ]2 i SetJobLevel( nLevel, nJob );! W) J: @. @- d% }5 ^' s- P
m_nDeathLevel = nLevel;
0 q1 z M! E3 s& {#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans, w: R+ ^9 ?2 I
if(IsMaster())/ p, c) o! l; J' d
{1 y( G. z0 f) S$ z; D
int dwTmpSkLevel = 1;//60, 72, 84, 96, 1088 a# e2 S8 b1 f: B' k
if( nLevel > 59 && nLevel < 72 )# |8 ?& `; X7 s3 L0 d- i- @( ~
dwTmpSkLevel = 1;4 D6 Y! h7 ~) S. f
else if( nLevel > 71 && nLevel < 84 )
- q5 R5 R8 k5 B5 T/ ~ dwTmpSkLevel = 2;/ N/ B4 t) z. _& o
else if( nLevel > 83 && nLevel < 96 )
( c8 H8 _5 W. c2 c; I" E7 u dwTmpSkLevel = 3;. b% \+ L2 J5 h) f7 c
else if( nLevel > 95 && nLevel < 108 )( u+ Y& i( D( _# F0 ?
dwTmpSkLevel = 4;
6 U, u/ @# |% Y0 `" @: _ else if( nLevel > 107 && nLevel < 120 )
* \2 D( A- b" B. G$ y1 m4 I, D dwTmpSkLevel = 5;! i' l1 F4 c! w6 t6 Y" B/ i
for( int i = 0; i < MAX_SKILL_JOB; i++ )
' b" d8 ~0 c9 ~" y; E8 Q4 b; s$ ^ {
) E% Q1 v# e& A( X+ x1 H LPSKILL lpSkill = &(m_aJobSkill);2 ?7 |" w3 v W J- @
if( lpSkill && lpSkill->dwSkill != NULL_ID )* D" Z2 m+ i! G* w# t2 d
{
' Z8 l6 x; {; e' \! k( K4 n3 s ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 5 l0 R0 I1 b: q/ D7 {
if( pSkillProp == NULL )9 S- p4 B8 f5 q/ o
continue;
3 x7 B7 l7 j5 O, c% } if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
4 J# q( I! S% y# Y8 H continue;4 k, U' A! v) ?( j8 ?3 G5 i( ~8 w
lpSkill->dwLevel = dwTmpSkLevel;% C. [5 Z6 j6 j# l& M8 L
}
' O0 U. v' i: k% z& w8 I- G }- L2 c0 n; v& j2 U
}
3 |5 X( y- t* E* i- N: s9 t! w3 X2 s" l else if(IsHero())6 v! Q1 E; {0 o" x- d
{$ T U' F. x( x& h# _7 }0 U9 d
for( int i = 0; i < MAX_SKILL_JOB; i++ )
7 W, M- w5 Q( X& b" ~4 g" v2 k {
2 n. B* ~; |5 x+ r2 |6 h LPSKILL lpSkill = &(m_aJobSkill);
: f, t. C0 i7 M, [/ C; h$ {+ A if( lpSkill && lpSkill->dwSkill != NULL_ID )7 G7 P! S2 B, J3 Y, g
{6 q8 g7 g1 i2 d; G" s0 p
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 6 v1 i, `$ F6 B( E( k8 Z9 [% }" g
if( pSkillProp == NULL )7 e' [ ^* |0 E1 C4 |% B1 q
continue;
) ?; ]% z5 b' |/ E8 P2 k if( pSkillProp->dwItemKind1 != JTYPE_MASTER); o) \. J/ k( O/ @' _
continue;
& O" N8 _9 P* m! v lpSkill->dwLevel = 5;5 b3 P) ^2 o- j& z# {4 a0 r6 R
}% t: W% O8 t( J
}
k2 {% `! w3 ?/ f& ]# C }2 L5 u5 j! C8 J0 e1 U z/ ]
else if(IsLegendHero()): f- s3 @2 a2 r5 a+ g" q6 ~
{. x: Z" Q: {8 n
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ' u! Y* E: v- N* F
{ Q* o; E+ g4 T) D6 Z, I
LPSKILL lpSkill = &(m_aJobSkill);) J: p+ N0 r- P; F6 a
if( lpSkill && lpSkill->dwSkill != NULL_ID ) Q, A5 `& j A* i7 s- Z7 o
{$ K" ]5 I( w0 w0 x/ }# N1 C
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 4 f# @! m6 d4 R; j3 o2 @
if( pSkillProp == NULL )
; Z% `5 H/ O0 J; o: c0 l# k continue;
, ^5 k8 A- d' E% _/ x, p if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
( L3 v9 N6 q, _+ g$ P1 v$ y- W continue;
' S8 V/ u) f) y- Y lpSkill->dwLevel = 5;9 Z8 Z n& d$ _& z$ D
}
% `3 ^/ b7 K/ b8 W- a x' z }: l9 v/ M( f4 m- ~6 z
}( C8 s7 T Y& B% D
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
/ O8 h- p$ ]3 [/ y) n if( bGamma )& Y5 V- _! j1 h c; b5 [" M( q: K
{ Z. e) J* n4 j- j N
m_nExp1 = 0;
% h* p+ C; [( F$ Z( C$ { }
: y4 q; \9 [1 ^( w7 A& F' k2 x3 ]& b
( (CUser*)this )->AddSetChangeJob( nJob );; s v4 K8 g/ \. N( J% J4 c
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
^) |" ]( b% A- p4 f: H; T) B( a4 e; l& }, j
# Q" I2 M4 o. f
#if __VER >= 11 // __SYS_PLAYER_DATA( n$ E0 O% I8 Q g: y$ r1 e, W* ~
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );2 P }- W& m, q, ?
#else // __SYS_PLAYER_DATA
l- @' X) I6 m0 W g_DPCoreClient.SendPartyMemberJob( (CUser*)this );7 N$ |% P8 c8 I/ y
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
# ]: m% t- |6 I8 _+ X# g! A7 ?/ _ if( m_idGuild != 0 )
' @$ l+ v1 c) G; F, U$ a& b4 R g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );7 e( `; Y' H! Q, a( D6 J- f% C0 G2 C
#endif // __SYS_PLAYER_DATA
M) d6 x. Q a3 K. C, L3 A SetHitPoint( GetMaxHitPoint() );6 f2 v# y8 Q# G: D& ]+ q; q; I. ^
SetManaPoint( GetMaxManaPoint() );3 n7 G# q6 x5 P+ R5 a' X
SetFatiguePoint( GetMaxFatiguePoint() );) a! c2 ^( [6 H/ }
if( nJob >= 1 && nJob <= 4 )# b& ^/ r1 S4 p' L# c
{
$ D/ k0 _; k& h; `8 O- c. Z, v m_nStr = m_nSta = m_nDex = m_nInt = 15;7 J$ o* ~+ A# K3 B$ O
m_nRemainGP = 28;
1 a! `( V6 G" V6 {- f v }' P3 J5 Y3 M% ^
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )' J' b* r V: T- F
{$ q+ ?" m8 L' h- S: c/ `0 a N4 ]
m_nRemainGP = 118; B# g3 T* L! |7 T! X
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
2 M& U, H8 E1 q9 y m_nStr = m_nSta = m_nDex = m_nInt = 15;
7 ~+ J8 w1 U7 O/ J, M' z& g0 T4 H }
% R& ^0 ^. g4 n+ z if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
# ]& ^' I, `2 Q: ~* n' U {
: v1 }) x) b, w& o( j CItemElem itemelem;
C' O1 N6 x& C7 w3 o7 ^3 d itemelem.m_nItemNum = 1;0 F% M% M! x! w1 L( |
itemelem.m_bCharged = TRUE;9 A2 B! N: |& t9 N8 K6 i( s
BYTE nID;
6 p- \. @7 F8 v1 ~: X0 H2 Q/ }* J3 b/ I _+ J+ @
if( nJob == JOB_MENTALIST_HERO )
?( f; ^3 d1 ^* V; C itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
7 {5 ^" k5 X# `; E* `, r if( nJob == JOB_FORCEMASTER_HERO )
" X9 S e; W5 K itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;) i4 q: u& }, Y
3 C0 B2 Q N5 B
( ( CUser*)this)->CreateItem( &itemelem, &nID );
& ]9 y% P) _, U% }" Z, g }( }: j; [$ ^) ^ t2 i
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );+ @2 q9 b* I8 r* _
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );4 l! D& T& c8 ~% [. x
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );, u% G" e2 u0 Q N( t1 u9 U
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );& [# t6 B7 ], F" u6 h j4 [7 `
( (CUser*)this )->AddTaskBar();*/
: T( _$ |4 ?" G ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );! k6 G- `+ G$ K/ ^/ @; Z& a
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?, z( }; f, u: [5 @/ k- t
((CUser*)this)->CheckHonorStat();
4 E E9 N5 g5 P) @' q! N ((CUser*)this)->AddHonorListAck();" p+ F0 o: m& @/ N/ P
g_UserMng.AddHonorTitleChange( this, m_nHonor);
! |7 N3 Q7 U/ M2 }* A: V+ V$ n h#endif // __HONORABLE_TITLE // ′Tà?1 M; d4 G8 W. y7 c
}
6 L; f/ _5 A) o0 D2 `#endif // __WORLDSERVER
" C K* |) i( [3 h% _4 V} 6 V, k. @ U2 T: s k; h- ]
( o8 W- z' g4 w9 ~然后你进入functextcmd.cpp并添加以下. M6 D/ u3 L8 M/ u' r
, t$ y- V" W1 Q2 y% N6 j6 _代码:
. k; w* H, | O3 ~8 I5 m y" }8 ?ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
' j/ t5 _$ S6 a7 h' W: ^1 i下面插入9 L, I, `# l/ H, `
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) % f* {' R3 w/ L# p& c, ]0 K6 t
) b* u9 d( }! O然后你去$ k x6 \$ ~! a: D6 w% N1 S
% w8 N2 |8 m6 C8 R8 \代码:% L' y& m! ?7 u5 g; s) {
代码
8 |& ]4 h- j5 I: g4 d( S7 G- oBOOL TextCmd_ClearPropose( CScanner & s )' P4 C. ]4 Y7 C; \2 r
{
. {: ~# Y& V" M$ D5 }, e#ifdef __WORLDSERVER) g3 K) C$ K% L
CUser* pUser = (CUser*)s.dwValue;$ Y) _2 ?8 x' L$ D+ O
g_dpDBClient.SendClearPropose();4 o9 k- g1 \8 G
#endif // __WORLDSERVER6 {8 i3 Z8 `$ }; O& j
return TRUE;
7 Y+ q a7 l3 ?4 n! ?}1 H' Z. |# [$ ], y
下面插入
9 N+ O; q8 [2 [" V( `4 x) _BOOL TextCmd_rebirth( CScanner& scanner )
3 e# r( c- [. d' n3 p{
6 ~; E3 |2 |$ ~! }#ifdef __WORLDSERVER* H9 Y* @$ `- g9 \
CUser *pUser;
# X; x0 X5 B" P# ?( C/ \. ]! T) PpUser = (CUser*)scanner.dwValue;- \3 W. n* L0 o" ~
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
: }) N' e, ?/ `, o: G9 FpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
6 K4 _9 k7 S8 Z6 n) ]" w2 ~else0 h0 y( v( M7 X* I' ^5 d
pUser->AddText("你还未达到重生条件!");1 \* k6 u% c; l; H9 K$ q. P/ z
#endif+ S5 c) V) u* B
return TRUE;
. |7 {# U9 `& ~8 b3 r1 y}
: ]) I+ m/ N) T8 K7 l2 J! L8 f" o, ~
5 ~+ g& X$ ^+ x$ Y" l* g& \& T
* z2 k }+ ]4 P. C3 \1 v2 B/ ^
% |( n$ c2 ]. R: t. C: r/ F1 b6 y |
|