|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel3 V6 E: B [0 I2 B$ |' A
; H6 L+ h! \1 h7 H3 AMover.h
; S- t* W+ |# x9 F- x代码:
[8 u# v0 S6 ^/ h# Y* x找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü3 [0 y! v: {- ?$ Q3 K( S' C
* f! f4 z5 V0 |/ D ~下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; : O: A+ N( N" b
# z4 n8 t2 v4 {3 |! V, ^然后你去mover.cpp添加9 H! O2 ?$ k- k4 a* A, E, f
8 x+ A7 Z* y1 J
代码:) Y' C) f7 I6 }' [& g1 D
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
7 M9 j; U4 l% Y% E- N{
" R4 p. Y" `0 r9 A" v2 ~" \#ifdef __WORLDSERVER
+ j P4 [0 W1 J1 Z // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
, a& w( ^; K4 x1 i9 o MoverProp* pProp = GetProp();; f# Q5 z k' a& A8 P
if( pProp )9 C. M9 Z/ c: P8 b3 {
{
. [; a4 g6 a2 S# D1 s1 g if( nJob > 0 && nJob < MAX_LEGEND_HERO )0 W6 T& S! S9 l( c
{ R) a, d* {0 r7 w9 _. @( l
AddChangeJob( nJob );9 U+ |5 e: {6 O( \8 k5 ]
}else{6 v$ |6 A7 I0 s* O0 q3 J
return;
5 E" A8 K5 `, x2 m8 e } [: s7 H% a( v9 e) {$ g
int nPoint = 0;
F) P6 a5 U5 Q# _* K if( m_nJob == JOB_MERCENARY )
8 c0 G# _9 q9 _% E5 Y6 F nPoint += 40;
# C0 L% O) n4 n* A- y I( X% J' K else if( m_nJob == JOB_ACROBAT )
) f, F8 o3 L9 @# x; }- w nPoint += 50;0 m' ~/ s( I. G$ W
else if( m_nJob == JOB_ASSIST )
( D5 g, Q, G- r. m% d nPoint += 60;
" J: e* c0 }+ G$ e else if( m_nJob == JOB_MAGICIAN )
! |7 Q) c- O0 Y3 G2 a; s4 ^ nPoint += 90;+ P) K$ W5 }4 _ i
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )+ U; @' P Q, u& E% B$ T! E( L
nPoint += 120;3 s) f% R0 Y( p8 K
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
5 o3 M! v. V/ H$ y5 A" r6 ^ nPoint += 150;
1 U7 R+ s$ n% E( l+ D! D' t else if( m_nJob == JOB_RINGMASTER )9 \- _& @' }, `2 }
nPoint += 160;
$ w8 p3 p9 F4 p- E, ? else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
9 P( Y% H$ R) }2 l. k# { nPoint += 180;
9 m/ L5 ~3 }0 {$ X5 `) ]" h0 Q else if( m_nJob == JOB_ELEMENTOR )/ B. y7 X; s2 W, y5 A& @% {
nPoint += 390;2 v7 n8 x' e* b6 m
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
* c8 Y/ a. u0 ]6 E% `2 m/ K nPoint += 120;: A& }+ W, U% u" X; A+ q% Q
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
( n3 Z* K; m- [ nPoint += 150;* S; V0 w% z9 g6 k0 A+ v
else if( nJob == JOB_FLORIST_HERO )
' E! ^( r! @* e$ e! t8 o7 } nPoint += 160;5 S* M! d' ^3 ? i5 Z0 y6 `: v& q8 @
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ), [. u! e3 v3 |6 R2 t3 f
nPoint += 180;
) Z( Q7 h# }1 J else if( nJob == JOB_ELEMENTORLORD_HERO )
6 T+ `" Y& J# }9 U nPoint += 390;4 l4 ?9 y! _/ Z' [ o% [
2 X2 v. u& @ S
AddSkillPoint( nPoint );2 o, `: W2 u; t7 F( n; R7 c+ S
m_nLevel = nLevel;% [2 ^5 b8 E0 C6 s2 g
+ Z z) D" z: u% o) @2 k+ p2 ~6 X
SetJobLevel( nLevel, nJob );7 N2 b% A5 d5 Q
m_nDeathLevel = nLevel;" ?' u% W" L9 o$ D
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans8 T6 ^. O! |7 M$ i! }% c; Z
if(IsMaster())" U4 i# d7 e: f" Z
{
+ V% O0 d3 i. L int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
5 p3 x0 i) P- P if( nLevel > 59 && nLevel < 72 )7 {# o- [ g( ]3 z: Q6 r
dwTmpSkLevel = 1;* N5 A& h1 q n- M2 `; k
else if( nLevel > 71 && nLevel < 84 )2 R( ^. |$ H0 h
dwTmpSkLevel = 2;$ L$ l& w8 X) ?% L8 @8 {
else if( nLevel > 83 && nLevel < 96 )& D* y6 B. Z& ]4 @
dwTmpSkLevel = 3;% m* L$ u4 H( Q3 W
else if( nLevel > 95 && nLevel < 108 )
; j; V' n$ A. h+ |/ @ dwTmpSkLevel = 4;; Z# H* o9 B! z# S9 J2 \0 D
else if( nLevel > 107 && nLevel < 120 )5 ?( k1 g& f% P2 e( p
dwTmpSkLevel = 5;
. G; n/ n5 S4 w w. V- Z for( int i = 0; i < MAX_SKILL_JOB; i++ ) % I: g( j; n2 ^- f+ m5 h* y
{ 4 Y1 Y: P0 t d* k3 F# b( {! I
LPSKILL lpSkill = &(m_aJobSkill);
% O6 v7 w. }) f/ i3 x if( lpSkill && lpSkill->dwSkill != NULL_ID )4 r" Z' N% x8 B- z
{
: n. b; s9 E0 X4 A0 ?+ B" ? ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ; p8 T7 [, V% N. S
if( pSkillProp == NULL )* I7 ], ]. x6 H; v: c0 r
continue;/ d8 L g8 Q, [1 `' ] \4 s( [
if( pSkillProp->dwItemKind1 != JTYPE_MASTER); a9 u+ ]6 A: E6 m# o& y. R& {
continue;
9 P( y: c! {, O lpSkill->dwLevel = dwTmpSkLevel;
5 M7 |& O7 i9 l1 P( | }
, ?. c3 ^- k# d. L }
: X( g9 S: U$ Q2 h$ s }
2 L0 F: j) C7 r2 k' G; T! V else if(IsHero())4 H, H E& {/ x
{
: V+ \- S" C w( d3 ~& b4 z for( int i = 0; i < MAX_SKILL_JOB; i++ ) " ?% g4 T8 | D
{
; b G2 e; z! ]/ J3 W) Q LPSKILL lpSkill = &(m_aJobSkill);# f4 N7 z1 @3 B% l& E( h1 h/ C9 L
if( lpSkill && lpSkill->dwSkill != NULL_ID )% J! o: @! _, s: u+ R5 @# c" q9 t
{
5 M* I$ Q) w4 e+ \1 K! l% f ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
6 ~6 k5 V$ C8 A6 w- }4 v if( pSkillProp == NULL )* |, `1 K6 _ f! `0 y
continue;
' D+ J# G& _! Q5 a if( pSkillProp->dwItemKind1 != JTYPE_MASTER)0 P3 Q2 K _% |
continue;. A* ~# r' |$ m9 F2 e
lpSkill->dwLevel = 5;, @/ f _- J" ]0 s
}
- i& U( J& L. k7 b0 i _ }
& O: V: {* g4 n- F6 `% ]2 C; I }! B7 F( L6 S8 s$ X! \
else if(IsLegendHero())% ? G& M/ Q6 \% v
{
* w# F4 R8 f$ ^3 \8 k: v for( int i = 0; i < MAX_SKILL_JOB; i++ )
9 s. @1 o% S' j9 H- K" y: f g { $ x* k Y1 S/ `, X6 ^
LPSKILL lpSkill = &(m_aJobSkill);
J4 R0 p, e2 Q% y( t( a. k if( lpSkill && lpSkill->dwSkill != NULL_ID )
& d0 F# j$ s$ U% ]0 } G& Q4 O {
6 t4 U5 I$ Q7 C) N ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
j4 p6 u- r* B* @, p, j if( pSkillProp == NULL )
2 s& Z2 Y" d1 Z5 A: b5 f1 s/ T continue;
9 C* G- E! d5 |7 k f5 F" y( r if( pSkillProp->dwItemKind1 != JTYPE_MASTER)$ \, Z& _# Y( I. e+ F q) J0 s
continue;0 ~' _ ?5 i2 o, a
lpSkill->dwLevel = 5;! O( K' b, Y2 z- k/ F) P/ R( |
}
3 U# A6 T. ~3 m3 R8 S7 i }8 a' i, P% j) o- I
}. x! l3 t% Q- Z* q# K' o
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans+ Z7 ^4 _, Z3 M! s6 Y
if( bGamma )+ ]* t! _* Q5 k: C6 T0 w
{; p0 d0 E, v3 v3 k2 {) K
m_nExp1 = 0;6 B2 J( U& d5 ~0 h
}* F1 L9 k- f2 @9 j$ v+ ]
5 }' ? j& b2 o$ [5 ? ( (CUser*)this )->AddSetChangeJob( nJob );. U9 e2 l) b6 |9 c4 R
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
- E$ `3 n( w9 ~+ z) H
: B6 ~' K! {5 }5 h9 C- p. R. ^+ r! Q
6 D/ E$ \4 T# c5 T% }5 Y# Y% {1 Z a#if __VER >= 11 // __SYS_PLAYER_DATA
. J8 C" r. @8 f- }$ X; P) F3 V g_dpDBClient.SendUpdatePlayerData( (CUser*)this );! P ^% t- v. E/ f
#else // __SYS_PLAYER_DATA
, Y# R" e/ V1 Q% Z g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
, i: U$ z' \/ I. e5 f6 I9 ? g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
7 K2 O% u' z! l7 w t0 {# V8 W* l. V if( m_idGuild != 0 )
: L' S3 O! [0 F g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
& \. q; s: o, D/ t1 r#endif // __SYS_PLAYER_DATA
) f6 h: ^- [: Y+ r( R9 ^- J SetHitPoint( GetMaxHitPoint() );
: R$ d1 p/ k& |6 w3 q( z SetManaPoint( GetMaxManaPoint() );
; ]$ {' {$ h4 K5 d ` SetFatiguePoint( GetMaxFatiguePoint() );
1 \; {1 r* }' S if( nJob >= 1 && nJob <= 4 )
. o, Y& b- @) o { v B8 ^) M/ f1 \ b" Z
m_nStr = m_nSta = m_nDex = m_nInt = 15;8 B* F# f# t: d% s& D# p# \) S
m_nRemainGP = 28;
( A6 [9 }' S1 |& ^# v }5 p0 Y# G+ C$ b/ H, [$ s) S3 p) ^0 ^
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
6 j6 T0 s- Z! r! F( [ {
9 _6 y# z6 e- A6 h) e0 S& o m_nRemainGP = 118;
# m0 I) N# L+ I3 k! n. r //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
7 p9 l# E$ V p6 S# a% Z m_nStr = m_nSta = m_nDex = m_nInt = 15;3 B9 @7 S% a6 a) D
}, q* X1 l4 Y9 `3 i
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ). x- |9 u: C2 C% N% a" J; o) v
{
' Q" o1 I+ T0 C S CItemElem itemelem;6 w8 H5 I) p0 R$ i" Y
itemelem.m_nItemNum = 1;
! Y1 O. G0 g5 H& t ?* ~ itemelem.m_bCharged = TRUE;
" u: a W; Y- J BYTE nID;
: k3 V" g0 A7 Q7 B
! g, }9 ?% h* I4 q/ b! x5 C0 Z if( nJob == JOB_MENTALIST_HERO )
( v" y4 u/ x- w, F; i( g itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;/ G/ H, W+ f+ ^
if( nJob == JOB_FORCEMASTER_HERO )
( k( Z. j" N. r1 t! R# ~$ [ itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
( Q0 ~+ y/ k; \. N! `
! z b/ M, |- k" r ( ( CUser*)this)->CreateItem( &itemelem, &nID );/ n W% @; a# v* @2 [
}
. x: q& L `0 N" ?3 T4 | g_UserMng.AddSetLevel( this, (WORD)m_nLevel );# u- H, V l! H: ?) W: M) n
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
8 R! w+ ~* c" q) @9 ` ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
2 i* o- D# f* _5 g: h$ ] /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
1 A* X9 ~8 z @' T" E ( (CUser*)this )->AddTaskBar();*/
$ R1 `, ?- F+ e; x8 Z3 q1 b ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );; ]* ~1 F# f$ k' m ~& c
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?/ F4 }! `2 T. O2 S; S
((CUser*)this)->CheckHonorStat();! [+ ? ]5 ]* p% o
((CUser*)this)->AddHonorListAck();6 ]5 l% z* K2 k/ i4 P
g_UserMng.AddHonorTitleChange( this, m_nHonor);# L7 s9 `! n* _; |
#endif // __HONORABLE_TITLE // ′Tà?
8 A$ x/ ~/ s( @# M }
# e& q7 @; R% q#endif // __WORLDSERVER
% O" i/ ?2 d7 w$ c4 B! T. A; K} " ]: U2 e' ?0 K- ] L5 z G
: K, X8 q7 Z/ v7 v4 j然后你进入functextcmd.cpp并添加以下' q) l0 m2 m( O7 h" {1 b
5 \- R8 c3 W) W+ c6 \/ [6 Y, D
代码:
/ W7 v0 D- v+ b/ f/ }ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )) R9 i. Y1 o- y. v% I A% j
下面插入
0 O! r5 b: J! V+ vON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ( R" g7 B( q6 ?! s z
P" R! Z( H) q; p然后你去8 F' y& H5 r" a+ @
; |! r; o% e0 g) U代码:
% C$ c. H5 {2 n. F) d) \代码
! X" F0 ^3 i% H3 F, |6 L( ]2 MBOOL TextCmd_ClearPropose( CScanner & s )) f/ P7 \: c. t
{6 G0 r5 m/ _( n! a3 o, w" @# `
#ifdef __WORLDSERVER7 X# F. ?) m* |, Z# o1 `, m- P
CUser* pUser = (CUser*)s.dwValue;* @# O# V0 Z' I' B
g_dpDBClient.SendClearPropose();
- k; @7 a& l! @! o3 g#endif // __WORLDSERVER
3 T, n. [" R" k# q# ]! z( A return TRUE;1 k5 f6 ~7 G) o8 U" o
}- ]) x, Q' y& C1 y3 |8 N
下面插入' Z' _# N/ [0 V& G) b6 S* I
BOOL TextCmd_rebirth( CScanner& scanner )4 z4 ?, H% I( n5 E( P" M* N4 C- F
{/ e: \# _8 s; H' v; _) k7 `
#ifdef __WORLDSERVER
6 B$ H9 e0 P/ GCUser *pUser;
5 G! [/ i# C' V4 d. [pUser = (CUser*)scanner.dwValue;
5 x5 y+ l% n. `0 Fif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
{1 m, p. r- T9 o. N3 V( k1 r% fpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
: ?2 A3 u( `: V* ielse, t9 W z5 E I# b% f
pUser->AddText("你还未达到重生条件!");
" B% a6 i) C4 ~: z2 V#endif
' a# y; o+ S% D" [# Xreturn TRUE;
- P# \ M. X9 g( O4 c; d3 B$ J h} 2 N2 j+ b. r: w; b% {" O
, k9 Q$ E6 W/ g. }. B; v0 V/ r
! J) H! y' ~$ C, Q
$ S8 g1 O9 O* _. n: B" }4 Y |: n1 Z3 Z1 R) |; U* k
|
|