|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel" @% R' B" z& s H5 D) @( a7 d
! U8 ^3 F5 R4 B x
Mover.h! F5 I2 o; _6 P
代码:
7 U3 U' S9 r% T* I$ Z% c" u找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
9 q& i9 u, u8 n8 ~: F% @
9 |5 `4 w! r) e( Y下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
/ W y6 \! g; B& q% i% N2 W0 d, u& k
然后你去mover.cpp添加
3 |# e# s& n: E4 b0 S1 F K
* C8 k. \6 E% U) U N; ]& T代码:
. D8 | |- L5 N. H; Qvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
8 S0 c. Y1 u3 ^, D$ U' t a3 k{+ Y) X7 q8 D8 w( E8 f3 s
#ifdef __WORLDSERVER$ k8 Y4 _6 [* Z) W- n
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó+ O5 A) f4 O( B* r- I7 L
MoverProp* pProp = GetProp();* ^0 Y) f& t! c1 R
if( pProp )9 ~" j7 l* A7 a! G
{; X' f ]! Q$ c, k' {5 B2 h
if( nJob > 0 && nJob < MAX_LEGEND_HERO )9 V9 J. y: F7 n N8 F& y
{
, r2 f2 C* a* |' x/ Q AddChangeJob( nJob );6 }+ ~) t# h. {: a! E
}else{
2 T( L5 J* Z8 U3 o( F/ s* ^/ ~ return;- Q. O# z |$ i3 e0 j5 E' `
}0 x8 N0 r3 k0 _4 L& n6 c
int nPoint = 0;$ N, p( {/ h9 t" P6 I1 X9 g9 O
if( m_nJob == JOB_MERCENARY )
& g! `$ W; Y9 d. }$ I1 f* x% H% u. E nPoint += 40;
" B" V% y% J6 H8 h9 R2 x else if( m_nJob == JOB_ACROBAT )" m. ]/ O+ H8 R0 f4 O
nPoint += 50;
; Q- }, T. f$ c! `6 h3 C else if( m_nJob == JOB_ASSIST )& J7 y; }, f4 C7 s, H# X4 }
nPoint += 60;
+ @$ P; E8 ^7 N- v" @; U else if( m_nJob == JOB_MAGICIAN )5 E+ a* O3 s4 E6 S
nPoint += 90;
' A3 ]; k5 I$ J6 V0 W5 H else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE ); U3 e' {/ K! ^6 n3 J; {* k5 Y
nPoint += 120;8 ~/ Y# W ^6 p8 r
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
! p3 Q/ k# l5 r5 G3 O+ w3 h nPoint += 150;
& j" L5 L% |& ^: e else if( m_nJob == JOB_RINGMASTER )2 x/ {" q# d1 W9 {1 s/ F( x
nPoint += 160;
/ n- M; h: h7 K1 F7 M+ ~# x else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )! O5 a# p/ G ~4 V
nPoint += 180;" {9 O9 ?5 Q# J4 \" W. C
else if( m_nJob == JOB_ELEMENTOR )
* x: t% K- S) ?' f! ?2 X nPoint += 390;
' Q- Q; d3 m$ ]% ]* D else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
$ [4 Z7 ^, T+ t. N' h nPoint += 120;
9 e) y7 a% e! l& c else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )0 s. g) k' Q5 V ]0 T
nPoint += 150;
; d% A y/ G0 ^0 K9 z" g7 V7 [5 A else if( nJob == JOB_FLORIST_HERO ). Z1 w- }$ Q+ ^: l5 I0 A1 l6 w# R
nPoint += 160;
: @1 r# c0 s U( F/ w% ` else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )0 d1 Y7 Z/ o0 k+ t9 H' j: F T
nPoint += 180;
( c9 G+ t" U, H& C/ E else if( nJob == JOB_ELEMENTORLORD_HERO )$ W% j L% B7 {& U" q3 q
nPoint += 390;) Y, p+ w5 y S: `( n) S* G# v
: W) ?8 D8 T% F8 X$ |
AddSkillPoint( nPoint );
& m; U/ z; R. _6 E9 v m_nLevel = nLevel;
) U7 q: N; j r! w0 C" O! J; R# y$ b: U
SetJobLevel( nLevel, nJob );
$ v' ^; n2 [3 s. n* B% o3 r, p m_nDeathLevel = nLevel;
3 o3 w* t7 c& ?2 R4 {0 {: B& K#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans/ J: z3 |% S+ B( m/ X
if(IsMaster())/ G7 B/ {( A. d W3 E! A/ h$ H0 Q1 U
{
+ g+ N) n% e2 u/ V8 K2 ~: ]1 k int dwTmpSkLevel = 1;//60, 72, 84, 96, 1083 K1 B+ p, ~7 V0 E) b: p
if( nLevel > 59 && nLevel < 72 )
) E7 Z6 Y5 m& H! I dwTmpSkLevel = 1;
8 l# b) y0 H& _ else if( nLevel > 71 && nLevel < 84 )7 a( u4 s- e% [6 D+ H+ x! Y- ]
dwTmpSkLevel = 2;- s$ L. _/ c. A5 v/ I# |8 T
else if( nLevel > 83 && nLevel < 96 )4 p# X1 l0 P* W% g/ |6 ~$ n
dwTmpSkLevel = 3;
8 l0 ^1 J K' p else if( nLevel > 95 && nLevel < 108 )" D( H/ U: l. T" f" M
dwTmpSkLevel = 4;) O+ z6 g. h6 P& \' `1 \
else if( nLevel > 107 && nLevel < 120 )
7 r" H, w* m0 u2 c6 s, ] dwTmpSkLevel = 5;
& {+ B. q& `7 ^* ~( f for( int i = 0; i < MAX_SKILL_JOB; i++ )
1 |; h/ Q- a. C {
2 z6 m, @0 V/ X* t" ?. q LPSKILL lpSkill = &(m_aJobSkill);8 e7 ~& q9 |! V! R$ S- [
if( lpSkill && lpSkill->dwSkill != NULL_ID )% I! t7 C3 H9 q
{
3 Z! U+ s: O, _% [; q! ^- j7 Z$ d ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
. H5 q! n/ F( g3 W$ P; A if( pSkillProp == NULL )! s+ T! T: M1 Y; q3 S0 P0 T F
continue;
8 v. ~+ y* P l3 v3 j i if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
9 P [2 G+ Q; v k continue;1 O5 A' p3 }/ M! w
lpSkill->dwLevel = dwTmpSkLevel;
4 t3 ^$ K5 K% S( ^) T) U }
; `* O# h( C. D/ T }; Y1 i0 N' S8 v. v2 U7 `5 c. i# m
}
- }( ]4 X* @) T+ E. _$ ` else if(IsHero())
/ h9 W* k) U, B8 u' S/ v/ U+ T1 ^ {$ j% s* B7 d# e( |. J4 j; M$ }4 o
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ) z7 u' m* @+ C# A
{ 6 T( J$ y z7 k* U5 t! h9 u
LPSKILL lpSkill = &(m_aJobSkill);
`. N4 L4 k k if( lpSkill && lpSkill->dwSkill != NULL_ID )" j; W6 h! G! u* {
{
A+ a3 J U O; X7 |4 r, b ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 0 W% u, s8 _* c! `" k% j
if( pSkillProp == NULL )
; W$ g/ J, K e' X- h% T) f continue;
+ p1 j: b7 L E3 p3 i8 d2 v if( pSkillProp->dwItemKind1 != JTYPE_MASTER)" }# A* A( h, K( M& \3 Z
continue;# @/ c* B9 I: R4 O
lpSkill->dwLevel = 5;- u% t! u7 s# m4 l) d
}
]8 M% c5 `. N* p; R' G Z) p }
7 |; p1 B1 h0 i8 U; K }
* j$ L# u; J( @$ N* Q3 ` else if(IsLegendHero())
P) v% F! X: @$ C2 b {# _; B! ]% J! M3 Q' I! {' Z
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ' ] i. p2 Q$ E9 }/ c5 ^" F d
{
6 ?, u9 M- _7 H LPSKILL lpSkill = &(m_aJobSkill);8 c0 ?" r) J; d% I
if( lpSkill && lpSkill->dwSkill != NULL_ID ): u# t4 F9 `9 { x8 o6 V/ [2 S
{. y. H/ g% m. Q2 k$ N X! o/ o
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
4 G* p" n& S* p! U8 I2 j if( pSkillProp == NULL )
6 o c/ p4 _& @& t4 j4 @- r$ v continue;- Z% K. R& b9 W$ O9 o* @/ [
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
) B$ I! j2 P, l( V continue;4 h" k v* G; S6 O. K. J! C
lpSkill->dwLevel = 5;9 B* D1 _' [/ [; @! S
}) G) i; p! r1 b0 P
}
# ?& y8 G- E6 W2 B- h( K% ^/ p }1 {% K" m, |6 z l. P+ _
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
4 ?) B5 ~7 n; H6 A0 k T5 X5 u if( bGamma )
$ {9 \/ x* |+ o& ~ {' J- O5 @1 f* m2 Y9 E1 c, e
m_nExp1 = 0;) d3 p; c# A; F6 G( y: w
}0 b+ g. Q1 \, N, S. z% Z
0 q, v3 R q0 ]' x+ V( W+ z% T. E ( (CUser*)this )->AddSetChangeJob( nJob );# N$ J, ?+ }6 }8 I9 U6 ]5 i
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );8 y! B7 A2 K' ]) L1 ~1 e4 B
( Z+ `- r9 o e& v$ j8 o& y$ m; \! k% k+ O0 Y
#if __VER >= 11 // __SYS_PLAYER_DATA
i+ `4 O+ d( h5 Y g_dpDBClient.SendUpdatePlayerData( (CUser*)this );/ {/ x, A6 b: ]0 z! d4 _
#else // __SYS_PLAYER_DATA
; E- N" b3 D: e! j' A: Y) h0 G g_DPCoreClient.SendPartyMemberJob( (CUser*)this );* g: X" k3 g$ I* Q" h5 w" i5 L
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
; F/ z9 @( U( T, L) e if( m_idGuild != 0 )4 g- N, I+ y$ X9 \! p! f
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
( [5 S& x8 p& X4 [2 R$ k8 k#endif // __SYS_PLAYER_DATA
+ H' p& I) ^; s% s% c% P6 U1 s8 t SetHitPoint( GetMaxHitPoint() );
6 ], F+ _+ j6 h SetManaPoint( GetMaxManaPoint() );
, v. j4 [/ P) {: z' ?( K$ D8 v' R) B SetFatiguePoint( GetMaxFatiguePoint() );
7 R2 [* M: n3 O p if( nJob >= 1 && nJob <= 4 )! H. `& e% G0 b6 D1 o, L' n+ M
{( w, Q' G! M! ^/ D2 B
m_nStr = m_nSta = m_nDex = m_nInt = 15;
% t3 F3 Y# I- e& [9 e. r m_nRemainGP = 28;" R( Y5 \' s$ x4 S! a* N- _
}, _" y/ d- N6 P
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )6 O2 }# n" O) y5 s; k' ]
{* F! R! z% [+ z0 j$ U
m_nRemainGP = 118;- G1 W& ]5 v+ v9 L# J
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
! y M F% F" a m_nStr = m_nSta = m_nDex = m_nInt = 15;! M% F1 a d4 f. v( }' ], [
}
- u4 n+ V: f6 o/ w" o if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )' i9 L" p4 y# V+ t3 J% X& ~
{
9 s' K# p3 M w W* c& }3 V6 z CItemElem itemelem;
* G: C+ G4 O! r0 ?' S8 X8 { itemelem.m_nItemNum = 1;
C2 L3 V: R2 t itemelem.m_bCharged = TRUE;) j, x. f! W; `. I' u
BYTE nID;) \* G- ]* @1 M2 u7 |& w/ b
4 L) M; Z- t7 I7 ^
if( nJob == JOB_MENTALIST_HERO )
$ Z2 U+ m G; M' @" ~. Y3 k itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
+ v5 K7 p1 B! a6 M/ X+ a' w$ f if( nJob == JOB_FORCEMASTER_HERO )
9 D2 V% u* @+ g |6 P( P7 i1 X itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
2 z) T& W5 g9 o3 h9 p
* Z% k4 K8 G+ d. j ( ( CUser*)this)->CreateItem( &itemelem, &nID );
7 e$ H/ [; s# n$ y$ V' x8 w. f }
- Q! ^, q6 j5 Y& R% P5 b- q g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
& O% ]" X* y* g) p+ E ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );# Z! D' w% D3 w: m& h
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );0 d. a( A5 A( Q2 }3 I' o( u
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
& ^. q2 r0 P n. b" J ( (CUser*)this )->AddTaskBar();*/
! n; D! R1 D, ` ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
3 F2 f, A: T& F1 P) ^+ p! q#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
$ M A3 W0 t( W1 Z6 i* a ((CUser*)this)->CheckHonorStat();/ T, }1 A% C) m$ a) s- v3 {2 `5 y% K) V
((CUser*)this)->AddHonorListAck();
0 t' g; n# P( ? g_UserMng.AddHonorTitleChange( this, m_nHonor);7 r( c7 y: {/ C( f5 {7 p8 M2 v, I
#endif // __HONORABLE_TITLE // ′Tà?
+ E; g$ F7 J+ m8 w }
4 `* \) f5 i" y M' R#endif // __WORLDSERVER. |6 [$ o7 ~# n7 K) _: ^; Y' \
}
# M5 P. C7 e) \0 O/ N+ I" N6 O2 S F7 h" v9 g7 h
然后你进入functextcmd.cpp并添加以下, B) q: d4 V# v1 I: W* J
) Q& Y6 a' B% P
代码:9 M! a' s& J3 ^% @+ ~. j6 a7 y- E8 x
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )" _8 g( d: a% {" j$ F. p. K
下面插入4 _# W/ b9 Q5 g8 J
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
) B" K5 h3 F/ U: B0 X1 Q
6 E/ ]% w4 H& `' b; E4 Y6 n" U z然后你去
) |: Z' ?( e8 M8 ?# [; |
( [% w0 r* S+ v代码:
- ]$ f7 w7 X5 T$ }( c5 `1 p# p/ @代码: h( g& u4 f5 F, r$ A9 s
BOOL TextCmd_ClearPropose( CScanner & s )
9 V5 G& i$ A. E1 H: ?8 X! S{
1 ^! \/ ?; y- `! [: ^9 Q* {( X9 @#ifdef __WORLDSERVER j/ m3 `* t% }' o
CUser* pUser = (CUser*)s.dwValue;
: h* c: ~5 k. n! ^% Y g_dpDBClient.SendClearPropose();
* N% B/ z. M k( D6 i* ?#endif // __WORLDSERVER
$ R+ M9 \$ z' u e6 w1 k A return TRUE;
+ T! D9 K9 z5 h}
) r0 W1 q- G* ]9 f) E下面插入4 G# H% q5 e0 F1 i3 W$ f8 v7 W9 Q
BOOL TextCmd_rebirth( CScanner& scanner )
0 h4 i h1 v/ h6 S8 B3 i& Q{! ]- V- t" h! N/ b: j
#ifdef __WORLDSERVER ^4 F+ P7 S2 s3 K; o. Z
CUser *pUser;" i0 y' t3 c* I" i R9 V
pUser = (CUser*)scanner.dwValue;
2 n5 e7 m0 O; bif(pUser->m_nLevel >= 150 && pUser->IsLegendHero()): c& V! Q5 O$ ]# e
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
5 L' }0 p# F T" g1 W* @else
2 n& `0 c8 ^" Q! k# s4 S' [pUser->AddText("你还未达到重生条件!");
% K w- q) ^, P8 q" u#endif H c+ d) v( X8 l/ e5 N
return TRUE;
0 d. c5 |9 E8 u ~5 Q} 0 q3 s8 {3 l+ i' D' x# K. R
6 U3 M# K- c& F: |' ]3 { H9 ? h4 w
2 j/ C# r# ]$ P ]* [( L5 P8 g
4 n+ X2 {2 s6 b8 x5 b
( J Y [. U/ m: }" t |
|