|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
2 t+ w2 j* i; A& D2 c+ K9 @# d; ^* A |* v1 {1 W
Mover.h
3 [2 B% X Y5 B9 H- `' g代码:" R$ M1 X7 i) b2 ?
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü! w- J) _6 J9 ?
2 ~( C; F4 S5 E6 R5 ?- H下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
9 ]: n! z* x9 r0 `6 u) c2 D. [" o/ {- \ h
然后你去mover.cpp添加/ u# h5 C( f2 F6 K) [& s6 A
- T" j0 b# V9 H4 E3 J. {代码:
0 u9 G2 l0 ^+ a" uvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
0 |/ g& a& X3 i# F# p7 s/ F{, a/ e2 Q& i8 B$ V1 i, X6 K" q
#ifdef __WORLDSERVER. R( f* Y: I( r! z8 g7 M0 M
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
0 ~: f7 l# _( H( {# P5 ] MoverProp* pProp = GetProp();& T2 F0 q' j8 ?, R d' _
if( pProp ); c. |$ v. ` E: n1 j
{% u9 j# M% F1 h2 u& s+ t- M. D$ W
if( nJob > 0 && nJob < MAX_LEGEND_HERO )& Q7 [2 A+ Q; o; m/ j( B; J4 `
{: s1 \7 B8 O9 v8 \
AddChangeJob( nJob );
0 A( a7 y/ |0 o3 R W: m }else{8 C( u& G) h9 q; W) f
return;6 R5 D( B* Z7 B p$ A4 J
}
$ r( _- P+ v. i `' |! }- k9 ? int nPoint = 0;
9 |4 e( V* z4 X9 |9 a if( m_nJob == JOB_MERCENARY )8 v( o8 O) A: L! j
nPoint += 40;
) X" C, X7 n+ L6 _; K) \) B$ l. z8 `) J else if( m_nJob == JOB_ACROBAT )
- r0 C0 @, u% i2 l9 [ nPoint += 50;
0 e3 A( P N: L3 D" Q. F else if( m_nJob == JOB_ASSIST )* C) z4 U- l5 s) [/ X- Z. Z
nPoint += 60;
% K5 ]7 v u6 s) f else if( m_nJob == JOB_MAGICIAN ); l) k% ^- \6 Y7 f* k9 Y, u
nPoint += 90;& n. Q2 H: w& ^) Y. P, _
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
3 y) p! w1 t/ O9 G nPoint += 120;
/ j8 z% g0 h1 O j! h& q) ^ else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )# o& c0 d: \ A+ v# q# J6 ~/ q
nPoint += 150;9 `1 c7 V2 B9 ^$ u) L
else if( m_nJob == JOB_RINGMASTER ). \: i# Z& Y2 d# y
nPoint += 160;
7 X( T6 M& E2 C$ z. T else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
) Y# B' ^0 Z1 h, y5 z nPoint += 180;$ g( F W3 K0 d) M/ W; Q' K" w
else if( m_nJob == JOB_ELEMENTOR )
3 [* x M4 r# z* u- l7 g# J nPoint += 390;3 \7 b$ k5 B, G% R. F: H2 ~
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
9 m0 v) _' F* o7 A) Y nPoint += 120;
9 d6 c* U, i( L- e; }7 Y5 [ else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
$ M# k$ Q* J! s3 R; T# S nPoint += 150;
" W+ n# J" ?* Z else if( nJob == JOB_FLORIST_HERO )6 v! H& {! w2 m C: W$ K6 s9 {1 I
nPoint += 160;
, D0 T# T) b3 T) w1 M) l7 v6 [ else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
1 ~$ w! ? j+ b# R* f" P* M nPoint += 180;
$ @% Z2 ?4 {% g" q- _( e b4 ? else if( nJob == JOB_ELEMENTORLORD_HERO )
Y/ V' v# L. g nPoint += 390;
+ `. C6 g0 T3 J3 B8 G3 H3 U6 I
. C2 B }! B- h( R# Y& h2 ^ AddSkillPoint( nPoint );
6 o [% r0 i" {2 y) e! e5 X) m m_nLevel = nLevel;9 x# u/ N/ Y8 j, @! l; H; h
, V* e/ A8 l9 i4 S) s SetJobLevel( nLevel, nJob );2 b7 J% y, b/ a- y
m_nDeathLevel = nLevel;9 O; d! Z$ w- }' a! t$ m3 H
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
! N% s" a4 F: p7 b! `9 N if(IsMaster())
8 x+ \0 C4 a, C* G {
+ i0 {/ Y& x2 p+ ]8 o& q int dwTmpSkLevel = 1;//60, 72, 84, 96, 108! G! u- {- j* e: Y
if( nLevel > 59 && nLevel < 72 )# R* V1 t# O4 S8 \( ]; A9 H
dwTmpSkLevel = 1;( I* k# {3 D1 J9 E5 ?# K
else if( nLevel > 71 && nLevel < 84 )5 j" K, `& q! Y# @0 _
dwTmpSkLevel = 2;
+ d, O) c+ j: u! o$ T# ^, f$ ? else if( nLevel > 83 && nLevel < 96 )/ J* J1 `0 A9 H. _
dwTmpSkLevel = 3;0 V/ k7 K: ~2 F' N, D
else if( nLevel > 95 && nLevel < 108 )
0 e% _9 _! w' a7 b0 [. ~ dwTmpSkLevel = 4;
1 V( u1 r: h, C# Q @0 u2 o0 \4 g+ A6 ` else if( nLevel > 107 && nLevel < 120 )5 F8 D! Y. o5 g3 u% e, F
dwTmpSkLevel = 5;
. i( z) r2 o" D* T F7 E for( int i = 0; i < MAX_SKILL_JOB; i++ )
* t+ i3 } x# O1 F& f+ J {
- {6 N: [! B' U! X2 \, a LPSKILL lpSkill = &(m_aJobSkill);3 a! s* H" H% H( i' K
if( lpSkill && lpSkill->dwSkill != NULL_ID )
4 Q4 i1 l: g/ J( R' |/ N! a {
- }* ?0 [- f. Z. Y! K4 Y" p0 o ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
% q" j0 o! F, p% n% u i2 ]" w if( pSkillProp == NULL )
T/ f2 t9 ^0 {; c continue;
+ V: |3 s& z" g- w6 {7 p; L. Y, j8 E if( pSkillProp->dwItemKind1 != JTYPE_MASTER)4 c7 E' h F. P/ e9 r9 U- t$ r
continue;) E/ ?3 c; h4 \! M N5 p. B# k' ?9 i; B
lpSkill->dwLevel = dwTmpSkLevel;. O% ~ |! [& p; T" Q( K6 G3 h! w
}" u, ~4 F% t7 Q% l( _- p# X
}
9 q" r) L" ^ M( w$ [8 [) ? }3 e: \2 n! f2 V0 `/ D7 _
else if(IsHero())& w m" S; l- ]6 s0 v
{
$ X% Q# D9 ~7 [$ A V& W5 H- ]( e8 g for( int i = 0; i < MAX_SKILL_JOB; i++ )
3 ]0 K# a( \- [' m% s& R { 9 q9 ]# f6 s! R* Y( h2 ?+ \0 g0 I: \
LPSKILL lpSkill = &(m_aJobSkill);$ K7 p c* P9 d. q
if( lpSkill && lpSkill->dwSkill != NULL_ID )
8 O5 e d: d! Z# {# z' s {2 I- s1 P& ^" O* ?7 R
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ; M9 K3 c# Z, }/ `# C
if( pSkillProp == NULL )5 u" i% }3 v9 {
continue;5 a' w1 r. @' }8 ~( }
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)1 T- R( u' Z( f) A
continue;2 l* O3 d' R5 a' T* _* _% F6 f" S
lpSkill->dwLevel = 5;
P% g. \ M* }0 g% ?) N }
' ]0 z+ w3 e, B+ o }* {3 v8 O+ M3 O/ ^
} a7 X/ d4 \% B/ a( \2 H! A* o
else if(IsLegendHero())) [4 M/ e7 U7 U6 f; q, v; p6 h
{
7 p/ e) ]; b: d3 a for( int i = 0; i < MAX_SKILL_JOB; i++ ) . T( Z% G1 e& `
{
: T) d" B8 e) O( l* H LPSKILL lpSkill = &(m_aJobSkill);
4 b, g5 W6 v( h3 z% s+ J if( lpSkill && lpSkill->dwSkill != NULL_ID )
/ v- E8 @ x* x3 \ {
" j% [" v5 ]( G2 `# X7 q) j8 [' ] ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
8 H: j" u0 ?' Y+ M- h1 e! @$ w1 L5 I if( pSkillProp == NULL )
: y1 o5 _9 X$ |1 ^' |8 ~ continue;
e4 |* V" t/ K& J# D if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
5 {+ c/ Z0 z# T* M continue;. }$ b$ Z5 v1 a4 I% t6 }( s
lpSkill->dwLevel = 5;9 f! e# J: Q: t ^! m9 k/ J% S
}
: H N$ B- u4 z }2 x9 s' w, i) ]) P; Q
}! J) D/ C8 [- K5 H' I- [0 V
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans/ v# V& M" R" Y, P0 O
if( bGamma )' b4 z4 D6 S& m+ p( M
{
g% l+ X& g4 T, V m_nExp1 = 0;0 N1 X4 i8 { B( v( D
}
) \4 I' N7 [+ R# s/ ~+ |$ C
& P* t9 ~' y5 m/ ~9 T) F$ Y! J ( (CUser*)this )->AddSetChangeJob( nJob );
, ?1 I# C l/ T Y3 U( |/ E2 a g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );: r7 [7 w) K# L; u( `7 c0 m
- |, n: I4 v7 W6 y. ~+ d; W+ C J1 X$ w# `5 j
#if __VER >= 11 // __SYS_PLAYER_DATA1 X/ [" ~# C l6 L4 _( T/ n
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );) Q' S3 U( l+ h
#else // __SYS_PLAYER_DATA7 c# @' D, K* `+ s& ^
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
. `1 X+ c8 o6 v# Q! D+ C! M7 S# o( f+ Y. F g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
+ k/ F: U$ \# ~2 a7 }8 C! i# D4 e6 j if( m_idGuild != 0 )
$ J1 K: a. V2 H4 K g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
; c/ R, U* [- A* A& U1 z#endif // __SYS_PLAYER_DATA
: X. F, Q" A" R/ t SetHitPoint( GetMaxHitPoint() );6 @ C" N8 h9 x9 I2 ?/ `
SetManaPoint( GetMaxManaPoint() );3 P: }! y* O1 }- r- g/ M
SetFatiguePoint( GetMaxFatiguePoint() );
& y/ H& h# R+ S: n {- [+ t if( nJob >= 1 && nJob <= 4 )
" T/ X% U) I7 \6 P4 I v9 }/ a {9 S) _; O( P2 ^
m_nStr = m_nSta = m_nDex = m_nInt = 15;7 \7 f9 z4 l" f
m_nRemainGP = 28;* a' @# C e* V( C9 L+ C9 Q) E
}% o. `$ t5 P# A6 [6 L, D* G' W6 V! R3 \
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )6 [6 z! ?3 u6 d$ N8 V% F
{- B, {2 x6 L" Z1 E
m_nRemainGP = 118;! Q$ E" u# Y; ~
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
! i) Q$ c3 S5 I+ _- h' I m_nStr = m_nSta = m_nDex = m_nInt = 15;
2 @0 d i$ v J3 ~3 Y }
3 H$ E' _# Q3 Y% p- \. ~ if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ) ]$ W) Z. f; p& A& e
{: a7 s+ A+ @! Q9 v3 k1 x9 ~4 [
CItemElem itemelem;
( K3 K! Z$ r) d0 Z- g& u itemelem.m_nItemNum = 1;
" a& \: n2 l# j; M e7 C/ ]3 ^6 Y itemelem.m_bCharged = TRUE;
3 v5 Z* w6 h% P: i0 r, l; R BYTE nID;
J8 e3 J. q8 I% q1 D. L4 h
( {0 p* a; {' y+ ]5 g if( nJob == JOB_MENTALIST_HERO )
" c; N7 p* V7 u; L itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;. `% \: [# [+ W
if( nJob == JOB_FORCEMASTER_HERO )
8 \1 n y; u6 A& B1 t L itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
6 G4 y- \$ Y( Y O: M, z' V
7 T! |4 t+ C8 n! r( y: v4 d J ( ( CUser*)this)->CreateItem( &itemelem, &nID );
8 Z |9 V9 C/ m/ W }
$ |, p' Z; \0 M' s g_UserMng.AddSetLevel( this, (WORD)m_nLevel );. X4 c% \( I' ^# \: I: T( k7 |6 R* _
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );: x% f2 I5 d# t1 h/ F8 K! V
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );& _ M; f! F0 K
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
2 v0 [" F+ Q2 Y ( (CUser*)this )->AddTaskBar();*/
( z9 Y9 q0 }2 Y: V ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
( V( F6 I% I w: @9 h4 p#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
$ {7 S( A! w5 s2 H& Z0 x. j" L ((CUser*)this)->CheckHonorStat();
! n, p1 A; n+ e4 b! S ((CUser*)this)->AddHonorListAck();
( L6 Y2 V% j: U" P% s" g4 O' K g_UserMng.AddHonorTitleChange( this, m_nHonor);8 `" w m$ _8 u5 U8 \$ `
#endif // __HONORABLE_TITLE // ′Tà?9 h7 p( ], f8 [; d+ l
}
0 N+ e' s2 x7 w* Y; {8 X9 g$ N#endif // __WORLDSERVER J. O; d9 I9 H0 `) y
} ' }8 _( y# ~9 d K
0 U& J' `/ u, ~3 u8 [& a7 R; _
然后你进入functextcmd.cpp并添加以下/ J( a R7 H' S- _' \
9 _; s) x( V" a8 Y5 T1 _& {
代码:
' \0 e& i5 _: W P" ?ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
% y, x" v: c6 E, B0 O: O下面插入
7 z" F. z- d9 J' F$ JON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) / V1 j& F- H7 k8 O+ R4 J
" P) @1 r7 T. Y然后你去9 f4 H3 U* J+ v# e" \
' N p: b% T K7 q代码: y# ^. ] d9 n! i
代码5 Q7 K% N" a$ T9 Q
BOOL TextCmd_ClearPropose( CScanner & s ). _: c% b+ H* M) u8 R) H
{
/ j, q( {5 s+ ^& F7 {#ifdef __WORLDSERVER; H# e; ?( L( k$ C. H
CUser* pUser = (CUser*)s.dwValue;
% U+ T$ u" }$ i( ^& ]* P g_dpDBClient.SendClearPropose();
1 ]& E' n# q+ l6 W1 U+ d4 s#endif // __WORLDSERVER
, [: o7 H1 G" z- A" T/ P return TRUE;
- V9 y/ o* a- o5 q% L0 l. a}; k. a7 y% q0 u' q4 n- t
下面插入
+ Q3 s6 |) b, h8 y6 c( Q6 b2 A+ QBOOL TextCmd_rebirth( CScanner& scanner )/ z5 Q _: r5 W L3 | H
{6 B: ~1 H2 v8 k7 O3 O) ~5 G
#ifdef __WORLDSERVER
6 U' R% }( \# R$ _CUser *pUser;
r) r" }. F" q1 P1 e# vpUser = (CUser*)scanner.dwValue;
' G6 a0 ^& r7 L+ r& yif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())2 L% H' a( n- l
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);9 e* }9 C0 W, D3 @+ }/ L% Q
else
9 {& T* b! k) o- w4 Z- RpUser->AddText("你还未达到重生条件!");
) f4 v8 v" p) L( w2 i#endif
5 u* @) ~( a# V: w$ w8 Hreturn TRUE;& x' I9 x8 r# [$ S1 k B! P
} 0 U D7 b1 W) D) s2 l/ t w u
: d* @) \! }$ ~" R7 X
; ~7 y% |: _: N* `
4 \$ I& g5 Y4 v+ `
: G$ B0 m3 P; T# h6 o' F. A |
|