|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel5 t$ m4 `( f3 m& d/ u$ }% q
% f9 B0 H' c# C& {
Mover.h
6 p, S4 g0 k8 E代码:! d9 `/ a3 V- F2 a
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
" D8 o8 L% u N$ j" p9 F/ \ C1 }$ a. w6 C$ A0 j8 Y: l) g
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
' F5 R) i! Z$ A! i4 x: E
* d! Z) ?! ~! `* a# P* x然后你去mover.cpp添加
% C8 D% a) M3 S6 m- i* ?% o
( M3 b7 H/ B3 N: Z代码:' j& z* d! o& W+ ?( o
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )+ F9 v) A1 ] j3 |4 }/ w! z
{
/ N. [& i. `$ ^- Y) z#ifdef __WORLDSERVER
' Y: [* B: C8 Y7 ^6 A // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
! [; o. p2 k: Y2 z/ ?* D3 B7 z MoverProp* pProp = GetProp();3 v* j/ [/ J2 T5 N0 Y1 U
if( pProp )7 F3 E6 F& C# j: T
{
* V: ?9 w5 z8 P7 Y$ V if( nJob > 0 && nJob < MAX_LEGEND_HERO )- x. M& T5 b+ o* Y3 V( O
{" Z/ d, s$ G' O2 K6 t6 B: [
AddChangeJob( nJob );
( V3 N t% Z. y, x" r6 j }else{; [( `" ]# ?- \0 O' ]( [0 x
return;
# d8 Z; [" N+ v* P* w/ n; o* T }
/ n3 `' }% |0 o: l5 ^ int nPoint = 0;
$ W: V: d. E. |/ m if( m_nJob == JOB_MERCENARY )8 @! n6 O8 A! T; n, ?4 l
nPoint += 40;
4 |$ N% k: `1 v0 H# h& S# Q else if( m_nJob == JOB_ACROBAT )
H" j2 @- g4 ?( b* ~' P$ O+ S nPoint += 50;
$ c- ?0 e% X$ } else if( m_nJob == JOB_ASSIST )& X2 }9 C- _( Y* P2 k
nPoint += 60;7 o6 S+ s! T1 x
else if( m_nJob == JOB_MAGICIAN )
/ ~: L- F5 }* n6 B1 A5 l3 y nPoint += 90;
1 C# M) }5 _9 a* Q4 T$ D1 v2 G2 g else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )$ \* \+ V! Y4 U: ~1 T7 P$ ~: B% c2 K
nPoint += 120;
: n# a$ a {8 I8 } else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
+ {; d7 S0 e2 \5 U nPoint += 150;& K! @1 x# i2 d* t. ?" c0 E2 H$ i* A
else if( m_nJob == JOB_RINGMASTER ): N) ~9 x: c0 `
nPoint += 160;: C* T% k7 R; x) l: L0 ~% w2 R, k/ t
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
# k( |4 o- H$ d* A& R6 t nPoint += 180;
; b( L6 W, m) c. ] else if( m_nJob == JOB_ELEMENTOR )
+ y! H* s* M5 H* _1 Z0 f7 t1 i nPoint += 390;
, J+ D! w% [0 _2 `+ ^3 g, [! H1 S1 X else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
( W; f t: Z0 ]1 o6 z nPoint += 120;5 l: B) s4 i, a6 L9 t
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
3 p* M' k% }8 R6 M) W& Q; U nPoint += 150; y/ ]& @0 u N3 {8 r7 p4 j# e6 w! C
else if( nJob == JOB_FLORIST_HERO ), l6 l; k# m' S# K9 k" n/ n; `
nPoint += 160;9 o% v) j3 H* o2 |3 o2 _) I1 W
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
& |6 R/ {2 H! L, s4 E4 Z nPoint += 180;
7 [! @) f7 t: i7 G z4 d3 ? else if( nJob == JOB_ELEMENTORLORD_HERO )/ E! I& p K4 s! [1 `) a4 O
nPoint += 390;! q& K, w8 k! I0 y1 v
9 k4 ]5 E# }3 p1 J4 R; N( k5 B
AddSkillPoint( nPoint );
9 M3 a# N/ I6 D8 o& X: U5 R% L& g) ] m_nLevel = nLevel;, x+ I8 T7 ?% R
8 m+ i) J( S% j SetJobLevel( nLevel, nJob );
8 r, q' }. J5 z m_nDeathLevel = nLevel;5 r, ^; `3 k% K' ?, N! b
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
/ P6 ]8 l- \9 p2 @, O. ~- C) y if(IsMaster())) R; o( }2 g- E( v" ?
{2 {4 `9 p* }4 p5 H) Z5 T0 I
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
" g: B+ T% ^9 W5 g, i J* _0 T% { if( nLevel > 59 && nLevel < 72 )7 P) i" W" R7 _% z! Y
dwTmpSkLevel = 1;0 ~$ d1 @4 z d0 e- ]+ j* s' o
else if( nLevel > 71 && nLevel < 84 )
" C& R' K$ u+ B dwTmpSkLevel = 2;' t5 X: U3 B- i/ i$ \0 B0 U
else if( nLevel > 83 && nLevel < 96 )
( q! L! v- n3 X5 D- ?( }& r dwTmpSkLevel = 3;
- Z I3 \1 F: C# m2 s6 T" v/ [ else if( nLevel > 95 && nLevel < 108 )
& {& q/ C, ?4 F& C8 D/ Q0 h dwTmpSkLevel = 4;: A' n/ J" h" ^, o; d
else if( nLevel > 107 && nLevel < 120 )$ F6 h9 S/ a+ b8 }1 E3 O' g2 f
dwTmpSkLevel = 5;' {" u/ S2 h% G4 I8 A; d$ n2 T% B
for( int i = 0; i < MAX_SKILL_JOB; i++ ) * V3 k) @# S5 B' G! Q4 j( S% O( x$ [
{
0 t2 t0 G6 ~, v1 z! ]& E+ r. I LPSKILL lpSkill = &(m_aJobSkill);& K% ]! u+ ~7 Z
if( lpSkill && lpSkill->dwSkill != NULL_ID )
: \: B: r5 b0 V: G3 q {
h& X3 G9 a8 Y" @& S5 e ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); & o; w; s- R* A# g, s- a, d
if( pSkillProp == NULL )' \* m# x" F+ `
continue;3 t4 r5 i- c# N6 z
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)! x9 a2 O2 ?* h# r/ e
continue;
" y5 C) w0 T; e lpSkill->dwLevel = dwTmpSkLevel;3 {$ f5 S2 ~7 V( n$ y6 v
}
1 \1 i2 P2 H. U) j# H }
r# K7 s% W/ L4 U1 S. o }
) \; \; O0 `, Z* y* m else if(IsHero())7 j |' k- V: x. g# x$ I/ G
{
, C8 S' o/ M0 a( Y& D' ^1 o* H for( int i = 0; i < MAX_SKILL_JOB; i++ ) ! y- l' }! l- S$ t, N
{ # N- u |, F2 w9 A+ i
LPSKILL lpSkill = &(m_aJobSkill);
N" F3 ^( V2 a% n if( lpSkill && lpSkill->dwSkill != NULL_ID )
7 K6 O4 G. J" W+ V2 k$ S0 p {
H9 }! t# N# p ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 5 P7 }: P/ S& F' s6 }# ]
if( pSkillProp == NULL )
! Z' h, d$ I* q& J continue;3 |8 }- x5 Z) P, d' a
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
& W, F, N7 |1 [% l" N5 ^, r0 S continue;
: l9 p5 ~& Q' Z4 L- p, i: t lpSkill->dwLevel = 5;
! H, h: L6 r# C, p }
! ]. L1 D Y. ~" L: z }- ^& c" P6 y1 C: J% I
}4 n' o, W6 p$ j, [ Z( L+ t, {
else if(IsLegendHero())3 ^& g/ S+ G* f- {
{) i O1 f0 n; g
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 0 S6 R# ~* h5 f1 J
{
3 ]4 ^0 v" f$ p) }2 x9 I+ G LPSKILL lpSkill = &(m_aJobSkill);0 d; g5 k: j; D b, r
if( lpSkill && lpSkill->dwSkill != NULL_ID )- N- L9 l0 V: {+ e/ J
{( t$ Q( i" Q8 \/ s6 [5 L* l
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
; Z: }, V4 X. Q4 F1 z0 t9 R if( pSkillProp == NULL )
* Z( C R' b( g2 q) c; M continue;/ o' e; W3 ?& [. U+ z
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)* J6 o8 b! [" b% M+ @( u
continue;$ `$ ^' a2 O- Z& I+ a* Z5 E m W% O
lpSkill->dwLevel = 5;# W! [, o' V1 N7 s% h5 t5 G& e/ g
}1 T6 x6 q! a/ c- a! D' C M
}1 z+ H6 A5 b# e+ d
}
% r& a) m5 ^$ D# @: L/ F. `( ~#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
$ _5 q6 L7 @ f- L- C6 M+ g if( bGamma )
! u; j; I( A9 t8 \4 s1 ^$ z# N {
' W$ I1 A7 w5 T, F m_nExp1 = 0;
0 H7 }5 R5 Y w* _ }
% Q6 L7 A( ?1 h! f% b# ^" v2 w
" o4 M8 f! u0 y$ C% S! \ ( (CUser*)this )->AddSetChangeJob( nJob );) j; @( X4 }) F9 T
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );. \) [. F/ r% B5 {% |) F
' v; P4 y' T9 j2 j7 l3 |6 S
3 v& u9 }- Y) c& D/ N#if __VER >= 11 // __SYS_PLAYER_DATA
5 O0 ?- Q! |; L& a0 @$ n g_dpDBClient.SendUpdatePlayerData( (CUser*)this );& i0 w2 ]* W$ i* A, `- Y! k) x+ v+ j
#else // __SYS_PLAYER_DATA
( o! c& K" W2 d6 U$ h: b8 T6 t: t, w g_DPCoreClient.SendPartyMemberJob( (CUser*)this );* r h% p" L$ ^8 s# m
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );! C9 `! N1 ^/ K* i% _1 y3 G
if( m_idGuild != 0 )
) `; h# C& y( m; L1 w g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
; k# u% }5 k. `0 I% e#endif // __SYS_PLAYER_DATA* K. C% f: E1 f) \# o
SetHitPoint( GetMaxHitPoint() );6 k% X1 V' l) G4 s
SetManaPoint( GetMaxManaPoint() );
|- t/ `( h% D ^ SetFatiguePoint( GetMaxFatiguePoint() );
% O- Q' N, K& i" l n if( nJob >= 1 && nJob <= 4 )
+ y; }- M- U( e {6 X3 d5 G8 T' F6 }5 Y
m_nStr = m_nSta = m_nDex = m_nInt = 15;
# {* E! V0 J _# l, ?4 N m_nRemainGP = 28;8 x8 }. p, W: o% w6 R) e' n! x
}
]5 t! r* O9 X8 ]" n. ]9 Q. p if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )* f, X+ o& B1 n
{! }# H9 M$ y7 I
m_nRemainGP = 118;
1 u' F( S( F5 W4 s5 g //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;& ~7 j! J A7 z7 W
m_nStr = m_nSta = m_nDex = m_nInt = 15;* i+ c& Y# Z/ ` V5 c
}
, w) Y/ _3 z0 z. N+ B8 l0 }' m9 E3 h if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
2 \3 H U @' u0 K1 @, Q {
( J1 H, ~. i! B! T7 l+ J4 o CItemElem itemelem;
$ F4 p. b6 c( [2 d% a itemelem.m_nItemNum = 1;6 ?- g/ w( W3 {) ?8 S
itemelem.m_bCharged = TRUE; T( e- r+ D1 f( z. ]$ C9 h4 I
BYTE nID;
9 y! ^& S0 g1 v3 y8 ~# T" a: j: b& _# h' Y4 v0 H
if( nJob == JOB_MENTALIST_HERO )
8 j9 F- {; A5 o( u itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;3 S3 c B: _1 {8 [+ [1 f# o
if( nJob == JOB_FORCEMASTER_HERO )+ @7 P8 _4 H$ s4 k
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;& E" k( i% ?6 ?4 w7 D: V4 c1 F
- z3 i: [% \: l7 ?) ?5 B
( ( CUser*)this)->CreateItem( &itemelem, &nID );5 m; H4 ^( ]+ v
}7 T% f" U7 ?7 |$ @! a) J
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );* \/ J1 M) R8 h2 q# B9 l( G
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
/ k9 f! r, P' n( S0 k$ Z5 X1 o+ g ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
# v! L! N! {* |- r: v s' V+ T4 ~- Z /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
* B) m. w4 v/ |. r; n8 S) j ( (CUser*)this )->AddTaskBar();*/
@6 X: R. Y7 K ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );0 w) M9 ~# m+ `* B8 L+ ~2 }, \
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
! I/ h( L& o5 h ((CUser*)this)->CheckHonorStat();- H8 H+ b& i3 O
((CUser*)this)->AddHonorListAck();5 c: l& D4 T+ a9 S- A0 _
g_UserMng.AddHonorTitleChange( this, m_nHonor);5 N8 c7 `: Z( K0 O& g, D9 N! }) r7 `
#endif // __HONORABLE_TITLE // ′Tà?
, q) K& u1 |/ p; i }
+ ^. ~' p4 z+ {6 z/ X. P1 i+ L#endif // __WORLDSERVER
* v; T: N! E$ M: Z5 }}
' m- r1 z6 N: Z/ t
& z( N& G. q: J: X! ]2 h4 O3 b然后你进入functextcmd.cpp并添加以下( y, ?% [& }) K: ~
% V7 w+ S `& j9 J. l& M
代码:
* L2 c3 s$ [* U6 S1 c, [ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
# G! w1 g" u2 R. w1 w, @下面插入/ D6 _0 Q; l. o2 f4 f4 w" }# b
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
5 W- Q/ J" j5 m9 l3 E* p, J! a% N$ g; u) A- O' \2 e
然后你去
3 S: H; i; p8 j* W5 b7 X
( p: y7 w7 x6 p+ ^) ?代码:" Z+ b6 S; J! g+ Y2 g: a
代码
7 F/ t. x9 Z, t0 F+ p7 s2 wBOOL TextCmd_ClearPropose( CScanner & s ): W( b+ @5 w' n; H: |7 r8 ^5 Q4 f
{, j# e3 j" V- v
#ifdef __WORLDSERVER
( B. ^7 |% u; o6 _ r- R CUser* pUser = (CUser*)s.dwValue;4 o! S# w! ~' H
g_dpDBClient.SendClearPropose();
! L3 e" a8 U2 {( v#endif // __WORLDSERVER. A3 O; i1 [+ Q" q
return TRUE;. m$ {: K0 \2 K' f
} m# e8 \6 l9 t: k" ]# C2 I
下面插入8 Z# {, g* \: }( Q; N
BOOL TextCmd_rebirth( CScanner& scanner )
- Q" O8 q; F ?! X5 W, W{9 x# i$ E; m# u& f) i! d* l
#ifdef __WORLDSERVER
% s' {' ]( o1 i. t9 ~# vCUser *pUser;* s$ e8 V8 E" b. t4 B4 T
pUser = (CUser*)scanner.dwValue;
7 |$ K: q D2 ~/ {$ jif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())5 O* o; k1 q7 G
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
$ j" o- G# t- g' ?# f7 Q5 C3 G6 x; y0 Telse
3 C- K3 m' e$ F; J1 u5 G" e" WpUser->AddText("你还未达到重生条件!");
2 b ~% ~7 O( ]* k; t \$ i" R0 B#endif. ~# c2 c5 o$ g- ]" ~+ \3 t
return TRUE;
7 ^& Q3 f2 C# T$ ?0 \}
! a P* |6 ]$ l* C ]' g
% i' \! y$ e8 i# s8 v! B% `+ }
. @1 e, I2 s l' K; o. M
8 f4 c! v$ h) o5 g
) Z) T/ I% g9 q2 W |
|