|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
1 M% o/ {5 h5 {' C/ ]1 g1 D/ c% W" o8 a( J+ @+ G" d$ e
Mover.h
) J3 z9 a/ A3 S! L% n; C代码:
7 f# t' U* r- h% x找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
$ }& e. j- v' I( Q7 f
( J' _; J( V. {! S& W3 ~下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
' Q9 L/ Z3 X7 S! ]( L2 o3 ~5 y2 l4 d; Z
然后你去mover.cpp添加
1 n- D2 N {, }; u- i1 Q. v7 K2 i+ {3 V- g
代码:
' g7 t* j$ B) O" ^( B: v% ^, Bvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
. P5 Z; I* b5 P+ {# I9 k+ n{! N( D- N; K' v9 G
#ifdef __WORLDSERVER$ f: B3 D" R; ?9 y' `5 ~* a
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó2 b: V. m/ k% i* X# D
MoverProp* pProp = GetProp();
6 o) ]% l5 ^5 c) F; b5 p if( pProp )
5 f$ g5 @2 R. ?0 X+ ] {7 W' K+ v1 q1 r4 E! j
if( nJob > 0 && nJob < MAX_LEGEND_HERO ); d) ]) t7 g# d; F% M6 G2 v
{% M* Q& E7 m- n, U; V: A2 r" j
AddChangeJob( nJob ); S% |$ G& C$ B) w2 k4 A. S$ F
}else{$ y- v2 l" S: O: O
return;) R7 Y' e: c O: L, D w1 [- z
}
8 b7 H; Z u% m& p* Y" }! U6 R1 e int nPoint = 0;
Z6 i# g8 E, g* r9 ^ if( m_nJob == JOB_MERCENARY ), @& e! d0 V, K6 M
nPoint += 40;
0 s! o, A& S4 [9 P6 |7 n5 R& j else if( m_nJob == JOB_ACROBAT )
& a2 g7 W$ w. [2 n; q1 A nPoint += 50;% x% N1 {2 j- h# Z" w( h
else if( m_nJob == JOB_ASSIST )& h6 p: f/ Q2 \' F% _9 {
nPoint += 60;
2 v4 y7 q% ^$ R, F( v8 t( d7 o% s& r- C else if( m_nJob == JOB_MAGICIAN )
3 Z& W% K2 M V4 Z nPoint += 90;
8 _" x) S1 E& L v" d' S# { else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
' {' g1 C5 J, L nPoint += 120;
3 G0 R' ?9 R# X4 C( T9 P else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
. w* @6 z" T0 D0 [- | nPoint += 150;. L0 F' z% h! p) b6 t
else if( m_nJob == JOB_RINGMASTER )
- _8 c9 K! {9 {! v- K nPoint += 160;
8 C N }% Y; g' {0 W# _+ P0 f# \+ g* U else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
" f, F# x4 Q6 B nPoint += 180;
/ h4 W+ a, e" g2 g4 ?+ ]$ P else if( m_nJob == JOB_ELEMENTOR )
3 u) K6 T+ W1 z& Z. n% }. _: }7 M nPoint += 390;
5 J% k" ]! k2 S% ]5 G& Z else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO ) b7 f4 Z* ~$ {! R6 i
nPoint += 120;! p% N) D+ C% P' o# U# W3 {' l
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
0 p/ p/ ?. E; y. V3 K+ e g7 g nPoint += 150;
8 o$ _: X3 X4 |+ ~& ~% a; ~) \ else if( nJob == JOB_FLORIST_HERO ). a0 n* Y3 |0 V" I
nPoint += 160;
% l) d, F6 _5 Y8 Z$ w else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )0 D5 w6 b5 `% v/ u- d8 R6 Q
nPoint += 180;
7 W; R/ x* ]' \: g9 d else if( nJob == JOB_ELEMENTORLORD_HERO )
8 R# ~6 i k& f4 b {7 ^) B# C nPoint += 390;
e( ?6 f" k$ x3 O2 i m1 @$ m5 C! n! I7 O; X
AddSkillPoint( nPoint );8 e- x. X) R0 V% b; f
m_nLevel = nLevel;8 G$ p& e8 |- E# p% l
5 l4 J4 P: o; W8 e$ X9 q$ V3 R' `* u
SetJobLevel( nLevel, nJob );
, m: S" H; O% J6 H8 F. M L m_nDeathLevel = nLevel;
, E& W2 z" c/ r4 w2 |#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans: @3 z8 C" ]/ ?" Y
if(IsMaster())* g& d G; a$ Q) f7 r) y
{
4 [6 m. h5 e+ [7 ?" g int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
( Y0 z; H9 c& Q. A if( nLevel > 59 && nLevel < 72 )
# E: ?: ?( d# ^( A4 v. D. y dwTmpSkLevel = 1;( P0 e. F8 `6 z8 u" V1 n# o
else if( nLevel > 71 && nLevel < 84 )
7 r' M0 [8 h d" ]" b dwTmpSkLevel = 2;
$ o7 s) Y9 p$ e8 V7 ^% w0 k+ y else if( nLevel > 83 && nLevel < 96 ): ?7 N. s6 p5 L) w. Y; W
dwTmpSkLevel = 3;
3 [7 W4 t7 l- O8 Q2 [1 ]' c else if( nLevel > 95 && nLevel < 108 )) A/ w0 a k9 O( k, j: Q. r- l& C
dwTmpSkLevel = 4;
2 i! t( K) c i9 L E else if( nLevel > 107 && nLevel < 120 )8 O4 Y2 E+ W$ A& }
dwTmpSkLevel = 5;
?( u6 w+ Q& ^# E for( int i = 0; i < MAX_SKILL_JOB; i++ ) 4 l/ Q2 v1 z+ f
{ ; g& i! V/ J6 f5 `+ x1 Z
LPSKILL lpSkill = &(m_aJobSkill);- F' j, I( Z8 h: C# ?
if( lpSkill && lpSkill->dwSkill != NULL_ID )) D2 [4 C) n, W! V, T( N9 A, ]
{
) |9 l' F; ~) S1 b; ^# Y# ] ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
' `9 ?* }% a4 V if( pSkillProp == NULL )
: z1 f. b- O: Q" s) l1 P+ v9 \( i continue;
% P. x! B7 o. o8 s, K) W if( pSkillProp->dwItemKind1 != JTYPE_MASTER)4 o- R }& j1 O* H
continue;3 r: _ G. j6 Z C' Z4 Q/ T2 ~
lpSkill->dwLevel = dwTmpSkLevel;
$ @/ K( w9 E. {. A7 }1 w5 v }) t0 h9 b* @& d; `# n5 ]7 a% ~
}
, D+ B6 c* {: g. h: O }
1 z6 Y$ U. N9 t7 y else if(IsHero())5 p4 [6 Q$ v" a8 a9 a
{
2 J8 f6 j+ x6 ^4 W: w0 m for( int i = 0; i < MAX_SKILL_JOB; i++ ) 5 Q3 X; \! g+ D% d+ x/ W7 N
{ ' M9 U! d" I; w; q4 J' r
LPSKILL lpSkill = &(m_aJobSkill);8 _7 Q9 F& E" n4 a! p% I5 n. \4 V
if( lpSkill && lpSkill->dwSkill != NULL_ID )
N: k- y/ d1 _7 ], d2 Q2 O. A1 A5 e {2 k+ {+ a/ E" l5 h& j/ a4 Q" U
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); % l8 r" v8 ?" s- |
if( pSkillProp == NULL )0 `5 z! w* I2 L8 q6 n& L# S# n
continue;, O6 ~9 m, W! }' q0 B: J1 y5 w9 r2 i
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
$ U% [% a5 M' ^8 Z% R) u4 ?$ D/ e continue; p- i+ z* g% ^
lpSkill->dwLevel = 5;
. ~' {/ G/ v/ v+ M$ w5 ~ }
8 T+ }2 K! p0 @& H }
" ~7 {! P" Q" M4 O }5 v/ q; o0 ~0 e' `' w# d3 ~
else if(IsLegendHero())# U2 Q1 @, [, M8 o$ F
{+ H( t+ v! A( h* C
for( int i = 0; i < MAX_SKILL_JOB; i++ )
( h3 J6 k- v" s- K {
. T* x& t/ ~* j/ } }* _ LPSKILL lpSkill = &(m_aJobSkill);3 S9 [3 w* E8 s- e
if( lpSkill && lpSkill->dwSkill != NULL_ID )
( f$ _% ~8 p. Z" a, i( n5 I1 Z {/ U6 n0 v9 Y" G9 V1 _4 a
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
4 U& _4 ]4 q- t if( pSkillProp == NULL )" V ~: b7 n1 ~& @# G8 \6 [
continue;* i5 {: ]; }$ ^) k- U
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
) R4 I( f; [3 o. \. s) F2 Z continue;
8 B! R, c7 {7 Z( x- ` lpSkill->dwLevel = 5;0 b9 T2 J; F. T$ X; b5 O
}, p8 F: z1 E9 \4 q7 |0 k& a6 P
}5 l9 E/ o9 {; k/ H' x
}
4 |5 V. p. Y; y ]' L2 L( J$ J#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans7 b. `8 }* H7 B3 a
if( bGamma )" O; @; r) t+ y; E( H/ S( g' z+ Y/ T
{
2 R+ g) n' F; Y4 t% D7 G m_nExp1 = 0;
% B+ j8 I) A" U. V$ T }% r0 ?2 D5 t) Z$ B2 V. C* H( `
! T) R) W7 k0 R" `+ D* ?/ z ( (CUser*)this )->AddSetChangeJob( nJob );
, M% I0 ` e+ Z# v c2 F1 V. C g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );9 O; k3 h. D W1 ?, t1 D
P% \2 p- I0 X# q. t
/ S& I4 g! S% s8 G8 h#if __VER >= 11 // __SYS_PLAYER_DATA
4 X ] ], f' t3 a, n3 @7 {9 Y% E8 r+ \ g_dpDBClient.SendUpdatePlayerData( (CUser*)this );' r. Q$ N4 o% F: i7 G/ k9 S
#else // __SYS_PLAYER_DATA
0 Q7 `/ M j7 L# L g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
% [/ y1 o6 N8 S( ]$ o/ L8 \3 M g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
8 f+ E" f- N5 b6 `% t6 X# ]2 `& \ if( m_idGuild != 0 )# H$ D. |/ a8 p! Q0 Z* Q% \
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
3 H; F6 z* b; K. [8 X* _0 c" R+ D#endif // __SYS_PLAYER_DATA) \0 V0 d& i6 r( L2 x8 h( [! z/ V4 C
SetHitPoint( GetMaxHitPoint() );' M1 U: _3 a8 p# A4 l' d
SetManaPoint( GetMaxManaPoint() );
% l( `; m& Y1 T# P1 E8 G2 Y7 Q* H5 A SetFatiguePoint( GetMaxFatiguePoint() );) b9 s8 P5 L$ K7 e' I
if( nJob >= 1 && nJob <= 4 )9 C6 E; {( e$ } Z' Q) H
{
% k: T0 a' J7 W" R! Z' O/ w m_nStr = m_nSta = m_nDex = m_nInt = 15; b) g0 D7 B |! S8 Q5 ?0 j
m_nRemainGP = 28;
5 C. j% X& G$ s: s }
2 B" Z& {1 p! Z* S if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )/ j4 s$ q4 K, c% H B; H# H
{
" I" j6 @* G' J O V m_nRemainGP = 118;' [$ u9 x/ D( X6 D0 g: a$ R
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;( q" V# l4 b; U/ D l7 m
m_nStr = m_nSta = m_nDex = m_nInt = 15;* s8 E) L% e2 q! o
}
! t8 w# Y6 }% N1 { z if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
2 k8 r. Q2 A/ M9 ]7 ^' M" D {5 E1 V. c% l4 ^% j
CItemElem itemelem;
3 ]& j2 m4 [5 [/ [: F' Z itemelem.m_nItemNum = 1;5 V( d) h8 J" l. q( u
itemelem.m_bCharged = TRUE;) f7 s O$ n2 E5 H1 O/ f- u# w
BYTE nID; v' ~4 ?: w0 I6 t8 d5 |
, i4 L B6 i! e$ @
if( nJob == JOB_MENTALIST_HERO )
/ j; g% a0 O' t itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
+ {$ x( q1 Q7 f0 `3 Q6 f4 g if( nJob == JOB_FORCEMASTER_HERO )9 ]( a' V( I7 ]5 n( E
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
9 Q3 G# F8 A( V) E- p/ ]* B8 b
1 n' s9 l6 J2 ~4 ?% L2 I+ z ( ( CUser*)this)->CreateItem( &itemelem, &nID );
0 ^% R& w4 e& @) o }
( L" e0 B1 v: t5 w7 J t g_UserMng.AddSetLevel( this, (WORD)m_nLevel );$ q% d, K x$ q' n- i6 o% G" ~) ?
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );' M3 Z" \8 a4 R9 v, d; f
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );& @/ f9 d, W) L( \) e: w
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
6 J* \; |& f0 O; t ( (CUser*)this )->AddTaskBar();*/
. ]1 G+ }% T8 P. @0 S5 v ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
0 @ F4 O/ `) S, D7 l: p#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
+ C$ {, r2 v: G' V5 L$ [+ f ((CUser*)this)->CheckHonorStat();
8 D) ~ d: V8 @# l; M; i. c ((CUser*)this)->AddHonorListAck();" Q5 X- a; m$ q6 x# s2 Z# p
g_UserMng.AddHonorTitleChange( this, m_nHonor);0 t3 M9 S- S9 Y1 ^# @; ~
#endif // __HONORABLE_TITLE // ′Tà?
% V) T* o" R* L- a* a" ^$ ` }
9 i% j- T" Z7 k, Z#endif // __WORLDSERVER- Q' x, `, l3 L( o0 x
}
/ F0 K R0 E& @% Q/ @
* |" J% q: W8 e+ I然后你进入functextcmd.cpp并添加以下: T3 S. W- Y% E7 `6 [- E* _1 Q
& v5 M8 l3 P6 J; |+ W7 C9 e* [代码:
4 m/ K2 m- S7 OON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )4 P" I3 T! V: Y' {+ G- V
下面插入3 k* A$ @) \6 m3 X
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 0 I* Q" ]' c7 ]
& x) o: k+ F3 K$ V1 o然后你去9 {; M; _, y- H- i5 }
. w6 }$ {: @6 J0 V# T# U
代码:
; l$ P6 L" [, Z; q: {" d6 r) z0 I代码' q! [! T% f/ F
BOOL TextCmd_ClearPropose( CScanner & s )
" D! `; ]0 c- L{
$ d' f! U0 P% g#ifdef __WORLDSERVER4 ~( t7 s L% A6 o. |' f& c
CUser* pUser = (CUser*)s.dwValue;: o+ @' s/ ?- x" P& V
g_dpDBClient.SendClearPropose();
+ U5 e' u- j: d' G( w#endif // __WORLDSERVER
* `) p4 Z- J2 O/ s/ M6 H9 M6 P4 a return TRUE;
6 ^8 {, q4 N, i" ? ?1 U* D* {}# t8 n! o, D) W1 t
下面插入( q6 ?3 k' }9 Q) |2 ]" g7 f& z
BOOL TextCmd_rebirth( CScanner& scanner )5 x% X3 H- S4 B8 G% H; X0 Z4 I. v
{
& F% o+ V" U- I#ifdef __WORLDSERVER: ?* n; y4 y+ Q/ \, c+ ]; B2 c
CUser *pUser;
9 J, R0 I4 {4 b+ ~pUser = (CUser*)scanner.dwValue;2 s7 ~( Z# H1 |5 q n+ C( x# D% P
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
U$ n4 X6 k! I; A4 S( upUser->InitLevelPumbaaa( pUser->m_nJob-16,60);( J# z2 \- Y- ^0 n0 i. l/ b: j
else
, W" h* G+ O( K* I6 D. h1 KpUser->AddText("你还未达到重生条件!");6 W( ]5 m) d4 T9 D% P2 j
#endif; I1 @! _7 d }6 d" Q
return TRUE;
. i0 d& q9 G- Z/ c# n5 A$ E" q}
* q) r6 e- }! Q8 H
. T) S0 a) E4 Q" n6 Q& p' ~
, H, X6 ]( Z3 t7 {" E3 J
7 d, [' A# Z6 o% w, w9 b' o
) _& T3 r/ z" S1 W |
|