|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
3 O- w" U( m$ l5 E/ y/ V) _# K
% `) A% o5 [9 F6 f, W- fMover.h
- ^0 y4 l8 k0 e5 {8 a代码:
% g: h/ D0 e0 w找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
/ q. M7 ?* E, ~% `/ K5 q& {; f" B" O3 U0 R* ?
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 8 x- T0 Q5 E8 Y; s0 g R$ T
) h" l! I/ D3 U# D. F6 ]
然后你去mover.cpp添加
+ j8 ]5 C+ l3 }4 S5 s
& Z# H4 ^' Q( W. a8 F7 t代码:$ h3 A) K( F# U B2 f5 w# A8 T
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ): E" K3 w6 A& f& i( ^
{1 S! n C( Z) S
#ifdef __WORLDSERVER4 Q; f+ o9 W: u( D& W9 B
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
4 ]# n0 k- V$ F( ^$ [ MoverProp* pProp = GetProp();
. d* \+ ]# r: n$ \0 v3 e- L if( pProp )$ t$ I, \: I: J ?& X1 k
{
( U+ w+ R! V$ C. u if( nJob > 0 && nJob < MAX_LEGEND_HERO )2 O2 D F1 l5 ~; |+ }" X7 S
{
3 P2 l2 Q2 f9 X! R, a. L AddChangeJob( nJob );/ `, w) Z+ }" j, S6 X2 o. w8 U
}else{' Z) P0 }3 W6 M
return;* L' V0 U) f! q I2 l+ H
}
2 G d$ g$ a" V' U int nPoint = 0;) J5 ?: ?: e, r( J
if( m_nJob == JOB_MERCENARY )8 v& H4 e+ c' {2 P' _5 `
nPoint += 40;. ~+ ], q6 q- {; r9 Z
else if( m_nJob == JOB_ACROBAT )
1 O; K/ c S' j% f% P" W& ~& s nPoint += 50;4 u5 a+ X# S+ C4 @
else if( m_nJob == JOB_ASSIST )
! M9 z# c* L+ ~# B+ ^ @ nPoint += 60;# R, O5 S1 D- E- e
else if( m_nJob == JOB_MAGICIAN )' m8 C7 a/ q' U6 P3 k
nPoint += 90;! [& F' v; U3 ?9 F; P* N5 N: `
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
; a2 k9 Y4 N' B# C1 l( N. \ nPoint += 120;
% y4 u0 M6 Z6 J5 a else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )( K1 ]7 Q" Q `5 e7 Q3 `% m
nPoint += 150;
' m- ?, g, z- h% `3 ]+ H7 ^* q else if( m_nJob == JOB_RINGMASTER )
5 r7 C$ E: P, M9 R% G nPoint += 160;
5 F0 w# |. _: U+ } q# O else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
7 i# `# n; X* ~0 L nPoint += 180;
: z# V! K' {! j# f. @+ H2 d: n else if( m_nJob == JOB_ELEMENTOR )
A8 V. O2 p4 _4 V nPoint += 390;
A0 u" m" |8 o. D0 E else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO ): M/ U* X$ K# l5 A9 J6 l( g- e
nPoint += 120;
) M' \; u7 o% a& { J; o else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
3 v" _% p5 E- } o- T- [% u nPoint += 150;
7 t: |4 F* t. }. R else if( nJob == JOB_FLORIST_HERO )
( E! |5 O& [( g& a. ` nPoint += 160;, _: K* @3 E% }1 @3 n
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
3 g4 Y0 _8 z& y) R% }# c L5 b4 d nPoint += 180;4 p. Z) a9 a- _: E. l1 c
else if( nJob == JOB_ELEMENTORLORD_HERO )& {# X. j ?2 @
nPoint += 390;
" [; Z; E! c" @% r. F5 q1 f4 |) N' E% g2 Y! O1 S+ C
AddSkillPoint( nPoint );
, V$ [; [4 b% y1 O1 U7 U m_nLevel = nLevel;/ F1 Z7 V& n b2 n4 U
3 `2 j$ a# k% T$ C
SetJobLevel( nLevel, nJob );9 p. U4 _' c ]! M; R' w% s' }: r
m_nDeathLevel = nLevel;
$ Q1 u3 e6 E7 o6 Q4 |4 V( Q: i; t#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans) D/ G1 w5 B5 H( D5 H$ {
if(IsMaster())3 \0 } ], x8 v) M) X' h9 Z1 F
{; ?6 q8 | H% K7 @
int dwTmpSkLevel = 1;//60, 72, 84, 96, 1086 Y: h6 `- g$ k% f- K/ E7 S4 J+ N
if( nLevel > 59 && nLevel < 72 )* O0 D( x, R$ l- `, C, ^
dwTmpSkLevel = 1;% y% K, |$ H: A1 m
else if( nLevel > 71 && nLevel < 84 )
, {+ a- i' H; N: q, j dwTmpSkLevel = 2;
+ _; B" @; y( Q: m- }( d5 { else if( nLevel > 83 && nLevel < 96 )- M9 F4 m" P8 D4 N3 g' f! f% ?7 Q* [
dwTmpSkLevel = 3;
5 s4 H& C, z- W! C1 K( D else if( nLevel > 95 && nLevel < 108 )# h! _/ [4 E( q" R! b+ [) ^/ u2 _
dwTmpSkLevel = 4;( J2 F' S2 m1 K4 E# _( H8 [% n9 Q
else if( nLevel > 107 && nLevel < 120 )
# P+ J, h. f* D: E' N+ o9 R/ B dwTmpSkLevel = 5;
9 q0 w# U" `/ G0 B/ R for( int i = 0; i < MAX_SKILL_JOB; i++ ) , [# @3 W$ Q# X
{ 8 y: p9 z' T& @# q# r+ Q
LPSKILL lpSkill = &(m_aJobSkill);
0 D* Y* o! J$ S* l, N1 K" ` if( lpSkill && lpSkill->dwSkill != NULL_ID )" z+ u3 D, v+ k0 _
{* Q2 e7 `; V |+ y4 ]0 ~( o
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 2 h! A0 P. E3 Q4 i0 j8 h: i$ j
if( pSkillProp == NULL )
2 x2 m5 M) f1 y- p2 l$ r% Z continue;, m% }; D" J5 G# y
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
6 m" N9 q( W) b continue;
9 M A) T6 d9 z( T+ h! G lpSkill->dwLevel = dwTmpSkLevel;
- x7 v F8 t5 \$ { }! k4 k$ [% ]9 O0 R4 T6 n W1 r
}9 ?6 {; Q; d, [3 p( W# N( [# Q
}
2 H+ A$ N5 d0 M; u6 Z else if(IsHero())9 h/ n( k. J' Q7 R$ ]
{
7 X$ d0 u- p+ N. `: p! z for( int i = 0; i < MAX_SKILL_JOB; i++ )
; d' f4 C& X/ z0 O { : ]$ H9 ^2 X4 P v8 s
LPSKILL lpSkill = &(m_aJobSkill);
: M) D: E% v# T) ^+ o if( lpSkill && lpSkill->dwSkill != NULL_ID )9 D4 @. q& R2 S
{& d: X: ]* p% q% G5 g& S! J8 F
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
$ J* E# N) E& c( K, {" ]& T if( pSkillProp == NULL )6 Y6 v) |- g( y* D/ m" `
continue;
' f2 M% X! V% x* V7 |: Q if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
7 y% w1 F/ F2 j% _ continue;% o1 H0 B: s; \) l2 A8 f! O" r" V
lpSkill->dwLevel = 5;
6 \. p; J& z; [ }
# l' V. `9 y# ^ }+ g! k% d4 x6 s# F- X
}3 {) f: p# C. J* R" s
else if(IsLegendHero())
* R8 N O7 n7 \4 B$ G" P# F. A3 z8 ?. P {
2 @5 J/ ^' U9 @. e4 u0 G4 l for( int i = 0; i < MAX_SKILL_JOB; i++ ) 8 `% l; e) k8 }1 q: [
{
, H' \; J3 u" K& g LPSKILL lpSkill = &(m_aJobSkill);6 S' o4 [* T8 m/ L% I2 l
if( lpSkill && lpSkill->dwSkill != NULL_ID )- [- g f/ E" v( k5 \ R7 x9 w4 K6 R
{7 S3 Q. ^3 o/ A, S z; T1 m. n W
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
3 q; z0 u1 \ A$ E2 L if( pSkillProp == NULL )) K" Y4 n* M* Y
continue;- Z) B3 R4 R+ k9 a
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)" O- S6 P" [# N: G- ^8 s' r
continue;
2 Z" k- d! {+ g& |/ k lpSkill->dwLevel = 5;
2 E) i9 P' }8 h2 \0 I }' X2 w i/ i l, p" n S; v- P7 `
}
% I+ W7 o$ x; H2 \8 l% V, [6 J) C }
8 E8 h: l! S+ m/ Q8 M#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
" Q3 A7 p4 C) q if( bGamma )
% N3 I7 Y0 M1 w! R" L* V4 V( k8 a {8 D t0 E4 a1 z4 ^' Z) j
m_nExp1 = 0;' y* K1 V! U" h. F, B" K
}
' [) T4 ]1 v- }$ b! |- l. H- }/ w8 `$ a8 B+ k" o0 c
( (CUser*)this )->AddSetChangeJob( nJob );8 C5 s/ K* [* T; r/ f
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );2 `; j9 y* P2 E8 J0 d
7 a% ?5 Y) Y( w) ]1 x7 E1 v3 P
( j, ^% n0 G( i0 h0 F' n#if __VER >= 11 // __SYS_PLAYER_DATA
& I/ o: L" F, A, b0 ?, L. i- R& ` g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
( f" M2 x0 [! M3 a% U3 H; r#else // __SYS_PLAYER_DATA& [; S9 t# t2 h) b
g_DPCoreClient.SendPartyMemberJob( (CUser*)this ); c! C2 ~% I2 V+ V- q- Q$ R
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );; B% L9 ~/ t( K7 {0 K3 n+ {2 j- b# G
if( m_idGuild != 0 )
$ Q7 T0 U+ W) R3 @) R2 d g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
3 @3 D5 q) m c#endif // __SYS_PLAYER_DATA5 }* W& Q0 w% t) K
SetHitPoint( GetMaxHitPoint() );
}" I& _6 G* m- f. Y SetManaPoint( GetMaxManaPoint() );
* B2 g: `; r' |& Z* o SetFatiguePoint( GetMaxFatiguePoint() );
) k2 g$ X( R/ C$ w$ X. Z) ~, | if( nJob >= 1 && nJob <= 4 )5 D( R k& t M8 [5 w* Z( N! E2 {
{: Y: v( x: ]7 L3 M5 c: |' E
m_nStr = m_nSta = m_nDex = m_nInt = 15;0 h; Y2 P+ P$ X. h1 I
m_nRemainGP = 28;
2 Y* |; [7 e6 N/ [' { }
+ t& R9 r$ L! \4 E8 m if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )% H4 Y% u! W: ^1 A, H9 C, s
{
3 i6 D% i; e( h- w8 b$ n4 A m_nRemainGP = 118;
_% C) f0 h. R2 y B8 V+ \/ f //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;/ C+ b7 d* v5 r9 \. o
m_nStr = m_nSta = m_nDex = m_nInt = 15;7 ~7 J3 q, N, H0 l* p
}
g* L! r$ O! D) Q1 I if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
7 J- H1 m8 q, ` R! a {; r3 O: U% J8 h% d1 P( _0 S" g$ H
CItemElem itemelem;( _& z( B( S- @ J
itemelem.m_nItemNum = 1;
* d; e( e) K H* W. t: b8 u( j1 q0 K itemelem.m_bCharged = TRUE;6 H2 J y5 n. ~! u4 A9 G
BYTE nID;
+ b- H& X, N# k. Z
% H8 Q* s5 v8 d c- f4 o3 B! t if( nJob == JOB_MENTALIST_HERO )( ^' M! Q' [$ `9 X; ]: m. i
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;' W i- ^6 z# h1 {9 k0 n
if( nJob == JOB_FORCEMASTER_HERO )
& R5 ]7 U) E* o& C( i itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
; m# U4 d- I$ Z% \7 j" `
# L% U8 R+ V6 O" Z! y8 l- N ( ( CUser*)this)->CreateItem( &itemelem, &nID );- X& E) k7 y& f& ]
}
' g; n Y0 j. B& x; b8 s8 v g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
2 O, A0 M4 h4 r. N+ E/ w, I ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );; \7 ]+ ]6 O) t; E
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );' |( i, E; {- L. Q4 N M
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
4 _& }1 p) Y/ D0 f2 [" I6 k" O0 b ( (CUser*)this )->AddTaskBar();*/
/ o4 d! f! {% Q# n& `" l4 F ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );4 c, i6 V" j# j7 q6 u
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
; e5 a+ d% f' I( p& O ((CUser*)this)->CheckHonorStat();
; {& ^+ I9 g8 @ ((CUser*)this)->AddHonorListAck();( |3 k$ X: G* ?1 X7 _* I7 ~* u* V
g_UserMng.AddHonorTitleChange( this, m_nHonor);; [: M1 L+ j0 @
#endif // __HONORABLE_TITLE // ′Tà? L* V! I' U( }- x
}
8 W. T' b9 ^$ r3 {# C% j2 W, d8 j: j#endif // __WORLDSERVER
1 I3 e; T$ V- O/ o: d; L} 3 B6 n$ b0 f$ A3 p$ ~
( T8 f2 W( M7 x& q
然后你进入functextcmd.cpp并添加以下
. `: F9 u$ a+ ]& c! L; C" V4 z) p7 z4 T E
代码:2 ]" {+ ]6 c7 @- i; P" ^& R: j d. m
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ) P2 {, S% I$ s- |
下面插入8 z0 B# f6 b, s
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
8 M1 a" N# A) R. }% T" v7 F
' G- ^" l. i5 E- H- v* s; b然后你去; j0 N: M6 \ o) }+ q
3 [& \ R. O: u% Y代码:
' O- z" v4 w6 I! x代码' j8 K F9 D& ~! }& Y* y& V
BOOL TextCmd_ClearPropose( CScanner & s )
/ F" z7 N, [) O5 v3 e, y' a{# d" ~* w, r) C, W8 W1 h' h2 g
#ifdef __WORLDSERVER) K+ @ b0 I# l& s4 u" S2 @( \
CUser* pUser = (CUser*)s.dwValue;& }# M9 T2 X- r% x% S0 i
g_dpDBClient.SendClearPropose();) E2 w0 o+ N9 \$ j
#endif // __WORLDSERVER
& O( o- c4 [: P3 _) b return TRUE;
; b7 X" ^2 F$ l; C- M* x+ y0 F}0 T0 _5 [& R7 c( |) Q& z; |3 ]) s
下面插入. \# z( o! r$ N6 d+ \' i. ^
BOOL TextCmd_rebirth( CScanner& scanner )
, ^% T( ~5 ~; \" U/ i& F. y# k{# y* t8 K- v: G8 D2 w! m3 f1 ?5 p! V* g
#ifdef __WORLDSERVER
) M5 D9 I& g: G) GCUser *pUser;& m3 S/ }$ A! c. j
pUser = (CUser*)scanner.dwValue;
: h1 _( Y1 B Z% y% @, F" sif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
; `5 r& |$ t* JpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
8 l: {5 U0 l1 M/ Oelse
, ]& y: y4 l) D1 f1 ~! U( U, O1 vpUser->AddText("你还未达到重生条件!");
4 a( i" u# W' T5 r#endif' B- U. Y% y) `+ q( l! V8 V
return TRUE;
8 }) `& h; ^ Q$ O& N} z/ x) S% ?" D A7 \ D
& R6 |* w; G* k' w
$ e: m% A i3 R2 M* K# {3 R, t$ e7 O6 o+ @
! \* T. |; s! H6 ~+ B% K& K Y2 Q |
|