|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel, B' }, T# C, v* h/ E }2 T
! I# V/ Q( |% I' C6 F! E
Mover.h
# k# {5 v& n* _1 Z代码:
5 ^- u$ b/ c7 V8 j3 x" r% @- v" L找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
: K" R/ b& n) ]; x
* H9 g r% m! H! X" w0 \下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
* m Z7 g+ o% Y% K; s$ L% [, t% R# _: h. P
然后你去mover.cpp添加
* c, p2 F# X, P) s' Q( o. m* \$ z% Q0 p
代码: F1 ~1 W9 j7 @! t
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
8 P9 R) \1 i; y/ e5 e% Q& ^{$ X: i7 l* p$ Q q& g* H' E
#ifdef __WORLDSERVER7 H! A$ c! n% P4 X0 L1 A) `/ T7 d ^
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó* y8 {/ {/ e4 @5 _& b/ A
MoverProp* pProp = GetProp();
9 t! R/ M1 B2 z' M3 A$ A8 p3 f) v' o if( pProp )
1 ~% k' `) l1 C- Z0 d/ p' p {
# ?$ v6 m8 W+ v, k! }. N$ Z if( nJob > 0 && nJob < MAX_LEGEND_HERO )
. t( ~* H3 P! ?7 ^" h D {' b: R& z; f. }4 R2 F0 Y; `
AddChangeJob( nJob );
2 I1 m1 G$ f8 H' X# c }else{
4 w! O! k; e/ z0 N3 W; h return;; c, b- ?4 \: [: j4 A
}
9 T8 h; y! |* X8 f; Q int nPoint = 0;
8 p0 X u5 H/ \0 Y if( m_nJob == JOB_MERCENARY )3 z/ m$ Q; _$ x4 R* c( o4 q
nPoint += 40;2 P9 m. t( p% E! i% l( q8 \
else if( m_nJob == JOB_ACROBAT )% p& W1 X. C, t7 ~( s
nPoint += 50;
5 Z& G6 t2 r+ w& M3 J, t else if( m_nJob == JOB_ASSIST )
5 f$ r9 F0 R: m) I1 o! _ nPoint += 60;
g6 K, T: o# R" i( y else if( m_nJob == JOB_MAGICIAN )" {% G9 i3 d/ k" a2 N* A; c/ w
nPoint += 90;
/ @6 z& W; |. o* A; M else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )$ d- M1 C" u0 a5 b# C9 t/ b( U
nPoint += 120;
$ L& l% N3 H2 D3 H else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )0 L! j7 r: Y* q# w* M
nPoint += 150; g: m6 p/ z" X' V+ w
else if( m_nJob == JOB_RINGMASTER )
- @) w# k/ u6 e$ _6 p `" s5 o4 Q+ K# D6 f9 \ nPoint += 160;+ @" E( T3 ?( t+ |# ^3 U4 r
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
$ ]: d4 v7 z2 `; K, Q- l* a4 Q nPoint += 180;5 B1 J& v2 ?' k0 b% J y5 B E
else if( m_nJob == JOB_ELEMENTOR )- a$ X' g, g6 X3 h2 N8 B5 p1 V- |
nPoint += 390;3 A4 D2 L8 u% d J! K: N; p) r. ?2 {
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
+ F5 k. H: K' q1 K L3 \. W1 e+ L5 S nPoint += 120;/ |. l( d# Q$ a! T- {$ ]% e
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
- J$ l' u/ X0 h1 J% w- M nPoint += 150;
`) c. p* D5 O7 m, w: `( I else if( nJob == JOB_FLORIST_HERO )
) b! M6 S' ~; d. j& t) V7 z' N nPoint += 160;
5 F" u5 ^3 @, ]* L" P, l else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
( K+ l9 |7 L( } nPoint += 180;
* c. h6 m" y1 Q! N else if( nJob == JOB_ELEMENTORLORD_HERO )- B; E' p, y3 R/ d, z4 l
nPoint += 390;4 p6 o$ |0 N- }* e0 \; z7 F
, j6 m+ m' B* x( x/ n* C AddSkillPoint( nPoint );5 U# d4 X, T4 b; \
m_nLevel = nLevel;
8 f% @. E1 W2 R" c+ ]" L. s# D" z0 d2 q) d7 p: b5 G
SetJobLevel( nLevel, nJob );! F/ C5 I# [4 }- ~8 B
m_nDeathLevel = nLevel;+ u- _3 g% H) l6 l% p" z2 ?+ m& A+ }' f
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans# w/ V3 D9 k* j2 j( M
if(IsMaster()). \4 J% Y: p: I2 h* n
{. B! k) }9 o$ F# h, C; N' y# i0 x
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
! Y7 K! u- F6 d- @ if( nLevel > 59 && nLevel < 72 )0 |- n! H" e4 {5 S
dwTmpSkLevel = 1;
# Q. t. y" c6 q( L else if( nLevel > 71 && nLevel < 84 )
) U) K$ }' [* z4 W dwTmpSkLevel = 2;
( ~2 ?$ z2 f6 R" b. Z else if( nLevel > 83 && nLevel < 96 )
. n- p* o8 @- J6 ~ dwTmpSkLevel = 3;
" ~( E: h" c- l4 \ else if( nLevel > 95 && nLevel < 108 )% N. A, m* ]) {7 P5 H
dwTmpSkLevel = 4;+ @6 _9 Z( |8 H, _! N
else if( nLevel > 107 && nLevel < 120 ): \; _6 c4 u4 \* D
dwTmpSkLevel = 5;. e4 N1 @# ~ _
for( int i = 0; i < MAX_SKILL_JOB; i++ ) . W# V4 I- e% G, s S( c0 r2 @5 i
{
& K2 a) d6 m, M0 O LPSKILL lpSkill = &(m_aJobSkill);! i V: `' Q6 f: {# G: M5 J- @; c: Y
if( lpSkill && lpSkill->dwSkill != NULL_ID )
( x* ?# @6 B- L. t2 k {
0 Q9 @1 n7 M3 _# P ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
6 N6 L' h- U' }7 U1 T- i; F1 c6 y if( pSkillProp == NULL ) t, o" x; b# m; k" h9 N a
continue;1 G4 A0 r$ b5 ]- M" R1 u! ]
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
# Z9 B- ~) e0 t continue;6 p% ^( I7 ~ o1 v5 B
lpSkill->dwLevel = dwTmpSkLevel;" \: y3 {8 m( g+ O
}
8 ~$ w# x% Q7 p! U+ W! D }! Q+ q) P) p" l0 U s. a" R
}- Q% Q9 A$ d/ I
else if(IsHero())% @7 Z9 f2 @! ?% N* Y# v
{
1 d+ j0 E) y' Y8 F for( int i = 0; i < MAX_SKILL_JOB; i++ )
8 p5 w! ?/ s6 ~+ T) ?+ W* {6 ` { ; H+ D7 m0 @& l* l1 p: R
LPSKILL lpSkill = &(m_aJobSkill);& y" ?$ O" M3 |7 r! E. `
if( lpSkill && lpSkill->dwSkill != NULL_ID )7 [# g9 Q2 n& w& H9 _4 Z+ z" w
{
- j/ l% P! V) f) Q ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
- C. o$ D8 n/ u0 ~( M a if( pSkillProp == NULL )
4 S, B1 q) _7 t5 f$ H& f. G continue;
. l# l; p7 J6 J: v$ y4 U& t if( pSkillProp->dwItemKind1 != JTYPE_MASTER)% k+ u, {, ^3 ]+ A1 g. y3 h& |4 m
continue;
, Z. X) [7 X" l' b5 F lpSkill->dwLevel = 5;% ^ A0 ~* w0 H6 B8 \" Q! a6 ]
}
8 A! B. n' |$ w }3 v( [: v1 X9 ]/ G. _( _0 @6 {* T
}
2 A# J4 }, ^/ c3 c6 [ else if(IsLegendHero())3 T% p% \9 C, U: P$ C
{
- D8 h v$ m' E: |9 V5 [+ k4 x4 U for( int i = 0; i < MAX_SKILL_JOB; i++ )
a7 a( U# P: u/ ?$ V6 Z% O { ) s) N1 p; {# M- o
LPSKILL lpSkill = &(m_aJobSkill);
- ?5 Z r; P! T if( lpSkill && lpSkill->dwSkill != NULL_ID )
, Y4 P4 H. S) h# w {0 \1 v: X& R9 o5 \$ y% o
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); - o* ~4 v- k) _
if( pSkillProp == NULL )
2 Y; c1 J9 ~6 G4 d' A( l) v( ^ continue;
: ]* t4 Z: z2 Z' @ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
6 L k2 y) u3 f! q6 U continue;
% t; R7 n$ |+ X' o lpSkill->dwLevel = 5;
0 M9 K$ M! j6 E, }. ?- ?& X# P* z5 a }
. t7 m! _; W: b: W C }" c9 [1 r# b: R7 L
}
# P: O* [, f+ A8 ^! v#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans7 T: |( S/ P5 j. ^9 X8 p5 S5 r
if( bGamma )# p+ k! g9 u- m' H
{3 W* \! ?; R+ {' v- w9 B& b% T
m_nExp1 = 0;6 k( j, M9 p6 \$ ?- D, D9 ~
}/ c) A* {. a' n2 r6 v
- E7 {" b7 @' [% e* w& [ ( (CUser*)this )->AddSetChangeJob( nJob );6 y" k2 X1 E7 M/ V# e" H
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );9 r7 p. ^" T/ c( S, |
% T# O2 I$ N( [: b2 p" U% X8 }
2 M& N) Z! I1 i& z, _#if __VER >= 11 // __SYS_PLAYER_DATA: k2 {( G1 B0 U+ O }, W4 k# u/ Q; L
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
: P3 I. u: r" o! d; \#else // __SYS_PLAYER_DATA
, {, R; L& ?8 e' m6 j g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
8 X/ I6 t" U" g. t9 @2 V0 c6 q( [ g_DPCoreClient.SendFriendChangeJob( (CUser*)this );, b( ~# [0 u- e/ J
if( m_idGuild != 0 )
! |, k. `! {" N1 ~: O g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
; t% m8 Y7 [+ q#endif // __SYS_PLAYER_DATA
6 G/ G; J6 z# O2 h: \& z SetHitPoint( GetMaxHitPoint() );" e0 p0 h w4 j* _
SetManaPoint( GetMaxManaPoint() );$ N0 Z9 g0 a' ]; `" ^1 H0 e6 n5 d" H
SetFatiguePoint( GetMaxFatiguePoint() );
: s0 @( D {8 m if( nJob >= 1 && nJob <= 4 )5 n' e% ~' I* q! M. |; F9 y% ~) \
{" Q9 R0 r2 |/ o9 k; I# G4 a
m_nStr = m_nSta = m_nDex = m_nInt = 15;6 i+ M/ U. q$ D) w
m_nRemainGP = 28;4 @+ ^1 J5 e- a2 _4 F
}
# m. B: c; T! E- x5 I5 Q if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )& F9 _9 s$ M; p2 y
{
- J; \# Z6 C4 Z/ D* z! { m_nRemainGP = 118;! {. R- u0 S. u) ~
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
; s! {6 T+ r9 B5 _( G l m_nStr = m_nSta = m_nDex = m_nInt = 15;
- Q9 k8 [- \% S* j- E5 a9 K }
9 S1 R5 D: |+ Q if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
3 z& Z. I W+ f* G8 \. V( V {& _- x: _- k1 t2 ^
CItemElem itemelem;
( {7 S. t4 y' U: f3 U itemelem.m_nItemNum = 1;: i, T! Q9 W8 J( @
itemelem.m_bCharged = TRUE;, h# Y! X' y( ^4 u8 ?+ T, H; |: f
BYTE nID;
6 }& B# H# C* J: K: ]! c9 Q5 j
: b8 t1 Q# X* j7 @" `+ I r if( nJob == JOB_MENTALIST_HERO )5 d# v& T# B* w P& ~% E- T) ~) n6 ~
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;1 G, v4 b( k6 X* k
if( nJob == JOB_FORCEMASTER_HERO )" [" f3 B3 g2 l' Q% M
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;& F4 e) U( ~' \& J4 `; J
1 {. Z3 f( O" H ( ( CUser*)this)->CreateItem( &itemelem, &nID ); `1 O' A5 q j. i( B, C! f, f
}+ k- D9 j8 k5 K; q" m
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );# x+ e0 G* H3 } i
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );! O! T- s1 ~) f; e$ {
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );& v; @ ^3 N9 p+ t' G& ]
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );1 k) P5 o# H, [ U0 n
( (CUser*)this )->AddTaskBar();*/
% I* T( X# I: q$ Y ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP ); _% H- c5 H, E) H
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?) K# K2 R" _% @
((CUser*)this)->CheckHonorStat();
9 a) ]' q! y6 ? ((CUser*)this)->AddHonorListAck();' y. x2 T9 H Y. z# }6 T ^$ l* j
g_UserMng.AddHonorTitleChange( this, m_nHonor);2 @( O5 R) ~/ k$ @. I$ k* G& Z
#endif // __HONORABLE_TITLE // ′Tà?
2 F9 j- n2 z" j3 a, n) N7 ~! ^) ]2 } }
Q- N0 \; W; ]9 h9 }9 ~& [# U#endif // __WORLDSERVER
$ L8 @5 }) j2 G3 [7 g}
6 {3 l5 @, F) s0 {) a
- o" D5 s) v \/ r( F然后你进入functextcmd.cpp并添加以下, m1 M& R$ V; q8 V a/ e |. e
. y9 L X3 N4 q* z! M
代码:
9 i o! W' ?) m. k4 B% }ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
& s# m. y4 p+ L5 u5 X下面插入
# Z& D3 j. `" ~* W" F) d- hON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) & b d' E0 g7 Y/ Z/ I4 u% @
$ G$ S$ V! Y' N
然后你去" D5 Q, m# {1 S% j, h" t
$ U/ g( H( j- h9 W: Y, d代码:
7 q; c ^# \- t7 |8 W2 h. ?3 ~" S代码
0 B/ \6 {% x) o$ i" K1 K$ H2 o2 a" }& uBOOL TextCmd_ClearPropose( CScanner & s ). E. j' B, u( M# R8 L8 A- K
{2 P$ A8 k9 C% j0 c$ t: }( B
#ifdef __WORLDSERVER
8 Z- N1 N' h9 `0 z- X CUser* pUser = (CUser*)s.dwValue;1 Q6 g( q& m! x( o. Q& p
g_dpDBClient.SendClearPropose();
' M6 Q- }- k( {3 V+ h9 L#endif // __WORLDSERVER
1 i4 _8 J- j" x6 Z! `/ i return TRUE;
; |, f4 k6 h& {' X}, |5 D$ K5 e" d8 J+ b$ e i. ?
下面插入! x. d* }+ ^! t
BOOL TextCmd_rebirth( CScanner& scanner )! w9 c7 g0 g7 l/ ^
{+ J! D6 w( b7 r9 ?2 H5 b2 K
#ifdef __WORLDSERVER5 x1 y2 y' `* c W
CUser *pUser;1 e, ^. i0 `; }7 K% I
pUser = (CUser*)scanner.dwValue;' Z5 ]/ F, u6 S, V4 m) k; r
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero()): Z4 y' D: n' H! @
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);8 e4 [5 h& j. w# I
else
% z+ T2 w! `" RpUser->AddText("你还未达到重生条件!");
+ H# L. C8 v9 o' Q; ~" ]/ D* }#endif @2 l( O5 U; D' F v# D; U8 Z
return TRUE;
. K1 p+ K4 c: X} : k- A% ?0 }5 f3 E, X' i5 p
2 G* r0 c3 ?% K7 q7 U
% ^0 ~/ W. _( g- {$ Y" h
( d/ [# D2 \! k) f
7 x" p' B# w* t/ S |
|