|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel& V5 ?( V x( a% [: s0 ~
+ v: t S1 D7 B4 T& W! B- V z4 l/ `
Mover.h
- ]) u5 u, Y0 [3 ~代码:
3 Q% m! v, G$ O" \! |找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
/ ]( m# ^, `4 a/ y2 |/ m7 ~( m6 O
+ e& V3 X/ p/ e下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
2 G( C3 |( o4 \2 Y2 W! l ^: i& Y( F3 t; I2 ?
然后你去mover.cpp添加( T$ P! D& ? X. l" T. ~
5 B+ k8 H8 q6 b. J6 N代码:& A4 S2 Q9 L3 G% f
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )5 J% W* z% C; v& W: Q
{
. Q q2 h+ F% t; J- y1 V#ifdef __WORLDSERVER" _! v K+ ?8 T$ S1 C- ~- V
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó- B: A: _7 ~/ f" _1 o
MoverProp* pProp = GetProp();$ i( e2 Z6 I9 @6 g
if( pProp )
( z' c4 m3 f- G0 q {$ b, i+ b: d8 J/ O* F0 x
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
4 Y0 `" ~! \$ J# a; S& z1 `0 n {
- s. T% V# W3 L AddChangeJob( nJob );
3 m: W) {# I& h. S }else{! g7 R6 E0 A( w: [2 y3 {
return;1 J6 b) C: }6 `! J% X5 D- y
}: ]# E$ x; T) J& r4 i
int nPoint = 0;
* s- b" S8 W7 y if( m_nJob == JOB_MERCENARY )/ I; b {9 T. ]6 x3 L
nPoint += 40;' f# k& R4 j5 F4 q4 L$ A" h
else if( m_nJob == JOB_ACROBAT )8 J( M: W1 ~( }4 W( x7 [9 M
nPoint += 50;
1 a1 L% h# _( R else if( m_nJob == JOB_ASSIST )
' e0 M! z" B9 w nPoint += 60;8 q4 O0 G6 Q3 D5 T7 B. w" }
else if( m_nJob == JOB_MAGICIAN )
7 v2 \5 ?& R# D( q( T! a: v nPoint += 90;
) S l9 A% n2 i# `1 t6 a7 ] else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
, Z% ?. n4 k& e nPoint += 120;
- {6 K" N+ u+ F& ^+ a+ i else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )4 b* C9 H7 ^' G/ h: Q
nPoint += 150;3 \$ R) z u( E4 Y4 @# g& p/ N
else if( m_nJob == JOB_RINGMASTER )
$ T& t3 B8 Z ~ nPoint += 160;
* z) O$ s/ R8 q9 x4 Z0 ?1 M" m* ] else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )+ R8 u" w1 u4 M+ V/ p& W: ~9 T
nPoint += 180;
3 w- E7 i1 @' o7 @* z/ E. n else if( m_nJob == JOB_ELEMENTOR )
! c2 t7 F Z9 v+ H5 P nPoint += 390;
# \! }* Q; T6 Y8 @# g/ N! E j+ M else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
3 k5 n7 S+ `3 C. ?6 f nPoint += 120;* r" r. N" C4 t t, [8 l% W. D
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO ), S' _! I8 X R/ j
nPoint += 150;
# w) [) \) k' l0 \ I f else if( nJob == JOB_FLORIST_HERO )
- A: J2 g" H" d; U& { nPoint += 160;( b. F! r# m# r8 u1 ^4 c
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )9 L) T( h2 w4 d5 i
nPoint += 180;4 l; d3 P, I5 _; a& o9 ?
else if( nJob == JOB_ELEMENTORLORD_HERO )+ q, s O3 s% K3 m
nPoint += 390;; T% l" k+ @' }- z' F5 s
9 W _1 `* { h3 X) m AddSkillPoint( nPoint );+ s0 m$ T- ~) Y9 j. N" p% V
m_nLevel = nLevel;3 G, e$ c6 G/ W/ G3 |
$ f+ Z/ j! D" u
SetJobLevel( nLevel, nJob );5 d j+ r3 l: x8 l6 ^8 w$ m
m_nDeathLevel = nLevel;6 o# j9 O( P1 \" c
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
2 W+ C( F7 ?' m# P( s4 l% _ if(IsMaster())
/ |! [/ V& ? P1 g {! o/ h, k* B# o M" w" u, x
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108$ C. z' F6 |+ a9 ]6 m+ q
if( nLevel > 59 && nLevel < 72 )
5 H8 ]6 ~9 O6 t$ I1 e& | dwTmpSkLevel = 1;
6 J" d! f- t( p( d, F1 r. ~) d else if( nLevel > 71 && nLevel < 84 )
8 T7 A& V5 q' Q3 U- }7 [9 m% \5 } dwTmpSkLevel = 2; M/ s" y3 f4 b: C- ~7 s4 ^# Q! g
else if( nLevel > 83 && nLevel < 96 )/ B! q: X5 x5 F5 ]+ |% A
dwTmpSkLevel = 3;. {/ j4 T. M1 I: ~ \
else if( nLevel > 95 && nLevel < 108 )$ j0 Q6 T6 Z6 N+ m/ x
dwTmpSkLevel = 4;8 h; G) `7 A' m, [. Q$ c8 e
else if( nLevel > 107 && nLevel < 120 )$ p' u& j! T" M
dwTmpSkLevel = 5;8 q' Q/ |- T- X
for( int i = 0; i < MAX_SKILL_JOB; i++ ) & e# z/ G% \ o; S! l- M
{ 9 @1 W/ v! G' H3 t' o% z n
LPSKILL lpSkill = &(m_aJobSkill);- `( o! O/ @% c# [+ H0 {
if( lpSkill && lpSkill->dwSkill != NULL_ID )
! J8 U* f4 c9 p' } {* i& e9 g/ d5 I0 W0 m( I
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
/ R* K0 u0 [. O if( pSkillProp == NULL )
1 L Z5 z9 }) a7 @1 F continue;7 P7 C8 Y8 g) F! X4 Z: m5 o% M
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)+ m4 B) R( J+ N4 @4 {$ D
continue;( \% N/ D8 A% \5 h" T; b
lpSkill->dwLevel = dwTmpSkLevel;
" t4 E( D: C+ E: g; i. b7 N }6 C+ a- g* u5 O) Y3 D6 b/ K
}
( A( @8 ~- x4 T! \" T! R" a. t2 x, H }
) Z# _2 n! Q+ P8 ? else if(IsHero())! O" j! C. K1 i! r7 @& B3 L
{
% l) j1 k& R4 J+ w$ w for( int i = 0; i < MAX_SKILL_JOB; i++ )
* L5 h- S3 F& W% Y) E" a$ b$ V {
2 h- I# t% N6 t' S4 P LPSKILL lpSkill = &(m_aJobSkill);7 C6 m1 B( B( Z# s: U
if( lpSkill && lpSkill->dwSkill != NULL_ID )
. X9 w" ^! L9 @1 y5 A5 |% X" ] {* E4 A) [9 J. l; }+ G. m- N0 j
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
% P4 I2 ?+ |0 T: w0 ] t6 G if( pSkillProp == NULL )! E. e! v) J% e8 R
continue;7 P7 {& |) l5 E" R
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
" u# k ~" v5 ?/ z! j continue;0 s- s5 G+ i! S$ r9 a
lpSkill->dwLevel = 5;
1 V4 z* A9 T. t' T5 [ }0 |8 i& e7 o$ \4 P: ^3 H
}; B) v- S2 @5 B% x V2 f4 }) A$ ^
}
; S7 L% f) U$ r7 P% N2 _0 c& l; t. F else if(IsLegendHero())8 ^" o, |, D7 c- Q
{
7 N# Z y6 u2 q! h/ \; a: U for( int i = 0; i < MAX_SKILL_JOB; i++ )
- d$ u2 z5 L: K$ t {
/ j( K: t6 k' C) m5 k LPSKILL lpSkill = &(m_aJobSkill);
; T5 t# h' d- U. h: e' b3 ? if( lpSkill && lpSkill->dwSkill != NULL_ID )9 m- n! ]$ Y. ^/ d% p& I
{
% E; f9 h; t8 ~5 B7 x: U ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); . k* C5 Z) g% I6 d
if( pSkillProp == NULL )/ O& [+ y, y% P1 X& H) W0 i
continue;
" \4 [# c: C2 A' O% f if( pSkillProp->dwItemKind1 != JTYPE_MASTER)6 l2 e$ }1 M- q/ e( Q! N4 @# N1 {
continue;
& T1 @8 `9 y7 @ lpSkill->dwLevel = 5;4 h8 Z! }8 P; p3 r8 m& ]
}
% q! P+ Y9 y3 D8 f! J- V }* b) {" G" v0 e
}
- U5 @. L+ _$ M/ u, P; D#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans2 B: i. U8 Q6 j5 J3 d; J- x! t
if( bGamma )
% { ~0 h7 }7 T6 J, F {
" ` |2 r# j1 W. S+ \. K m_nExp1 = 0;
8 C" z, n6 C: {4 ^7 \6 }# h8 } }6 z3 d6 {. a! k) p
/ o; \/ M5 n8 [( i: i ( (CUser*)this )->AddSetChangeJob( nJob );
6 a! `$ Q1 D$ ]9 _ g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
( z9 R' X! o d7 }/ R( z2 D6 i" T# x/ n1 O( i5 }. U
' g4 |+ O0 Y* }" l% @+ T" d
#if __VER >= 11 // __SYS_PLAYER_DATA
; v+ i5 q! p7 s& a. K g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
: u$ e Q8 J* `( [+ Y0 x( z- }#else // __SYS_PLAYER_DATA2 j3 d. k0 ]- h6 z/ E: B. R! t
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
$ n. f/ ~% C. o, h g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
+ T5 z! f# d% l5 }* g$ D; q if( m_idGuild != 0 )
$ G8 }4 x L6 ` g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
$ W) A: r" w' ^% [) n! W$ E#endif // __SYS_PLAYER_DATA# D( d9 k4 H1 A) v% r% D( T& A9 D# L
SetHitPoint( GetMaxHitPoint() );1 `0 G# V4 W2 L2 q6 N
SetManaPoint( GetMaxManaPoint() );
/ i3 Q2 i' U6 v) ^; O6 [ SetFatiguePoint( GetMaxFatiguePoint() );4 p3 {$ y( {6 Z9 v% U
if( nJob >= 1 && nJob <= 4 )
/ w9 U% { q6 ~- V3 g9 T {+ M! M; o0 ]4 e9 [: N) D
m_nStr = m_nSta = m_nDex = m_nInt = 15;8 B' G' ]" g& m- y$ W: ]# u0 l! M
m_nRemainGP = 28;
" \. T7 V2 t4 U+ D& C% O. c7 i/ N }& Y5 E! r! K$ s1 l7 g6 K
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
: S" L3 |. p# N4 ? {0 Q- C4 w y }
m_nRemainGP = 118;
- Z+ g+ ~5 b! a o //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
+ p' k7 [3 [7 S! [" e$ w9 J m_nStr = m_nSta = m_nDex = m_nInt = 15;
! E8 k" s3 e- t }
1 Q/ `4 C% |5 A' m if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
- ~7 `4 Q3 @+ Z {
, u% z3 d. H: T' _8 ` CItemElem itemelem;* ~( ^2 M1 Z: f& l& D4 X. u
itemelem.m_nItemNum = 1;( b5 {; M8 t% O0 z" a+ ?
itemelem.m_bCharged = TRUE;5 k4 u4 e7 M# W8 ]8 \& U# I
BYTE nID;
7 \( G6 I4 N) Q6 T2 r3 ~$ V$ n- n! z3 `+ g' h& Y
if( nJob == JOB_MENTALIST_HERO )5 @5 r$ U6 k* ?# _$ ^: e
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;/ v( q5 U: N4 j( ~
if( nJob == JOB_FORCEMASTER_HERO )7 a* ~: x9 T3 `3 p
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;% F L& X- ]4 M+ c) J/ N
2 A% p, c f7 X- M% } ( ( CUser*)this)->CreateItem( &itemelem, &nID );
) ?8 w* }- R, p% ?5 j, ~9 u$ e2 V }2 g/ J' N8 x6 L% q. `
g_UserMng.AddSetLevel( this, (WORD)m_nLevel ); u6 q& s/ y0 B7 o' T
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
5 }( a5 ^+ A2 I8 n( f) C7 y) d" _ ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
" X' t. N; i( _8 v. u9 | /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );, Y9 h! k7 J% [6 ~7 p
( (CUser*)this )->AddTaskBar();*/! I! C* B- K% \/ Z3 U8 T
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );+ a9 P. _4 { j- j5 [% ~* P1 G7 Q
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?$ q( m& x i% H. n; d* l
((CUser*)this)->CheckHonorStat();; v$ s! G3 y1 k0 Z$ w6 g" _2 r, f+ l
((CUser*)this)->AddHonorListAck();5 d' L4 m5 L7 K6 o. ~
g_UserMng.AddHonorTitleChange( this, m_nHonor);5 y5 E! g/ o* H- g+ {8 a
#endif // __HONORABLE_TITLE // ′Tà?, _$ C4 X& ?; Z
}' C6 X+ H9 Q6 _, v: A% h' E |
#endif // __WORLDSERVER
; `8 {1 H' _/ f L s0 Y4 w1 u& q0 P}
; }0 w8 @3 P2 \7 C( }( v2 r6 r9 n+ \. ]
然后你进入functextcmd.cpp并添加以下8 j9 I0 R$ Y9 `" ] o0 S! S
9 [3 e. _9 q# l' k5 g代码:" M" D5 c# k9 V& h: h: T) h' K9 {
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )0 _5 `5 S* A: x- y$ B
下面插入
" k+ t7 x5 S, e/ x7 Z- \ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
. C% P7 v7 ^3 g! L3 `# a0 K; E0 Z' e: d: J) ^6 _
然后你去$ {4 e& {+ r4 Y- a- K
* [ x, d7 w& v6 q! W8 t5 X代码:& z9 ^) }0 R2 g5 R
代码
+ Z9 M$ D w: a, v' iBOOL TextCmd_ClearPropose( CScanner & s )0 P+ k$ l1 O2 z x7 g
{
0 D3 n# q* ^' Y* [ l#ifdef __WORLDSERVER7 r& c4 Y$ E: u; ~
CUser* pUser = (CUser*)s.dwValue;
+ G2 @1 ?# n2 Y" ^ g_dpDBClient.SendClearPropose();; O3 D' @) O/ o) B; D
#endif // __WORLDSERVER
N! D) v y! M" d5 |; K# N( A" J return TRUE;/ M; U- F0 t( [
}
2 w. C' m* T& ]+ F下面插入& q! U# m4 u8 C3 p( g. @, I
BOOL TextCmd_rebirth( CScanner& scanner )8 f0 W" l+ n; n& B
{
! p8 j/ ]1 o6 L2 R c#ifdef __WORLDSERVER
9 ?1 J; O6 O7 ZCUser *pUser;
% p8 K7 Z0 T/ j4 K, E! lpUser = (CUser*)scanner.dwValue;
2 ]" Z# r, c* X3 J6 X0 zif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())0 ^5 V; z9 t1 T/ A$ G# g
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);/ m5 u8 g' i( \
else
8 ]& \, j5 D( v# t9 o4 ?3 |; k' JpUser->AddText("你还未达到重生条件!");
K6 U7 c# `" s8 s* P, I$ K#endif
2 }' B# ?3 _& ^% S2 l" Creturn TRUE;
# c" U" T; i2 l: U} & T* p' I( d7 Q5 [! Q9 N
; V: J! b( j E# o2 M; X; K _
4 k0 X+ W: i# p/ x: _" j
! Y: I0 b" e- d. @" E+ C8 o
|
|