|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
7 F7 I: c" M2 _ {* Y& G! Y" _/ R) ]& u7 h3 s' s, }
Mover.h
: V$ h% K$ V, R代码:
, j) W- |8 s9 l1 p4 t" c7 e找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
! ?. ~, E) }0 p1 B7 C; U6 \
+ m1 Q$ z5 x9 p5 j下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; $ F* H. j G( U- } ?
! v7 ]1 x2 f' Y然后你去mover.cpp添加7 l. O7 N, f( `, ?$ i
# x ~1 S) [/ M# m
代码:$ u$ }$ L8 z' c" V1 x9 g' f; z
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
) {; Q5 e3 `+ e5 t/ V{) ]6 {1 f* z3 {/ i' H, E' T* ]
#ifdef __WORLDSERVER
& `2 a* l; }- d# O0 [; ~ // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
0 G( J* }, W3 I% b MoverProp* pProp = GetProp();
" B9 c/ l2 O+ P8 P$ \' }0 L, L- m if( pProp )' t5 V* j* d' d1 Y4 R* P3 F' W
{
8 Y" L2 X9 f8 T/ l' X if( nJob > 0 && nJob < MAX_LEGEND_HERO )" b, b8 k" h+ s: S0 w7 l
{
! S! d- h1 d+ ^0 G4 _, m AddChangeJob( nJob );
. K0 x/ h5 ^) o }else{1 l; x# ?, ^; G8 b, U, Z
return;
# w' q# P8 J( Q5 g8 u) C }
) n& G0 O; Q. [ _. K int nPoint = 0;
3 Y# R7 E) Z+ C) K! e0 y if( m_nJob == JOB_MERCENARY )' m( [) c' X6 e# X' E
nPoint += 40;
" i+ }) V2 q7 [6 \ else if( m_nJob == JOB_ACROBAT )
& K- e @3 i B0 [5 @1 ^0 p) n nPoint += 50;
" e9 t0 {, @1 P, U' Z7 D( G else if( m_nJob == JOB_ASSIST )
0 b& ^% E. O; @ B M. m- c nPoint += 60;
1 ?( ~& Q' R. { else if( m_nJob == JOB_MAGICIAN )
- y$ ]( F5 n g6 l; ]. E nPoint += 90;
l4 e! y9 V. Y; C1 L+ ] else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )% T4 c3 s( ?9 S) C# h
nPoint += 120;
* S3 y1 e% j( a q0 s else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )% R1 {! r' x6 C1 D% i2 m8 D& \
nPoint += 150;/ A0 I( b% {% `% J+ Q/ T
else if( m_nJob == JOB_RINGMASTER )
' T: W5 ~) C. g8 y) A6 N2 C: M nPoint += 160;
) L' X" h* \& S7 n# K$ u else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
' v+ a V& Y; S nPoint += 180;# f- E/ L+ q3 w' D2 v4 d: w
else if( m_nJob == JOB_ELEMENTOR )5 f: K! { e( V0 Q! |
nPoint += 390;0 H* b4 P7 D [# }1 N# x: ~
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )0 |' B8 P% w7 T! p$ C9 a% a
nPoint += 120;
" |+ h$ m* T" n else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
+ X0 C3 u5 X% y1 k! D nPoint += 150;9 z o" V! X1 [; d
else if( nJob == JOB_FLORIST_HERO )1 r% ]! ?7 `7 G; R! f0 A0 `% _
nPoint += 160;
, m& f# `9 f) I, j e! W else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )0 E' ]3 X1 K) P8 q/ L7 O
nPoint += 180;
5 M' l( e: h; a6 c* V else if( nJob == JOB_ELEMENTORLORD_HERO ), O* Q" n. {% R
nPoint += 390;
# p; Q, g: P% @+ o
; Q- E% |1 m6 G! I5 B4 a AddSkillPoint( nPoint );
. h# C) v7 p# X8 F+ W- J) O m_nLevel = nLevel;' {$ b% }+ b) b* r" h* [4 z# b3 p; Z
4 w, r6 _# M) R: N4 O P6 i: g
SetJobLevel( nLevel, nJob );; J, W3 z% \- Z# L$ A/ k
m_nDeathLevel = nLevel;( A! x. }1 k7 V$ V2 ?" J3 U) Y
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans; _9 F. A* p( m3 i }8 k7 e8 k2 D
if(IsMaster())
0 L# i( w. G0 _, [0 Z8 z1 T {! l4 }8 y% ?0 `" t4 |
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108! x7 D- d2 C; X( _3 Y/ Z
if( nLevel > 59 && nLevel < 72 )
" [, Q' Y# B6 q! i dwTmpSkLevel = 1;* r7 l! }" ? ?0 w+ `% a
else if( nLevel > 71 && nLevel < 84 )
" W3 @' P; N, q$ X. L dwTmpSkLevel = 2;
% a; [% T& q; U' X else if( nLevel > 83 && nLevel < 96 )
/ @$ ?& F- I8 ~; j dwTmpSkLevel = 3;
7 d, H2 q" S9 u u# { M" d& ^ else if( nLevel > 95 && nLevel < 108 )4 T0 e0 Q4 C j8 D! w; M8 E! P3 m
dwTmpSkLevel = 4;
; A7 k7 E& R) A; _) t: M+ z else if( nLevel > 107 && nLevel < 120 ) r* p; y, G/ Q/ u# `- c: N) S
dwTmpSkLevel = 5;
, M0 k- D' ?& H0 d+ U1 s8 N for( int i = 0; i < MAX_SKILL_JOB; i++ )
3 t/ |3 h1 `5 B! U* F4 u9 L {
* ]# {6 `' I4 Z E4 u& Q& Z- M$ K LPSKILL lpSkill = &(m_aJobSkill);
" o9 v3 ?3 w) @0 O. R9 Y* y) H# l if( lpSkill && lpSkill->dwSkill != NULL_ID )
; F3 n; x# _- u' o6 q& b' F {
: H O* `; x+ W* _) [ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ' e& u6 P1 Z$ Y+ O Y6 R
if( pSkillProp == NULL )
4 C2 q! n4 S7 o; a. ^7 ?( I9 d continue;0 a* a( F4 ?" I- L2 Z
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
, g! a9 V% x. z continue;3 \, E" ~' d9 r* {( }! l0 h. k% j
lpSkill->dwLevel = dwTmpSkLevel;6 O$ U. I \ g2 P4 o& a; @: f0 K
}$ q* V1 W. }3 [) T% h
}/ q9 @' G+ k+ g* u- V; c
}: m' a, y8 S3 d) Q/ e* |
else if(IsHero())
5 ?! u- y( K7 H% Y: H% |/ i {
a& f1 w) p i; L8 D% R- f- h for( int i = 0; i < MAX_SKILL_JOB; i++ ) 7 U4 u3 [' e: K1 T" e: L2 S
{ $ @' j0 R! q3 Q+ s' {" S$ V+ [! }
LPSKILL lpSkill = &(m_aJobSkill);
& `, u* K3 }0 W, I& L if( lpSkill && lpSkill->dwSkill != NULL_ID )- u& B- E; \2 ~8 n
{/ c1 D a8 o2 i/ V
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 8 L0 Q5 m+ c' a. m$ V) C: y [
if( pSkillProp == NULL )- R& \5 {7 F$ e7 p' K+ _ W8 J
continue;' F7 x: g% q- W# L
if( pSkillProp->dwItemKind1 != JTYPE_MASTER) I: I+ I" ~, T+ p+ T) N5 ~. J
continue;+ V A5 e- o7 z8 d9 L2 Q2 Z
lpSkill->dwLevel = 5;; l& h" b9 X O0 g- i
}2 F( Z7 O$ `; K1 q+ K/ U9 q
}
* w% C+ F& L' _3 [ }
; y3 n8 T' I4 W" p8 a2 f4 a else if(IsLegendHero())5 \2 a1 y" r- e
{2 S6 y+ O2 n3 T! |+ ?
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 6 \9 l% V% g8 e# H
{ " D/ @1 x; {: K) \# Z
LPSKILL lpSkill = &(m_aJobSkill);
6 q' }1 e$ t& w1 g if( lpSkill && lpSkill->dwSkill != NULL_ID )3 X/ f$ q6 _& E# ~, `& J
{# p, M1 a) l" ~: y% s3 T u( X, P+ `
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 4 Z2 g5 d7 T" J9 S. G# V1 J
if( pSkillProp == NULL )
: W7 l2 F# o; J6 M continue;, f6 J6 U# E: s% Y/ y4 f+ ^( p
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
J6 d8 e8 E' a. m$ d/ G4 K1 p+ n continue;
7 R0 ~5 }4 g) q/ K: n5 ]% [ lpSkill->dwLevel = 5;/ b. A6 V6 h! O3 g: h/ C
}
: c$ x/ |) H' q- e6 b }+ f5 U# Z" H) D" {, q
}
! Z; c, D6 K) ?0 V#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
6 q s; L6 F* w% L! M2 Q& v if( bGamma )
; a6 g4 k8 s. M {+ T. p0 H# R# W
m_nExp1 = 0;
* Q) N! V8 I% t }* ]% |' p4 T, |; H
0 y( H1 m4 O/ S8 u
( (CUser*)this )->AddSetChangeJob( nJob );; {' I2 K1 ?# q
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );* x9 K1 `2 b: {$ f' O" Y
+ `$ O5 H( [- }- G$ w% V
) Z/ W' M0 w! c' l( A0 L% @$ s
#if __VER >= 11 // __SYS_PLAYER_DATA) \. ~- k( D" ?" l# n) i# f1 V) Q
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
3 Y8 c8 @# s- R: p4 z# o#else // __SYS_PLAYER_DATA
& p' X% {. `" g$ R F! S: @ g_DPCoreClient.SendPartyMemberJob( (CUser*)this );) ` u& g% R- ~ M4 R: @ M
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
! _2 s, J* n! l* D& s9 o if( m_idGuild != 0 )
% D, \" E. O; @( c- Z* j g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );( l/ w# b0 O& P% s" |
#endif // __SYS_PLAYER_DATA
# H" u& H- e+ c J SetHitPoint( GetMaxHitPoint() );
- \- V' d! m* V SetManaPoint( GetMaxManaPoint() );
+ Z) u1 V2 p/ J$ ^ SetFatiguePoint( GetMaxFatiguePoint() );8 N) x- D( R; Z
if( nJob >= 1 && nJob <= 4 )
6 d, \& Q% }8 B {
. K9 j, Z: j+ I6 i: i" X: t m_nStr = m_nSta = m_nDex = m_nInt = 15;" [ e' o# K+ q5 ~, w. k" _
m_nRemainGP = 28;
- e: N3 ?3 k7 I. @- ? }2 A& Z4 W3 r' u& \+ Y
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
7 k1 ?/ P' b* d( h {! \2 S- N& E* E) _4 U
m_nRemainGP = 118;
" \* N8 ~2 ~3 w //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
$ P( p# J- o9 w0 I m_nStr = m_nSta = m_nDex = m_nInt = 15;1 X& {4 }0 V$ z m
}
, |6 f, _, P; o, P: \6 Q) ` if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ) ^. H& }8 M" x6 `0 u6 P1 Q
{" @( \3 B7 q A& K
CItemElem itemelem;
! m: V6 O* r L. D+ @! V/ ? itemelem.m_nItemNum = 1;) J8 J* ^, ?- O% T1 ]
itemelem.m_bCharged = TRUE;
, L5 d }0 N, {- O4 n+ U/ K BYTE nID;4 u7 z( y# I( s9 y' i1 F p
! G$ J9 s+ R0 Z4 D8 S if( nJob == JOB_MENTALIST_HERO )
5 E. l* h$ c, A( B7 ~" b. L1 S" L itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
% d) e9 L/ B3 b5 T1 l5 q if( nJob == JOB_FORCEMASTER_HERO )
7 K. X# b- _6 u/ I( L9 z* g itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;- B M8 m2 e, s4 l8 Q/ h/ Y
1 E9 x; \$ c ^" ?; V ( ( CUser*)this)->CreateItem( &itemelem, &nID );) T7 o5 v; W+ \" {3 I% d, H W# b! v3 r
}, ?. f# |5 l, N! f9 C0 R# x
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );/ {# Z& v& `* R
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );* P$ d: E0 m* s5 z
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
' \9 P, a k) l2 J4 B" U9 |' f+ y /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );- ^3 l! Q! N! g) Z6 g
( (CUser*)this )->AddTaskBar();*/
/ ^7 c4 w: M0 T( R! } ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
& K/ n c5 k( `# K" y" @: m9 }#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?. ~. K C: s9 B7 y4 e4 A
((CUser*)this)->CheckHonorStat();0 x( s# B; F% h7 z( K# p) x6 u: r* n; ^
((CUser*)this)->AddHonorListAck();
) K5 ?, b x& B0 {; U4 G g_UserMng.AddHonorTitleChange( this, m_nHonor);
8 T }7 I5 @; E( U" a' d7 C#endif // __HONORABLE_TITLE // ′Tà?
# X I! g- T3 I f: w( j8 y }
$ I9 T2 N: Q, W& ]2 J5 P( Q; Q( i#endif // __WORLDSERVER$ O/ r) N4 N$ ^8 o
}
+ v3 ^8 |# X8 p, i) J! J
% u: p8 z" c% l/ A6 H, ^+ v8 b然后你进入functextcmd.cpp并添加以下
% z3 G/ y) m, Y3 ~8 W7 D
' p9 u' B7 B9 M& v4 j5 B4 d0 [/ d代码:& f0 q M8 ?9 P
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
5 n8 {$ e& p( }1 p2 N \% y3 R下面插入
0 G5 O0 o5 J% ^6 yON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
2 {- x; h M# U4 a/ i
1 t# ^" ?1 \* ]4 g7 K1 W5 v8 I然后你去
4 W Q+ ]8 H) ^ e/ R
' D5 |% a+ I6 E2 t, Q代码:
) N& ]% ]2 P4 l9 p6 Q8 M7 A: B代码
# y! l5 b/ x& {BOOL TextCmd_ClearPropose( CScanner & s )5 k1 \, K. F: s: D; y0 A3 x6 z% ]
{, s4 a$ {" Q% T
#ifdef __WORLDSERVER
, a' T* \' p+ O/ e6 A: L% J CUser* pUser = (CUser*)s.dwValue;7 h; r% \, I* f% b7 c* s
g_dpDBClient.SendClearPropose();) J/ |& D* h/ I' H; q% o$ Q3 Z' E" S$ |
#endif // __WORLDSERVER# b! L9 ~# Y- K" E7 q% T$ V0 E
return TRUE;
. |$ F/ B* ]9 u$ M0 C& q}
* B. a( ~6 ?; \下面插入
- x' w; F8 _! `$ I nBOOL TextCmd_rebirth( CScanner& scanner )# o8 ^6 t( q. a5 {% [) e/ C
{$ K# h4 L2 k* i% S+ ~9 r) p
#ifdef __WORLDSERVER* Z/ x% I o+ G2 G5 ?
CUser *pUser;
- G, p' u2 Y5 v4 DpUser = (CUser*)scanner.dwValue;
- q0 a6 V6 c; R7 h$ S( Uif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())# m1 z( g* D: k H; s$ j( [" N
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);8 h G0 _+ ~2 S. P1 D
else( o, j" z7 t; a
pUser->AddText("你还未达到重生条件!");! N) a" C' ^: C
#endif% u" S. _0 a. K" s" b
return TRUE;9 Q. _' _: T b3 \
}
1 c& {: \: z: @ G' R6 S/ [9 [/ M' `- B
2 e! @3 }4 E5 R! o: G3 Q" K+ U* |1 [
1 g s8 ?% |/ t6 I |
|