|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
# ]' ?( x7 ]) o d" s [! P/ H, E. w. w$ U- V/ ?0 T& V
Mover.h2 k+ n* b7 z$ C0 v
代码:3 }' R/ e! Y, x; W
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü0 W b2 p* l0 y- |2 F
4 Z" `, x0 _1 \ {5 l z$ }下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; # D! X0 y3 I' R4 v" s
; {7 r" s$ S+ K& |. @, P
然后你去mover.cpp添加# D' g- d2 j* _2 u
7 [" {! p3 I* I
代码:7 ^) [2 V o5 S1 ~8 ~3 [
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )9 K! s5 C" G( H6 A# y. ]6 X3 d
{
( U& R% U3 p. N5 C3 n- g& @; b8 N#ifdef __WORLDSERVER' J" ~: A W4 N/ M% B
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó S, h( d% o J5 D) K. Z
MoverProp* pProp = GetProp();: j1 m, }8 ^$ K# `$ v* `/ O
if( pProp )
. e9 x: H5 S) d; h5 s s. k: p {
/ v7 W9 n/ |9 }! K if( nJob > 0 && nJob < MAX_LEGEND_HERO )7 n: l- A8 m: D& Y3 s# j. V
{, _" ]! F0 D- f$ L4 N* x* Z
AddChangeJob( nJob );; k: D! L* @- s; i& x4 _
}else{# p! G4 Y- o3 B% V
return;* U: T- j1 ]5 [
}
, j, y; T: q2 @) c" K& } int nPoint = 0;1 N/ C# x! A6 }9 B2 p% a
if( m_nJob == JOB_MERCENARY )' \4 a4 b/ o0 F' \9 I
nPoint += 40;5 B$ t. ^" i: L: r7 e
else if( m_nJob == JOB_ACROBAT )) k7 Y- e5 H( d ^9 b- U# [
nPoint += 50;/ G3 O# y, E( K3 W8 G _8 S
else if( m_nJob == JOB_ASSIST )
2 B W- V& H6 v( r1 B [" L9 R nPoint += 60;
3 t4 O b$ l6 I; c k, h else if( m_nJob == JOB_MAGICIAN )& B. a' Q8 f: s
nPoint += 90;
/ I* @4 ]8 q7 c8 r1 u& y+ _: C0 X else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
9 i7 c0 e( f, _$ X8 O$ C nPoint += 120;+ G! V) `5 L* Y7 k* p" f( ^
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
4 B& Q$ ?( k" h/ X2 s! I Y nPoint += 150;
; g6 }/ w" C1 [! e/ w6 f# | else if( m_nJob == JOB_RINGMASTER )( f5 T# U+ l5 |# n5 W
nPoint += 160;
+ [. C p4 K5 y8 Y& D8 Q else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )! x p, N$ z4 [8 E8 D% a
nPoint += 180;
0 Y! }" _! p9 j else if( m_nJob == JOB_ELEMENTOR )
' j- f D) @9 x nPoint += 390;
* G2 [& m, k% }! R else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
, ]( e3 Y0 R5 P: u7 C6 v nPoint += 120;
/ Z: B( u; t0 E% |$ K9 p else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )& i- d( U/ ~ O6 w
nPoint += 150;3 Z7 X; t8 P5 L0 C5 g' x
else if( nJob == JOB_FLORIST_HERO )
2 Q* w" [9 @; J H' W: m nPoint += 160;
1 ^# s. W4 Y O else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ); f5 P6 G- E/ Y3 W5 L8 p
nPoint += 180;5 l! H6 U7 i7 {2 M
else if( nJob == JOB_ELEMENTORLORD_HERO )
$ ^' V( Z2 p% C: y nPoint += 390;
' L2 ?8 s% ?# `" h2 l! X3 X$ F
( V8 I6 {) J3 K AddSkillPoint( nPoint );
9 l7 k4 [6 j' n- }& K) w m_nLevel = nLevel;- d! p- w- q. d6 g! @; |% o
! b6 u4 {, j! Q
SetJobLevel( nLevel, nJob );+ q1 K) m& g/ z$ e2 \
m_nDeathLevel = nLevel;. n/ ^( w ~" r/ ~ m) \
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
1 @! m% j* i$ Q9 @7 e$ ~: T if(IsMaster())7 F* k4 p3 H% d; j& P. k6 O
{
' Z ]3 ~/ G. R K2 B- `/ [ int dwTmpSkLevel = 1;//60, 72, 84, 96, 108' k# y) l5 o: l9 B- R: p9 k* n
if( nLevel > 59 && nLevel < 72 )
r8 ]) X% v- I2 i) S dwTmpSkLevel = 1;
! a8 p" n3 j2 H5 m else if( nLevel > 71 && nLevel < 84 )% T1 K' m( Z# L4 d
dwTmpSkLevel = 2;
/ n& [/ |5 [1 ?3 S. |8 z5 p; `0 ^ else if( nLevel > 83 && nLevel < 96 )
( ~ R1 x2 X4 j) W. i dwTmpSkLevel = 3;
! ~8 I q2 h% N, f4 y, d' K else if( nLevel > 95 && nLevel < 108 )
( I* D% w+ y: e* @/ { E dwTmpSkLevel = 4;3 E4 Y @3 z+ B7 }& d
else if( nLevel > 107 && nLevel < 120 )
7 Y8 E0 Y; a& F$ C+ T dwTmpSkLevel = 5;
" ~( q& m* p5 i3 y for( int i = 0; i < MAX_SKILL_JOB; i++ ) 8 ]9 q2 |7 ~+ u& z0 I
{ 3 a4 V! M4 D ^/ j6 ]
LPSKILL lpSkill = &(m_aJobSkill);- i: D3 P9 d/ t. k( w
if( lpSkill && lpSkill->dwSkill != NULL_ID )
3 X2 q$ [; b3 _& ]+ x1 {7 j5 _ {
9 q( J0 q6 f3 y: b6 F1 a ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
& x/ U- {- J* j if( pSkillProp == NULL )
8 S3 }; A( u$ t5 A# ^5 R: L continue;8 f. m* B9 X5 K5 Z# Y6 l
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
" ~ h4 T) S2 \8 Q continue;
+ o- k# S9 V4 d0 M, ?' M' F lpSkill->dwLevel = dwTmpSkLevel;
% B/ {" i6 K% u2 e S& L( R' Q }3 ~" ]$ R/ V i( ?0 x4 q. N: @1 \! V& [
}$ y7 e4 M' C- b& X0 |
}
Z4 {! T+ Y: K1 w$ R else if(IsHero())' [+ Z4 R6 O) S$ j8 d$ ?
{) H- q2 N. p- \. }
for( int i = 0; i < MAX_SKILL_JOB; i++ ) $ r2 \, ^6 J- \& M
{
9 q5 X7 K, ^4 }$ i LPSKILL lpSkill = &(m_aJobSkill);" D/ K2 S+ f" t/ l5 s
if( lpSkill && lpSkill->dwSkill != NULL_ID )
( n* X6 l$ i' g) K {
Y/ l- N! M! t ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); : c# J5 n) O/ T2 ?
if( pSkillProp == NULL )8 |7 Q( n+ W- j4 b& T2 b
continue;
9 F& B% q9 U; J5 ]2 C7 [ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)" m3 B) t' n, Q4 u# V
continue;) m0 T2 v" C9 Z! {- C9 C, ]
lpSkill->dwLevel = 5;$ _! ^. F, Q- h! D% W
}
4 \5 Q6 G5 R o& { }
" r4 K( N$ |( H; q$ u* s7 y0 n2 @ }8 K$ q) D# E& z1 v5 r/ e
else if(IsLegendHero())) [0 {1 S; {; S
{: f" l" A* X% O5 P* l) ]- y9 w
for( int i = 0; i < MAX_SKILL_JOB; i++ )
' ^3 \1 M9 n Q% G! D- H' i/ ^ C, v% q {
& M5 q6 X# W6 F' y LPSKILL lpSkill = &(m_aJobSkill);
# |3 W7 Q4 k& D& F: c- N5 e5 Y if( lpSkill && lpSkill->dwSkill != NULL_ID )
" C# s) c+ X$ s* t/ l {
$ N( H# z8 N( W1 a# F ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
6 Q$ I' p0 x* Q2 x* i if( pSkillProp == NULL )5 _4 q) _/ \6 q) t% c
continue;
9 ]/ m. `, X9 K" Q( i) }- A if( pSkillProp->dwItemKind1 != JTYPE_MASTER)7 q! G2 m% ?) i+ _) x: \+ |+ e, j' k
continue;& u) a* V7 E' p K6 O' c3 B
lpSkill->dwLevel = 5;6 v2 K t% }6 @" t0 c2 y
}
& z- Z& F1 u+ z9 |) N2 @0 \' Z }
- g7 u- @3 Y H0 } }7 n# N% r# } O3 W6 t* ]8 c
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
! _+ v+ U& Z7 j, W/ n9 e if( bGamma )
9 g8 s5 S, y/ H {
& @& y+ T4 O+ {; W- W, S m_nExp1 = 0;
3 r9 ^6 V [ T+ } }
; l! ~: [- D1 X5 f3 v- ^ A- P X6 A0 w6 k: Z3 @- M
( (CUser*)this )->AddSetChangeJob( nJob );
+ {" V8 ]9 k: [6 S6 ]" @: d g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );2 f/ U& N" B7 P4 Q& g7 L+ R2 {
4 H" D" J7 _8 u$ g5 `0 |3 j. T4 q6 F% A' ?" c& g
#if __VER >= 11 // __SYS_PLAYER_DATA
1 @) N" p# X( T8 \% w g_dpDBClient.SendUpdatePlayerData( (CUser*)this );2 _7 e; ]0 Z+ ^6 @" S
#else // __SYS_PLAYER_DATA
" s+ i1 Y, |6 Y. J! W g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
+ `- c- _& M4 q g_DPCoreClient.SendFriendChangeJob( (CUser*)this );5 X2 i9 ^6 L$ Q# V) m) N
if( m_idGuild != 0 )
6 U: c! [2 b1 r) Q' B g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this ); O$ \! r, P$ X; E
#endif // __SYS_PLAYER_DATA
/ o4 u l, H4 n! D" P SetHitPoint( GetMaxHitPoint() );
" e+ `9 U5 C3 S4 k# @0 y SetManaPoint( GetMaxManaPoint() );$ r! e1 w. |" S$ s0 v; n! A
SetFatiguePoint( GetMaxFatiguePoint() );" [* i; C3 M4 q# [8 J
if( nJob >= 1 && nJob <= 4 )5 c7 O, p8 L. H0 C
{8 L: G* ~/ j: _6 y& ]
m_nStr = m_nSta = m_nDex = m_nInt = 15;
8 [! y* W; @' u m_nRemainGP = 28;
P& M0 [" S! h, w3 n }
L' X9 C; D \" E" x k8 C) Y if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )0 V, y. [7 o3 u: o$ P4 T& R
{
5 H1 V# ^7 u. B$ k' m2 s m_nRemainGP = 118;( R1 X7 m8 j; D" ~7 S
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
1 N. `- n5 Q- ^# F: ~# V$ i0 x( H m_nStr = m_nSta = m_nDex = m_nInt = 15;
& h# n9 ~5 V" q+ m* k }3 g" d6 H7 | D
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )8 m3 e7 z% A* z. D; |' z' w
{" v$ R% q1 h" n$ ^& j0 H. }$ O4 D' l
CItemElem itemelem;
$ v$ T) M( M, ]( d itemelem.m_nItemNum = 1; t9 B, q0 m5 t
itemelem.m_bCharged = TRUE;; ]# Y1 {& B; x# z' C; L
BYTE nID;/ d) p( X8 b' D' y# |0 ` f
1 D. |/ K+ O! r6 ]8 r5 H, W$ C if( nJob == JOB_MENTALIST_HERO )
" Q: \7 H- W5 `3 I% p5 H9 \4 X itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;8 v7 e4 m4 V* e q: \
if( nJob == JOB_FORCEMASTER_HERO )
1 t/ i2 N1 _: E. C9 [. G itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
' l2 t6 I1 p3 ]; W1 L
. i2 S# N9 L4 h& r ( ( CUser*)this)->CreateItem( &itemelem, &nID );
% V9 `( d1 K8 ?9 B$ D7 s }
- D1 p6 q/ \) Z. R t0 i2 G g_UserMng.AddSetLevel( this, (WORD)m_nLevel );$ G* M" M( e/ t0 C6 i; {; S
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );6 m' N* Z7 l9 n( | Q
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
9 F; R$ ]' b1 l1 Q: `6 D, D1 v /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL ); @ U3 J& m/ ]. S
( (CUser*)this )->AddTaskBar();*/
/ T/ a' f& _3 m+ v* w ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );- l7 t5 ?4 m5 b/ r! M& T# n
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?: v; r$ T9 E& c _! s* P
((CUser*)this)->CheckHonorStat();7 ^# }' L, j6 Y% \3 o4 `! s" [
((CUser*)this)->AddHonorListAck();
6 G# ?6 S& n+ F0 Z! t: |; y g_UserMng.AddHonorTitleChange( this, m_nHonor);
6 _1 m8 J \/ f/ T. y5 b#endif // __HONORABLE_TITLE // ′Tà?
' q! }! t' U T( @7 v. W }. j" _! D/ o9 f; N" ]! u
#endif // __WORLDSERVER
V: r6 {. _# V, w} ) b7 O$ X: v6 ~+ a! D" j
: Z6 ?, i* ^+ J8 X0 _8 ?/ X然后你进入functextcmd.cpp并添加以下# B- Z& z( N8 L* s3 Z8 l
- `& R: r' v, ?6 v6 U
代码:
7 f, `" H. K, ^; L0 d0 xON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
+ P- q9 ]6 \9 h% ^& O" W" N下面插入
. @6 W: C" A! Q6 @; e: S7 RON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
. \" w3 h* T3 L
6 f2 ~* L# D+ T: H/ q然后你去
2 d' N4 Z/ Y f# t5 \
_7 K5 b: C" R) ^2 j代码:8 K/ ^+ F7 u" }. l3 ^* z9 G
代码' B+ {3 Z/ k3 }8 ?" {/ Z; n
BOOL TextCmd_ClearPropose( CScanner & s )3 u" T" ~ _1 X) L4 N! a
{7 [ Y; ? |. Y. h
#ifdef __WORLDSERVER) ]# V: h7 p2 H$ c
CUser* pUser = (CUser*)s.dwValue;
! x1 n$ S! z* }+ [; c g_dpDBClient.SendClearPropose();4 K3 p2 Q0 `4 v5 P- S" V3 v0 B# ]
#endif // __WORLDSERVER
8 H1 \+ I3 ~" e) i: j return TRUE;2 ? W/ S/ v8 v8 b: ]! ]. e# M( c
}
) w6 o: r3 f# O下面插入/ C! G6 m9 w. q# u* q; j7 J$ a
BOOL TextCmd_rebirth( CScanner& scanner )
7 n2 a* G+ m( i9 o, f1 D. s& d{
, d+ W% ^8 o3 t/ p0 ^' `0 w#ifdef __WORLDSERVER
, @$ u/ H' g7 `CUser *pUser;
0 n5 v* E$ `6 Q) \& \0 B npUser = (CUser*)scanner.dwValue;* r7 k4 L' P; r# J7 o# l, [
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
/ }6 w5 O3 L4 l# `4 cpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);! {( t3 C3 @, ?& W1 u; [# ]' y
else
: W4 f. b. e' B: [! A P) wpUser->AddText("你还未达到重生条件!");0 p( d; w; {. J0 g9 _ @6 V
#endif) b2 L0 m9 U( m b, h7 ~8 p# S$ M
return TRUE;6 U: C) Y! J) f
}
" h3 |( b$ c' A" a7 M1 S1 m* _" B1 i) l
) j: P% S @9 O9 j) B, K4 H- r/ P' y1 q4 G' M, _$ V
+ h0 b2 u- G) t6 n) W! U; D
|
|