|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel+ G: g. Z6 x3 u. x# P+ x8 J2 d
) Q% y( r) N3 ~( o0 HMover.h
; g% R" p: I G代码:3 t" L2 h" e4 J& C1 s1 D# v" } n
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü+ j) @8 s- F/ V
: P1 S1 Z3 @4 n9 X3 e; U
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 3 a& r) v! U: u2 ]+ Q
9 y8 k1 g' ~/ a* d, B U H3 _然后你去mover.cpp添加5 e, `% z4 Y% i2 ?
5 g( E, T3 ^% {8 `8 v7 C2 V
代码:
( Z" i9 ?* L: r8 {% ?void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )* u3 N& {4 F( e
{
k. I, h3 y" o$ z& b#ifdef __WORLDSERVER
. a$ A' M f& |+ b7 a2 _ // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó( X1 N4 U, x P! ^4 f2 Q
MoverProp* pProp = GetProp();6 C. m8 U9 \9 B2 A7 F, e8 `
if( pProp )" o h4 e) ^5 V7 _ z
{& N6 w* h' Q4 D/ F( V! b% |
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
, d3 E3 Z0 r/ C3 {8 s7 x Q {! A( r: V: u& W5 U
AddChangeJob( nJob );% k2 X6 @& H% h! K/ x& k' D
}else{, M f" [ j0 ?- _/ ?9 \0 Z
return;
0 X i: N: f4 D9 I' D( I }" ?( p+ W$ b6 G
int nPoint = 0;" D7 p- ?3 r! z! K! O: D
if( m_nJob == JOB_MERCENARY )
) i. f; X- e9 x nPoint += 40; C$ F5 @ B( K3 f
else if( m_nJob == JOB_ACROBAT )" N8 d- {! _: g5 G/ k5 r( P
nPoint += 50; O" z* n& E7 j7 S
else if( m_nJob == JOB_ASSIST )
4 V: W5 u" x3 _' [! y& D8 g nPoint += 60;
' J& l4 l+ y# T$ k! r7 h; F else if( m_nJob == JOB_MAGICIAN )
3 }: P5 \* A! I; s nPoint += 90;
' j0 v P4 B, F+ @9 @3 ~ else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )( m# C3 Q" C* U1 E
nPoint += 120;$ h4 w; C% a5 C/ Y
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER ): ~9 k9 w1 h& H8 v0 ~1 Q
nPoint += 150;; P3 n, m; A8 o+ q3 }
else if( m_nJob == JOB_RINGMASTER ) `+ H2 S5 `; [. q% V
nPoint += 160;
* i' H" p" M4 l) P9 y- }2 W else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )# P( o1 i4 x, N$ y
nPoint += 180;5 y" L' ^0 _) |
else if( m_nJob == JOB_ELEMENTOR )% w, s2 d" S' w3 G$ b5 ? }2 {
nPoint += 390;
& v7 A1 f. w- P else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )& a, S% T! Z1 V0 W+ P
nPoint += 120;$ @; A: D, D9 w
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )" E: ]8 m2 S8 }, `" r. ]" w
nPoint += 150;
$ R; @2 C0 ^1 b1 t, N- F& F else if( nJob == JOB_FLORIST_HERO ); m' o3 `% }1 O* Y( |/ D
nPoint += 160;5 y0 `2 l9 x, ~ D" ^7 j
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
0 t& t; o! L& H, x" l, J nPoint += 180;
! ~9 C4 U, [2 `1 C2 d4 b else if( nJob == JOB_ELEMENTORLORD_HERO )* t4 ^8 A! `$ l7 g0 f
nPoint += 390;
4 a; S6 D U; L8 C
9 ]" a4 h* Q; J1 b, n- f AddSkillPoint( nPoint );
) @& L1 v; `' }1 H! r* P m_nLevel = nLevel;- f2 R0 W$ a* T) k/ ]
v, L& z- Y* ?) z3 D2 W+ u SetJobLevel( nLevel, nJob );& p. A) ?2 o7 I/ ]5 G* G
m_nDeathLevel = nLevel;
" Q- ], w+ n. p#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans/ ]0 c0 ^& @) E
if(IsMaster())& X, U3 w% @% `1 {
{1 m/ @( m* W: E9 B* l E) \6 J
int dwTmpSkLevel = 1;//60, 72, 84, 96, 1082 u4 i: ^+ c4 s( {
if( nLevel > 59 && nLevel < 72 )# J/ w. K2 }# I8 S, h9 {
dwTmpSkLevel = 1;
, ?/ T5 H9 j- k u" s$ X else if( nLevel > 71 && nLevel < 84 )
1 I: F0 k- `* Q, s* b dwTmpSkLevel = 2;
2 l# K" t2 _1 F1 J) B3 Y* ^9 a/ x else if( nLevel > 83 && nLevel < 96 )6 V; j: K }+ l" [) K
dwTmpSkLevel = 3;
|# e/ O8 p) c' d, C) o else if( nLevel > 95 && nLevel < 108 )
6 E1 ?) T# Y p9 \" b: s" m# Y) ^ dwTmpSkLevel = 4;8 o5 P/ j5 ^" Z, ?# t" E
else if( nLevel > 107 && nLevel < 120 )
0 k! {( Q2 @7 b dwTmpSkLevel = 5;
: U4 j- u3 L6 R0 B7 j4 b for( int i = 0; i < MAX_SKILL_JOB; i++ ) - g$ v5 D# C+ H' f) I$ I
{
9 e: _* ~: G/ A; y* G0 p LPSKILL lpSkill = &(m_aJobSkill);
$ O5 z; H2 l0 c. I' L if( lpSkill && lpSkill->dwSkill != NULL_ID )
' d/ o% p0 f- p& A7 y1 [/ v {) x, s+ T1 x' o9 A- f( L% |' O
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ) c2 o( T' w! F( j7 b, C$ Z, M
if( pSkillProp == NULL )
' k8 e- \& I, p3 e- a3 j; Z! Q4 c! K continue;4 g. `' n6 }- Q+ W2 O+ M
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
$ b& T% m/ K+ u; b* C x continue;) l) e* _, T) W
lpSkill->dwLevel = dwTmpSkLevel;8 t4 K% l+ W; q) y$ u. L4 w' Y i0 l# |
}
( C# H" ^( O- [+ c* E } L" ~0 ]0 i4 B) j8 y3 }# {
}$ ]& y ]* B- m5 n% P. h9 o. ~0 M
else if(IsHero())
+ v: {" j5 k4 U( q2 l5 c2 q) N {
: s3 u q$ l% z# ~: J# ?/ } for( int i = 0; i < MAX_SKILL_JOB; i++ ) : Q% O) O& ]$ F8 C& J
{
% S+ T0 Y2 J# M8 Q LPSKILL lpSkill = &(m_aJobSkill);" U9 L6 r. P. d5 p2 U3 v" A, |! j
if( lpSkill && lpSkill->dwSkill != NULL_ID )9 n7 D. B7 }0 D: \
{
. p" ^% N" O) s7 T ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
% [7 A8 W* C2 J. N, Y) P- ? if( pSkillProp == NULL )
; H8 `/ {$ J' x8 }2 J continue;
! ^9 d! m4 \9 ?: [ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)) w, r& B1 s/ x( L
continue;
: |/ }9 E2 N* C% L lpSkill->dwLevel = 5;" v' e3 g# }/ E" N2 l) K4 M& F; c( W
}/ k' L! x! k' A! l
} B! j! l. I9 c! e: B) q9 G
}
9 w% J0 X t2 u( e& g else if(IsLegendHero())
* P# S, i. Z: y; L5 ~7 v9 R {
: I/ ?; E8 t3 V0 b, l; V for( int i = 0; i < MAX_SKILL_JOB; i++ ) 5 {6 E/ ^6 o0 w' q4 M' r1 }" Q4 a
{
- |7 ~5 V2 C+ A& n& Q) U! t- q5 I LPSKILL lpSkill = &(m_aJobSkill);
% {2 {) B' \/ v3 y5 m8 b1 b0 ?6 I if( lpSkill && lpSkill->dwSkill != NULL_ID )
# E6 P% _2 N/ c {
( u6 k/ K7 n& p$ Z/ y" s ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
# v$ S! X* e, Z; P3 m4 p5 S if( pSkillProp == NULL ). o. A! f, }- B5 F7 p
continue;
6 S9 T* C( Z( o/ v% ]) _( F) [# @ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
/ l! F+ k, ]; u+ M; W* ? continue;! C4 M8 @3 i P3 A% K6 c' c
lpSkill->dwLevel = 5;9 Z, j# C8 ]" F, w
}
3 ^5 ^% b8 {8 j c+ [ }
6 ~. Q8 f5 @% @" b+ v! \0 o& ~ }; F' F9 F' |7 Z% L& ]
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
0 D, D6 T& k4 c9 Z if( bGamma )1 i2 ]0 A5 U8 k1 @; T) G/ G
{
) ]3 M" S0 w. ^/ l, A4 t* M m_nExp1 = 0;
. Y9 E! a5 J7 C }
' o( d9 g5 [# w% g; F: U9 f: P! E8 B# u9 D0 }* X6 Z0 m5 m7 @' ^
( (CUser*)this )->AddSetChangeJob( nJob );
" n% ?. D% S2 z3 {6 s& p g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );7 Z6 o3 C, ^8 a! I- H
5 ?" ]6 ^5 _/ H+ [, p# c+ M
( C$ f4 y3 R$ F& B" y [8 Y' ?#if __VER >= 11 // __SYS_PLAYER_DATA
9 h. h5 r/ l, _# P. f" j g_dpDBClient.SendUpdatePlayerData( (CUser*)this );) b5 T8 U9 `8 ]2 |# Z0 O) \
#else // __SYS_PLAYER_DATA8 c; ~! ~6 d: {$ @
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );- o, L# c9 j. C; }4 U1 P
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
8 f+ |& E r. s% Q1 {- P if( m_idGuild != 0 )
4 e" K1 c7 h+ V, Z* p4 J! m! j g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
& S% }, P; M& B3 A/ k3 Y/ Z7 F3 d0 f#endif // __SYS_PLAYER_DATA
$ |3 s' I9 t' K! k9 e SetHitPoint( GetMaxHitPoint() );8 K5 v5 {3 ^) B. [4 ?0 E) u
SetManaPoint( GetMaxManaPoint() );4 D8 S2 q' \5 c
SetFatiguePoint( GetMaxFatiguePoint() );! a# e$ y8 C# u* m! _
if( nJob >= 1 && nJob <= 4 )
9 G5 u- h* A: a7 }4 W {1 F, w& X! o5 Q$ S& a5 S
m_nStr = m_nSta = m_nDex = m_nInt = 15;
) A4 b. i% m8 E% }( _ m_nRemainGP = 28;4 y; V9 L! j4 D$ o8 C8 r0 F9 ]
}
! _* _9 I+ m' x' A! S if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
& y0 l+ u$ ?; d) |: | G {9 S+ c& ?) [( K) X6 R+ J- e
m_nRemainGP = 118;
3 t3 r0 Y7 b: e# l7 e- k //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;' U2 z2 l- l' j2 b$ v3 B
m_nStr = m_nSta = m_nDex = m_nInt = 15;; N* T# L0 n& q
}" {9 a. \2 p$ b. r! Y( R4 d6 y3 M
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )5 r& J+ }* o/ `6 K5 B
{
% g% n+ H k% T+ ^, `5 z CItemElem itemelem;: }( A N# e' Q9 T2 ]" T' B. f
itemelem.m_nItemNum = 1;
2 q2 J4 P) \$ B4 B; Z itemelem.m_bCharged = TRUE;7 f; R$ G# V' D8 o. ^7 y1 _
BYTE nID;
q; {" d" s$ I: Z$ [: Q" |2 H
* t! n$ P4 s8 i7 W3 X if( nJob == JOB_MENTALIST_HERO )
j' M8 c2 y4 {" i" H+ q+ G itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
$ A% z. H4 X1 k% ] if( nJob == JOB_FORCEMASTER_HERO )
n$ P" d$ C0 r6 s1 v) ]5 O itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;9 s( ?5 s5 Z4 r; i3 K" O
2 }3 _; g {- T7 M ( ( CUser*)this)->CreateItem( &itemelem, &nID );
: ?7 O( R4 Y9 ]& N# A9 r) B }
, s0 q# C( t$ u g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
& u2 @' ?: r$ Z u ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );. i) h# b+ q5 a' z& m
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );. u+ R/ N+ D0 w6 d: ^* R
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );$ g$ E: y" a$ w9 \
( (CUser*)this )->AddTaskBar();*/& R; ~4 G. Y2 J/ l/ a' O% {
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
* w l9 G: T$ R g. E# I#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?1 h: E2 G! h2 f1 w; X
((CUser*)this)->CheckHonorStat();7 k# }6 m; \5 f% C, I; f
((CUser*)this)->AddHonorListAck();( |% ^! |# o; \$ b* P4 X
g_UserMng.AddHonorTitleChange( this, m_nHonor);
4 P: Y2 Y/ B. W: P# b#endif // __HONORABLE_TITLE // ′Tà?1 A, c0 Q6 m: r; T( v" d% l
}
6 j2 z5 [1 l" }$ k#endif // __WORLDSERVER
& g+ w% D9 s9 |# V, l! T}
' J* G0 ~+ w1 f6 J2 M, j
" c) r( B, W* Q+ U2 j/ `1 t: c# v" S) o然后你进入functextcmd.cpp并添加以下4 x% [, L- G4 ^3 S8 v X5 U
9 L" P4 Q" D# s' \$ c8 X
代码:
, Z( j8 W( K0 ?' M8 [8 \ SON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
0 l$ `" N* k9 _! g! w3 `# ^下面插入: y% v* L+ F6 a @. g* `4 }9 k1 C: g
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 0 _0 b+ v" `- p3 D" S! b' ~
5 l2 f+ C8 _1 v# v3 F) r N
然后你去, e& z4 d7 b( e' @' W5 E/ o0 E
j' r& O5 X& R4 s- ?5 U代码:: R+ q/ [, N n
代码. K* l1 r7 \# S( p% ^
BOOL TextCmd_ClearPropose( CScanner & s )
3 c0 H. v# @$ n5 _# Q{
1 t. F; w( X' k% s#ifdef __WORLDSERVER; W- k6 [* T" d- g
CUser* pUser = (CUser*)s.dwValue;: d, E7 i, w1 I/ ?
g_dpDBClient.SendClearPropose();: u6 R8 p" g3 I& [+ D I
#endif // __WORLDSERVER- F5 J8 u- e9 }' w
return TRUE;
- Y8 p3 W& N$ f0 U( T; A# F, R1 o}% {, u- n( z& g7 f. i3 y
下面插入$ s6 a. j) p- ?
BOOL TextCmd_rebirth( CScanner& scanner )" g* n0 m& }- e3 e
{
/ A+ i8 p: e/ t#ifdef __WORLDSERVER; o) ~" P) ~" Z9 S" K/ B2 d5 s
CUser *pUser;4 y" y/ C4 L% z- m; O9 Q
pUser = (CUser*)scanner.dwValue;. u! x+ b! O d/ s
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())5 H* ~; D/ j) \3 ^
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
! K) i, ~0 J2 C* `( P6 uelse
) W" b4 o# F; |+ h ]pUser->AddText("你还未达到重生条件!");
/ O& z, D' }8 P& G#endif
1 o% F. j, R+ v* f, ]! freturn TRUE;
, Q3 ^3 p& Q) H+ h} : N5 P3 c5 h7 O o) C
5 J. p2 o" {- O7 f) V _. H
- |9 `0 _1 W9 C$ a1 X1 m' t1 x/ o* o# ^- |# u1 ^, E, P
( B( o U/ K Q
|
|