|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
8 t1 y; v- I. q% J; w3 X
% V) t1 h: F- N" F yMover.h. a- v( d ?# T
代码:
5 q/ l9 M! c, T1 t( m找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
) g7 [2 F3 |. n/ x
' I" A0 ]; ~, ?( J下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
& M# A+ J) k K* d' D" }
2 v7 k7 k7 ~2 b# \然后你去mover.cpp添加: O0 R* P+ v# I7 I
+ d5 H8 Z5 n, [- [: t8 o2 @
代码:
% |) O5 K, I: W9 g4 I. Gvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ) c0 L z( k& L- W% t* m- J
{. u0 d, V9 ?7 J9 n0 V) m+ L
#ifdef __WORLDSERVER! A& y1 p7 e: ]: w
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó% {6 t# ?% A# p0 r8 X2 v
MoverProp* pProp = GetProp();
' Y+ C' }5 O- H( `, `* r if( pProp )
, g' o' L9 V9 i {* d5 X# G }/ N' G, ~0 @
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
0 k0 j* Y4 w0 D3 u& t7 J3 _0 |% N7 } {
& [6 P. V k9 E8 V; e AddChangeJob( nJob );
4 z: k) N2 `+ Y/ O }else{
& Z; O5 I# b3 D9 M, C; Y5 a6 z$ e return;
. `& I0 j9 M4 T1 [, z O }
3 q, _& N5 ?/ V! N- A7 d int nPoint = 0;2 _; T! o$ ~! L+ r" S* H5 H
if( m_nJob == JOB_MERCENARY )
( ]$ p: }* R6 p/ B8 q* q! O& ^ nPoint += 40;
- M; d, \+ U) m7 P, X else if( m_nJob == JOB_ACROBAT )
& R; K( k+ M3 i u% C: r nPoint += 50;0 F0 c" V* g3 A* S' \
else if( m_nJob == JOB_ASSIST )+ Y. s1 ^. ]# e
nPoint += 60;
U* x n2 q4 v* b, ?0 O else if( m_nJob == JOB_MAGICIAN )) u8 l8 l+ O; ~2 ~
nPoint += 90;
8 H8 f9 t4 P9 G& i6 Z8 ?% | else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )7 \4 ^) \3 Q. V
nPoint += 120;
$ {$ W* N; y$ ?! r( n- n else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER ) @- h( s1 Q9 a9 `4 O! [- y
nPoint += 150;5 C" ]8 a0 h: V: `# G: m
else if( m_nJob == JOB_RINGMASTER ). c- I6 E0 |9 ~. F' X
nPoint += 160;$ Q2 M9 }: i8 e/ C. }# y
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
* g& F& q. _6 L4 d9 f" E# C nPoint += 180;
! K- _& L( B0 ]8 h7 j else if( m_nJob == JOB_ELEMENTOR )
: k0 _1 I% ]/ B0 J; l% G nPoint += 390;
9 ~; |8 }* B3 l+ S" r else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )' I8 [& B# d! H% [5 V
nPoint += 120;
, I) b, K* Z! Y* S q4 U# G else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )$ E4 Y* o8 E$ f9 c' v
nPoint += 150;4 d2 f( p! o% A, L
else if( nJob == JOB_FLORIST_HERO )
% B! X) b/ S- C nPoint += 160;, r; R) s ~( m0 X6 l+ D7 P
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
. ?# O: }. k/ d6 v- e; e1 \- t- R nPoint += 180;
& L) ~$ [ h( c: S e3 x else if( nJob == JOB_ELEMENTORLORD_HERO )
- o- ?3 M; c. X nPoint += 390;
: D& k- V: ^3 |6 M q
: ?* `. E" K3 h5 \0 x* L) S; F AddSkillPoint( nPoint ); o0 h% [! G: i* _
m_nLevel = nLevel;
) N e8 ]# J% e8 i# _3 \* k. p6 N, w( \
SetJobLevel( nLevel, nJob );9 S8 t/ l2 H5 O6 m
m_nDeathLevel = nLevel;
0 s5 K/ i4 ?' P0 F3 a( q& n i#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans" N% W4 y* o7 C0 B# u9 L
if(IsMaster())
; \) F; Q0 y4 W9 @, `2 d7 b$ K. m" ^ {* F( k8 {! x# N
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
6 I! `* t* {# Q9 S7 t1 [, ~ if( nLevel > 59 && nLevel < 72 )0 u; A6 T f* U( q0 l
dwTmpSkLevel = 1;
0 @+ z/ [0 L; n0 y, N4 J! f8 ^ else if( nLevel > 71 && nLevel < 84 )
9 B; T8 B4 C, z% Z7 ^ dwTmpSkLevel = 2;/ {& g9 l' U+ Q# s3 ?, z; Y
else if( nLevel > 83 && nLevel < 96 )7 ~8 n1 Y2 S, }: Y% f& K
dwTmpSkLevel = 3;
7 l' U3 b: ]$ x. ]4 [4 Q k else if( nLevel > 95 && nLevel < 108 )
5 m# `; F* A) g1 C. F0 O n7 p' J dwTmpSkLevel = 4;9 U. u1 v% t# g, R
else if( nLevel > 107 && nLevel < 120 )* f* q; h$ n; Y% o
dwTmpSkLevel = 5;
& k# R5 `2 Y0 [# q for( int i = 0; i < MAX_SKILL_JOB; i++ ) 9 ?' V! {' I7 I; l$ O- \
{ 6 |: p- p; \; @ I% g- ^% p4 r9 m l- m
LPSKILL lpSkill = &(m_aJobSkill);
: }2 T( L m+ M* D: S/ U, |/ L if( lpSkill && lpSkill->dwSkill != NULL_ID )
, F8 L- B( ], M7 y {1 N2 Y- Z$ h9 ^) K% O. C% u
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
" a* W5 h2 K* N$ ?) |6 F2 d/ T X$ C if( pSkillProp == NULL )
' y* E. d( m. c8 Z. { continue;
: S" c# ~( z+ D* Q1 L$ x' H if( pSkillProp->dwItemKind1 != JTYPE_MASTER)' P8 y* }- H+ c& C( R: D( R4 x
continue;6 z2 {' b! b; B' f. C4 `) c9 {! \
lpSkill->dwLevel = dwTmpSkLevel;
' h" W: P* x5 I6 r }
/ w) G2 e( x `: l }; y) g3 w3 p7 @% z& ^" X$ ~
}
, F3 u9 I6 U4 J4 }) t else if(IsHero()). Y3 W- @1 N5 R' @; x$ g6 p
{
- S( G5 b# m; i+ R for( int i = 0; i < MAX_SKILL_JOB; i++ ) ' a6 ?6 ^1 F4 m8 n& P+ Y
{ - q5 y! T; a' I+ X1 X" k) Q
LPSKILL lpSkill = &(m_aJobSkill);1 a! e! `3 \$ ?: | G0 ]
if( lpSkill && lpSkill->dwSkill != NULL_ID )
e2 S' m- C2 B { i% U7 r, t2 g8 x8 Z! c0 t4 ]
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
% J% X1 K$ n( d if( pSkillProp == NULL )+ Q' K2 |7 V3 g7 ] O$ c+ Y
continue;
2 t* w/ ^/ ^" w9 V: i% `" P9 q if( pSkillProp->dwItemKind1 != JTYPE_MASTER)+ L) Q9 n& l& T' Z; [9 Q
continue;
" K+ f: _( V5 ?) B( o+ a% s/ j lpSkill->dwLevel = 5;0 F( U6 s6 K0 O6 O& H( | H
}$ H3 ~% q w/ L) [; O6 p
}: D8 h7 C* L6 z. Y# Q2 t* ?
}
; O. t$ N% p& e2 X else if(IsLegendHero())* } A. ?' R! U* F4 G* j- L
{
* f1 i) H3 P; r9 x0 K for( int i = 0; i < MAX_SKILL_JOB; i++ )
# D7 y/ h0 `+ w7 l: @9 R {
. d4 }' w" |% |' \2 Q J) @/ } LPSKILL lpSkill = &(m_aJobSkill);
: ~8 Y" O1 N. e5 k& { if( lpSkill && lpSkill->dwSkill != NULL_ID )) m! P/ u# p" a: j: @$ i
{
$ I$ Z$ ?, p3 J2 R3 C; s- G ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
8 F: o. }! e% N6 d- Z- Y if( pSkillProp == NULL )
2 ?; B3 m: Q6 @6 c continue;
$ m7 U% z+ i9 y. p9 F. T if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
/ e$ C: ~5 z0 D7 r continue; q p9 G" h4 c
lpSkill->dwLevel = 5;
& t& e( `/ T" @7 {) ~: M# ~# ~+ m }
% f5 M, |) \0 ~9 h- | }
% w. t* s1 R, g; W9 N3 h# q }8 I0 D- H5 c4 |- {$ L: m4 k4 ]2 M4 ]
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
0 b1 J; I9 T1 f, f/ x0 h& H) [4 ^# J if( bGamma )
5 o5 H! h9 ~2 J2 o9 B {
" f: Q2 n! k6 G. X Q) f2 l+ b m_nExp1 = 0;1 H% o7 ]+ B8 e3 D
}
! [* E g% L, ~$ }6 E* C9 X: b$ ~$ C- Y) y) t$ |8 J0 r2 n+ X
( (CUser*)this )->AddSetChangeJob( nJob );% p1 Y7 r# s( G5 u
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
# ~. U# v- j- C" E( S0 G; U% y8 G6 k, R% J$ d
* N$ C* x# Q; P
#if __VER >= 11 // __SYS_PLAYER_DATA
& ?, e' Z2 v6 Y2 m6 j* J/ { g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
8 g7 E/ `2 ?: R$ I+ \5 S0 J7 C#else // __SYS_PLAYER_DATA
* ]0 S- |3 a& [; \ g_DPCoreClient.SendPartyMemberJob( (CUser*)this );: ?: h+ o% B% g& V5 {6 I( X
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
: r6 e6 N+ a/ r7 D i9 }9 e if( m_idGuild != 0 )/ g |2 X; h) G0 i
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
* l* B ?9 z6 {1 R6 { m" }4 M#endif // __SYS_PLAYER_DATA
* D! |& F' d* r" T s5 q3 e2 _7 S SetHitPoint( GetMaxHitPoint() );& k0 t" w. G c) c" X6 T3 S3 _
SetManaPoint( GetMaxManaPoint() );
5 Y( i) ?0 w# Y) n SetFatiguePoint( GetMaxFatiguePoint() );; I3 T! n; Z% K1 r- i- s" V
if( nJob >= 1 && nJob <= 4 )1 j7 N' c- Z5 }' |% m5 [5 N$ p0 T" |) ~
{
, P0 S' N( p9 I( S9 R' l m_nStr = m_nSta = m_nDex = m_nInt = 15;
) K( @* n' v% g; T6 F9 r m_nRemainGP = 28;
9 Y$ O! L5 H6 K }
) B) u- Q3 w. N3 d$ v: t: {" ? if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
- q' [3 f" ~- s8 B* k {4 ]( D9 x1 d" w1 Q
m_nRemainGP = 118;0 R7 T; b3 [5 ]
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;' X- X/ ^8 H$ `. Q9 [( g4 q
m_nStr = m_nSta = m_nDex = m_nInt = 15;
! D: t. j5 |0 g4 m6 O5 Y9 N }' R: v u2 H2 ?" K! v: u
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
1 q) t; D$ V8 v0 I {
0 s1 k& P: H/ m, N CItemElem itemelem;9 Q( |4 W- N4 i, L1 |" V
itemelem.m_nItemNum = 1;
! ~. _- ^9 D0 {) ~& z. G" ~6 a, ~ itemelem.m_bCharged = TRUE; w# X$ g3 x1 \+ l. L
BYTE nID;
- Z; D4 m, n# O+ ]5 \3 R1 }. \& ?
( G& Q; N( M8 v o if( nJob == JOB_MENTALIST_HERO )
) Z6 N% o' y- @3 c/ e% r itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
1 R! Z) D7 \/ n& g- R( |1 N/ E+ p if( nJob == JOB_FORCEMASTER_HERO )# m; b2 ^# R) t' w3 J
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;9 B. ?+ }9 p# G( R e
3 V) S3 O9 l$ m+ d2 e e ( ( CUser*)this)->CreateItem( &itemelem, &nID );
2 g+ r) t, M& l6 V& J" C$ E) o2 ^ }) r, k4 w! E, B- L
g_UserMng.AddSetLevel( this, (WORD)m_nLevel ); }5 Z. Y- r. V
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );/ ]& h5 @; G; Y" Y |
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );* s) D E) v# c6 f
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
; V3 M& a+ ^. b0 h; e `+ w1 v# J ( (CUser*)this )->AddTaskBar();*/7 w: p& ?' y* L- \+ k
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );' s- L/ ]0 u& d$ Z# ~
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
6 | O# z A. t1 X9 j) l ((CUser*)this)->CheckHonorStat();
! _/ G1 \! t" P M ((CUser*)this)->AddHonorListAck();) C8 j; p. s, ~5 {7 U/ R
g_UserMng.AddHonorTitleChange( this, m_nHonor);
$ l: y7 n* [# E: E n, f#endif // __HONORABLE_TITLE // ′Tà?
9 B8 ]$ ?3 O4 x) K" @9 _ }
6 q0 Q( u$ P: v8 u' f2 j! t3 ]( s#endif // __WORLDSERVER! o5 k' N+ f$ M* d( `1 |; C
} : L& U& d! n4 b+ h
- w6 s. `6 w2 {) a* K
然后你进入functextcmd.cpp并添加以下5 i9 m! }2 _; B$ u& \$ M- W) c
2 ]' x) U5 c m9 O6 g
代码:
. t3 ^3 U& X* P% RON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )' J: E& v, g$ N& |! @" } u
下面插入
( @5 y6 ]5 | q0 l9 @ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 6 o1 Z$ Q1 b: Q+ T! c
, \" M% S- p9 @' q' `. d4 w7 |
然后你去2 |# a9 Z% }/ F' J! a$ T
, |# p" O; _1 [2 u代码:
% P! k. W/ ]' P7 o# w# O! o* X7 C代码
) |. g8 }% F) QBOOL TextCmd_ClearPropose( CScanner & s )6 J8 o" b$ q1 b; V0 @% b
{+ \. b; ~9 r% V9 G3 m
#ifdef __WORLDSERVER
A/ z A" F5 _( c4 w CUser* pUser = (CUser*)s.dwValue;
& g) p3 F6 M6 O" m g_dpDBClient.SendClearPropose();5 E) m; _2 Y" h6 q3 ?( S
#endif // __WORLDSERVER
3 R9 }, W7 H, A return TRUE;4 E. z1 R4 G8 r: x% \4 w$ r2 U0 |0 @
}
& a" M$ y5 @ b; ~# [: o5 L下面插入
% ]" |" n/ S5 e: S& cBOOL TextCmd_rebirth( CScanner& scanner )
5 K4 Q4 B2 I7 p/ H{
" Y5 Q, l4 C6 z#ifdef __WORLDSERVER
+ Q6 N! a% A4 W/ e$ c+ pCUser *pUser;
1 ^4 \; l3 B+ G8 b* ppUser = (CUser*)scanner.dwValue;
- R. O7 M& O# Z5 O7 z5 y4 z2 k( Wif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
6 K0 j! w0 W, o( kpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
+ I7 s8 Z2 A0 y, X- G& P4 ?- }% \else
4 l) j. H) X$ ^% q1 CpUser->AddText("你还未达到重生条件!");* d o3 P/ {* K+ w6 d L
#endif
0 U b x! |9 q, v- }0 Xreturn TRUE;3 m8 E2 U6 l1 m9 u1 R) W0 ?# ~
}
- G) c8 S: j! H' m, r5 K, \4 o2 U( j( o" V, I ]
! f. b& G6 x) o9 c& |, l6 _; a& X6 r
0 i9 P B# F5 T# A- a3 p% G+ j
! L: G* j) U* W6 _1 h1 l |
|