|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel+ B$ } {3 k6 k
8 K* S3 q) o6 Q; u. q8 Z& x2 G4 D
Mover.h1 |5 `2 R. x3 ]
代码:) a1 v) q5 `# F% a
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
/ M- r: K: ^! T8 H O Z2 z% Q; g1 E B/ [ I6 {" _
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 0 s4 I& {6 n5 ]; o1 s# W) A
) l3 M/ W* x: T/ b
然后你去mover.cpp添加
( b( J4 O* F9 S; X. I! y, p. a- u6 h4 ]! \% V. b/ ~2 X& J
代码:
- B$ t8 `: \9 H( O3 Yvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
# g% g w/ W, ~; L* v9 w{
* b$ ?5 M; K9 _# ?#ifdef __WORLDSERVER: w# H# r$ Z! d" u
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó, |! ?/ O8 X9 W1 b( Y; s
MoverProp* pProp = GetProp();
/ }- B) u% r5 E# W if( pProp )1 r, y8 O1 c$ m3 y0 h4 q# C' Z
{
* N: |# y) b. x8 ] if( nJob > 0 && nJob < MAX_LEGEND_HERO )
o3 t% `% j: b4 X {
4 }& }; p3 B# k v( i2 b6 f AddChangeJob( nJob );
8 ^: D. h+ T* y( \' w ]8 m }else{
- m- X8 j& a' w! d, y* G1 g return;' l' n4 r3 n% D& A- i7 B3 V, l
}
* Z- B* ?% F% |) e9 }1 u4 x int nPoint = 0;' h: w2 `/ a/ ]7 O# r
if( m_nJob == JOB_MERCENARY )
" U+ }( i% e2 ?9 _ nPoint += 40;
0 a+ w+ X" X; n. Z. N4 _ else if( m_nJob == JOB_ACROBAT )* j) V6 V+ i9 `3 Z2 r
nPoint += 50;5 F( ~+ q1 d9 p9 b0 _
else if( m_nJob == JOB_ASSIST ) }; {- M; ` E6 U0 B
nPoint += 60;6 K! O! a7 l; \/ R' N
else if( m_nJob == JOB_MAGICIAN )
e4 I% j+ I5 X2 q' U nPoint += 90;
0 E, P: x r6 d& E- `" }& | else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
4 h. `2 z' X, C# y+ u+ I; n nPoint += 120;
# m( `/ [" @6 U; G4 ~ else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
# E$ P/ A$ u4 l' W' W1 k5 ] nPoint += 150;. Q, c2 Q5 W3 a
else if( m_nJob == JOB_RINGMASTER )4 o2 y6 R' X: e: q u
nPoint += 160;
, @0 V8 }# E2 x4 H K `: g else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
g8 B7 J3 W6 U# Y nPoint += 180;
, F( W. @3 x- p y else if( m_nJob == JOB_ELEMENTOR ), B5 v$ O) p7 H( @& s+ M
nPoint += 390;7 M# `+ v) a7 Y% j; `1 }0 h* v
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )! ?( Z K5 t' v8 _
nPoint += 120;+ m1 c3 J0 S+ _ @+ _
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )' \% Q+ F: s+ i4 v2 ~/ ^
nPoint += 150;' b/ A. l; _: q
else if( nJob == JOB_FLORIST_HERO )
* H/ k" }' z5 d nPoint += 160;0 Z7 }! X2 U: Y/ ?# i/ u0 _
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
6 L# ?3 n; I- x$ n$ M nPoint += 180;
+ ^% E) ~/ W+ x else if( nJob == JOB_ELEMENTORLORD_HERO )9 _/ O' h* S3 U( Z' U o7 N
nPoint += 390;6 @6 f- U$ X o6 G- L; ~
! L' ]+ n; o& @: m AddSkillPoint( nPoint );4 i) S; g7 b; m$ g) w# l9 [4 W+ Q
m_nLevel = nLevel;
: M% A w6 V; t+ o, K5 K# {
+ E0 P) v# y; ^! ^# V/ E SetJobLevel( nLevel, nJob );2 y9 t" u j& A7 \
m_nDeathLevel = nLevel;
- b" U' |8 T6 S2 L% w2 C u3 `#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
9 e2 B3 S4 L, c& U& S if(IsMaster())
6 c6 u+ }3 b% d6 ~& H0 n+ P3 P5 R3 p {
2 \9 |6 `6 I2 {3 D9 ^# g v% @$ h5 D2 I int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
+ t7 y6 p3 ?! L# h. Y) F$ s if( nLevel > 59 && nLevel < 72 )! \* O3 D/ v/ l' B( v! o2 k! V5 |
dwTmpSkLevel = 1;0 p; q9 C, }( D
else if( nLevel > 71 && nLevel < 84 )
. y. C" U) \; D- G- } dwTmpSkLevel = 2;
" m' t. \4 v8 `3 b4 @3 b else if( nLevel > 83 && nLevel < 96 )0 W" F- U) ?/ M
dwTmpSkLevel = 3;
& n2 n/ w( u1 M6 F L( h6 [% J else if( nLevel > 95 && nLevel < 108 )
! t1 R4 m7 U |$ U# R0 H9 ` dwTmpSkLevel = 4;
0 ~, e; G; V! q$ M' ^; f else if( nLevel > 107 && nLevel < 120 )
* Q2 }& i9 |2 y$ {# B J. R dwTmpSkLevel = 5;1 `) F5 `0 q' h N! D! L0 G
for( int i = 0; i < MAX_SKILL_JOB; i++ )
% H0 w# Q( C: ?+ m6 ] {
+ |6 ?8 `" h$ p7 g4 o LPSKILL lpSkill = &(m_aJobSkill);. M% b6 o' p& U% \: s" T: L
if( lpSkill && lpSkill->dwSkill != NULL_ID )
! F3 s d& |- E1 ]2 z& ? {3 h: W3 U, r3 p
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); % @. ~9 ]# }/ q, r" J; B
if( pSkillProp == NULL )) k8 L& N1 C+ t
continue;
# d$ K; G6 p. s% E if( pSkillProp->dwItemKind1 != JTYPE_MASTER). R) z3 C2 o3 H4 W( i+ R
continue;' R( m K, R9 A! E9 \
lpSkill->dwLevel = dwTmpSkLevel;5 c: f5 y' x% B7 x4 w3 V# M
}+ Z7 }- g2 H* Z, t) p! O
}
6 `4 m/ J4 l" t) x! _, }' K }2 v" B) c, c) v9 y6 S0 _* w
else if(IsHero())
% F& W1 a7 B+ w {
6 a& x6 M0 C, [6 {! [, a for( int i = 0; i < MAX_SKILL_JOB; i++ )
" y( X# `+ K: L2 W) f' z" S9 ] { 5 @3 f I5 S2 J" h* O, X, ^4 n
LPSKILL lpSkill = &(m_aJobSkill);( ?5 k( b2 w+ z5 V+ W2 {
if( lpSkill && lpSkill->dwSkill != NULL_ID )
2 b8 u8 E& H6 s E {
4 M: O* b$ T. k1 H) H4 W- g; \# |- d ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 5 l" K( v3 _/ R5 l- i2 _) H
if( pSkillProp == NULL )% ~6 j2 m+ G: }+ p: v/ D
continue;
4 `0 Y: {* }7 W# ^* J if( pSkillProp->dwItemKind1 != JTYPE_MASTER) g* w. H/ T" C
continue;% @: _3 ]+ z3 w( f. q
lpSkill->dwLevel = 5;1 n: F/ _5 E0 h5 j7 V: g
}
& f; j7 K: G! a* B6 p4 Z# j }
+ A9 [; Y; ?- s. B9 K9 c }7 d: x* w0 b+ b. F3 \
else if(IsLegendHero())
/ P: o/ E3 U1 o4 j: F: w" {6 E. ` {
' ]- u2 s2 S0 f" t$ j for( int i = 0; i < MAX_SKILL_JOB; i++ ) $ T- \3 I7 ~3 {2 Y; l
{
; ~ B. L1 T( o! q LPSKILL lpSkill = &(m_aJobSkill);
/ D9 l1 b2 J8 x+ q if( lpSkill && lpSkill->dwSkill != NULL_ID )! Z4 A' B+ k1 h2 L3 y2 s" I
{7 ]. ~9 w7 K7 y; r; _2 B* ~
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 3 M5 U' q: U) y9 j
if( pSkillProp == NULL )
: K( K) o# a; }5 w, f) ? continue;$ Z; w0 o& [; u) l
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)/ f4 {$ i" m! V" @/ P9 ~
continue;6 R) F( B6 ]; k: e" W% o
lpSkill->dwLevel = 5;
# Q2 `6 S% r- W* T }, |/ M2 B* P( {
}6 j+ B4 n) W& ~( U: @) J" k
}# [1 F' Z# X, e0 u3 U+ G
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
& h3 `- H' D! f: j if( bGamma )) V1 \3 ?9 M( W8 m& D7 I
{
# J: j2 k1 J9 B" k) [5 A- E m_nExp1 = 0;) j) T7 G8 F5 Z! y* a
}
! I# ?7 U; P+ s1 m+ I6 `' C
+ b. ?8 j) k+ f9 F ( (CUser*)this )->AddSetChangeJob( nJob );
1 u& k* ~; m f w1 @0 A g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );- f7 c% W( ^& _6 }' w6 H. F, m& }
; J) i5 P1 ~# d' O/ o6 Q. Y2 j7 }0 P: t l6 B% H7 H7 N/ \
#if __VER >= 11 // __SYS_PLAYER_DATA4 f5 N1 ~% E/ D- f
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
3 }/ S- L w0 f0 o# u#else // __SYS_PLAYER_DATA
0 h/ K% q5 T% ` g_DPCoreClient.SendPartyMemberJob( (CUser*)this );$ P' I$ h% C$ `" W- S
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
- p. ^8 ^ F" C' `7 ^# m if( m_idGuild != 0 )( i$ h; h1 T- }0 J. ?. v# a
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );+ t6 L$ U5 |, o1 w% y/ l
#endif // __SYS_PLAYER_DATA
9 [; O3 k2 ?$ L9 I# e SetHitPoint( GetMaxHitPoint() );
0 p' |3 b* i6 ]9 W* c SetManaPoint( GetMaxManaPoint() );
0 A1 D" o% a9 K( H4 N7 H/ } SetFatiguePoint( GetMaxFatiguePoint() );* z# U5 `7 E8 g; r0 L; E
if( nJob >= 1 && nJob <= 4 )
$ y$ X) Z. f2 O1 @ {
+ j- U- w1 A2 |/ @( r m_nStr = m_nSta = m_nDex = m_nInt = 15;
: g" g* l9 @5 d. {/ o( o m_nRemainGP = 28;
& b/ j8 X8 `# G" W( Y: m }
' Q% E2 k/ U' w) _( C; N8 i8 G if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )" O4 l- n; ?2 H& x# B. r1 d
{# N) ]) E0 H; ]! I
m_nRemainGP = 118;
) o5 _; w1 H" G) B ?- Y6 [$ a3 e //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;7 J5 m d5 P& L7 b
m_nStr = m_nSta = m_nDex = m_nInt = 15;4 r! ` J4 I- \. Z4 R
}/ ]& o& \4 E% ~5 `( i, ]: y" R' d
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
2 E/ `2 @& p+ q: I R `0 ^ {
1 V# ~% Q3 D4 D$ Z& G, T5 {" [ CItemElem itemelem;
$ ^0 l. ~& ^ d# t itemelem.m_nItemNum = 1;1 f& a8 |' l5 d. t# ?$ B0 d$ t
itemelem.m_bCharged = TRUE;7 N* x! V( |% M9 f
BYTE nID;5 F! H( H! M0 r
q- R3 @& P. ]+ v6 A/ v' X if( nJob == JOB_MENTALIST_HERO )( X' g. u3 w5 y# `5 o
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
$ O3 T! A [1 x. B if( nJob == JOB_FORCEMASTER_HERO )
1 Y# r- z$ H% f itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
' T) Z! f% ]- O {, s8 Q0 d/ k# }, N G( d @ U0 l
( ( CUser*)this)->CreateItem( &itemelem, &nID );
+ X* ~ y. B& I5 M }" r8 D6 e/ K3 R6 u; o% V
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );% c- ^8 t; _5 j1 p
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
9 f j/ N) N2 j# Y8 I ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );9 p/ G* a- ~+ Y* [
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
4 }& h# t9 O9 u) v* I ( (CUser*)this )->AddTaskBar();*/
* t9 E- J: Z- q; w2 \2 E3 Y" X ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
+ `3 e2 [( H9 d% N3 }#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?- @% R7 u8 ^+ o$ r
((CUser*)this)->CheckHonorStat();
2 n. T. ^9 G+ P* C, U8 a ((CUser*)this)->AddHonorListAck();0 m7 S( P$ `8 Z0 R2 ]/ a. [7 X0 d
g_UserMng.AddHonorTitleChange( this, m_nHonor);
9 `7 A8 ^; B& \! ]' e6 `#endif // __HONORABLE_TITLE // ′Tà?
, x7 S- U9 Z7 t5 `5 y }* F+ S# Q; G/ t2 O1 T i
#endif // __WORLDSERVER
/ |8 i; c V3 }( J}
" _/ n$ x$ I6 r0 B/ ^( E2 m4 B- s; m# N* d. y
然后你进入functextcmd.cpp并添加以下* n1 ~& F L& l! o9 G% H9 {1 ~" P" h
6 j: Z S2 A6 W, x2 i# V. q
代码:- m1 r2 P) `- Y+ O D) a9 J P& d
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
* S+ Q' `4 \0 T8 A t4 W下面插入6 @) q) V% Y9 W H5 L
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
% _9 z( e7 C0 Z0 E6 U
. {1 t' v# t. E( u- h8 H: d然后你去
5 z9 l4 V4 P5 Y+ r, k8 c! w
7 m1 U# c+ c. v e0 g9 y代码:# ^* g9 Z8 a }% g
代码
, L/ |3 |9 V0 f' h% x( z: X& rBOOL TextCmd_ClearPropose( CScanner & s ): K5 d7 H g9 T& T4 Z9 _
{0 F: L0 B: r: z0 {
#ifdef __WORLDSERVER4 g m. w4 i4 _2 s+ p5 N
CUser* pUser = (CUser*)s.dwValue;
( r1 L. L7 E3 M3 {6 j+ Y g_dpDBClient.SendClearPropose();6 Z% L$ C( n+ p$ Q
#endif // __WORLDSERVER( I7 r% _/ ^9 r+ K" T9 J' A" f- O
return TRUE;& D6 B3 X: d( o# C# X+ X
}) a X3 c: l5 y
下面插入
5 ]7 s' ~9 U- M% M8 ]7 v$ Y9 aBOOL TextCmd_rebirth( CScanner& scanner )" G9 H6 A1 q5 T% z) d+ Q6 w; D5 A
{; O3 h& ~9 c. Z; y
#ifdef __WORLDSERVER( c7 d& s& C" q
CUser *pUser;' A; `; O! z) j, h% C4 }0 D
pUser = (CUser*)scanner.dwValue;9 y0 Z! m* Z% D* w& s
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())5 @: o! T2 I8 ]/ u1 Z; n
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
4 |+ e" c- C; n- y! f+ x$ {else4 n; ~3 t+ y. m& P1 I1 E
pUser->AddText("你还未达到重生条件!");
- D, ~, Q! W7 h* N2 A#endif
" v% c$ P( {' r. h: ?9 Vreturn TRUE;
* L1 X/ @3 e v. w: H+ A& S} 9 ^0 }; Q! j7 @
3 n8 w8 A$ j* \9 N% T0 |. t
6 b7 q+ Y6 O3 j2 ~, Q$ U, ?
( u2 U6 c1 M3 } B) z
' _- T" t# K/ j$ J3 q; i |
|