|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel$ J2 H* s @0 n* ~; s9 S
; f+ y* f& p: v7 j3 X/ ]7 [7 aMover.h
; }$ s& ?- @+ I J1 N3 J: X代码:
6 {/ j9 q. j# C$ e& L, U. K找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
3 [3 ^% C3 f4 u6 r
( A# b( s2 h# V$ @7 l下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
6 O# _ n# o( X0 k, u) {) J$ E$ f. h8 j! P! K" R5 v6 x3 T
然后你去mover.cpp添加! H6 F7 O9 d% I0 P
: \+ ?, E' O W9 l; ?. R4 U代码:
" O% {3 {0 e6 N% G$ E6 m6 t8 l2 _void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ). |; Z2 P0 J$ [- |4 a l
{6 F d9 E+ X( I/ d n6 ~5 b6 K: X
#ifdef __WORLDSERVER* L- m8 p# J* E8 }6 \$ p) s* O+ T
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó! x0 z6 x7 ^$ X! T1 T
MoverProp* pProp = GetProp();
8 g, ?; F& N; ^5 Q if( pProp )7 q+ r' t/ T" {
{
6 S! [9 Q' Z P% B) F" i- G if( nJob > 0 && nJob < MAX_LEGEND_HERO )% D& H! i: H' }. g
{ w) T0 o7 v( H6 {
AddChangeJob( nJob );
$ f3 L# m/ n5 A1 r }else{) D* C2 b' B$ _% m
return;
) N* Q; @7 E! g+ g* H }
) t2 u3 e% v* ~ int nPoint = 0;+ f5 E) \7 v* U: W6 Z
if( m_nJob == JOB_MERCENARY )( ]% `/ m9 H' x
nPoint += 40;
8 Z. A: N$ d$ K- X9 O else if( m_nJob == JOB_ACROBAT )
6 ~2 O3 I% K* {* l0 W nPoint += 50;
, f! d/ P, X) t7 I! h else if( m_nJob == JOB_ASSIST )( Z4 [, z. j) g3 N7 f7 X9 d
nPoint += 60;% X9 e: N+ ^; Q
else if( m_nJob == JOB_MAGICIAN )
% d4 z- m1 W$ C! v. D- b; j nPoint += 90;/ [- K5 _ l2 T; ]8 \6 ~
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE ). T; a4 }- L7 f8 u
nPoint += 120;& e3 @' e; y8 Q6 x3 k7 }4 l9 H
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
% N1 a8 F3 P7 L. a# F/ K1 ?9 S nPoint += 150;& F+ K% M/ e, T# F2 q
else if( m_nJob == JOB_RINGMASTER )
, W1 V2 m1 q" B0 d/ L4 {5 J( S% K$ K nPoint += 160;, C$ x2 m' \! ~& w4 }6 Z
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ) o* M! @: h, b9 ?* T
nPoint += 180;% u! f6 T* `3 l6 p3 \ K
else if( m_nJob == JOB_ELEMENTOR )
& _4 ?, V6 V9 ` E) Q nPoint += 390;0 H9 m9 R2 Q9 [8 S2 o+ I/ e
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
; u+ f$ M% l1 d( Y" Y nPoint += 120;7 M$ R3 m0 n, R G1 _
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )5 E) B0 x9 q- d9 ]( w0 M* b* y
nPoint += 150;" n/ J2 k2 C4 z" S
else if( nJob == JOB_FLORIST_HERO )
0 X+ N: e @* p6 [) z- A nPoint += 160;# @# q$ Y. @9 M, q
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
5 h* D. s* [$ K+ [" `+ p+ w2 J n: y( { nPoint += 180;
% {) d' ~3 c8 ?2 g9 l* J; ` else if( nJob == JOB_ELEMENTORLORD_HERO )2 x7 S( h u, Y+ C/ f+ g
nPoint += 390;; e M- n7 A4 D) x/ y2 z; e% m
' s0 Q, K; T+ L, o* s3 m
AddSkillPoint( nPoint );& U8 P3 _- W8 j5 O5 u. x" U$ W
m_nLevel = nLevel;
! w J6 i k K6 V7 k h% d
- ]7 D$ x2 S2 _ SetJobLevel( nLevel, nJob );
* V: X) p8 q) N( O( v2 W0 H m_nDeathLevel = nLevel;6 f* h9 c+ `/ d
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans& |4 ?" \- L' W+ ?4 `; ?- E
if(IsMaster())# H4 b" P$ Y% V; B# C
{, L+ n; Q4 s. f4 a
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
; S2 \/ T( E j' T if( nLevel > 59 && nLevel < 72 )
0 f9 S4 [2 D e, \$ M dwTmpSkLevel = 1;* ]% B& @! T' E( W/ \% a' m- }6 o
else if( nLevel > 71 && nLevel < 84 )" B6 o) H9 t( U) c3 I( _+ H8 n
dwTmpSkLevel = 2;# C( l; m- d/ h2 F: t2 q
else if( nLevel > 83 && nLevel < 96 )
( Q" x3 d4 P k5 t8 V0 w' V dwTmpSkLevel = 3;
( k, Q$ ?/ g* C else if( nLevel > 95 && nLevel < 108 )- j. F; {. Z$ a/ t) b
dwTmpSkLevel = 4;
, v7 s: h9 F& y9 Q: Q& t else if( nLevel > 107 && nLevel < 120 )
& g/ S" I# u) W; r' Q dwTmpSkLevel = 5;
) p8 y' q6 f- m5 G" L/ v" M2 N7 o for( int i = 0; i < MAX_SKILL_JOB; i++ ) # ~ I- b' C; D P% ~8 b
{
. I+ d& h2 o: C d2 { LPSKILL lpSkill = &(m_aJobSkill);
& ?7 p. z* j; C( u- Y7 k if( lpSkill && lpSkill->dwSkill != NULL_ID )+ C1 s. S$ d& I- M
{5 l$ p8 T! Z/ V. n4 [# ^4 b% E: u
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
M9 `4 b2 g+ p6 U if( pSkillProp == NULL )% E0 d, W8 S; T$ S" b7 K" k. h
continue;
/ _/ g3 X3 p1 v' ? if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
( s: u8 g( [, j# I6 d, @ continue;
7 G% v2 G) k# u* Z7 B/ [& p* p, K lpSkill->dwLevel = dwTmpSkLevel;; B: E( H( E: R4 u2 x1 b. B/ j* L
}
/ V4 p5 w/ A( {( w2 z! j }2 G2 I+ z" q7 {$ @! F9 J A
}3 j% a/ q7 J: W
else if(IsHero())# d8 E1 b! H7 Q: C
{
! y5 {3 t; R2 h for( int i = 0; i < MAX_SKILL_JOB; i++ )
0 @7 `* T& L6 R { $ M$ ]: \0 R# \4 \$ N* ] b
LPSKILL lpSkill = &(m_aJobSkill);
2 p# }% c( d' _1 I& ^ if( lpSkill && lpSkill->dwSkill != NULL_ID )! @% G e9 Z2 n! q; q
{
3 q! [) [7 B3 a) [( K( Y$ \8 Y ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ! P$ S6 r4 I6 v1 j7 n! l
if( pSkillProp == NULL )5 ?. }8 a7 o, }7 F4 C" P0 y
continue;
- F, I. P# x$ ~0 q9 f if( pSkillProp->dwItemKind1 != JTYPE_MASTER)6 B4 o& F1 p8 G5 M0 K
continue;/ v1 m) Z2 _2 m0 y
lpSkill->dwLevel = 5;- p. W5 N, ]) `0 j8 v9 E* t
}, [ W5 ^9 `% t W! L! P: v
}
# V" J4 |2 w# |7 s' J% r! L }- }% [8 u) k9 N V. T* [' b
else if(IsLegendHero())
4 a; f4 n' ]& A; W! ] {
! s9 m) z; q/ E7 U9 ^ for( int i = 0; i < MAX_SKILL_JOB; i++ )
8 E6 X) o8 {5 K { $ I1 S9 E9 _" T N0 {% J
LPSKILL lpSkill = &(m_aJobSkill);& B0 _+ D" b% C) ]
if( lpSkill && lpSkill->dwSkill != NULL_ID )( Q [" N$ A& N) J$ v/ `
{
0 N0 k# I" Y" {8 } m1 W ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); * P9 e, d; ~& @+ B
if( pSkillProp == NULL )& n% P3 q; K, T6 c$ R
continue;0 j; R; w; P I% D. i( w4 B
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)2 Q- F6 x2 `7 ^3 B5 y( @
continue;
( S) W' X& X" [( ]6 S# y lpSkill->dwLevel = 5;
/ y; D* I" ^% c }
& L4 D7 B( X) x# D }
! M4 O. `7 c' a, H }' ~9 v' N7 M0 O
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
! }- |5 w7 L% [* i8 { if( bGamma )
: f L! C; D, P1 A1 C8 E$ B! ~5 b6 x+ |" p {5 ?3 x+ J) _# \
m_nExp1 = 0;
& T+ U+ G" |+ C. @- }! ] }
; b* C/ }- |) d, s- b5 y% i* s0 _& {$ l& {7 A5 F
( (CUser*)this )->AddSetChangeJob( nJob );0 p, a% o: f* Y8 [: J& v* l
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
- @8 h' j. M Z* y" m2 m
0 ~% C; h- q" i- n b" }
; }: \3 Q8 Q' G7 {' I* N; g#if __VER >= 11 // __SYS_PLAYER_DATA
4 y8 }2 g. N" [ x$ a g_dpDBClient.SendUpdatePlayerData( (CUser*)this );5 J4 y) Q+ _* q: V) b3 e
#else // __SYS_PLAYER_DATA# P0 j! b* i, J' g2 [: D5 L
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
2 W! s+ a1 `/ y& B) L4 e g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
& [3 K( _3 U% t7 z. K" o if( m_idGuild != 0 )6 j; K7 k4 M1 @# r7 M& Y$ Y
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
9 Y/ k7 l. }% K- t- [#endif // __SYS_PLAYER_DATA
5 \* X& J3 f) [ SetHitPoint( GetMaxHitPoint() );5 C" X9 U1 K# X
SetManaPoint( GetMaxManaPoint() );
9 Q8 ^$ M- `0 t$ ?6 x1 } SetFatiguePoint( GetMaxFatiguePoint() );
4 D. `: I- J1 v5 e if( nJob >= 1 && nJob <= 4 )
* r1 O) w3 e& Y1 M {4 @7 z, R- |4 c5 |
m_nStr = m_nSta = m_nDex = m_nInt = 15;( Q. o Z- n; ]4 P
m_nRemainGP = 28;
2 B, _5 {+ t, `6 x }
( B, S6 J$ T6 y% N' l! I if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )' B# d% y I6 ]3 e/ v% r; T; {
{
7 _2 y+ Y( Y- o6 N m_nRemainGP = 118;5 x; X P' K) z
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
8 R6 a: J, @$ d4 n1 p" f) e# T m_nStr = m_nSta = m_nDex = m_nInt = 15;
$ ^! U8 C- r0 x9 B v }
3 G( S6 f$ q6 i- u* H8 [+ J! O if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ). J/ `4 x7 I4 c+ u7 z
{& d1 W2 f% G" j$ n7 t0 h) v
CItemElem itemelem;
& x! x9 L7 d5 y* H0 T3 g9 A: j itemelem.m_nItemNum = 1;
6 K# k/ o9 P$ R: _& y itemelem.m_bCharged = TRUE;
% u6 f/ f' E1 y& A8 C. C: p BYTE nID;9 n/ t1 l# ^9 Z- f
$ y7 u, X7 w, I% l0 g
if( nJob == JOB_MENTALIST_HERO )1 q) r4 h; t0 u7 \ B) a5 N
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
+ \- y1 C( P) W if( nJob == JOB_FORCEMASTER_HERO ); u+ b' x4 S. ]0 t4 Y% a
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;5 A$ @3 _5 `& F: d
3 P5 D( A- [" S; } ( ( CUser*)this)->CreateItem( &itemelem, &nID );
3 @/ k6 C6 q( H4 V' K4 z }! \% o i7 `, w$ L3 R
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );! o6 G% E3 a$ r) E+ a4 Y/ C
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
( }5 F1 J& t4 z; D% F! \: w5 w ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );, K' R: F* \+ B
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );" B! v3 A% d& W% l" G" G
( (CUser*)this )->AddTaskBar();*/
6 m& w2 `! n+ C4 @+ {' z" X7 H ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
& ~9 } J6 {& \( a#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?5 O% C7 s# |9 {6 F
((CUser*)this)->CheckHonorStat();
3 t6 X$ ]3 D- z! q/ ?* f ((CUser*)this)->AddHonorListAck();! v' W4 q) S, e7 r8 K R, V- L
g_UserMng.AddHonorTitleChange( this, m_nHonor);
4 ?, [9 }6 ]% M% }2 H' i' k#endif // __HONORABLE_TITLE // ′Tà?
; _ ?2 z6 p' O/ _+ B' s }1 o: m! `) {. S0 ]- u
#endif // __WORLDSERVER: G1 P/ L0 \) v, [; c
} 1 Y: ?0 u+ m( J% t/ w9 j
6 u# w# P; a/ H+ ?0 G
然后你进入functextcmd.cpp并添加以下; ?$ u# G1 n0 Y0 F9 K. {
- j9 h ]0 ]4 L! X! j# F) K, p7 m
代码:
2 M6 [. l1 F, J+ a/ y# ^* j' @ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
$ c9 Y/ b- z2 H2 }下面插入$ T& Q% B. Z* U# j l
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
% ~# i* p) E+ T. H! e+ ]7 R
) s4 `: N) ~$ @( P) e然后你去
+ {. l- F; `7 W. R9 J# g- c
1 D: t+ E' Q0 b/ S7 j代码:
$ U$ l+ U) x, m7 ^代码
+ t8 O( Q* z- N4 B- WBOOL TextCmd_ClearPropose( CScanner & s )
+ H9 L/ M* b, m7 g{) V" N4 ? x" E Q- Y9 }
#ifdef __WORLDSERVER4 ^3 \* T8 n1 R2 [; Y
CUser* pUser = (CUser*)s.dwValue;4 v! l" w% x7 h! n) `: O5 t L8 s# @
g_dpDBClient.SendClearPropose();
( \& ?8 C( o; Z# p#endif // __WORLDSERVER4 R, u+ e# P4 G! ?' m) T
return TRUE;/ f' e- J) D0 {; K$ }
}
; z+ {& N4 Q q- a# r8 \下面插入0 g5 z3 f, G0 a K% a/ y- x
BOOL TextCmd_rebirth( CScanner& scanner )' u/ p9 v2 e; I& S0 t
{
' [0 A6 Z( U9 j9 W& z$ i5 m! P) O' l$ o#ifdef __WORLDSERVER
r( a! `' e9 n3 r, m9 LCUser *pUser;# ]/ ~$ E) ?7 r! R Q1 f7 a3 q, W" s
pUser = (CUser*)scanner.dwValue;
5 L- l9 X8 M0 ?, ~! [6 J& T0 r2 O9 eif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())' X8 Y5 }4 _0 i/ u9 g% _ B
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
- M5 n7 p) h' t) Kelse
\- Y" ]2 x# S! t4 }% LpUser->AddText("你还未达到重生条件!");
r+ E! j8 {% ]' L! Y$ \7 A, d#endif& X, l: `6 o7 t4 L* Z, k
return TRUE;% N4 Y/ T" f& F2 F1 ]3 H
}
$ D$ c( R, l( `0 B) b1 T( U" W6 T7 z, B& H
6 i& b% U) \% A
0 B- R' n o9 f r) b
# ^( E! D* y0 {! |0 C6 G; t
|
|