|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel5 z+ E( c% s1 u. O) ]; `5 `4 U( Q
' F& {. S- \' A o T0 J3 CMover.h& n3 m/ q" y: q: g
代码:
8 v* c5 Y- R& j J: m找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü! R4 H8 {# O* ^- f' \
/ \: Y6 U3 Y: I) y2 y4 L6 V$ E下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
2 l0 M" R! ?; [+ E3 o, p0 a4 {! ]
4 ^5 h, K+ D8 j' W; G: f然后你去mover.cpp添加4 L' g8 ^2 Y# f! B
/ p) N# S8 U# u3 o8 f代码:# d& A# p- `# x& V1 B8 O
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )5 D; i& [% ]3 t1 m
{
2 T4 i8 J/ W3 Y% u#ifdef __WORLDSERVER
3 G7 M3 }4 O! n# c7 g" P8 s" l // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
1 X$ f: k7 ]6 I8 I9 N MoverProp* pProp = GetProp();8 l# J- Y0 T/ T; b6 G$ A
if( pProp )
0 y* `( U& ]5 r( j' p, A: z4 h {
1 ~3 Z) @. @3 _% R if( nJob > 0 && nJob < MAX_LEGEND_HERO )$ j1 y6 z1 U5 K% D1 Q7 q8 n( `& v$ x
{
3 g! i7 o3 {. a. ~ AddChangeJob( nJob );! q, t, F7 Q! g X) ]: S8 U
}else{
% _, m6 r4 e# @0 k% ]: h9 u2 r return;- D2 j: e, H1 `: g' ]( D7 `
}
' C$ v' }& T3 T1 m8 ` int nPoint = 0;. S' p, `7 G( e( ~" D
if( m_nJob == JOB_MERCENARY )3 d" g K* J$ p! t. S
nPoint += 40;
8 E6 j) R# g/ ~2 G) s* ? else if( m_nJob == JOB_ACROBAT )
; e, w G5 i' Q7 j; P nPoint += 50;$ x: Z- N4 B# c0 G( n, C$ B2 F
else if( m_nJob == JOB_ASSIST )- X2 p6 a8 N: t) L
nPoint += 60;7 c( a! H( d# S$ e* e
else if( m_nJob == JOB_MAGICIAN )2 P& i# S: ~: t1 ?2 N8 H* H
nPoint += 90;3 r: m2 E* ~! b. h. y3 p
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
+ ]9 [7 g) N& g2 g9 o3 V0 U9 [ nPoint += 120;
5 m# D% v) i7 b, t else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )$ q& b+ r0 t4 I w! P. w/ \2 j
nPoint += 150;2 @- t, G# k _8 O' x+ g
else if( m_nJob == JOB_RINGMASTER )
$ e. l9 P' W# h9 ]- J! L nPoint += 160;
: ?) f& e0 D: n, L, Z+ r( J- q7 | else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )/ I5 N& R4 d: J5 d+ L- M% h# k
nPoint += 180;2 _: a/ j" ]5 f9 s& S
else if( m_nJob == JOB_ELEMENTOR )
4 K& [" Q% C0 Z% w0 Q& K. Y; a1 b nPoint += 390;- a ]2 @% S; S$ o3 W
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
' ]7 G3 y0 b$ S" ? nPoint += 120;, D8 a% ^& G" O! @$ j) A& X6 H
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )* i% r/ Q; j* y
nPoint += 150;
6 `) M! \- `6 H. j else if( nJob == JOB_FLORIST_HERO )
% V9 [- M& x6 S6 E nPoint += 160;5 @. C: X0 x# e) k2 W
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )' Z% |2 v" B: C1 q5 h- {( x
nPoint += 180;
3 z1 Z5 X) V5 `: h: w2 s0 ] else if( nJob == JOB_ELEMENTORLORD_HERO )4 W! ^& W- D: D* {
nPoint += 390;1 Y3 |& o$ l- z4 c
* h, i8 B" W# \3 W8 o7 w
AddSkillPoint( nPoint );
0 Y# @) C1 X% [ m_nLevel = nLevel;
4 L% P: \- i& R# ]8 L" j) O; O
' ], G; h y& r9 q1 W! `" n! r SetJobLevel( nLevel, nJob );" j7 _# w8 P. x8 Q. |1 G
m_nDeathLevel = nLevel;
5 q. j+ c1 y, x/ O; |; I4 C0 K#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
4 z/ L% f( Q: G! |3 t8 O5 J: F if(IsMaster())
0 W8 x; t( s3 l0 M. C: ]4 O {
% V, T3 _2 \& k int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
" b3 G9 F$ Q9 z1 ]( o3 g" c- { if( nLevel > 59 && nLevel < 72 )
- i, F) B7 K: ^- r. |# Q dwTmpSkLevel = 1;
+ b4 \5 _3 T3 I1 K! _9 {) @ else if( nLevel > 71 && nLevel < 84 )
5 @7 H% w4 |) E6 B7 R* D' T4 A# z dwTmpSkLevel = 2;
% W' E) o3 _( H' f* }& c6 d else if( nLevel > 83 && nLevel < 96 )) A: v' z6 W+ ?" N y# a
dwTmpSkLevel = 3;! i& Q9 m/ i0 ~6 ?
else if( nLevel > 95 && nLevel < 108 )6 G. F9 c% Y; d* L- O
dwTmpSkLevel = 4;! Z8 P4 ?4 w3 K" R
else if( nLevel > 107 && nLevel < 120 ), _* x3 z% y$ Y" x: y+ \
dwTmpSkLevel = 5;
! b4 n6 B g' |, L5 G& i8 u# B for( int i = 0; i < MAX_SKILL_JOB; i++ )
R: g( J% H, }. {3 _ {
( ^3 m- L! C8 ^( ? LPSKILL lpSkill = &(m_aJobSkill);( W; F- j( c) X N$ d
if( lpSkill && lpSkill->dwSkill != NULL_ID )# Z: M% Z' S9 X: K) J* r$ M
{
; R9 [4 G/ K6 Z6 z! c- y: j( D ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ' i6 \: y- X& n9 d5 I+ S
if( pSkillProp == NULL )3 B0 v3 t: y* W6 L! A
continue;
" @ ?6 J' z' Q9 `1 n; p% C6 F& l( m if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
& \4 e* \. Q1 M) c* l( p7 Y continue;% J# ~" ^8 \* E4 \& ^( M
lpSkill->dwLevel = dwTmpSkLevel;& X; ~/ G8 F" N& R4 p! a
}
) r: ]* o% `$ |5 v3 ^: o4 ? }
4 [& o# N7 ]0 h+ T }
! @. X( W' g4 T else if(IsHero()); \1 t/ e9 V4 i( U5 e2 k( ?( U
{
4 M% G4 z, M, u5 I% p2 m4 ?, x for( int i = 0; i < MAX_SKILL_JOB; i++ )
% E1 a6 v9 m! z' f { 0 \2 P- s# n4 P- b2 A; ]6 Q$ m" `
LPSKILL lpSkill = &(m_aJobSkill);
5 \: a. e4 d8 j* }( N% B) F8 i if( lpSkill && lpSkill->dwSkill != NULL_ID )
( u- p3 b0 D, A* G& { {
& W4 s& x% o L; F ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
: A8 ^, d, g& O if( pSkillProp == NULL )
6 k1 P0 ?! ]9 C' E0 U continue;
* H- g5 h, J6 ~6 {4 U2 l. v if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
9 T @# i. B+ F; _, X continue;* \2 {0 Z4 r) L* D
lpSkill->dwLevel = 5;
( y+ T" k# x2 B& J" Q: S7 f2 X+ G }
; D- ]( ~) I% G! }$ P) I( q }
/ l: x7 X$ R* G9 k$ j F' R: b }
/ x5 D! J% w6 x; B+ P* n+ X/ z* D0 S$ J else if(IsLegendHero())
9 K: A$ o, l x9 P {
0 b# u9 K- z; {! H5 c: q! ` for( int i = 0; i < MAX_SKILL_JOB; i++ ) # @) I" S3 v( y( e' L* ?: X
{ 6 u; b# k# H( d& f' s9 ]
LPSKILL lpSkill = &(m_aJobSkill);( p& P: l) J' Q- l+ h- ^
if( lpSkill && lpSkill->dwSkill != NULL_ID )2 w# s1 i" h _
{$ u$ k$ W8 O# e7 [) M; P: T
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
! E3 U, t* X! j/ x if( pSkillProp == NULL )9 G! l9 s6 w1 m* U P
continue;
/ W$ ]- ]& A2 R# `( ` x% D, P: T- X/ b if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
; n' I3 a4 [* I; C; _$ D, U" U continue;
* ?* v7 w2 f- J lpSkill->dwLevel = 5;& f7 y6 T: g2 z4 ^+ p( T/ `$ E
}
; `: L* T1 a) V2 e6 w }& T# \/ W0 {- S1 M
}
( N7 a, u& y7 c7 H0 c" q9 {#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
8 v& K6 G, M' `) { if( bGamma )3 z8 [, J0 ?2 S( e
{
* _9 v1 y6 O4 g' m4 ^, O. d m_nExp1 = 0;
/ E% A" Z" v" k/ O4 R }$ W2 H: S! t" o
+ y+ [3 l; u. ^, a, K- v ( (CUser*)this )->AddSetChangeJob( nJob );
/ ]1 t% Y0 i, } g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );8 W/ i0 J# F# e; J5 O! l( {
1 P: w8 |+ Z! N) Q, Q2 N1 C) y: K1 f! d- `; F# A5 R- v
#if __VER >= 11 // __SYS_PLAYER_DATA
3 W! N1 l4 k2 G. h g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
5 @" H" m z- z: b$ B7 }#else // __SYS_PLAYER_DATA2 h' z8 e6 ~: H: u
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
! f0 X0 k q/ q( S g_DPCoreClient.SendFriendChangeJob( (CUser*)this );% T+ H( E M1 W
if( m_idGuild != 0 )
! f0 B+ f) I# ^. Q: H! {$ n g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this ); N) B$ |5 n! O6 O) d0 y4 i, E, ^' t
#endif // __SYS_PLAYER_DATA
U" ~# a L: Y9 F SetHitPoint( GetMaxHitPoint() ); |! p( i0 e& |) c
SetManaPoint( GetMaxManaPoint() );4 W4 ?9 d8 T, r4 a1 }0 _( ~
SetFatiguePoint( GetMaxFatiguePoint() );
4 p; x. s% F9 E1 @% C I8 @8 D if( nJob >= 1 && nJob <= 4 )
% G7 \6 @2 I! x {" V* q# c( Z: g
m_nStr = m_nSta = m_nDex = m_nInt = 15;3 ^+ m- H; c3 N8 T5 F7 i6 } b8 _1 t
m_nRemainGP = 28;# n2 `% P$ k$ ]
}7 c3 z5 |' T/ T, C7 U$ S; _
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
( g- s: A4 N# M8 b: R$ K8 @3 t {
( S# Z, g. _# S5 k" w# f% X m_nRemainGP = 118;
0 L ^7 l( g; R2 v% O: C% y //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;. J9 B0 s& X/ _; ?1 }
m_nStr = m_nSta = m_nDex = m_nInt = 15;
: z9 }2 E6 [. E; K; q' R }4 R" A+ F8 m' g& K- T
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
: i8 R" ]- `' ]' C8 [5 @+ w {: [, v6 Z/ G! Q: a; O' n8 O
CItemElem itemelem;' w& j4 ^: f) J, L* `/ N
itemelem.m_nItemNum = 1;
: Q9 p# T8 ~, ` itemelem.m_bCharged = TRUE;
( [7 r" B. y4 h0 j, y BYTE nID;
/ T, A7 @! A5 Y0 `" {& ]; c* N
1 C- q9 D3 g! y# U; N4 r/ u if( nJob == JOB_MENTALIST_HERO )6 |& R# u% j; S" m7 M. X
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;9 h) _1 z6 r- a0 v! V
if( nJob == JOB_FORCEMASTER_HERO )
, R" I2 w9 w& i% m' m2 U8 z itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;9 d6 W) Z* ^* M
$ s- E* x5 i) E: O" d+ t- }6 Z
( ( CUser*)this)->CreateItem( &itemelem, &nID );
D2 u y" [ b* v }
8 {: s/ Q0 s4 X9 A g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
% I0 X0 I+ ^9 F ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );) @' }$ y* B( w$ W" t3 v
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
& Q3 h% @5 q( s% R* I, g' c, i /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );! ?0 k, H& o3 F+ L' T8 x' e! `
( (CUser*)this )->AddTaskBar();*/
! r1 V9 t& ~4 F7 x2 c* l4 Q ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
* Q9 u3 X7 ~2 a, I# v#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?8 h, _- v' I( Q* q x! Q9 {) U
((CUser*)this)->CheckHonorStat();0 T0 R8 ]% s1 ~% e* Q5 @0 J0 R
((CUser*)this)->AddHonorListAck();
0 E i9 b7 q/ B. N" b g_UserMng.AddHonorTitleChange( this, m_nHonor);
$ S( m3 P1 Z+ U#endif // __HONORABLE_TITLE // ′Tà?
3 J' P! e, B6 A( P3 K4 K }
9 |3 J( t, G. w4 A7 W#endif // __WORLDSERVER7 R6 e' I2 L5 H( }4 P6 u
}
3 z' S/ P. f8 [$ r6 _* X
1 I6 ^1 r$ z- t# p+ g然后你进入functextcmd.cpp并添加以下
# j- R0 d, c& B3 F4 r+ V
1 `4 A1 q8 L5 Q7 B; U# ]2 ]代码:" k6 U! v; x: u6 k
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ). V0 L% M" i2 w2 ^( |2 N# x1 B
下面插入
+ O5 A: v* b k7 I8 K/ ?9 Z/ kON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ) u I7 n- F0 R; }
) `3 A% I. i+ F8 Q' x% K
然后你去6 U8 S- T& T6 \0 U
5 p$ C" ?4 z8 K# V8 Q. F4 p0 ]/ }; S
代码:, I: P4 w+ g+ J5 V
代码% B6 ?: ?" T/ Z# h J# f
BOOL TextCmd_ClearPropose( CScanner & s )
- f8 t: Q8 U5 ?. N+ `+ O{
4 p3 E* r" m1 Y/ k) B$ {! c+ N#ifdef __WORLDSERVER- i w2 F# y! ^1 R
CUser* pUser = (CUser*)s.dwValue;
) d G% {. H, D: k g_dpDBClient.SendClearPropose();' |' C: m% F: ~6 l; n0 v* _2 T3 @
#endif // __WORLDSERVER$ Q! F! k' y; ]8 n
return TRUE;
$ g. K$ l/ I2 B: T- R: M6 F. ^}
2 t8 r) [ N" }$ F5 u: _下面插入3 F, S; b5 v Q# Z! Q, O$ E k7 U
BOOL TextCmd_rebirth( CScanner& scanner )% `! [0 A! r( @
{
7 [0 F F( x3 E# `* X- w3 x#ifdef __WORLDSERVER
* G: ]6 |7 X, R! UCUser *pUser;6 [: V- }' U* ^* k2 B- q
pUser = (CUser*)scanner.dwValue;' B# {5 d0 s" X3 P1 A
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())( M3 m6 k! a L) r4 v2 X q
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);* T, m5 K8 y( H, W2 h* i( T/ m
else. T5 t0 y% U* p. j. }6 t: [
pUser->AddText("你还未达到重生条件!");
! ]" A& H, _" F! m4 x Y#endif
- _# u& d3 c1 |0 S2 ]8 V) D* ureturn TRUE;
: q+ _) b6 W" `& d}
$ A" |- z) _0 T/ D8 m
2 N0 e6 K. G! m. P8 ^- T! S4 f
9 x. O$ B3 y$ v! C
- ?) E" K$ g" B! t( Y6 L |
|