|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
z% P% B# ~3 f5 ?) q5 x
0 P2 _7 f$ b8 z' {$ y1 Q! ?5 cMover.h2 Y; P# ^) E% f7 ^1 h
代码:
8 _( j# ?9 }+ ?/ `找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü( ?* H# F. e6 E# K
3 a& m+ n1 l- X& u9 D
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; & U" p% r% @; i
/ ?" d+ g* [2 e! }' B然后你去mover.cpp添加! z9 @- Y: D5 J/ L) G0 j; @
: b/ h2 e0 L/ M$ g7 s
代码:* \7 O- X$ `5 K
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
/ j2 D; t1 S! K- u. b{1 i' U7 X9 s6 o8 k. t" z1 ?' _
#ifdef __WORLDSERVER
s E1 d0 ^0 B* `( D7 P // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó. W( n/ d, ~# Q' A
MoverProp* pProp = GetProp();
2 r3 b3 u, j& f m5 W if( pProp )
9 [9 j: k$ Y+ j {" y; j V0 M7 a" |- g+ T+ t$ p
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
$ N& T# [, v. B: X/ b( ~ {
- w& \5 p8 \2 N; @) z* r) c AddChangeJob( nJob );9 [5 L( ^) r, y" F( d
}else{
6 j( s+ y- _& A9 f. P return;
8 u' G" I$ l8 V- q, o# @+ d }
( ^( y& U# ~5 T int nPoint = 0;& q' |! E1 w# Z+ {
if( m_nJob == JOB_MERCENARY )
K& m! l/ }5 J8 A; L nPoint += 40;* V. N- ~5 X! E
else if( m_nJob == JOB_ACROBAT )' b, q) g7 n1 X/ r4 C
nPoint += 50;
* [8 I( R" E v; `- K6 n$ j$ K else if( m_nJob == JOB_ASSIST )
& L9 x1 _; B) y nPoint += 60;" R. P4 M! ^ z0 F4 u* `7 h
else if( m_nJob == JOB_MAGICIAN )
0 |9 t8 Z9 |0 q y6 j2 w3 ?) g nPoint += 90;& @' ] F& @2 h/ W
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
( @6 G: J$ o2 Y. k% h" p6 u nPoint += 120;# P& x/ U& [' @1 O
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )! p1 C( z: F! M. ~# Q
nPoint += 150;
9 Y; t* i! [( Y else if( m_nJob == JOB_RINGMASTER )0 _7 D0 |, M" x6 c
nPoint += 160;
; O! f w6 H4 q1 Y else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )' X! j/ {) W5 t5 E/ S
nPoint += 180;) i6 E8 a8 ]! L! i& E
else if( m_nJob == JOB_ELEMENTOR )
6 _" i4 W2 g+ x! p0 l6 ]% Y nPoint += 390;7 e3 B) n- g5 H. m0 Q7 x4 b
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )3 ~. o4 s1 H4 |
nPoint += 120;
; i8 y5 l! X& ~ else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO ); y% h8 n, ~( T: Z* S* J9 p
nPoint += 150;! Q& V6 |: N/ F3 N
else if( nJob == JOB_FLORIST_HERO )6 p3 j3 M# S. p% d6 K- V% G
nPoint += 160;0 }4 ^( b& o% ^
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
/ J2 ], H0 x6 D/ } V! O; [ a nPoint += 180;
7 T) o4 u5 m4 }0 r8 w( x else if( nJob == JOB_ELEMENTORLORD_HERO ); B( i9 V6 c! ?" X9 x, o( R/ A
nPoint += 390;
2 a# X* K- j4 ^6 h, A) _0 ~2 L( h8 V: a9 D3 j
AddSkillPoint( nPoint );# I/ g% X, D2 o6 G; B3 _
m_nLevel = nLevel;
- G/ ~; v% c8 I. ~" B' r6 ?5 e1 z4 D* H7 n- r9 U8 F0 I: F
SetJobLevel( nLevel, nJob );3 c& q3 }) A8 D% e$ O: @/ y
m_nDeathLevel = nLevel;
: M2 O+ p. Y+ n2 o#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans9 e T6 G/ C% L
if(IsMaster())( g- r/ W$ M2 B
{ R! P: x O5 c" f
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108! o" {% S$ @* t: O+ v- j- p
if( nLevel > 59 && nLevel < 72 )& B! G b# Q9 p) L& S
dwTmpSkLevel = 1;
) p% ^) a1 r7 V else if( nLevel > 71 && nLevel < 84 )) j$ O2 h' W9 f4 V: s7 W( u
dwTmpSkLevel = 2;
7 Y+ `$ U4 }% i1 l! V else if( nLevel > 83 && nLevel < 96 )! H6 Y+ C- c7 E6 N
dwTmpSkLevel = 3;
, U, q6 o7 u* S$ a2 @0 K. y else if( nLevel > 95 && nLevel < 108 )
6 f$ L v8 H- Y4 F3 x+ w dwTmpSkLevel = 4;4 n" I! p& m+ k. P4 y& \; I6 o
else if( nLevel > 107 && nLevel < 120 )
9 N" X% t- g! } dwTmpSkLevel = 5;
/ m. g7 G/ J* p: s0 o4 Q# x5 m for( int i = 0; i < MAX_SKILL_JOB; i++ )
& B( b- D- |4 { |; o {
/ A$ M. Y% O9 U0 m6 |9 H" K$ i5 r LPSKILL lpSkill = &(m_aJobSkill);
( F4 v( u7 m5 v+ ?; P5 ? if( lpSkill && lpSkill->dwSkill != NULL_ID )
1 o6 w# G( L! ~5 V0 m { v0 z! j/ p& G5 g, p
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
3 B$ Z Q2 s4 t/ [6 v if( pSkillProp == NULL )
+ q/ a2 T, u% D! d6 b" _3 Y continue;
1 K! l4 B- J' @; ]! b4 _ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
: S8 f9 Z- l1 T7 l+ x7 j continue;) B, J9 m+ b" ?( b/ r$ T E' Q
lpSkill->dwLevel = dwTmpSkLevel;" i6 d9 o% ]$ r
}9 Y9 ^, Q: k) d$ n
}3 W. E$ H$ L& c" @2 Q
}- M$ L7 s1 S/ a2 D% f5 |0 m3 _- a$ G
else if(IsHero())
h9 u b% J# {% \3 h% n5 S {0 |' f" r! y, L2 Y0 d; z, P
for( int i = 0; i < MAX_SKILL_JOB; i++ )
9 v4 F% F; }- \* b# M$ m" e5 h8 x3 ] { # ?. {' Y* j. B' q4 Z& I
LPSKILL lpSkill = &(m_aJobSkill);
% Z3 `# v; G8 [+ J& V5 p6 F6 \1 X! P if( lpSkill && lpSkill->dwSkill != NULL_ID )* M e- K9 v( k) a0 Z
{3 k8 H3 o/ E6 J7 p" L0 i
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
9 R$ n( E m! M" J* h if( pSkillProp == NULL )
7 y& f- O7 W: m# G continue;. _: e: S+ N' {7 K
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
% K% H: m2 h# R( a1 K" U: X continue;, s2 {0 ]6 \& J; N. i" ~0 M& |
lpSkill->dwLevel = 5;* f2 v$ f! b1 K4 C! T& B
}- O7 q) ~1 P. Z5 U7 i3 l0 c- z
}
! q+ s2 v; z) v5 m }
" Q1 w1 j9 E; O: A8 {6 _ else if(IsLegendHero())
# _. j7 i8 j( w" L {& u9 F8 ?- s6 V% Z6 h; Q
for( int i = 0; i < MAX_SKILL_JOB; i++ )
7 ]; M( X5 n0 d+ { {
9 D0 E' u8 N( T( j& s* Y' D. h. y LPSKILL lpSkill = &(m_aJobSkill);) V/ {% Y$ X1 ~% ~; K5 ?) n
if( lpSkill && lpSkill->dwSkill != NULL_ID )
' Q/ R$ G0 Y; F, `+ |, t, ]" Z& } {* d. u4 t! |! \# @% u
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); - x9 L. |, {5 H1 f/ t
if( pSkillProp == NULL )
) l0 b; [1 c) W& W; ^ continue;
% S# Y# W x# h, X: b7 s% p5 Z if( pSkillProp->dwItemKind1 != JTYPE_MASTER)0 l; d7 @+ \. S0 Q! z% M
continue;/ m4 u0 Z/ }- R
lpSkill->dwLevel = 5;5 @ {% E# u0 n, M
}' R# \6 k4 d8 b% b# V
}+ X5 k0 E% n4 q0 Z) d {; W
}5 } ~- A9 ~$ \7 i. t
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans8 v' ? h, b" v! Z4 z% V, E4 _
if( bGamma )
# a2 X i5 O# D& O {
/ w; N5 K" e% O( U- V6 o m_nExp1 = 0;5 m/ Q- o' c) n
}
, v) k/ [& X9 o) F1 A* B% b1 F0 A" Z7 M8 ^+ p
( (CUser*)this )->AddSetChangeJob( nJob );
I1 q9 M( N0 t* E g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );% r( V& b% K+ @0 h
; O$ x( h) \6 S
) x, O3 C* A! B- ^" a( ~#if __VER >= 11 // __SYS_PLAYER_DATA8 T9 t6 l# m S$ l4 h! o* {
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );& @. E# |5 n4 y
#else // __SYS_PLAYER_DATA
& U% d. p h) ]0 T g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
+ y$ f% w/ v0 s$ F g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
1 K- i, P( q4 D% q7 a if( m_idGuild != 0 )0 T. `4 g' z1 R9 [+ ~$ I
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );1 l9 ?8 A( `$ C$ F0 W0 u5 k
#endif // __SYS_PLAYER_DATA0 J; f8 i# f9 |/ v) }& o- }
SetHitPoint( GetMaxHitPoint() );
4 s" K0 p0 K# `; J* ? SetManaPoint( GetMaxManaPoint() );
6 e. d( _3 a# L SetFatiguePoint( GetMaxFatiguePoint() );
7 l6 w8 k8 l# Y2 u* H5 O if( nJob >= 1 && nJob <= 4 )5 h: b; E( w7 F; e4 Z+ Z$ H- d
{+ h, _4 U* T0 a5 |0 G
m_nStr = m_nSta = m_nDex = m_nInt = 15;, g1 t# o' d7 ]! c- U# L
m_nRemainGP = 28;
% R; `6 n1 A `1 h }
9 {6 q2 V# {. N/ R if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )- q, u. H2 e5 i2 g
{
1 B, F+ V+ m3 ~$ j K m_nRemainGP = 118;& R: c) U# _1 d+ W2 r, l1 M
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;) L% b! w: V/ g' V5 ^3 t
m_nStr = m_nSta = m_nDex = m_nInt = 15;2 \* P1 y; s% H0 H, |1 G! ^9 r; u
}- W: a. a; T/ o
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )( K$ ^' v4 {) K3 q+ H
{
2 T/ I) s( u0 E0 N- H CItemElem itemelem;
! t+ X2 o% }& D2 J% M% w! m itemelem.m_nItemNum = 1;. z4 ?$ n( Y s
itemelem.m_bCharged = TRUE;# X6 V' X1 \$ p( E) M$ P
BYTE nID;/ V" |/ Z7 F7 c% C2 D" |# R) X- @
! D" K4 u6 u. I! l' G6 u( g& U
if( nJob == JOB_MENTALIST_HERO )( t" D8 g, U, _7 d# j
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;2 ^3 N$ k3 d3 o5 G0 a1 H5 H3 b
if( nJob == JOB_FORCEMASTER_HERO )4 s, W+ O" b1 U$ M O# J5 d
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
- X3 ?6 S5 K! ~- m: _, K& ?
: h- j% j4 |$ B0 C ( ( CUser*)this)->CreateItem( &itemelem, &nID );; O7 j9 ]3 N! K# f
}; |; C6 I1 b3 P/ b5 l; a/ c
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
8 W9 B, Q8 c# ?% i ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
% E# d$ c" b3 v3 h8 W ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );7 k$ H* m" E9 Z) R8 L* X' ?
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
$ C$ }8 j8 I: d ( (CUser*)this )->AddTaskBar();*/6 C" @3 c- \( G5 e8 [! o
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );: P T0 v. j6 D- H/ ?& m$ {2 {/ K
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
$ E0 ]0 p$ L7 C3 }- T& x ((CUser*)this)->CheckHonorStat();; r* F7 n4 h# U3 V4 F# A$ ~
((CUser*)this)->AddHonorListAck();
' V4 l9 u8 o1 K, B+ @# H g_UserMng.AddHonorTitleChange( this, m_nHonor);
6 o& Z# G3 A. ]- I- j# a#endif // __HONORABLE_TITLE // ′Tà?4 F8 f, ~7 J1 m/ W5 G
}
1 H: \, Y* b& M3 q#endif // __WORLDSERVER
, f4 ? l7 x) ]/ A# [( t( w}
+ n) @2 W: }4 B/ T5 Z+ K! R0 c5 M" a- ]
然后你进入functextcmd.cpp并添加以下' O: x+ G# z2 @; v {
# q( i$ N3 m; Q% ]1 i
代码:9 ]* \9 w- s6 t: J1 J! B
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )0 C M+ z' s" x$ B
下面插入/ R7 e; J: L ]1 f+ m! b; [# I
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
e* L& D; x9 F8 z e2 W* W0 E8 g6 K/ k# |! k" _7 n( E
然后你去
# s8 n5 B4 A# F6 ]; j E j6 r4 E1 ?" d# y; y
代码:
! F4 G% g7 S! X代码
* y5 z8 W& @* z- M g- eBOOL TextCmd_ClearPropose( CScanner & s )
# `6 Y& P5 R! u7 O' D{2 M$ F5 Y- p! {
#ifdef __WORLDSERVER
" o- L+ A; n% J8 L CUser* pUser = (CUser*)s.dwValue;
, U& h" \4 Y# ?# J9 S O2 W7 I g_dpDBClient.SendClearPropose();
Q0 i0 [) w+ S8 b3 l#endif // __WORLDSERVER, @& g; V8 D1 y5 b
return TRUE;
0 X5 W+ ~! J4 d. M9 g# X8 X}
/ u. ~7 e1 e5 L! G7 _/ S下面插入
8 @9 k3 f5 Y* O8 C* r; ]BOOL TextCmd_rebirth( CScanner& scanner )
/ q6 X- h) A7 l; v e{
( \: M; H Y0 ]#ifdef __WORLDSERVER! E, t+ P: v( t7 b
CUser *pUser;; Y0 H8 X2 z6 H' M1 ]1 f
pUser = (CUser*)scanner.dwValue;
- [& g! y3 w: |$ ]6 D! |$ wif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
6 u5 s* S) U" o2 `4 |$ VpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
9 q+ V. {' P: \# L- lelse
/ K+ G3 H5 ~( ~$ F: ?/ Y% l$ m6 p9 |pUser->AddText("你还未达到重生条件!");$ l3 @' n0 D" H9 _2 Q
#endif: u y0 K) w0 ^2 O& X
return TRUE;
$ o& _1 }7 P1 u1 n5 o' N} 7 y5 |+ W* |( L1 z, w, |4 F
, E' r; D$ R2 Q* D/ v5 G- P. B1 G! K8 s; {$ Q% n% \, o6 u
1 }2 A7 Z% l h4 }) g' p% Q: w; }0 R5 i2 n* c% F/ G# I* X. O/ y9 s( b
|
|