|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel# S# E8 h3 H8 Y+ d' `/ ~7 u
# w+ f1 d) T! k( N
Mover.h
: @9 Z) _! G- o# G' C. [: ]代码:
# g" w# r6 \1 B找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü. E% o9 e! j/ H! K& S u4 _
- Z+ G( z! T, \! G下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
/ `3 c/ f- _2 z7 _4 m" \. i, Y; O! B. ?; @1 K5 i
然后你去mover.cpp添加* D5 o9 a5 B, A9 ~# d- z. @
w3 P1 B2 \9 t9 P5 L0 m1 v8 F5 B
代码:" ?' E$ J- b5 K7 G' Y5 e/ E
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )6 z8 L; P) y9 B$ N" M3 h
{1 _; z: y7 I' }) C9 C
#ifdef __WORLDSERVER
% K2 l+ n$ ~& E" T8 C // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó' w8 o8 e T' L% M
MoverProp* pProp = GetProp();
* K3 s. s+ t' B! @, d if( pProp )/ P: {( q9 B; H+ w# f
{
/ `' E* n7 q% G5 ~ if( nJob > 0 && nJob < MAX_LEGEND_HERO )
1 D7 C) M9 c- I$ @" a {
: ]7 `+ S3 I& e9 _9 g: a3 h- ?3 t7 } AddChangeJob( nJob );
7 y* G- N% W/ K! r0 E( [) M }else{
: O3 @2 y, ~6 c T5 e* J. B return;: p3 N8 P+ b* ^: R' s
}1 E# Z8 T5 `2 ~- T$ [2 E
int nPoint = 0;
6 z& k$ b5 m. O# W9 |" _ if( m_nJob == JOB_MERCENARY )
_3 d6 z3 W- N5 o" t nPoint += 40;
% Y) J0 N) K4 q9 q0 K1 N% R else if( m_nJob == JOB_ACROBAT ) v. z, c- A6 C6 {% E2 w
nPoint += 50;* @0 |1 D) h* P1 h
else if( m_nJob == JOB_ASSIST )" x+ H4 _ \2 W# k+ t+ x* ]% Q
nPoint += 60;( `: G. n. |. C7 }7 i( i& j( K
else if( m_nJob == JOB_MAGICIAN )
! r8 a) [/ ^& @; {) o- O nPoint += 90;
2 l* q& y$ z. s" e" s else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
{; y1 G( l" `% I' N. N nPoint += 120;
u7 Z, D7 Q: D% s* L else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
& w2 E$ D- m5 P: p nPoint += 150;
% |! L9 y8 M7 x. q1 J else if( m_nJob == JOB_RINGMASTER ) @* @, Y8 H1 c3 i& y2 Q$ K, o
nPoint += 160;
$ i% o, q$ }- l+ ] else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
_; j* a0 o* o- e nPoint += 180;
) B0 u5 w" @% \' M8 N else if( m_nJob == JOB_ELEMENTOR )
& V' X/ l e" |! V nPoint += 390;* h$ t- [ g. F3 c; e& ?+ l# _, H) \
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
m7 ?+ \/ L, L. X+ B nPoint += 120;
# m; e1 ^ K7 l/ Y" U& x else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
5 c- W& ^* C) C8 C* O; @ nPoint += 150;
5 h9 e" O$ N& S0 ~0 [ else if( nJob == JOB_FLORIST_HERO ) ~2 {9 A: g- f
nPoint += 160;
* k. l1 o8 }; ~; u else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
# q5 n8 ]8 e- y$ s! o nPoint += 180;- Z2 ^$ D8 _8 L. g
else if( nJob == JOB_ELEMENTORLORD_HERO )
) o9 ?* v# z* D* Y9 i nPoint += 390;' D* V2 g$ M" S+ N3 Q9 r
" N$ }# u: n+ K
AddSkillPoint( nPoint );/ h% Q+ l9 N" B3 D# r
m_nLevel = nLevel;/ q2 `. f% d) \" P0 ?0 i0 E7 v* }' r
t0 ^. a: b' j3 T0 x; I1 f SetJobLevel( nLevel, nJob );
1 L4 |4 c3 Q/ U% ~4 k4 c m_nDeathLevel = nLevel;
( r5 E% m9 {% u7 K#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
% w6 h! m: E. I' m% a, T if(IsMaster())
% w2 {# N. W( P {
' r' P8 ], n6 `1 x- E int dwTmpSkLevel = 1;//60, 72, 84, 96, 108- d" O7 S1 f# Q
if( nLevel > 59 && nLevel < 72 )3 X3 q& G; s% D8 H4 u' `( r0 F
dwTmpSkLevel = 1;* I* h9 z) K: S4 n, _( D
else if( nLevel > 71 && nLevel < 84 ). q k0 }/ Z8 F$ w) p: ^& I) z9 H
dwTmpSkLevel = 2;
4 o+ M0 f$ e0 L: @: v0 o: n% e else if( nLevel > 83 && nLevel < 96 )" h' V6 v9 z: B: c; m; d; j
dwTmpSkLevel = 3;1 u5 O* w' C/ {1 f5 f' n7 R! @
else if( nLevel > 95 && nLevel < 108 ) r" V( r" c2 V2 r0 J5 y
dwTmpSkLevel = 4;
2 x! n; z% ^4 A, {8 ` else if( nLevel > 107 && nLevel < 120 )8 ?2 W) p5 t/ \' v/ S! c
dwTmpSkLevel = 5;: v8 k. Q$ k" [) A9 G; D" D
for( int i = 0; i < MAX_SKILL_JOB; i++ )
' h8 }+ W( f$ j- J4 {! n8 D {
# ~" Q {- E: P, S: r; l& E LPSKILL lpSkill = &(m_aJobSkill);
- q0 d1 x* ], h- J' j if( lpSkill && lpSkill->dwSkill != NULL_ID )* F, [1 L/ v2 Y) @5 u' I, A
{
f* P' F+ M8 o7 W ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
6 j& S9 d( E9 o, Y if( pSkillProp == NULL )
: F5 d9 n7 |4 F# a8 {2 s& W continue;
) t) P& Y/ W/ Z+ ?9 o if( pSkillProp->dwItemKind1 != JTYPE_MASTER)4 T# z5 Z; L+ Q
continue;
) s* ~& h" N" q, ^, w d lpSkill->dwLevel = dwTmpSkLevel;
, a. q, p8 y6 b ]2 W }
) k/ o+ y9 n- t1 a* k }
+ I/ Y0 W; A& ?+ q6 f }
7 E; {- K/ Y" d' [ else if(IsHero())
4 v T! N9 @0 ] {0 d }6 `! `1 {/ {5 X$ q
for( int i = 0; i < MAX_SKILL_JOB; i++ ) % |4 ]# i f" d" K
{ ! k) B% G3 D9 F7 G0 V' O
LPSKILL lpSkill = &(m_aJobSkill);
+ M& _( x, Z( z/ u' ]5 [- j if( lpSkill && lpSkill->dwSkill != NULL_ID )
: r& C6 J! Y. l" |5 _. _1 t {
. P( h( Z4 I6 d( w" P ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
% m: K+ @7 R% {2 P* t if( pSkillProp == NULL )3 F! z- d* _/ M# G" b% Y
continue;9 ^& k5 a( g$ b) D2 p
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
/ E4 g4 ]$ I. {9 y( Y/ @ continue;
* [" B' t; \, j! y o lpSkill->dwLevel = 5;3 o* @5 f# | b% Z- S' h
}
: a, K. m; R- H }
W, {7 @$ n% p& K$ S }
- C, B7 p% d* M5 B$ A$ w9 b, i: C else if(IsLegendHero())3 B; J1 n2 x1 {. T
{- {" Q+ q3 g$ N; t# b8 [
for( int i = 0; i < MAX_SKILL_JOB; i++ ) * E3 a7 O; F z& i. C
{ 5 s/ \' m/ s+ z2 I3 ^4 W/ M
LPSKILL lpSkill = &(m_aJobSkill);1 G! ~; s3 J* ?# S& j3 S
if( lpSkill && lpSkill->dwSkill != NULL_ID )5 i5 Y, @& t: c' h: E6 f
{! F- Q2 d1 i4 w/ [4 `& K# Y/ x) O$ s
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
* H) g3 {5 p* n- E if( pSkillProp == NULL )
7 O6 w# w. n/ D' ^5 p0 A continue;# v2 y ]1 g; P# Z9 S* N
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)% _4 [- z+ v# Y7 w! x/ W3 }8 u
continue;
6 w" |- L* G4 n$ H A lpSkill->dwLevel = 5;' c5 R* H% ]8 `3 b, F# n- l
}' M# u0 D" M2 g7 l1 q& `7 L& _4 ~: t
}
% O+ E& V1 W7 C' ~ }( i+ a& L' }. V% G# x ?
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans+ p m6 J0 \1 e0 F* ^8 T7 m
if( bGamma )* F, [0 ]1 i/ N# L( E0 w( |4 D
{
: `! R3 \9 d" `5 @ m_nExp1 = 0;: e) j& X' W- l
}) o% a6 ?5 M& S* Z6 q2 D
_* C' Z3 Q! {% C
( (CUser*)this )->AddSetChangeJob( nJob );
$ D$ ~# c: d* |- ~- m, y1 c g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
) P7 u' Z& d8 G) O6 {/ h/ e- k* o1 S$ r) m0 Y$ ~
# `8 W3 |( ?3 b3 @1 R; X! j2 X
#if __VER >= 11 // __SYS_PLAYER_DATA4 O- g0 D1 Y, y% Q: a2 m* R
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
) U6 b( [! ^) S#else // __SYS_PLAYER_DATA
* p4 L; p+ T* h g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
S/ u& E# o: |0 ~) @) u, M g_DPCoreClient.SendFriendChangeJob( (CUser*)this );. d% O5 G1 c* k% d2 q/ f; d8 K# I" `
if( m_idGuild != 0 )
& M9 [+ x9 Q0 h5 b- E- b* B g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
5 \% I* A B t* o' D#endif // __SYS_PLAYER_DATA9 x& ?# H4 G& @. p
SetHitPoint( GetMaxHitPoint() );0 \$ P0 ^( b" B! z/ j2 Q$ f
SetManaPoint( GetMaxManaPoint() );+ {# S# H- j% Z& t1 o& F
SetFatiguePoint( GetMaxFatiguePoint() );
' o; [/ O5 t) G1 d: ? if( nJob >= 1 && nJob <= 4 )
+ T6 b# b8 Q4 f5 ` {
+ F. ^7 R* H! s* J! @+ h+ t m_nStr = m_nSta = m_nDex = m_nInt = 15;/ S, L$ r1 K9 g- j( A3 T
m_nRemainGP = 28;
' e% k, c( h1 y( M" f' Y }, u( f6 B, X; u8 z5 j# |7 Y+ Z' e/ Z
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )8 R4 u5 p. R/ N* I( p. U
{. c2 @9 x: B: }- @
m_nRemainGP = 118;& d& X/ R+ N5 i, A1 \, h
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;6 K; l" `" \' f/ }( ^4 m
m_nStr = m_nSta = m_nDex = m_nInt = 15;
3 i# D8 Q# H, F/ O }7 Y; H- t% s2 ^: a2 A; v( @
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
. j2 m. K$ c0 e, m5 U2 i {
! E$ ^9 R; @/ s; @3 K5 `* U CItemElem itemelem;+ F! E8 z( S' H( F) P
itemelem.m_nItemNum = 1;
; i5 a. Y" {- ?4 h/ i ^ itemelem.m_bCharged = TRUE;
/ u! b% R0 \+ r/ V: u6 i4 U BYTE nID;3 \" D0 s' K7 Y/ K x
- R9 ^ `2 |/ M, c! n8 v1 A
if( nJob == JOB_MENTALIST_HERO )" z$ b7 x5 f& E. G- }/ o
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
$ S# \$ h6 M& z if( nJob == JOB_FORCEMASTER_HERO )6 ~( L4 I' h1 |% p: s, q1 U
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;# w# ~' _9 J B. ?6 J6 {2 P+ J0 @
+ n6 N* n& @0 a( ^% X ( ( CUser*)this)->CreateItem( &itemelem, &nID );6 z1 B0 N0 w& q* |
}
* R* m# \+ |2 k6 b& A8 C0 C g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
/ t: W8 {/ e$ h; c ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );5 q, m2 z7 S! L. }4 X( |0 a
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );& R3 T x. X5 t: q. k5 Q2 L; a5 s4 S
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );; V& W, p, A3 N. V& f2 G/ o! f
( (CUser*)this )->AddTaskBar();*/: z2 n1 A; f2 y; B
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
5 v! |; ?# J* U5 E#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
6 E! l5 }/ U+ v+ q% _ ((CUser*)this)->CheckHonorStat();5 ^/ s1 T* a( e n; e2 g" J
((CUser*)this)->AddHonorListAck();% v! b! L; ~6 Q& C+ w9 D- }4 E" t/ N
g_UserMng.AddHonorTitleChange( this, m_nHonor);
: P! t$ M3 k0 m6 I#endif // __HONORABLE_TITLE // ′Tà?
9 [4 ~0 |8 f6 L/ S2 V' e }0 }- ]8 I# ~. g/ v7 @& c0 y
#endif // __WORLDSERVER0 U& i1 |: y9 M c
}
6 s# N) _: X1 ] }/ y2 ^/ U' R4 I6 V6 K! Y! u( f
然后你进入functextcmd.cpp并添加以下
' \ t3 q, k r& e& F0 b
* E. V% X# J; k5 z" I+ L代码:3 m6 C( d# F1 S
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )0 [* ~3 R& g- j; m" i/ A/ Q: {
下面插入
6 h2 h* }6 [8 XON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
3 F; O/ ^/ @3 J$ b" }8 l) c4 {+ t! g& k* ^2 A) D o+ Z* |
然后你去: {, F% T% d+ X; s% d. E
! ^1 A* L [9 L1 ?
代码:! A# M0 y; x/ `5 s, o0 I
代码8 L( s4 D- r: [) L' c3 J& J/ v
BOOL TextCmd_ClearPropose( CScanner & s )
3 N- U3 C5 C: ^, K% F4 c) J7 j{; M- I# V) c2 q- P. G) t
#ifdef __WORLDSERVER, K; M7 X, k$ ^- n F) c
CUser* pUser = (CUser*)s.dwValue;3 ?1 w; X) Q/ p. n1 T
g_dpDBClient.SendClearPropose();1 z; q$ h9 A) n9 e+ F" W
#endif // __WORLDSERVER
' T( r5 K/ c2 Y return TRUE;! ]4 n+ E/ g5 u; g
}
4 Q$ l2 S! v3 V, ^3 O下面插入
, z& a/ t5 z- }BOOL TextCmd_rebirth( CScanner& scanner )9 m# f/ z, R7 R# p
{9 K+ f- r4 e% _
#ifdef __WORLDSERVER" ~; ~0 _! X2 v' u* Y+ @4 T1 i
CUser *pUser;
1 o7 M* } L+ KpUser = (CUser*)scanner.dwValue;
" S- V e) J+ b; g u+ J: U% e7 {if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
" g5 [" U8 C( vpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
* ]2 _8 s \" Kelse
4 j/ a1 U+ @, M& J# n: IpUser->AddText("你还未达到重生条件!");
! ~' r) L+ c5 K3 M#endif
' ~; I$ W; G8 J: Treturn TRUE;
* s0 s' i; R- D+ _} 0 f4 Q2 x0 S$ x* |4 Q+ y9 N
3 w" o) B& s' `
9 b: A: F$ f ~: F
- J! r c/ ^! w
+ _6 A3 d2 J# `, P3 w [
|
|