|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel, F, m' ~* Z$ D H+ W; y* | {
) ^/ z! C0 {4 c9 f$ S ^" |
Mover.h: m2 }8 j+ M6 l8 T+ e
代码:: L, R+ }! k5 h
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü9 [/ \) n- t' f4 _
0 X' a8 H5 X' h$ I$ V; h下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
6 M F; J2 C- b3 S( O* v* H8 ^) S2 ?
然后你去mover.cpp添加
0 K3 T& T" z9 Y* L& Y( C) d
7 y. J# [" I- g: U- I7 r代码:: m& l5 w; i# r: x7 K6 O
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
. D8 m1 K! X- {) m{
8 T" j# k& @: K5 F" n#ifdef __WORLDSERVER
3 T' S" o+ C* c2 Z* s, e1 A // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
$ t! A2 d5 Z- w: ^0 c6 l4 i! z! j9 N MoverProp* pProp = GetProp();
1 `5 m% x5 v! K if( pProp )
" }; G- t+ \, X {9 V) |' M% P5 [7 I; z
if( nJob > 0 && nJob < MAX_LEGEND_HERO )6 B9 I4 T/ m! g
{
: k7 P8 g: p1 p3 p0 A- z AddChangeJob( nJob );) Y+ L2 @6 C' q
}else{
7 j! \- ^$ }9 t: T/ I0 J- O2 f return;
* q. v. {% G( Z! l% b$ f4 R }; S5 M2 N6 V. G2 c
int nPoint = 0;9 B# f% K6 ]& S5 Z
if( m_nJob == JOB_MERCENARY ) \" G2 o0 o! W1 P
nPoint += 40;& F# f" ]5 W% b: B: l
else if( m_nJob == JOB_ACROBAT )
* j" ~. D7 o: Y$ i0 T c nPoint += 50;6 E. O$ s- N( q1 B
else if( m_nJob == JOB_ASSIST )
+ i* c1 f. O/ F3 U, ] nPoint += 60;
% {( ^# L, w, t# [# s else if( m_nJob == JOB_MAGICIAN )3 p3 { d1 a* X% b
nPoint += 90;. }- V( e( S I# R. v
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
# B1 \( G& v0 w& W# I nPoint += 120;+ F# z0 h7 Q) K
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )+ ?5 ?$ B" v& h- T0 g# ]* j7 u
nPoint += 150;2 s' |' V% ]! q$ y0 G
else if( m_nJob == JOB_RINGMASTER )- N: T' h6 E' D, P1 p9 a
nPoint += 160;
- g+ m/ ?& I/ p5 k# v/ X& F7 e$ o else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
0 G* P0 ]+ ?" C o i |; Q nPoint += 180;
1 X* B0 t) c3 E1 M! z3 M2 r% h else if( m_nJob == JOB_ELEMENTOR )
, H( i5 L: G6 o/ p nPoint += 390;
' C8 a* u( J1 J3 _. V else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
1 ]( C/ ^1 T" x; C nPoint += 120;
: f, W$ M1 i4 b- \$ d+ M5 U: X else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )& y! K$ b3 o% f; W5 G* Q. n
nPoint += 150;
" }; S9 K- I J( }6 m9 w9 x! N: i else if( nJob == JOB_FLORIST_HERO )1 @6 I- j _ R6 a6 Z; |! C2 s
nPoint += 160;6 B! Y# n: w; T9 A% r% @
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )1 f% X9 }; G% G* k2 J' r' ?
nPoint += 180;2 U( q9 Q, q; q. } ?, f2 p
else if( nJob == JOB_ELEMENTORLORD_HERO )
/ e" q u2 U$ [0 | nPoint += 390;7 z& v6 m( r0 C- d) m- s
6 o- ^) z5 e+ z
AddSkillPoint( nPoint );. u- M. K- s2 Q7 g$ H/ {5 q
m_nLevel = nLevel;# X1 i, B8 l ~4 x
. N4 X8 U- c) P6 k& _ SetJobLevel( nLevel, nJob );
7 x$ w+ |1 {& T" [; X* ~ m_nDeathLevel = nLevel;" I* U; ~' ?$ b. p9 R( G0 G. a
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans& L6 f K2 p# r: i7 ]- N% v
if(IsMaster())
$ J2 H% f; V$ E/ S- c/ _7 [ {) Z. E' L, b' W3 O3 A5 h5 p
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
7 Y1 r- _; H1 }& L( X* ~, y2 J if( nLevel > 59 && nLevel < 72 )
6 P E$ K) x9 y3 z& J Y dwTmpSkLevel = 1;
* f X; ]: I. m+ A i else if( nLevel > 71 && nLevel < 84 )9 z+ I! U) A& z9 x3 G v
dwTmpSkLevel = 2;
5 D+ n7 H+ `; a5 v, P+ A8 E else if( nLevel > 83 && nLevel < 96 )9 l" t. j1 _3 R8 V3 e7 }5 N' e# O1 ^4 s
dwTmpSkLevel = 3;
9 a1 K8 T- o1 K5 Q2 Y else if( nLevel > 95 && nLevel < 108 )4 {9 B8 i2 s9 P8 {5 l
dwTmpSkLevel = 4;
. B8 T0 y2 ~ w( ]& U& o! o! g* b else if( nLevel > 107 && nLevel < 120 ) F1 p4 \" ~$ M
dwTmpSkLevel = 5;2 g* r' ]; B' j4 A+ M
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 7 {2 W+ V/ i& F* S2 x' J+ W' |
{
Y$ e& e7 I H* D* k }1 T+ ~ LPSKILL lpSkill = &(m_aJobSkill);
% [' D+ g( B2 l7 i4 [: t, ` |3 S$ r if( lpSkill && lpSkill->dwSkill != NULL_ID )
: T" e1 }7 x0 ~+ J, @2 ]( _ j, G {
$ P8 {$ v g. t% I* ^8 P ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); N. C$ |( M! b- n+ L9 v T
if( pSkillProp == NULL )! e {; V) C9 ^6 a: l
continue;
# U( n& ^; |. _ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)- b5 B! u! u. G$ o# p; u+ T
continue;
9 I# Z. z7 ?6 [0 |+ b. l) _ S lpSkill->dwLevel = dwTmpSkLevel;
) y' S' v! z' K8 N9 w; F; A }
5 J2 u2 h. E8 w$ w! C' U4 u/ c- w8 {# p }
' R9 k# N. h) i }2 X0 z& @ H6 i
else if(IsHero())
8 a* B. @5 v8 y) u {
+ H8 o- X) \8 \* J# p0 J3 q for( int i = 0; i < MAX_SKILL_JOB; i++ ) $ X1 b" c; e/ E3 `+ P2 x
{
) ^1 d* c T9 G% p6 c' r. J3 M/ z3 ~4 B LPSKILL lpSkill = &(m_aJobSkill);
4 W! z# S8 M g3 z if( lpSkill && lpSkill->dwSkill != NULL_ID )
* O: p4 L4 b+ X$ c ?/ M8 E5 Y {; o0 I; E) z# I4 w% J
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
. N' k1 W8 R6 M$ J if( pSkillProp == NULL )& K' F3 z# }8 g! x$ C! a& q: F. U
continue;
" U+ u0 f. c! i5 g: P# t if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
! I: P9 V. {5 ]0 j2 k/ I- V continue;0 u% L+ A6 t/ d# [7 F. ^( L
lpSkill->dwLevel = 5;, S, L* x+ ]' q9 K- u# L5 N* I; Z. Y' X
}0 a, X- R, f) O ~2 |8 B/ u9 z
}0 i0 u5 B4 P- @/ S
}
( G: ?% x4 u: J) K1 c- [ else if(IsLegendHero())$ X4 J! w% O! O% G4 V+ A
{
. n% i0 l, R7 k$ R- v for( int i = 0; i < MAX_SKILL_JOB; i++ ) - }& \1 Q9 G2 [# h( S* N7 p- C
{
- R e7 }; o# B8 J LPSKILL lpSkill = &(m_aJobSkill);1 c6 d) h9 }/ G* i
if( lpSkill && lpSkill->dwSkill != NULL_ID )6 e8 A; ~. F" Y* y# H, C% @2 ^* h+ N+ _
{3 }% Q: j8 T- o7 N! Y
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
/ h# M) a) y& R' c% H if( pSkillProp == NULL )
- T# y. K$ i% P8 M continue;
; D8 `+ y& `" q7 z, D if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
* q5 }; ?' f( B% M! s# }4 a continue;! H E8 k$ C: y6 U
lpSkill->dwLevel = 5;9 i. R3 E/ D" Q g, p$ a
}& p6 y4 j# C; d9 @
}
# l6 j- t& \8 K& t4 L: a# k0 j }5 c/ Z! y# g; {3 a6 S
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans7 j, k+ N5 T2 n! W
if( bGamma )) {$ r; \0 C6 N( ^/ J6 f1 y
{
+ K6 f8 i ]7 V. n$ N" A( {7 }7 F m_nExp1 = 0;# y5 R2 |: ?8 B5 Z) O6 ^+ [
}$ q. c- s2 {* O% M
7 g6 L# x, h4 c/ y' E* H
( (CUser*)this )->AddSetChangeJob( nJob );
' G0 V' j+ u2 x8 K g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
! a( j- s" [) l: N. f- n
' N+ W' @; a% N: p' Z$ Q
, z) r+ O) U& G2 b9 M4 D/ I. o#if __VER >= 11 // __SYS_PLAYER_DATA
) N. ?8 V4 a3 s) v; B g_dpDBClient.SendUpdatePlayerData( (CUser*)this );( k4 U. y# }; V; n
#else // __SYS_PLAYER_DATA
1 f( J' U' Z5 U! l. D g_DPCoreClient.SendPartyMemberJob( (CUser*)this );8 n! @4 _4 ?* E
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
2 r' E3 `% \/ D; p3 K0 i if( m_idGuild != 0 )* T( z! Q) @, `
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );9 U% _: Z) }' A2 Z9 I$ D3 D
#endif // __SYS_PLAYER_DATA
3 W3 y$ Q. }. U# J3 `% T SetHitPoint( GetMaxHitPoint() );
9 t; G) l6 g5 ~9 r% z# o0 a" d SetManaPoint( GetMaxManaPoint() );
' A" M/ Q8 W* y* j SetFatiguePoint( GetMaxFatiguePoint() );
; |7 T1 s6 _6 H7 _: e8 D7 g6 S: w if( nJob >= 1 && nJob <= 4 )
! ^% g, J9 e% H1 n9 o! \/ ]! w' P {+ _$ V9 R7 E- {+ I2 d( w- F
m_nStr = m_nSta = m_nDex = m_nInt = 15;
4 L' Z; x5 u4 U3 h/ C* j* }- v m_nRemainGP = 28;
; w* v$ s$ k3 k$ A( A- t3 \8 N; p# Y }( |; c0 C4 I) J( U1 Y7 e4 f
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )& f9 \# M8 N; N/ w1 y' O
{' j; L E, {5 @8 r. G! `
m_nRemainGP = 118;
0 g; ~, l6 `; }, v //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
) W1 E. I( L* D* o- n5 u m_nStr = m_nSta = m_nDex = m_nInt = 15;! o- \6 ]3 q, Y1 p# e" O- m% V% h( Y
}/ N/ ^& I3 S# W3 Y: T; ?
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )( `6 J+ `6 X8 `) y" Y4 d. g
{
% k$ [* l5 e* D( B0 ]! t CItemElem itemelem;
" @* j9 V; ?. Q y3 J itemelem.m_nItemNum = 1;
; h) S" G0 W; Y) N, {( t itemelem.m_bCharged = TRUE;
& Z# Y: S0 m: a* R) N" c BYTE nID;
8 E) A: U1 m5 s0 ^8 z3 ~
$ l" ]0 H ~( U4 z) y if( nJob == JOB_MENTALIST_HERO )3 X6 t/ ?* W) g) h# [. B
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
P6 I/ v$ i/ Q! z& B+ A if( nJob == JOB_FORCEMASTER_HERO )$ I3 m+ z" L1 u% J
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
% W/ s4 ]: G- g/ ?7 B9 u. |2 U1 C7 n X, T3 P
( ( CUser*)this)->CreateItem( &itemelem, &nID );
/ T3 m" i+ {; n6 P5 j! ` }
* p6 }+ N5 q) U3 u2 Y5 J g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
" E& i" P3 m( K. r' u! B7 N9 b+ H9 [ ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );" y6 W6 P; {( o1 v
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );0 e5 L) [/ O& Z; V
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
. _/ v/ B- Q. x4 ? ( (CUser*)this )->AddTaskBar();*/( @$ C9 Z" l8 Q d6 t
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
i1 Q) D: K0 u% ?+ r# \#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?' V' X S2 M2 @! T% j& m' l
((CUser*)this)->CheckHonorStat();
, o' v1 s: h9 G; }7 p% A ((CUser*)this)->AddHonorListAck();
/ X! @! j; T9 Z& {' k" G g_UserMng.AddHonorTitleChange( this, m_nHonor);
8 |# ~2 W) g; X; f/ C0 f#endif // __HONORABLE_TITLE // ′Tà?0 ?) ]2 ?( s/ E' p6 T
}$ p/ ^3 W! B% P$ u0 p
#endif // __WORLDSERVER
( I% ]6 H, _5 q- R( O3 V}
& v9 D$ f. x- k! p
W" ~8 S4 p/ t% m' g然后你进入functextcmd.cpp并添加以下
B3 r3 n: ]0 B# ]
3 p- b& r* Z2 B; ?# v5 H. ?代码:! a2 m w0 F% e$ c- x/ V
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
/ y0 v. w Z; r9 b# \0 h下面插入5 K3 x; i7 E/ C9 b
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
. v% a, A2 s9 L2 M/ y9 I3 H! s
; ~% i) I/ k0 B" S, p0 m" V然后你去
8 W* v% ~! L+ ]2 T/ b) a6 i# b9 l7 d2 G* b3 i
代码:4 S4 C1 q' z! `
代码
6 F9 M& X- r' d& \0 l4 M8 e( IBOOL TextCmd_ClearPropose( CScanner & s )! g a2 }, Z, | _6 h7 | A8 r6 G
{
/ u7 V/ B6 s& k. A) e6 M* Y4 b#ifdef __WORLDSERVER
1 O! F5 F3 i" a% z. A7 e CUser* pUser = (CUser*)s.dwValue;
: G& y4 d# s( e/ O* r, d& }: w, R g_dpDBClient.SendClearPropose();
0 C2 [8 \6 u0 S/ A8 C#endif // __WORLDSERVER6 {8 A/ V( G3 _4 D% O u; P% _
return TRUE;0 ?( r8 \) J7 j) e# ?$ [& k: @
}" [$ L5 K& P( p) @
下面插入
4 f9 [. d3 y, nBOOL TextCmd_rebirth( CScanner& scanner )
0 a: o1 R- _$ q' T) ]+ T{+ O8 \* @+ M4 j
#ifdef __WORLDSERVER) \5 f5 i( y1 b: }- q( H6 |7 m
CUser *pUser; H6 C% T, `1 u5 m% \
pUser = (CUser*)scanner.dwValue;; j( l! |/ t! `2 o/ x+ Q0 Y/ {
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())/ q+ N3 g2 G! q F* d3 k! {
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
( ?) h/ ?; W2 j* _* Belse2 B; W! x2 Z+ f' `3 l0 _' R6 x3 ?
pUser->AddText("你还未达到重生条件!");
- O5 X! z I; E2 V- }" b4 p2 J: o#endif, e/ G5 T" w( F1 P
return TRUE;/ y3 \: M, ]% w, `& x- D
}
- g+ O5 h% W3 o
" Y) `& ^( C- @! |5 M1 M$ y" a& P \
* l4 ^1 P3 o9 n2 B1 l. f+ o/ r
K( @$ x5 ]+ l7 k6 S. |) C |
|