|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
@9 k. H3 D7 U v1 l* R0 T2 Q2 C% g" O9 {! E% G9 l
Mover.h: x& G- X/ q' f! S. k L+ O
代码:$ Z8 W( [7 a, V" I
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü" g/ ?8 n. r# P( v
+ L% @ a1 T. k0 e! F下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
7 F0 f- X" y- \ d+ ^
& t# @$ S9 S) X& z然后你去mover.cpp添加% A) L/ K7 ^) n( }
! P9 u# `# \4 x1 ?5 c$ V* M4 u
代码:
1 K( g/ R, P; f6 nvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ) C/ `0 Y) H/ q6 y Y8 f
{- J# l" w' L$ G
#ifdef __WORLDSERVER
9 M, B. w( I7 r" s9 c // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
& W( v+ f. H# F# @2 [ MoverProp* pProp = GetProp();1 o3 L$ Z' w) a% Q3 v
if( pProp )1 X* F' V$ p) e+ x- ]
{; m) B" ~2 I( {! g# F
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
' @( N' m3 y$ B) E# a8 @ {
. c" d8 N1 @, D4 z" t AddChangeJob( nJob );
3 ^8 M% e; `; X5 Y( H; W) G5 y9 W! I }else{& t# A" ~& S1 ^# E( ^4 }
return; T: R/ Q' x7 i9 Z0 N6 w
}
{8 Z3 |( Q) U' N" [ int nPoint = 0;
- s+ E. U2 k7 X# S if( m_nJob == JOB_MERCENARY )( l) w0 ^+ _6 M3 Y3 s
nPoint += 40;( K2 k( U* G' R- i! F }! D
else if( m_nJob == JOB_ACROBAT )
# y( [+ r, a5 N. B6 Q4 R2 K: A nPoint += 50;, g5 S k! ^3 N; T5 o
else if( m_nJob == JOB_ASSIST )
* T7 a+ T) O5 c F9 s3 Z& t nPoint += 60;: c0 v9 f# D( \4 A! K
else if( m_nJob == JOB_MAGICIAN )
. i5 N+ o s/ S& d1 t nPoint += 90;. P- N; B! o: `$ W5 O
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
" I6 E/ P1 S$ n6 ? nPoint += 120;
5 g5 u- h3 y- m else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
: R. {) i1 x4 v, |+ o nPoint += 150;" Q& s1 z" f2 l
else if( m_nJob == JOB_RINGMASTER ). a5 [1 H2 [1 V C1 x6 R- w9 F
nPoint += 160;4 r" Z' \, H/ }5 V! T7 I, S" j
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
) b0 z: N. A/ m( E5 L6 X nPoint += 180;2 ?- y8 M; A. Q
else if( m_nJob == JOB_ELEMENTOR )
( j% o! n! C6 K nPoint += 390;" H0 l1 D4 g2 o$ {0 [
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
8 I4 P) A/ @/ N# t& _ nPoint += 120;* K$ @! G5 Y; g$ U; Q/ I
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )2 m) r. J! f; s. b7 a9 k+ e. _4 T
nPoint += 150;
9 F+ W2 m6 v- I else if( nJob == JOB_FLORIST_HERO )
/ n. X: ~$ i. x9 B7 L nPoint += 160;/ k9 o, |- d X/ h$ d( e$ x
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
. w% D( P- ~' \+ q+ g2 V" |7 R nPoint += 180;# I. K% }1 P+ @7 w. |; d6 R
else if( nJob == JOB_ELEMENTORLORD_HERO )- W! O( t) d/ _/ B! E
nPoint += 390;" A8 B B7 N. ^( ?( T2 r
0 U J0 X I+ A AddSkillPoint( nPoint );: ^2 v# k ]+ S; g6 |3 v
m_nLevel = nLevel;9 n2 l( ?; k% _- q& F/ N
2 L2 J8 V3 @" q* b& J/ Y SetJobLevel( nLevel, nJob );, e* K2 @! f: y3 k
m_nDeathLevel = nLevel;6 F e2 |+ A) p/ _: s
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
. ~ Q1 F5 b: O# S/ Y if(IsMaster())
- |$ u- C% [" q8 ] {/ z# |5 W. c5 }: P! ^/ Z
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
: T* J2 p' e! e if( nLevel > 59 && nLevel < 72 ), t0 y' L! t2 Z: o) }. c& a
dwTmpSkLevel = 1;
2 P- V: u8 g2 W2 G- b else if( nLevel > 71 && nLevel < 84 )
6 t; ^ [# ~. b. x+ C dwTmpSkLevel = 2;
9 K; c# V2 b$ J" n else if( nLevel > 83 && nLevel < 96 )
( ~2 M0 w* H. a* ~4 g) a* L dwTmpSkLevel = 3;- G* R X( J+ I1 B2 F, c
else if( nLevel > 95 && nLevel < 108 )" Q( Y& u/ r8 Q# X. W- ]
dwTmpSkLevel = 4;
3 w/ H- _4 k6 o5 [* ~& t! t/ v0 m' u! U else if( nLevel > 107 && nLevel < 120 )
% A/ z( h1 z( W o: { dwTmpSkLevel = 5;
R; B% E: c- ^7 E for( int i = 0; i < MAX_SKILL_JOB; i++ )
& w1 p O& V8 l* @- a _! } {
" G, i9 P( b A) L LPSKILL lpSkill = &(m_aJobSkill);
: y! G/ a& f8 K; i+ f9 w% N. j if( lpSkill && lpSkill->dwSkill != NULL_ID )
7 M% N. y: T/ i9 C, L3 t: V D {
1 i: K& c8 @: M3 x9 e& e* e ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
" X9 ^+ H8 i( Y" c6 |! G: V! s if( pSkillProp == NULL )$ l' S! Z( Y) v4 P& ~! n
continue;
2 C' M/ A2 s3 I; t: O7 D if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
# c8 G/ K4 k0 q( k: R" B continue;5 H# y; P( X: V# I
lpSkill->dwLevel = dwTmpSkLevel;, |1 G, M+ h% ~! c
}% i( m; W# l$ `6 n
}' K, B2 a5 a" T g$ P- R- h
}& a( P* \! F4 G, f
else if(IsHero())
) c1 Z7 d0 C, M2 ~6 [+ ^, G {4 m7 X: u8 y6 V4 {, Y, a- e
for( int i = 0; i < MAX_SKILL_JOB; i++ )
! O0 K' v5 q% q r1 Z4 I7 E { ; ~4 U3 a: F' p* j( ?
LPSKILL lpSkill = &(m_aJobSkill);* {" |' W/ F: A0 Z
if( lpSkill && lpSkill->dwSkill != NULL_ID )
) a, R2 _* ?2 R3 i5 y' E {
, v+ G6 r8 E& q$ Z8 f ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 4 O4 A5 _* T5 `2 _3 s
if( pSkillProp == NULL )+ }- Z( [% _& M8 q( Y
continue;
H# ]* }$ I7 y7 C- Y6 E if( pSkillProp->dwItemKind1 != JTYPE_MASTER): |/ N6 |) h7 p+ n$ ]
continue;( p/ K# X8 o5 t$ D6 P% K' w' i/ q
lpSkill->dwLevel = 5;5 r5 p( p+ S: N; \! k1 X/ ?7 s
}# k- {+ D4 u/ J2 C* T
}1 N9 f. q( _1 k
}
; ~% z) w" M+ J8 O) |- x6 S" P else if(IsLegendHero())
$ w) U; [; X4 x9 k) ^5 o {( X# A( A& j9 p# @
for( int i = 0; i < MAX_SKILL_JOB; i++ )
9 M# e, |; T G' m R6 _0 i* X! K {
: Y5 q8 [7 b: C% o+ D4 U1 t LPSKILL lpSkill = &(m_aJobSkill);5 t, p( r3 Q0 E. f* _) G' q5 L
if( lpSkill && lpSkill->dwSkill != NULL_ID ); z1 e. W- G5 c
{( P/ K- t, N" t. V7 s/ ~
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
9 [* e6 h; }, _8 A4 ^ if( pSkillProp == NULL )! r5 y; ~$ j0 m
continue;0 j' g+ B9 ]7 C, g9 [! R
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
* U2 W) ~. [% l6 Z" S0 L continue;
2 `4 I+ {, ]& J7 P5 A' z lpSkill->dwLevel = 5;( v0 u+ r1 r8 _3 P! b
}4 H1 Y( b( e4 Y) [/ D' r# T
}
+ a/ h3 s/ w( V% S% f( ]( j }1 _" y' |- B4 ?4 z
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans9 B2 C0 ~. z4 U6 P5 g6 ?6 J
if( bGamma )+ U, F0 n. w) v
{4 ~3 @' S7 L. k9 u! k, Z
m_nExp1 = 0;: k% W) D/ j* v, L$ `2 `
}' F7 Y1 m' _1 }, D' c
4 Q) ]0 G" m+ `! N2 d
( (CUser*)this )->AddSetChangeJob( nJob );- }9 y/ M2 h; a9 l- m) y2 K
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
8 ~& X5 }; R0 T7 L" \6 h7 u
5 ^6 x% O4 N# ?8 |# ^/ P
' u9 B! ^. x2 o% I- M" Q: a) ~#if __VER >= 11 // __SYS_PLAYER_DATA
. S: S6 ^: c/ d$ ?& g; I g_dpDBClient.SendUpdatePlayerData( (CUser*)this );- h" N0 R% g) B3 b9 e
#else // __SYS_PLAYER_DATA1 b+ c4 r) s# ]# D
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );7 E4 U5 l! X# Q0 B% |
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );& u1 w$ g* O! I( o+ m/ D! w w2 P, Z
if( m_idGuild != 0 )
5 v2 b3 m+ f; A: K9 |. G g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );# r' j1 L( j, @# m% x" }! `+ j
#endif // __SYS_PLAYER_DATA
0 }( r/ x0 o0 S8 M- F SetHitPoint( GetMaxHitPoint() );4 N0 |! a3 | F) M9 [4 J; P; m
SetManaPoint( GetMaxManaPoint() );+ z( `" i, m" p/ [
SetFatiguePoint( GetMaxFatiguePoint() ); B6 W- U5 }9 F: F. ]
if( nJob >= 1 && nJob <= 4 )3 p) B4 U1 J F0 i9 k& v7 d6 r
{$ J9 c8 g9 }: d' n' K/ B7 ~# v
m_nStr = m_nSta = m_nDex = m_nInt = 15;
8 P3 E1 W$ v6 g m_nRemainGP = 28;' ?4 W7 i* J. ?% s" h: Y
}" w) l2 r' u; p7 c5 M8 p6 }
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )" D3 U; h4 d% R) i. t
{
/ _3 N( Z2 m4 H+ B3 j, b; [ m_nRemainGP = 118;4 f) ]/ [' v# S# R
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;& y3 e' n6 U4 K7 \+ G: A, j
m_nStr = m_nSta = m_nDex = m_nInt = 15;
6 z( }9 ]# |* Q7 k1 Y3 V+ w( ` }
( b/ h' J; P9 @2 k9 `3 f" @ if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
1 L- o& F& a7 v" c ~% C- F {
- q) T# w8 u+ Q CItemElem itemelem;0 d) q- A0 S$ M! R2 `0 L
itemelem.m_nItemNum = 1;
' Q m+ C: o) d( ?: u% ~4 x itemelem.m_bCharged = TRUE;$ q; ~2 g$ A: g! M+ I& f, w8 Y$ f$ B
BYTE nID;
1 |) J( Y, e$ P, o, e4 u6 g' s0 a2 \& B3 D5 p) @
if( nJob == JOB_MENTALIST_HERO )
: M: ~+ I# p& @/ w itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;% Z3 ]9 X9 q/ w6 u3 ^ C
if( nJob == JOB_FORCEMASTER_HERO )
% h1 }+ t+ @8 D itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO; a/ T/ E. `: R5 s
& K% D+ A9 I, s ( ( CUser*)this)->CreateItem( &itemelem, &nID );
; _3 b. X: M1 {' k2 ` }- I |. g/ n s( [6 v$ _7 Y
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
! k- z# U# N1 P+ N4 I" G0 x6 t ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );7 i7 y) t Z5 r/ S+ r, |
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
6 [4 P2 b+ _1 Y- E /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
+ t9 O' s9 F" w6 ]- ~4 @4 [/ X ( (CUser*)this )->AddTaskBar();*/
3 t# ^1 [+ j) k$ }3 E ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );/ m$ |2 }4 A" n2 ?3 L$ X, A
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?0 o( Y4 o/ y2 K2 E: z1 Z
((CUser*)this)->CheckHonorStat();1 e$ u) J2 W$ G$ T2 ]+ L, a* H: C& L
((CUser*)this)->AddHonorListAck();" W" Y8 n8 J3 J& r
g_UserMng.AddHonorTitleChange( this, m_nHonor);$ ]8 @! I& m" J0 i: r# H
#endif // __HONORABLE_TITLE // ′Tà?
0 ?# F }. Y. W& U: K- }6 c( n }
) A$ L; Y+ D. z5 Q#endif // __WORLDSERVER6 z& o4 k: {/ p' |8 R2 t
}
0 G- q0 {. t5 w" g$ W
a# U7 X! c+ l/ M然后你进入functextcmd.cpp并添加以下
3 H; e$ R9 d- B7 |9 W
! C. d" e7 ?2 n! O% A) v$ e代码:( B+ N! m- h- n1 l
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
' V+ b* c- Z: j. ]4 Q- p z' `9 r下面插入
+ |6 f% _. ?' u8 q9 a/ hON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) : @+ X \* T/ P3 G
# D* k+ A! \: u( {3 ?: F# E然后你去% t; H, d( h& r4 f! w4 k
7 R9 W% }, l" w* r! `
代码:
8 |/ ?& t, j' q) A代码
, z$ ?% T9 u8 h: ZBOOL TextCmd_ClearPropose( CScanner & s )0 W+ W0 e* N9 @9 [, Z. u, r5 k; X; q
{
' q2 k- p7 f% [: I' K/ C8 p#ifdef __WORLDSERVER
1 l/ t$ i5 t; ?/ \ CUser* pUser = (CUser*)s.dwValue;
/ d+ }3 V8 M" v g_dpDBClient.SendClearPropose();2 }* r7 ?, U, d# }- u) n/ g
#endif // __WORLDSERVER- w4 R0 w2 N" |9 y$ t- ?
return TRUE;5 W2 ^ ]5 n, ^2 \" B
}& R' l* h% l4 O; U/ E- M& q
下面插入
1 E/ [( r# M; J! ?% B- H! v& nBOOL TextCmd_rebirth( CScanner& scanner )
+ M: U3 f$ v2 R5 t4 q{7 n2 r3 E; }. g7 i8 m' k5 h0 {
#ifdef __WORLDSERVER
# S5 A; I: s8 q+ v2 C, W! FCUser *pUser;
5 s% o- o9 r- o! R8 m) K$ OpUser = (CUser*)scanner.dwValue;
, a4 x! u% m1 h* h& p, r9 ~. a* rif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())& D0 z( J0 k& e! R$ }( j9 P
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);& }# s+ Y1 H$ N! P' }) P$ V
else8 U0 C1 p% \$ g% I
pUser->AddText("你还未达到重生条件!");
- x; e% s `; u2 a* ]0 i#endif+ t' Z! j+ r% k7 |# O! r' w
return TRUE;
3 t. S( ` ^* O2 u$ b/ R) E} * g; `$ W Y3 }- T
D; N, ^% C. N+ _
7 ]/ d5 P' m9 ?2 Q; f+ u; f& h$ u' Y
' Y8 r1 ]3 A! t( @% g |
|