|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel' {- Q5 c+ J8 s7 C$ N/ w; R" v
) P4 s* R g- I' {Mover.h
( X6 y" ^: K, K& s代码:
% Q' [5 O7 H5 k2 Z找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü% p* b+ f8 ]& l1 M u
, q: i. e5 d+ x# N
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
) _& U: U2 ]2 B: h+ a D+ v" w0 q4 k8 O7 L& K
然后你去mover.cpp添加
! V9 R! x: M1 \$ B) P3 A3 G$ i! i# M# o' _ V: K6 s, f$ W9 A
代码:
: u) n) z/ a; M3 z1 h5 Svoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )# X% }8 ^/ P8 v
{
% s3 x( G3 G- G9 t9 f#ifdef __WORLDSERVER R( l7 P# y4 k: r+ K! h8 X
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
% F5 _8 l5 p7 U9 R5 m, y7 e MoverProp* pProp = GetProp();
( R$ p: R+ X% Y' o, ~ if( pProp )$ A9 A- j$ |& j" T9 Y
{
+ y& Z- b+ N! y6 |$ e9 @ if( nJob > 0 && nJob < MAX_LEGEND_HERO )
# C$ @7 V& v+ F% _6 t5 h6 O3 S/ T {. F$ q' i7 h9 e1 }1 U
AddChangeJob( nJob );
# w+ A: t* N+ V6 p/ t7 p }else{& p# Y( l. p- @% I7 q
return;# q! ]4 H. ~# z" A$ x6 k7 e
}
( a! t. Y- R' ?, q int nPoint = 0;
8 @1 F- ^! y- Q if( m_nJob == JOB_MERCENARY )9 R1 `: j$ h7 h7 C) O; {& {/ }+ Y
nPoint += 40;
7 l6 u2 ]( }/ B; ^ else if( m_nJob == JOB_ACROBAT )
$ J$ X; w, I4 }, ^" K* D- @ nPoint += 50;
5 N4 ]' `, _9 O else if( m_nJob == JOB_ASSIST )
- T- Y$ ]8 j. S3 G nPoint += 60;% X# C2 f _+ i% y
else if( m_nJob == JOB_MAGICIAN )
5 K# W3 y5 U T' Q0 n5 f nPoint += 90;2 O) ~' j* d) f& Z P9 R& f
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )+ M0 X. D! i( @ B4 d5 C4 k) p
nPoint += 120;
# Q/ ^3 s& I, y+ k3 i) H% R else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
$ _' D( c# R9 N. F; w nPoint += 150;! Y' A, r& f( o# G
else if( m_nJob == JOB_RINGMASTER )) f! I' I! a" j5 ]( {% v
nPoint += 160;
" L- K7 k8 P! L! x& z. {. y else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )* b- O# O0 `9 a; p
nPoint += 180;
) g$ W% n- w* x! ]; ? else if( m_nJob == JOB_ELEMENTOR ): D+ b; S$ B7 i
nPoint += 390;, ~4 V) |4 h0 `; h. x, D
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
% _+ J( e O# s nPoint += 120;( x+ P, {8 ^2 A4 z7 O5 F
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
5 J& B3 [! A7 O- C( |4 } nPoint += 150;
6 h+ R* @" R$ N, L3 ?, e O else if( nJob == JOB_FLORIST_HERO )
/ ], p" W2 d% \3 W5 X3 m6 k0 V nPoint += 160;
: R7 D6 g' ]9 ]- }2 f else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
. x& p8 u; b* X8 Y' `8 _! \2 B nPoint += 180;& u3 Z2 u# w. _7 p& j
else if( nJob == JOB_ELEMENTORLORD_HERO )$ i5 i2 \7 _/ `' ]1 y1 Z4 A
nPoint += 390;
1 O0 A: V, e- J
) P" i4 c1 g9 C W AddSkillPoint( nPoint );
6 j4 t0 y; W! l. m1 S m_nLevel = nLevel;
1 ?" z c7 k6 v+ T8 Q; z) z+ R [$ L, \
SetJobLevel( nLevel, nJob );
3 ]1 o7 ~2 n; b/ P1 P m_nDeathLevel = nLevel;
: J, U1 `( q0 m) d#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
+ j9 g3 [& K/ h( Y# I3 w& L: h; O if(IsMaster())
5 h, U& J) o8 Q4 b$ z {
! q# `4 y3 V1 K int dwTmpSkLevel = 1;//60, 72, 84, 96, 108: S* w9 v) K! G$ h' r$ z. h
if( nLevel > 59 && nLevel < 72 )7 U7 |7 a N% L, I5 z! b; K
dwTmpSkLevel = 1;
, O/ M) T _6 ?: [1 p t0 i% F else if( nLevel > 71 && nLevel < 84 )
' U0 m. @! E3 u/ }6 L, ~ dwTmpSkLevel = 2;% x, K/ q( J/ E" I
else if( nLevel > 83 && nLevel < 96 )# Y: e5 v; Q/ z
dwTmpSkLevel = 3;
: U8 M0 Z' o' g8 x6 w else if( nLevel > 95 && nLevel < 108 )
, b! h' t- R- I1 p" g4 S! f$ r& B dwTmpSkLevel = 4;
% t3 Q: U( Z5 u- n* l4 f else if( nLevel > 107 && nLevel < 120 )3 y( z$ i p' v1 J9 q
dwTmpSkLevel = 5;
( }/ n4 l* e0 t4 \ for( int i = 0; i < MAX_SKILL_JOB; i++ ) ' [8 o. ~ _0 h0 R
{
* W8 e; b- ]+ @8 B( o2 h: k9 { LPSKILL lpSkill = &(m_aJobSkill);: z: w/ c) }- \8 T7 e
if( lpSkill && lpSkill->dwSkill != NULL_ID )0 A/ E; U9 D$ Q
{
+ ^. z! r R2 @6 \3 Q1 \5 g: b7 x ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); % L6 `/ ~3 T+ t( i$ h2 J
if( pSkillProp == NULL )
t8 ~ u/ r9 A7 p; m5 C continue;
) z) o+ ~2 {3 J+ P; D4 y if( pSkillProp->dwItemKind1 != JTYPE_MASTER)$ h2 ?& m$ _0 O! z% o4 A4 [
continue;
+ u& Z0 [2 y! J# h( T9 l9 l5 u lpSkill->dwLevel = dwTmpSkLevel;0 W9 u6 q5 Y: q8 m# a$ o
}# G% z( _1 ?1 w, f
}0 I9 l8 X+ }( t5 t ?/ R& o
}
0 ~& G# [% J4 J4 Q/ q5 L N5 v else if(IsHero()): M2 K* g1 W( v, z
{1 i" f$ n/ `( D2 H
for( int i = 0; i < MAX_SKILL_JOB; i++ )
5 Q7 `7 I& f2 w& X9 h {
4 ?9 \! F: k8 i LPSKILL lpSkill = &(m_aJobSkill);
2 q- f0 H. z+ E4 |- ~; f if( lpSkill && lpSkill->dwSkill != NULL_ID )
# E+ V4 K- j$ q ?; s' ` {
* w0 L2 H3 @4 _2 o ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); - `9 z! \9 o5 H$ x. |
if( pSkillProp == NULL )
5 S/ T. A* R2 [9 d continue;
/ ]- i- @: N0 g+ T if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
7 h- X, }" w! E' x continue;
+ Z! u) `* t/ z! e. b lpSkill->dwLevel = 5; l" Y: L* |9 j- t$ ^
}
4 t: O6 N4 |6 C2 q }
- D8 v0 m" D& w6 S }
$ v, K `5 i3 n v4 \# x else if(IsLegendHero())1 W# ?$ A8 ?% A9 J1 G0 y- [
{( F! r7 c, R2 y) M; ~2 s' b
for( int i = 0; i < MAX_SKILL_JOB; i++ ) % g# p) u) |8 @1 {
{
7 |2 d! A, N( v6 r2 d* I LPSKILL lpSkill = &(m_aJobSkill);
6 l" }" P8 u+ a if( lpSkill && lpSkill->dwSkill != NULL_ID )
% l% Q8 q& r2 o* J; q- D {! z& N2 a' C" u" T
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
0 t; n# v7 D; M& E5 k8 F, L7 v if( pSkillProp == NULL )0 F# ` \9 @, P: {
continue;
' y2 X: x4 \0 O% y" ]) L6 P# U if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
; f1 j. { ~. O continue;7 y( i9 d$ Y! N1 J8 ]
lpSkill->dwLevel = 5;; k9 ^9 c y- `! i4 F3 Q: N
}% a6 f8 g- n5 ` H
}
! c7 |5 ]* B! h r }
! }/ J6 U; w4 S. Z4 |#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
J* C3 a! w+ V+ `% f if( bGamma )
5 p3 F# n5 m; R& e9 A$ z2 @5 Y {, Q. _# A/ P" {6 m7 o: N0 m; ]
m_nExp1 = 0;
5 d" a# I `% A, w* ^- r }
1 M6 r2 q# i. p( ^0 b m' q* B. n4 r4 o9 J, i& C7 a
( (CUser*)this )->AddSetChangeJob( nJob );: C( o: n8 \( @" m! q1 X: Z1 ^0 g
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
$ ^0 i' F) n# K6 R- K- A) R c* T, z
4 G+ P+ h/ w; S" x; V; a#if __VER >= 11 // __SYS_PLAYER_DATA4 x" U$ h* G4 B5 d5 G
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
7 J7 e$ Z; w/ t' s+ o5 P0 ^#else // __SYS_PLAYER_DATA
' d3 x$ |+ f, A, t. H0 P; ? g_DPCoreClient.SendPartyMemberJob( (CUser*)this );* _; d: C/ S7 l, D7 I" n
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );# b2 s' N- I- i1 ^- N: n0 N
if( m_idGuild != 0 )
1 t2 n# E! K4 a$ D) G7 k6 V g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this ); j% t3 w% q3 I0 `5 n4 _
#endif // __SYS_PLAYER_DATA
+ w7 R k/ z: d; H3 i( f! B SetHitPoint( GetMaxHitPoint() );
2 b. B5 Q% z, `# j% ]/ ` SetManaPoint( GetMaxManaPoint() );
3 \/ g2 k2 g. E. q( X SetFatiguePoint( GetMaxFatiguePoint() );1 I) {! \1 O8 V* a
if( nJob >= 1 && nJob <= 4 ): d3 r, y, J' V3 \1 C
{& g$ I9 l( b+ g
m_nStr = m_nSta = m_nDex = m_nInt = 15;
3 T% X* X4 H! t+ u+ d m_nRemainGP = 28;
; m7 a/ n' J8 Y# L% O }; U6 s) t9 Q' L7 n1 @0 v+ m
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )$ q! O) k( H5 m2 G
{
# R# e/ m4 U3 {# v5 O5 y/ k m_nRemainGP = 118;( C) q, M* B% l ]# Z1 {
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
' H# B2 |2 s. i m_nStr = m_nSta = m_nDex = m_nInt = 15;' N6 Z6 Q. ?% }1 U' |, g6 o: U9 o7 j
}
" k. o! t" y* S) ~ r if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
" j6 ~. S, p! ?) d0 }: ?9 z% _3 {4 P {
& d1 f1 F$ F" z, _ CItemElem itemelem;" _: Z) T, m \/ P1 m9 |; q
itemelem.m_nItemNum = 1;' X+ e) d& k( m$ V5 W4 A# V! _
itemelem.m_bCharged = TRUE;8 m6 {( R7 n5 D: J
BYTE nID;* ^( {3 y# D3 v! A" l8 W3 T9 o
$ i, S; j/ Q6 ~- r) |' V9 @ if( nJob == JOB_MENTALIST_HERO )/ P1 z6 H+ s# m; Q3 ?$ Z: D: b, j1 u
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
5 q' T& e" w8 t: i- Z' t if( nJob == JOB_FORCEMASTER_HERO )
* W; z( C% l, f& a' o; T itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;% @7 t+ G% l" d
5 S( R& V% r+ b* j; f- x. W ( ( CUser*)this)->CreateItem( &itemelem, &nID );. h a; p; N/ L7 i
}
+ A B, j8 n5 f* B# @& u! j N g_UserMng.AddSetLevel( this, (WORD)m_nLevel );2 y. Q3 r2 ?2 u' `9 s8 V5 u
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );, N; A" d u8 S1 i; `6 G
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
2 c, o5 A7 K9 |; i. ]2 ?! b& H) u /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );- P+ a7 n) [. H3 L) [
( (CUser*)this )->AddTaskBar();*/
2 p! \; ^: |9 s" y ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
$ K0 `) V/ s a; l2 _; p#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?% i& i1 G" @! I8 f
((CUser*)this)->CheckHonorStat();% s. E& C! Y% U& D6 g7 r
((CUser*)this)->AddHonorListAck();. h/ v, z0 d( M6 U
g_UserMng.AddHonorTitleChange( this, m_nHonor);
; Q1 L1 v( [( Q#endif // __HONORABLE_TITLE // ′Tà?
* c1 z: p; m2 ?5 ^' W; W2 e }2 W. h2 p. U! n$ K7 d; O0 ?
#endif // __WORLDSERVER
' r& U6 y/ u9 d1 M& ~) D$ y) J& S1 C}
6 X. y E1 {* V6 f: _7 |& u4 u: E5 n4 ^
然后你进入functextcmd.cpp并添加以下/ Y- V) ~5 K6 s! S4 {* A
) j$ V5 ]* _" ?! H
代码:1 g A Q( |$ A4 i
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )# O! f& i. N ?+ b$ T5 N6 u
下面插入8 i' j- [3 l; q$ S v" D; U) B
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
9 o! r' }- b$ k+ b
4 N+ _8 o. `/ ^; x5 i然后你去
) Z2 R; [+ F. f& [& L \9 ^9 x. K- j
$ g! \8 n1 N% q% t代码:
! W# l& i" E$ j |! ?代码
8 _' V7 M) Y& Y* d) N; \BOOL TextCmd_ClearPropose( CScanner & s ) B$ A; [# K& y8 J
{
1 U/ f, g" _2 h* m: | X#ifdef __WORLDSERVER
& q! ~+ E8 L; j0 d/ G, d7 d CUser* pUser = (CUser*)s.dwValue;0 _) n6 X8 u7 t( U8 ]2 T* ]
g_dpDBClient.SendClearPropose();3 w, _% d6 |- F r
#endif // __WORLDSERVER
% v4 E) g8 \: x return TRUE;
+ v- P: C6 X! {7 ?}
5 A) k. M- h) l) b5 f- C下面插入
+ E. m% p, g* S. x% ~1 cBOOL TextCmd_rebirth( CScanner& scanner )
: |% ?; r1 o$ V( y/ \{3 I$ _( }+ W. l7 {7 I* t/ |2 {7 M
#ifdef __WORLDSERVER# I6 d) {8 t% R5 r: M$ f t
CUser *pUser;/ x( e' E M" C* f( u
pUser = (CUser*)scanner.dwValue;2 P& r, C6 S6 d; j( v
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
v1 p- o: l3 A6 o0 ^4 DpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);3 I! ]1 g9 b7 b5 }
else
) Y2 s" J) c3 h qpUser->AddText("你还未达到重生条件!");; b% k L" s8 }6 E. d
#endif5 F) s8 l1 k; n
return TRUE; K1 O6 |1 G# [* @8 F3 q
} 1 D& B$ ^0 i0 ?* b- }& z
$ M: T4 ~6 O5 q9 u8 T% z6 n. L
/ S2 P7 E6 X2 F
6 _% g4 q% |& M) C( L" B
3 L2 I! D) _" X6 v. z& @ |
|