|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel! n- P$ V6 J0 k
" {. t! s/ g* S
Mover.h
: E& m7 x8 f, D% m- O- Z y代码:
& ~5 p( l# H, S3 m找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
' U" {# {* @* C; d
1 E0 W4 y& L4 s# M下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
r5 D5 ], r( C e9 t& _: b) h6 K0 c! [3 X! g* d1 X% w
然后你去mover.cpp添加
0 p q1 F! H. g# k v* p; g: E0 W0 \0 y+ ^1 i, ?
代码:4 `, K l! U/ D9 ^/ i5 W
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
/ N! s5 L8 a, r$ O2 b' j{' n7 t2 S% ?, O1 L$ |) v
#ifdef __WORLDSERVER
& f5 G' L2 L+ J7 s1 _; q# a4 ]! ? // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó7 e: U9 h/ o+ T, d3 B
MoverProp* pProp = GetProp();& C3 J! h: `1 _/ t, ?* J
if( pProp ), o E' l' H- A4 L+ X- A
{0 j* V6 h% a* }
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
8 e- ~5 W7 H* j" {* Y& u {
. J; ?+ |+ _/ F8 U4 m AddChangeJob( nJob );
Z5 g$ K7 D* C! `/ x) f* e }else{
/ w$ V$ ^! K; h return;
( ?3 C* t( V2 x/ ] }
& [" l' z1 T: ?: F int nPoint = 0;, ?3 w% p- Y3 S* i- I
if( m_nJob == JOB_MERCENARY ) E- L6 V, _% z/ O L* A9 j3 |/ f
nPoint += 40;
1 h; `' c0 e" Z2 F3 [ else if( m_nJob == JOB_ACROBAT )7 F1 ^! Z1 l" H: Y0 o
nPoint += 50;; A& m* B9 k l, k% p
else if( m_nJob == JOB_ASSIST )
& b7 A K/ j) m5 Z3 u/ S nPoint += 60;9 r) u; k* e4 r- v; O1 @3 j
else if( m_nJob == JOB_MAGICIAN )
; o, }3 F- W8 h' ~5 K nPoint += 90;
0 N! y3 x9 J, m# w' K0 Y) T9 T else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
7 M6 y0 U2 @5 l, v3 a) ]7 m' M5 F2 s$ U nPoint += 120;$ \/ z4 z- U- `6 l/ ^- I4 a% Z
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )9 r8 t6 f2 k' I
nPoint += 150;: K; S: l- z% B* c
else if( m_nJob == JOB_RINGMASTER )
1 [" L t2 t) F; _- C( k) b$ R nPoint += 160;7 g" X! M2 b& R5 ~2 M2 I
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )) K4 z2 o' r2 \% g- P
nPoint += 180;8 h" a$ \8 u6 G& k& l
else if( m_nJob == JOB_ELEMENTOR )9 W- L7 y" b' f3 Q, k+ {4 ?
nPoint += 390;
5 F. v" K1 s3 r& N# T else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
( `2 p$ @3 L- h) S' U: [5 e+ B nPoint += 120;
$ F$ L7 {( H' ~" K: \$ z else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
5 z1 z9 m$ x# Z5 [) f9 q nPoint += 150;
- P' n1 s. q8 G1 h8 N! g else if( nJob == JOB_FLORIST_HERO )
" n; V0 s, Q: |) l nPoint += 160;
# ~7 L7 v! v D u7 ]4 x else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
1 }- Z$ x2 |0 v5 _3 H I nPoint += 180;
2 x& ^3 }# c8 \; x else if( nJob == JOB_ELEMENTORLORD_HERO )2 p! ~% L/ _' |: }* d3 U( t- D- e3 ]* n
nPoint += 390;
. u3 n8 K) q3 n m( R6 G, v" z
0 B( y: B* M! z8 h: ]8 B8 c+ b AddSkillPoint( nPoint );' u6 Z& S) T4 u1 f' D" u( P, ~8 E
m_nLevel = nLevel;
3 \' R- k. ~8 T4 ^
r3 v9 @ O, s$ P% W2 F SetJobLevel( nLevel, nJob );
; q" D$ y& M, y( t0 D5 |- { m_nDeathLevel = nLevel;
/ \8 b& O) ?; i) l* U" v$ ]#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans# w4 K# W7 I& T) U$ I
if(IsMaster())- E; ~/ p5 E6 } p
{6 k `! g. \" R0 j) T
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
4 `" O: {9 }" _4 l' x% w; _/ d6 L if( nLevel > 59 && nLevel < 72 )) L6 G. {# n4 e- H0 l
dwTmpSkLevel = 1;$ U! v1 u! J& E5 k7 {/ [
else if( nLevel > 71 && nLevel < 84 )% w1 X. n0 m. {8 }: x4 I3 D
dwTmpSkLevel = 2;
' N% x) k1 u( Y# \ else if( nLevel > 83 && nLevel < 96 )) X1 c+ N) w# R) r) G: Z, Z* j' \
dwTmpSkLevel = 3;! v+ T: m7 F# p8 W# Y0 Y
else if( nLevel > 95 && nLevel < 108 )8 V2 {- a: U) D/ |
dwTmpSkLevel = 4;. @3 d" V Y8 H" }
else if( nLevel > 107 && nLevel < 120 ); l. V" K, D/ x$ d1 Q) c1 b- }/ X
dwTmpSkLevel = 5;
' a5 \) q1 c2 V ?/ i9 s for( int i = 0; i < MAX_SKILL_JOB; i++ ) + [+ t2 Y% [9 |, m' ]6 \
{
6 Z5 j, w1 s2 z. b LPSKILL lpSkill = &(m_aJobSkill);$ v* {7 _' W2 |# W' ~
if( lpSkill && lpSkill->dwSkill != NULL_ID ). S: s9 G& B4 R2 L0 c
{
* b# Y$ V8 M# _3 | ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); . z+ r. \ i# u
if( pSkillProp == NULL )9 E# B9 W/ j; }( t( G8 t. C$ \# E
continue;
+ |7 J, X9 r {. D if( pSkillProp->dwItemKind1 != JTYPE_MASTER)/ A8 ~3 }4 V, o" n" i3 D7 c3 q. K
continue;* n J2 K4 h! t' R
lpSkill->dwLevel = dwTmpSkLevel;
0 @4 M$ i4 u* @" I# P }: y G) ]( I* x/ `. N! t' a8 N
}
1 L) g$ b7 v K" l# b3 l1 d }- M8 k/ c! K5 V, s) X
else if(IsHero())
" M6 Z" Q2 U2 _* ~" a7 A {* |/ N0 h# q7 |% A6 h, }) H9 s
for( int i = 0; i < MAX_SKILL_JOB; i++ ) }! p' s3 M4 E @! n4 d3 j% D
{
7 o+ ?" _2 I; ^5 D5 k" i LPSKILL lpSkill = &(m_aJobSkill);4 _6 p: d4 a) c& W, c' x7 C
if( lpSkill && lpSkill->dwSkill != NULL_ID )
% ]9 z1 S3 @ V2 ?# q& i" f& ~ {: Y. X; Q( C2 j% i( P9 v* \& u
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
7 o" Z% M) R. s9 z/ R if( pSkillProp == NULL )
; v% D$ @* H8 _& j& c continue;; h8 m7 v+ O- Z; \
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
Y. p9 H6 T" g# v7 r continue;. X6 l$ W" H7 h1 U0 Q
lpSkill->dwLevel = 5;
& I; M7 T/ i4 l$ a# \7 a }
0 Z) F% }5 `/ c8 r- f& K# i* d }
3 I, j: @5 q9 l$ r! b$ h }
0 x% d% [7 F+ O3 I5 J else if(IsLegendHero())- b6 t9 n) t: O u" Y
{ ?& I. t9 n2 P' E
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ; u" D$ X% ]: C9 [3 L% T
{ : |& _8 H3 H6 [7 V1 Z
LPSKILL lpSkill = &(m_aJobSkill);5 [3 R+ I5 A/ j% [4 K6 T& N, M6 z* u
if( lpSkill && lpSkill->dwSkill != NULL_ID )/ C$ |1 v+ t& M& R9 F7 j
{- f" v! s/ k. u6 r; g Z
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ' M! K' n/ ~$ \6 R7 F
if( pSkillProp == NULL )
- \. y4 j# U) u continue;4 |0 O- `; i& Q! }" R: X
if( pSkillProp->dwItemKind1 != JTYPE_MASTER): U3 W: g' q9 `' [
continue;
& @7 V" g) X1 ^( W lpSkill->dwLevel = 5;
0 K/ {7 q' ~, h5 L W }( W: n* {1 y X" f) }# d
}
* I! N# ` r' {5 C9 H }
: ~% K- z5 h" d- A0 w' Y#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans2 `- s V5 j, h) _
if( bGamma )
) X$ C9 x/ X/ X+ |$ c& a' `& W- H {2 T& V. ]: M' j4 n/ _, ~/ i2 x
m_nExp1 = 0;" p, H- t% b2 O. K y3 t; u1 f
}
4 C) x, ]6 a1 l+ t5 q3 T- `. c5 C2 K
+ I Y2 |/ ]: G) X* ? ( (CUser*)this )->AddSetChangeJob( nJob );
3 ~; ?) a0 |# p/ J' k g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );& O) z5 e( x0 A+ d
; B8 T2 x& o: o
5 u0 R z* P0 t8 n& e9 Q( z#if __VER >= 11 // __SYS_PLAYER_DATA
1 [0 e* K, m3 y g_dpDBClient.SendUpdatePlayerData( (CUser*)this );' a/ r" T9 I3 S% ~( b, X3 y0 C
#else // __SYS_PLAYER_DATA
7 [/ g4 f- [7 L5 U! N1 `5 R g_DPCoreClient.SendPartyMemberJob( (CUser*)this );0 {) C* g! j& G% F& l# @
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
4 ^: }' ^0 {2 a" {* F6 D2 h z, K if( m_idGuild != 0 )
/ L% v1 n4 w% [ O4 g# P+ V9 P g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );% d& b: Q: H+ W$ j r
#endif // __SYS_PLAYER_DATA
1 K0 `. r# Z- _ SetHitPoint( GetMaxHitPoint() );
5 c, [: [7 C3 X* P7 e5 ?+ F0 M# s SetManaPoint( GetMaxManaPoint() );! |: d/ E1 D0 W' q; {0 P: f" e
SetFatiguePoint( GetMaxFatiguePoint() );
- Y' x% t! H9 _$ S/ J% k \; ? if( nJob >= 1 && nJob <= 4 )
" k, S: U8 H% }' e! x {
! q* U' \! C! n2 J, K! `3 e) Z m_nStr = m_nSta = m_nDex = m_nInt = 15;5 Z0 P; k1 V# B6 ^* y% M: @' c
m_nRemainGP = 28;4 x" F# j6 D* c+ U0 a$ K
}
; F# Z: r2 ^9 ]( ~+ h7 \6 L q {9 I if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
" N( U7 t9 x; d f F" u2 | {
1 D8 l$ f: Y7 p8 E4 A ] N' x m_nRemainGP = 118;8 h4 k- c$ ^! ^4 S7 X: S: _5 \
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;* J8 E! f+ A- C5 W
m_nStr = m_nSta = m_nDex = m_nInt = 15;( N& h0 g% f( B- ?8 N
}
' D" G) L. L" a. f/ u6 p if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )$ c6 E( B, D( K) d0 {
{
4 E1 J; Y7 |. y' ~% w, C9 u0 _ CItemElem itemelem;
8 @. J0 `( ?$ i" P0 R itemelem.m_nItemNum = 1;
7 t h) w- `/ t" ] itemelem.m_bCharged = TRUE;
9 X+ m+ |' L+ [( M' l BYTE nID;, _; B! O( z+ F. u
/ u( L; L k: F: l if( nJob == JOB_MENTALIST_HERO )
- p" k2 g N+ C. h itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;0 ?4 X7 l5 D' R
if( nJob == JOB_FORCEMASTER_HERO )
0 [% h1 G$ F. i0 L/ R) [7 g itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
% b5 i1 T, M* `. [, P \# w3 E1 m+ w& g1 [% \ A/ X
( ( CUser*)this)->CreateItem( &itemelem, &nID );( B9 {/ t* Z' g! k9 M
}
) T( u4 g. O$ [: O) h g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
; H1 Q1 N) h* b1 ]& J ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );) B, b4 q( i$ i2 ?4 A/ o
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
- w: @9 ~0 O }, B/ h /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
, ~( u% b: \2 a/ _" @3 N: m ( (CUser*)this )->AddTaskBar();*/
. _6 ?4 W' l! s. z* G ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );. p' C, @& c( w' w
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
5 i9 L" |* f( i4 B8 U! U ((CUser*)this)->CheckHonorStat();% N8 R, [" l* `- r( S6 W* U
((CUser*)this)->AddHonorListAck();2 l4 O8 s* {& ?0 J( q6 V' q) B
g_UserMng.AddHonorTitleChange( this, m_nHonor);
% K5 t4 I$ N/ K% Q$ K$ m#endif // __HONORABLE_TITLE // ′Tà?
$ N* \* k7 [; H' h, U" k }) w2 I4 U/ ~* H, @# y9 f
#endif // __WORLDSERVER
( o0 X' x1 L# W' D. I} $ Y: x2 E0 U4 R" Z
* N5 i5 E& T4 F! Y$ k然后你进入functextcmd.cpp并添加以下
% b) w0 }3 t0 p" s) M! }7 _0 P
6 a* G) _2 i6 U, F3 R: i% |, }8 w代码:
! @( V% r8 Y" n$ y) w* K; A3 y) @" eON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )% [/ R" L+ Q. i* t- n
下面插入7 z: Q7 A" Z2 z# s$ S6 Q0 g
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 4 [" Y- r8 g; a0 K7 `: A. @
) x5 ?3 E0 e9 E! a+ {
然后你去1 a6 U0 f+ _! k, b: J3 y
- [0 ~' l' L T2 d3 X; J& S代码:
# Y$ }1 i) \0 h, w+ R% z. Q代码" ^+ Q5 P: C, v# `, H* M
BOOL TextCmd_ClearPropose( CScanner & s ). U2 @2 O9 K: f, C; x! P" c
{2 m0 V3 S" L& o/ t$ X6 ]
#ifdef __WORLDSERVER8 X7 z6 ]8 Q. X- E0 e
CUser* pUser = (CUser*)s.dwValue;; C2 v% b) s: U' }: ~
g_dpDBClient.SendClearPropose();
- g; U: j4 N9 W% j; H2 F- r#endif // __WORLDSERVER G$ z2 U8 U& n( ]! X
return TRUE;
8 | b" s' P* k Q# T4 ^/ j}
& @0 y& v+ C! ?: U- w下面插入
" T- q" {& Y5 l; ]; F: }BOOL TextCmd_rebirth( CScanner& scanner )
7 a& r$ E9 O5 D5 i7 d{7 w5 }9 B2 C- ^: |2 m0 {" J% r
#ifdef __WORLDSERVER |& x% N8 m& W. p9 ]6 F7 `
CUser *pUser;; ?9 J$ J, M+ v) S; c" z& ?
pUser = (CUser*)scanner.dwValue;/ j$ P$ A. t3 v A* ^( @$ J
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
2 R% ?; q& C! D4 z4 n6 C: ipUser->InitLevelPumbaaa( pUser->m_nJob-16,60);5 P: {( e+ O. A* j6 ^( D
else
% _6 G0 C" f% \* e0 c8 ?pUser->AddText("你还未达到重生条件!");
- \2 f! L; [* G U6 ~9 v#endif$ J$ Z% e' @3 q$ {
return TRUE;
. o" ]/ R/ l; W. \1 L/ m% u}
! ~% u% [% G8 v. r8 x$ G9 n" p+ Y- V4 o1 j4 n
/ n) T) d" {5 V
, }. h" u0 b" |3 T8 m! I1 t
) f. G; V, f2 H) i) `+ [# c
|
|