|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel9 t5 S1 q6 N6 O2 V3 r
" O0 T0 ~# Q6 I% ^) x6 G( A, `- P
Mover.h
$ Y, V4 W9 r$ P: ~* \4 v1 }1 ~代码:
4 b" a+ w- h, Y2 g找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
# v' k$ h' v% T6 B% |1 ?& w' s
3 C. X' j! v7 g7 u4 p/ w* p) ?下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; - f$ w4 L6 a% F# f& \' X7 p; d3 ]
* {; T% f/ g E- O! t
然后你去mover.cpp添加
3 I z) B6 C5 C' ~' r1 [ x& l9 Y$ l# P( d: T" `* s
代码: S# W$ F: ?* Q; I1 i4 l, h* F
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )5 n% L, u- g* S4 y) n# K5 i
{7 Q3 u& v+ O! X. z
#ifdef __WORLDSERVER& m, ?# K0 V3 Q/ |6 ^
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó/ D0 ~6 Q6 S$ g5 A& H- s
MoverProp* pProp = GetProp();" a& u. w3 Y& Z$ c, Z( l0 w4 P
if( pProp )
2 ^* m. @) J7 b3 s1 ^- N8 L {
0 b7 @7 j# |% g; H2 m if( nJob > 0 && nJob < MAX_LEGEND_HERO )0 O @# t' B' J9 [! L. b
{2 W: q3 \6 a! [9 T' ]0 ]
AddChangeJob( nJob );9 f! E3 A2 b! U2 c
}else{/ `; ?% n; }/ ^
return;5 l! z. \+ h+ c" G
}
9 U( @% ~0 e5 {0 S4 _ int nPoint = 0;
) k. Z7 h- m0 ]! d. ]& Y6 N ~ if( m_nJob == JOB_MERCENARY )
+ s* z( R9 J3 ^3 O1 E nPoint += 40;7 @; i# j j+ w4 H/ Q/ M+ S7 B- F
else if( m_nJob == JOB_ACROBAT )' [+ v6 o: O- n! \; F. z- Z4 [
nPoint += 50;
& I; z. U8 l' u2 x4 P7 E# @1 u else if( m_nJob == JOB_ASSIST )
+ A5 ^8 M3 X; x2 L$ h' M) ~ nPoint += 60;. u" G0 Y$ A5 y$ f6 v( i: P
else if( m_nJob == JOB_MAGICIAN )' W, U1 Q' ~9 D b
nPoint += 90;
$ w# a( E) c* b+ P0 o" B else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
% q N a# n! h% T2 m$ k/ b$ S. D nPoint += 120;
3 N2 k( V8 G7 E y6 L else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
8 Z7 M0 }* `8 s2 \6 j; O* p nPoint += 150;
% h2 O. R- g: ]! e v else if( m_nJob == JOB_RINGMASTER )7 q1 L \. \- [" t
nPoint += 160;
$ r2 J/ D! r: P else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
' n8 P' T, G& L4 F nPoint += 180;
; S! e F' n. X. }. e2 `3 [% _' } else if( m_nJob == JOB_ELEMENTOR )
7 |5 j5 C, }- n$ y: _( z+ `0 H/ ]" K nPoint += 390;
! f) V$ g1 ]! D0 E& i6 m else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )& k: A. R: Y" F1 k& w y0 {) r
nPoint += 120;
' p0 P( ?; j+ o else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )( b, P9 i8 Y# f" Y
nPoint += 150;
% X+ Q* V% o9 E" z) { else if( nJob == JOB_FLORIST_HERO )" G3 N# }5 B1 O/ F% V( G2 N
nPoint += 160;. u( j6 P7 h! l# _ {
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
9 x" _) t4 O+ K4 F$ E, q nPoint += 180;
4 S+ j7 h! o& p9 G0 o0 j5 ? else if( nJob == JOB_ELEMENTORLORD_HERO )' E2 [/ [" E: C, K7 Z3 U4 I
nPoint += 390;8 s, ?* Q) |. H9 h5 u) R4 `; `
7 Q3 J* s L1 R6 R4 Y
AddSkillPoint( nPoint );
2 M: r2 m# L# L. ~4 q9 w+ ~4 D) m8 _ m_nLevel = nLevel;; Z- q5 X: m8 |0 R, v; O9 n0 m/ \
) P k/ y8 d' d1 @5 h* T
SetJobLevel( nLevel, nJob );, D* l7 Z. A5 z2 Q+ s
m_nDeathLevel = nLevel;
2 m% ]) c, A) `" z5 e#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans$ [1 I- X% H0 V
if(IsMaster())
$ t" T% ^4 R. x# `$ _ {) `% k0 O4 g- }, j
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108! B- R' O# j2 ]! ]/ W' m1 o
if( nLevel > 59 && nLevel < 72 )
3 O4 |& @* U2 Q( |) H5 F dwTmpSkLevel = 1;# U! R9 H6 Y1 ^; q& L- Q
else if( nLevel > 71 && nLevel < 84 )
5 I% T+ r# l- n/ D* W7 h; A dwTmpSkLevel = 2;
' i8 X1 [( m) j& n6 n5 x8 i# L* U else if( nLevel > 83 && nLevel < 96 )
: N7 s3 v& K L( ?: q, U% r% l. } dwTmpSkLevel = 3;
c- c- [, Z" C else if( nLevel > 95 && nLevel < 108 )
3 G5 h1 v4 D" z | dwTmpSkLevel = 4;( i5 B6 C1 h+ ^0 d4 y
else if( nLevel > 107 && nLevel < 120 )( o k7 r1 f6 O( p; t4 ?, l+ d. X- W
dwTmpSkLevel = 5;
0 b9 k- `$ K& } for( int i = 0; i < MAX_SKILL_JOB; i++ )
+ K% K- }4 N% J7 w- E( j { % r4 ?% s, v' b9 l. p4 E
LPSKILL lpSkill = &(m_aJobSkill);2 d5 Z8 ^, Z/ a, d
if( lpSkill && lpSkill->dwSkill != NULL_ID ); v5 }3 |8 E) U% C
{
; S$ i! [. B1 n5 G8 f4 y( [ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
. P1 R( N' D8 c+ N: K3 f' z if( pSkillProp == NULL )! Q! F. b! N0 I" T, v& d5 ~, w
continue;
/ Y! c" q2 C. I7 x# f2 S if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
+ b Q" }* E' S& W continue;' z2 |, t% N1 P! P+ c+ r
lpSkill->dwLevel = dwTmpSkLevel;+ y# a5 K9 ~+ |6 ?/ f
}
3 E1 Z @/ f8 L }
0 L: d( A w5 x e' W }
A; w2 a+ m, Z9 i$ p8 o else if(IsHero())
. U' S$ _3 ^7 E {
' a* m6 V4 T$ d5 w* u6 h& r. f5 j8 \ for( int i = 0; i < MAX_SKILL_JOB; i++ ) 5 T: S- e( l+ u" V
{ ; j N1 C0 {( J
LPSKILL lpSkill = &(m_aJobSkill);3 @% B& T: [$ l g6 `8 i
if( lpSkill && lpSkill->dwSkill != NULL_ID )
5 |9 ]- k- ]1 p/ i# K {* _) Q* L0 U$ y4 s# N
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
& g, s& a& l4 y* o: O7 y if( pSkillProp == NULL )
) N+ [( |" o. U continue;
. O% A- t5 @, ?$ | if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
5 x, w- B; S) j# _, ` continue;; [) E8 U0 z; L/ L# v w
lpSkill->dwLevel = 5;
8 |( }. z4 P: t5 o }
2 H. V+ _- c: F }
3 Y! g r! s* {* i }
( k& |( }, T* a1 f" c/ m else if(IsLegendHero())
5 m$ O: T/ g( v7 r: U/ c {0 V* [$ ^! l9 X
for( int i = 0; i < MAX_SKILL_JOB; i++ ) * c! F3 M/ j+ B1 Y
{
6 R6 t+ Z' g. g; O0 R( A! ~ LPSKILL lpSkill = &(m_aJobSkill);
/ K% T& b9 E: F( S) G if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ a* R" B; u6 ]. f {
; z" A! w* C2 I1 J ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
3 @ z! e$ J7 s2 h6 d if( pSkillProp == NULL )
& V5 A L4 R6 q8 R4 d( i) u continue;
& C: \ w: ]) B9 V: q6 \. \: M if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
* p" I% n- _" A; X+ B7 ? continue;4 @ t: t( T5 Z6 P- \
lpSkill->dwLevel = 5;
. D& b: Y/ b* u }
# _, J6 Z7 r9 C' d1 K6 Z& P1 | }/ O( q8 A$ d/ W
}
`; I) }* v( d) }#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans8 i% N) n% f5 q' S! @
if( bGamma )+ p2 F) t* n! m6 g
{
1 Q$ b& {" Z0 U! z0 H% [/ V; H) I m_nExp1 = 0;
9 L* {" j, L1 U" b' O }6 S+ ^, @5 i: W. U
: H+ b2 J" \- E; H3 m8 ^
( (CUser*)this )->AddSetChangeJob( nJob );+ e& R0 |/ w0 E; C; C
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );; M; X1 ?4 R @& P9 V& P* d0 p
8 f6 [5 x% g' c' R9 o, T! ]
' W& p4 A4 T2 [( h" Y; }
#if __VER >= 11 // __SYS_PLAYER_DATA+ Z; q8 E9 m, o! i5 l
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );( R$ ?# l# D2 U1 E
#else // __SYS_PLAYER_DATA% [, I: E1 Q( o( ^7 @3 u
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );) c/ Q% z' J" {) D1 Z0 g: @5 C
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );; H5 X' H2 ]2 K4 F
if( m_idGuild != 0 )
0 c: q' p( y) o" x* ? g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
8 _3 E8 d+ F2 d$ b#endif // __SYS_PLAYER_DATA
3 o7 O- U+ {& H' T: | SetHitPoint( GetMaxHitPoint() );- V: v+ F1 d1 M9 S9 I
SetManaPoint( GetMaxManaPoint() );" Y- D" Z) g9 U0 v1 r2 g9 Y7 C5 M
SetFatiguePoint( GetMaxFatiguePoint() );
6 m' B8 i* D9 x3 U9 h u- N$ ~. K if( nJob >= 1 && nJob <= 4 )
8 C4 D% x' f' `' q% ]7 ?* a {5 h' I* U$ a# u, x% _9 O/ \
m_nStr = m_nSta = m_nDex = m_nInt = 15;! O5 G3 m, o) [4 Q2 h+ j. P. v
m_nRemainGP = 28;8 A4 ^$ K/ t: K$ ^
}
+ F3 ?8 e5 j" X( @% L, B; e if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )' b8 q S8 q% {6 c
{8 ]0 u/ x5 z: L& q9 C# k. g) j l
m_nRemainGP = 118;
7 i% w6 r3 B( u5 i //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
& f, ~7 u% X: S8 J: V m_nStr = m_nSta = m_nDex = m_nInt = 15;
# j$ Y5 |/ W9 @0 V* G }
% u/ K* m1 R; w5 {' O- h if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )1 {& ^. h; j _8 o3 S7 n9 N/ E
{: j. q3 O. r7 Z( H% x* s5 I0 K& O
CItemElem itemelem;5 W* M+ |( t3 j- i& b" k b
itemelem.m_nItemNum = 1;
7 Q, a) N6 s2 M7 a% G6 p itemelem.m_bCharged = TRUE;
' A9 m) B/ }# z1 F8 ~6 t0 N" r3 S BYTE nID;
2 E) l1 l& {9 z9 t) a! S9 B! m, \. K- V' M
if( nJob == JOB_MENTALIST_HERO ), O' J0 o% I% S1 A
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
5 Q5 c. f, U/ n4 R if( nJob == JOB_FORCEMASTER_HERO )
" t$ F% V# O- P: C \ itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;% Q( e5 U; f! g8 ?+ ?
* g O$ p E- B3 f; _8 d/ }' \ ( ( CUser*)this)->CreateItem( &itemelem, &nID );1 A- ]) E* Q3 ?3 r& w
}
2 m, }+ G5 L% Q0 D9 N5 l ^" @* S g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
% }$ }! R/ R( i+ F% I9 `( S# F9 z5 J ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );7 R; p) J( V, a6 {
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
8 x2 ]- p% _5 {! _9 H3 j /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );& g$ ^3 u' x5 l
( (CUser*)this )->AddTaskBar();*/8 \! ]: Y2 }7 H8 @
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
$ K% b" j- i& a3 G#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?# s: y' w" C9 S
((CUser*)this)->CheckHonorStat();
* Z, x- v) M5 e9 k& X/ |/ w' k ((CUser*)this)->AddHonorListAck();" {5 M4 m! ]8 _9 L1 ^6 E
g_UserMng.AddHonorTitleChange( this, m_nHonor);
2 c- @* C6 }$ j#endif // __HONORABLE_TITLE // ′Tà?
6 I. {& i* h( U8 O; H } f' F' j# v% D, A
#endif // __WORLDSERVER
) n& ^) Z. I, o5 C* r/ k}
( N8 I; A- |# x: k# o: f3 ?0 W+ \7 U! v' d
然后你进入functextcmd.cpp并添加以下; W, R+ W4 v7 T d! S: n5 T. Y
4 H+ V4 g" W+ v5 B, x
代码:+ k s2 u. h9 E4 d4 S9 I8 W
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )4 J2 }9 q. N. h9 Y0 I$ I! p
下面插入% e. c2 R1 {4 O( }# c- M( A: C2 }
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ' Z/ a( A- B1 u S2 f
- V3 q1 [- X' t! T( [- \7 J
然后你去 E! {8 A! X8 k( y2 T
, w3 i" m/ a5 N3 M/ U1 M. d代码:& S$ B2 r# N0 f( m- @
代码0 A s7 p) E [( e( q% u( x
BOOL TextCmd_ClearPropose( CScanner & s )
9 b, d% Y6 x' w{
0 n: q- V4 a( t4 c#ifdef __WORLDSERVER; _! _9 a: ?- } }8 m2 V
CUser* pUser = (CUser*)s.dwValue;
- `, b' H, I$ l/ q+ y; ^# u g_dpDBClient.SendClearPropose();
$ C2 _0 S9 H% k) m9 J8 F' H6 b#endif // __WORLDSERVER) p7 J, u. ?% m+ ]/ n
return TRUE;
: O$ u9 S0 U* I* a}
; G/ Z5 f3 g* U* B# d下面插入
- M6 t# S. P8 G: P& N/ l5 d4 E* tBOOL TextCmd_rebirth( CScanner& scanner )
/ q' N! F: Z0 Q8 w9 W" }2 e9 X! T{. T' ?6 s* e. d/ g D9 H0 @2 Y A
#ifdef __WORLDSERVER
& t2 i' ]0 l4 j+ BCUser *pUser;
+ f) i+ M) q; X, _9 y; F3 SpUser = (CUser*)scanner.dwValue;
# E2 J! g6 T2 S$ k3 wif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())# Q* Q. Q; n0 }3 R' M$ m! A
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
# A2 C3 ~) e9 l& x! |( Yelse
' p! }* l4 j9 bpUser->AddText("你还未达到重生条件!");
: S q J' K/ c#endif5 i- E$ G1 I) o0 b+ J
return TRUE;
2 P$ o1 v- L8 q( x}
/ X+ U1 F+ V4 q l
# ?" {# {$ Y- ]3 e! M
+ ~! h9 I' }8 y: v6 y2 R( W; t2 t- r" I* [7 g3 @
- V. q2 f6 Z6 S; H
|
|