|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel) D& h3 b1 \; n4 O4 Z% e l6 K
; j* R9 S' H" iMover.h' o& w- L) {) N& ]- ? Q% y0 R& l0 R: P
代码:/ ?3 K4 Z1 T9 e+ L
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü5 N$ s4 y: E; O; }3 B
$ u4 a( V+ P6 B! e! }# [0 X. w! H下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
# b- u+ u7 S" Z$ K
. u8 v9 l2 K4 |8 r1 K然后你去mover.cpp添加
1 u9 O: f3 s: J+ G0 N L. u( }- O4 ]1 }; V
代码:
7 t6 F, n# W$ V9 k% w. v& J& {$ [void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
! _. k. n8 y/ t- m9 `{1 _" j# v) t& {, N3 m" f
#ifdef __WORLDSERVER
0 d: G( C( q$ o4 ]5 @& ^ // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó9 ~. O5 q% [3 ^8 q$ p: V4 `& t
MoverProp* pProp = GetProp();. F. u2 N( w, ^/ T" N( o
if( pProp )+ b6 F h' G& i ^' f
{
% [5 r' v; O0 B; ~% j7 y if( nJob > 0 && nJob < MAX_LEGEND_HERO )) F1 `, [' g6 D7 w4 i1 w
{
. l2 L' r# e F4 r0 s AddChangeJob( nJob );6 j& }+ P: J# m, ?' V
}else{) g; @9 o2 }% |2 r. a5 B
return;
+ I) |( T B Q8 z }" {/ h i/ d% U5 m
int nPoint = 0;
; W: S1 c, m7 Q, V+ U if( m_nJob == JOB_MERCENARY )
- M$ q" t" T# | nPoint += 40;4 L. s% f# ^$ K5 } h, u* K# p4 i
else if( m_nJob == JOB_ACROBAT )
" B0 q7 f2 a& d0 s nPoint += 50;
, e8 T% J) v8 m- u, n3 y else if( m_nJob == JOB_ASSIST )
: q' }/ ?# R3 i9 p) b' e' ^+ E* Q$ k nPoint += 60;
9 p3 i3 y! T4 I C0 B4 p1 R else if( m_nJob == JOB_MAGICIAN )! `8 j; D M) L: k" W
nPoint += 90;% H; i/ \7 A, j5 g' P. I) z* j
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
5 p$ P8 D. ~. J% u nPoint += 120;' f9 c7 D, p9 p# R6 ]( g
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )1 T% b, I6 G. b" {
nPoint += 150;+ @2 j4 O0 }, O" u c! g, U
else if( m_nJob == JOB_RINGMASTER )
- y6 K4 @+ X' n) ^4 S nPoint += 160;
& h. q! i9 M0 O: o else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
' O/ h5 ^0 ^ G6 ~8 k5 t: m nPoint += 180;
/ Y2 T; J( K1 G) K# u: B" O else if( m_nJob == JOB_ELEMENTOR )$ F3 U7 E/ n" l- v8 l. ^. _# p
nPoint += 390;
5 s0 ?: N/ U, P; A* p; {- Q else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO ) j: c9 t! M: L/ m. m, T
nPoint += 120;( q" E4 u1 O g: e, j% Q
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO ), e' `* w6 }+ H# Z
nPoint += 150;
F( S5 p& ^5 ^ else if( nJob == JOB_FLORIST_HERO )
+ k$ [+ E& U8 N1 r! @ nPoint += 160;
: W( R1 u3 |" l5 G else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
0 \2 d- b- X$ l1 A4 F- V+ E nPoint += 180;
+ P4 U* r& A$ A* j5 g; |4 N6 \ else if( nJob == JOB_ELEMENTORLORD_HERO )
7 H- I- }3 W$ T, K! L4 I! i nPoint += 390;
% |# ]. l% x2 A y+ ^* C1 f% p, q1 [9 z- G L/ W
AddSkillPoint( nPoint );6 C7 K/ a8 k( s- B& ~* ]6 c- |
m_nLevel = nLevel;% Z6 X0 L! D: j7 V1 @) H
4 O" `5 x/ | x" T SetJobLevel( nLevel, nJob );' `* H' m1 I% n% l% f; B
m_nDeathLevel = nLevel;0 T9 U; }, z5 s7 N* u
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
7 Y& \- k1 u8 x9 ] if(IsMaster())6 V+ l3 Q3 s( H) }; w1 Z
{% y" V' M3 ~3 Y" d+ P
int dwTmpSkLevel = 1;//60, 72, 84, 96, 1084 c$ D: o* J6 D
if( nLevel > 59 && nLevel < 72 ): B# E, |8 ~4 y) m% x
dwTmpSkLevel = 1;
+ m( A. ]4 @: }1 b. c* E else if( nLevel > 71 && nLevel < 84 )
9 f" x! j, a5 K: c' p dwTmpSkLevel = 2;
q: w6 y2 P( o P# o else if( nLevel > 83 && nLevel < 96 )" l6 B- `1 Y9 c1 c" S/ [% m) L: s
dwTmpSkLevel = 3;) R7 R2 f+ \0 M3 R1 i6 H3 r
else if( nLevel > 95 && nLevel < 108 )$ x/ _" S; u# V2 v8 q
dwTmpSkLevel = 4;8 |0 d, Z @- Z( C& u: C) Q
else if( nLevel > 107 && nLevel < 120 )# L) \- a( v3 \- z# V
dwTmpSkLevel = 5;% x6 C& m7 A1 ?$ y) [7 b
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ! E7 M' G2 Q3 p6 E9 s @2 U2 r; A0 A
{ ; m: F# P! K& s% M. B
LPSKILL lpSkill = &(m_aJobSkill);) a2 x9 w# B( T! U; v1 W# i
if( lpSkill && lpSkill->dwSkill != NULL_ID )3 u0 U+ D: e0 J& F3 L
{4 w& i9 z; z2 A3 k/ g
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 7 H( I9 K" ~" `4 c5 ~
if( pSkillProp == NULL )
N: S8 u2 z! K- C" j: u continue;
_6 p `9 r, w. b if( pSkillProp->dwItemKind1 != JTYPE_MASTER)) N. o' F* K1 o/ W. a$ \
continue;) F# v4 F0 s! J, ]$ U, _) v$ y3 V! X
lpSkill->dwLevel = dwTmpSkLevel;
- ?' u( O5 `6 G4 y. f# O5 l }
* l; T* ]1 Q/ P& m }6 G5 r+ o8 V* e3 s5 c
}
) y9 J5 T( e A( E' V, ?7 l+ D7 R else if(IsHero())
+ r0 l4 I# E0 S/ V. G$ o) T {
3 w5 e: D$ H) @3 V* v& m for( int i = 0; i < MAX_SKILL_JOB; i++ )
# [; E& h2 Z! ?$ v0 v* {" B/ ~% H# K, @ {
- h e6 R/ O9 X LPSKILL lpSkill = &(m_aJobSkill);
) C" l0 [) T. D. y/ k if( lpSkill && lpSkill->dwSkill != NULL_ID )/ j7 \6 q9 D c$ B" {$ s
{
2 D, N7 }) n4 E7 L7 }$ | ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); + X7 Z3 P- `8 D# T) E. ^' h
if( pSkillProp == NULL )( c/ Y4 T2 H! [# J' y0 H/ d
continue;, x# B& f' [( k7 }2 {1 N
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
. T W- r! m* ~9 y! o continue;" W. P( S. X: y: o$ S) H
lpSkill->dwLevel = 5;, S- Q6 w( g1 E' S
}
: x1 _& e6 o! y S }+ Z& T6 s5 h0 ^$ N/ P
}
3 B! ]# A* C$ _/ O3 f% }; F else if(IsLegendHero())3 C* k- y* i8 S& E
{
$ ]' V$ C) i1 N' ]$ m S for( int i = 0; i < MAX_SKILL_JOB; i++ ) 9 X! ?4 y. K% }, V) a; [0 N
{ 9 W m+ |5 M: y8 G
LPSKILL lpSkill = &(m_aJobSkill);
- t- @& \& X. _ if( lpSkill && lpSkill->dwSkill != NULL_ID )3 ]' ~ N. Q% W: m
{' L- o. i+ R" s0 S J
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); : \0 ?6 \7 i0 {% k/ h$ Q
if( pSkillProp == NULL )
1 M0 F& ~ a | continue;5 {% Y1 V* ?/ B8 p9 j7 I
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
# H! @$ `/ y; @; [4 i, p8 K$ a continue;
2 s! s5 h! u- e7 d lpSkill->dwLevel = 5;
0 a3 L# ]5 B/ l' j& l4 H }, |7 O0 f; b0 b5 [8 W% t* I+ S# n
}
' Z0 a1 U! [8 G+ B6 m f }
# K+ d- L% k M8 r: G#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans' i; F# g) T& c$ V% i3 a
if( bGamma )/ O. i$ _# I, o# ]( g0 N2 c" t
{
# y2 _) s& C! y9 u/ c m_nExp1 = 0;0 F x9 ?$ X* B0 }# r
}
W3 t" X+ c+ d( p4 K, N# J
; i; {! I: _7 B( H- k5 n. d$ R ( (CUser*)this )->AddSetChangeJob( nJob );
" F8 I# x! M7 ^3 w. _$ L g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
- Z; C3 ]2 x$ d2 w5 t" q* G; `2 @! R+ D5 e N- P1 s
+ ^2 k) p" I5 [/ d1 J#if __VER >= 11 // __SYS_PLAYER_DATA' H' u# e- s- j2 @' P8 H
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
. t1 D0 {5 p" N#else // __SYS_PLAYER_DATA# ?% W8 J6 w# z7 P& g
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );) n# t' s& ]0 g" m3 g, ?3 K
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );5 e5 O9 B7 M4 \' |
if( m_idGuild != 0 )4 I* C# m: ~: g
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
8 c) [* e6 n- f* X7 k#endif // __SYS_PLAYER_DATA8 j4 w) W' p0 Y
SetHitPoint( GetMaxHitPoint() );2 U- O1 K; m, ~8 u/ R3 P* X- }& J+ p M9 s
SetManaPoint( GetMaxManaPoint() );! t0 K, d5 J$ A
SetFatiguePoint( GetMaxFatiguePoint() );
- [; Z0 Y8 b# ^- W5 ]. k if( nJob >= 1 && nJob <= 4 )
. J Q' S& W2 v. A! c {
0 n* f9 s) h7 m3 {4 `+ C9 K m_nStr = m_nSta = m_nDex = m_nInt = 15;
; n, h6 Y1 `# o4 l- e( S m_nRemainGP = 28;
% q3 X; `0 x& ~) _, \' C/ t }! y( W" o9 A( |# X' A% E
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
4 f4 V; y5 m; r. k- b3 _ {: n/ M6 \. n0 I6 i3 O$ A, t6 |5 H3 R
m_nRemainGP = 118;
/ [- }+ X* d/ Q. K //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;3 d- y8 \/ K9 `4 y
m_nStr = m_nSta = m_nDex = m_nInt = 15;
, g4 Y; h/ P% a" ?% ? } j, r3 n3 k8 Q( T! I9 M
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
, i) b3 M# [0 D) d {
1 g4 n. k \ A+ C( i4 h) G CItemElem itemelem;
t% x1 B3 d2 ~2 z itemelem.m_nItemNum = 1;
" t4 A3 z/ o$ a4 {2 c itemelem.m_bCharged = TRUE;9 }6 F2 h- u! \
BYTE nID;4 R/ [1 m# X5 x, K# _, }# k% l6 m
) V+ Z9 }9 t, L if( nJob == JOB_MENTALIST_HERO )
" H0 Z7 O% K; y1 s itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;& E) b: L* D3 ?0 Y( C" m; ^/ s: o
if( nJob == JOB_FORCEMASTER_HERO )
) E2 B/ i, [; p _ itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
3 v3 G) S' M) {7 @# B# @- E3 s) Y" ^- o! ?8 h9 Z
( ( CUser*)this)->CreateItem( &itemelem, &nID );
9 r5 N- ^+ j! c }. V3 [, _( o C. q8 ^" i1 i* c
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
9 M1 B# x$ H# Y$ E3 b3 r8 B% b ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );8 |3 y p$ K' ~3 I# ?: ?# f0 X' e) W
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );) P3 p6 X, |- L A2 v A- |
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );- g6 B7 c: S h- R4 j! w3 L! L
( (CUser*)this )->AddTaskBar();*/
* v4 ]% F* F! h# X$ N+ D$ }8 a& _7 B7 X ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
; ?, {/ ]+ R) f#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
4 |$ g6 o, `, f ~0 N ((CUser*)this)->CheckHonorStat();9 D. z/ g8 B. v9 M4 @0 A
((CUser*)this)->AddHonorListAck(); Z3 ^2 C" y# ?. [0 B9 e
g_UserMng.AddHonorTitleChange( this, m_nHonor);
1 l2 Z$ `% ?' n g$ u#endif // __HONORABLE_TITLE // ′Tà?
6 L1 e" V1 c: e! G3 _9 J }- ^' k) _3 P% Z/ ^) I8 I0 |
#endif // __WORLDSERVER
8 g8 w7 ?4 S) S} 1 ?* u8 p% q7 i0 v1 l) R8 l
4 d2 C+ ^- X" X2 U) O |0 z, u% |* r7 K然后你进入functextcmd.cpp并添加以下
! }% K" x6 U4 G$ m, G! l5 R
) K u' s- y' A/ |* b, R$ S代码:
. s+ ^. g9 ~" t9 v; {! EON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
\ ?% b! T1 V. H4 w# _- `下面插入
7 \+ \4 g8 d2 y: |ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ! R. @- A6 ]* }% S2 N2 n3 { Z
' \5 R/ H3 I$ y# Z5 ~6 S
然后你去
2 r+ j$ W1 E. ~
% D4 F, c! C4 n, m代码:( T2 _0 H4 m- Y C! }: n$ T* k
代码6 D6 f2 ?( B. U; t7 R* d) u
BOOL TextCmd_ClearPropose( CScanner & s )
[4 k! o1 q8 b A/ |3 k2 l{4 X! \* @3 J8 p+ n# o
#ifdef __WORLDSERVER3 M6 A1 p; B) s! h
CUser* pUser = (CUser*)s.dwValue;
7 ]# n% q8 X7 e8 G9 ~" y2 ~, ~ g_dpDBClient.SendClearPropose();
: j; y7 N; M; W, j; m' L#endif // __WORLDSERVER: H! }0 a+ g7 ?
return TRUE;
2 v) n$ @( P6 W. f& }9 Z J- J}
. k/ O/ D$ v; q# ~. \' r/ S下面插入
/ U8 [ _6 F A+ U* v/ O5 C. ?BOOL TextCmd_rebirth( CScanner& scanner )& z3 s( N" s7 e6 e1 s% O; O6 _
{' C: v- }8 H5 X; [& y
#ifdef __WORLDSERVER5 k; s9 y2 v1 Z& |0 y3 X+ U
CUser *pUser;" ? x" o4 v7 |
pUser = (CUser*)scanner.dwValue;
: |1 i$ l0 C; ]! I I# S& a% Xif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
' `; ^: m$ B0 |" ppUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
: ?. i. h7 E' ]. Q" b; [0 v' l6 belse
* U0 u9 J6 i; P: W* {( g# hpUser->AddText("你还未达到重生条件!");- y% \1 Y0 b( V* f! V' u
#endif
- X' x& @6 L4 a; O/ \return TRUE;4 a, o5 B! ?- v1 e
} ' W8 A! ~0 R* d( k
; t) j+ q) t+ v; `* N' \. `
; o5 i4 b* ?: Z- S/ G1 {. z* }, ^5 u) K" O4 T$ p u
, i. L0 A: ^* E* c |
|