|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
7 e- o/ K2 `8 T! a# B/ ]
. g, d$ |7 E! a u0 ^Mover.h; s/ c3 t+ y+ B/ D- Q
代码:
+ Z7 R4 |/ x6 v# b% W* u找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü9 @! M' ?. u1 v6 y
2 b; b' A, l* _3 r' K
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
8 Z( s' X+ w& }$ j3 \! @) s2 f! m) ]" ]2 G; s2 |8 {! s
然后你去mover.cpp添加
3 S# ^* o# P0 [; A! Q! V' f: v9 t& n/ r2 T* a
代码:
1 o# \& Q& \4 @4 e1 mvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
& J( z' v: e/ I' B6 d3 `{+ ~/ h6 j: v3 P! Z& U0 q
#ifdef __WORLDSERVER: C$ _# C% _% s& @* s
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó& e( G) @5 x% _7 I/ ?1 E/ R
MoverProp* pProp = GetProp();2 c2 ]6 U& |- T: T4 ~
if( pProp )
+ \3 `+ r1 |7 C. Y4 O {: C; o6 h4 g0 z/ o5 o$ x. s" q( h
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
K% j( y+ W/ J' o+ U9 ?+ y8 g {( h- l/ W( c! A4 d; q% R1 n% U+ ?
AddChangeJob( nJob );
# |8 x' ^6 E: J) ]0 Y4 n }else{
4 C/ |: f8 K# w4 f+ f return;
) ]) `1 I! c0 c5 V% [% v+ D }
, J s5 `& B8 {2 r8 s- J int nPoint = 0;' t. d" D9 M" F# f9 I# o! I7 n
if( m_nJob == JOB_MERCENARY )
2 g9 b3 Q; @8 e0 S4 z8 ~3 K nPoint += 40;5 v# f' f" P6 M) q9 f
else if( m_nJob == JOB_ACROBAT )5 D4 z/ ^) O) G- I0 @5 R- R
nPoint += 50;+ X; E2 {* l4 E8 {$ B# W
else if( m_nJob == JOB_ASSIST )
, p4 V3 P+ l/ V/ S. t nPoint += 60;6 R; s+ ^8 e! u/ b- `7 l. I3 A
else if( m_nJob == JOB_MAGICIAN ). c/ B' v2 L( n2 y
nPoint += 90;
, V* w4 H6 Q0 [3 y else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
# F7 u- f: I `* u/ n# R+ y% j nPoint += 120;
/ N9 O( \& d' Y+ b4 x! j else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )6 b0 A$ O/ [" n# A4 U
nPoint += 150;5 W0 A/ P; h# Y2 ~9 w6 K- k
else if( m_nJob == JOB_RINGMASTER )
" X2 }- B: }9 G, H$ Z& C+ N# D0 c nPoint += 160;
: ~0 x; w. a# `) z else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )* t0 S, j& N5 E4 S+ I7 I
nPoint += 180;
( t0 b3 L! W' n else if( m_nJob == JOB_ELEMENTOR )+ c( `5 M/ w6 c6 e
nPoint += 390;! q4 a+ L, }1 Z% I
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )& E1 ^# Q( X& X# |% _. _0 }5 z" T0 M1 ]
nPoint += 120;
9 n* T5 D+ j, r' W% d else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )1 L! j0 t. Y, K
nPoint += 150;
: U! q/ u e- X" J4 u/ t F) _3 J% z else if( nJob == JOB_FLORIST_HERO )4 H& ^4 X7 P; X1 W1 v( g7 \- }8 J
nPoint += 160;# j. G3 J8 Y9 [) y
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )2 ?9 V" \% @$ S3 I j" v
nPoint += 180;
, B* c' ~- C8 R; ~7 T( h else if( nJob == JOB_ELEMENTORLORD_HERO )
* ^. C' t4 y1 ~9 D4 Z nPoint += 390;3 ?# e7 o8 f% [" F/ x
8 g# P* b n* n& c
AddSkillPoint( nPoint );
0 J. O6 ]; d+ c m_nLevel = nLevel;# y1 r( ~; |2 J' b& `3 d
" P& D2 J* f$ d# T% a4 D z4 N SetJobLevel( nLevel, nJob );
( S& c+ _2 V* C' _, e m_nDeathLevel = nLevel;
( B8 P/ H3 X3 N: B: t/ F# O" g#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans6 B. x: V8 {2 H* @
if(IsMaster())8 D2 I5 u: a* @. U/ S9 j7 g
{+ o4 y& i+ H" Z. |9 J3 o
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
1 K$ J `# g7 ~$ S( ~" V0 p' v3 r if( nLevel > 59 && nLevel < 72 )7 s* N& I+ I3 ?& u/ @
dwTmpSkLevel = 1;, j3 A; K6 c4 U
else if( nLevel > 71 && nLevel < 84 )
m' u4 i. r- ^: _" y5 Y1 \ dwTmpSkLevel = 2;
/ V, f5 X6 o1 }7 F else if( nLevel > 83 && nLevel < 96 )1 U" _6 Q; v" |& t
dwTmpSkLevel = 3;) ~/ {, I8 Q' R0 Z6 S: I
else if( nLevel > 95 && nLevel < 108 )
" W) w3 l8 K4 N L, Y) Z dwTmpSkLevel = 4;
* s/ ^# p2 _0 l- `' P4 P4 {4 m1 t; u1 B else if( nLevel > 107 && nLevel < 120 )
* Q0 x9 ?1 F- A# J3 S dwTmpSkLevel = 5;
8 R' d6 s8 |/ P/ N1 t% C* s for( int i = 0; i < MAX_SKILL_JOB; i++ )
5 k; ~7 u2 f1 R9 ^( E! t: t {
/ W; ~ A2 K6 D! ~: X" H LPSKILL lpSkill = &(m_aJobSkill);6 L. m o2 I* {4 z
if( lpSkill && lpSkill->dwSkill != NULL_ID )
0 n. F+ ~; U$ |3 G+ M+ J {, Z- j3 E$ { S* O
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); * C$ r* s. D/ X( b+ V) D1 h' O7 A6 ]
if( pSkillProp == NULL )" X: j* y5 |, W) z8 o& z$ q9 z# I
continue;
; f1 p4 R& m, w" ~ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
; M5 g4 {* G# n5 g continue;: T$ Z7 a$ Y; U( W1 b
lpSkill->dwLevel = dwTmpSkLevel;; M' B( z/ A" t6 k6 F: V9 v( ~
}
8 i4 W8 R9 P8 f8 f }
4 _+ S7 M. _( |" e }$ I4 X: c: b: G
else if(IsHero())
9 a% e# u4 [7 O7 I {4 T! s" p1 n0 x5 t" n& J* g
for( int i = 0; i < MAX_SKILL_JOB; i++ )
" c. N+ `" A( ~ @: v { + K m3 f. r0 `' E' s0 M
LPSKILL lpSkill = &(m_aJobSkill);
" {5 v1 p8 e5 e1 h# j if( lpSkill && lpSkill->dwSkill != NULL_ID )# N6 t/ z: ^8 [6 p
{
. J/ `: F& O0 V# d3 L ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
/ ?2 I- b( C- J0 q k7 p if( pSkillProp == NULL )0 P$ ?: F; ^( M9 u! O
continue;
g. ?6 P. L, J) M3 ?- J if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
6 o% y {" C J& K, n continue;2 r% u* y' X x4 B
lpSkill->dwLevel = 5;# B/ o" |+ z- M+ [& Y$ F
}
% E: Q% @- @. x& x: z6 L }: u5 o6 D1 T) r- f" X/ T. O, f
}
. Z1 r4 ^9 w" U6 o: p8 H2 s) o else if(IsLegendHero())9 o) `3 a8 ?6 O* T( V* ]/ q4 J$ }
{
# t% _+ [# L" _3 W* |4 M h) Z for( int i = 0; i < MAX_SKILL_JOB; i++ ) ; L$ { Q% ?/ P# t. u" n; Z5 J( c
{
3 F& ~# {5 p* P* B. J LPSKILL lpSkill = &(m_aJobSkill);6 n$ |3 K$ }3 L* M/ n
if( lpSkill && lpSkill->dwSkill != NULL_ID )
% H2 `$ v; V; U) s {$ H6 r3 S+ y$ l t2 y: ^
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); . l9 T+ Y# x0 x% ^- i5 L1 t9 m7 O
if( pSkillProp == NULL ): J7 \ V0 Y( j! d5 g$ V% @! z
continue;
: F. m9 y& s; `& U6 Y7 B7 F if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
0 g1 g9 Q; C- u: @" z continue;& K) I+ C$ N. g5 ]
lpSkill->dwLevel = 5;
) K& d% [7 J* r8 m0 C, V }- t; U4 I: A1 o5 U
}5 m+ d# U0 ?9 E/ A
}
3 N$ w3 d* ~9 {; Y5 x#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans; Y! p, ]/ @# T
if( bGamma )
7 |3 s# k+ q8 T {1 ]4 h& H0 R# D$ W% W
m_nExp1 = 0;+ V# w9 U. v2 S# O- G
}' f* p6 g5 L. R, V) l
n* t1 T3 S7 G; Y3 M
( (CUser*)this )->AddSetChangeJob( nJob );
8 d5 l3 E4 i0 ]$ _0 h g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );0 \, W, j# R' n+ j' A" K1 K, J5 d
, m" D4 G0 ^9 A( \1 B
' z$ \' j+ s+ d. W2 `
#if __VER >= 11 // __SYS_PLAYER_DATA
. K |3 Y# ]8 G } G g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
4 |5 ?. f* Y' X5 ^5 i; z4 F" L#else // __SYS_PLAYER_DATA0 l4 [. d( S, n# d. l
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );- \' n1 N; e" _& N1 c! G
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );, E5 O7 _1 _. g- z6 f
if( m_idGuild != 0 )2 \4 p% u+ ^2 A; c# V
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );6 _: j' A3 c6 n& L: `
#endif // __SYS_PLAYER_DATA
& d# @: _' t0 L" } SetHitPoint( GetMaxHitPoint() );
4 o! r7 y# Q C( ~9 T SetManaPoint( GetMaxManaPoint() );
$ @. S, k) c7 S' B4 E, w SetFatiguePoint( GetMaxFatiguePoint() );) Z! g: x2 p$ X0 B* u3 Y/ e0 v3 a3 z
if( nJob >= 1 && nJob <= 4 )
( X, f. f; ?' S. c& i {$ M( ]; R/ U8 ^- d( H
m_nStr = m_nSta = m_nDex = m_nInt = 15;% k& P; _. ]) T* u3 i5 }
m_nRemainGP = 28;, Z: u& ^- w6 A3 `$ a2 V
}, l) C* `9 J" E6 ~$ p, o
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
# k2 K: W% T0 @( U( \3 c {
8 u6 W7 F, O# E; H f! | m_nRemainGP = 118;
- p. Z6 u0 l$ P; @4 e! ]! [3 r2 N6 } //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
F0 `" C# J' w! u m_nStr = m_nSta = m_nDex = m_nInt = 15;2 R; w5 E- ^0 S+ l0 ]$ A
}
2 b# \5 W6 X& y. d) a if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
0 S2 P+ b% J6 h; k2 j$ ? {
8 g4 U; ]8 a" w" s CItemElem itemelem;
/ R6 u; b% k: k' \" ]/ r- q itemelem.m_nItemNum = 1;$ h! c) c1 F6 z8 ?4 ?2 m K: m
itemelem.m_bCharged = TRUE;. b3 w6 b5 ?/ }, y5 E0 ]; E0 L3 f
BYTE nID;9 {4 G3 H# m2 F. Q i1 D% q
- |3 y- T' @' c1 v; B
if( nJob == JOB_MENTALIST_HERO )
( l' m$ B* ~, U* P. o# a itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
; |" B: W; O$ K3 Y' j if( nJob == JOB_FORCEMASTER_HERO )
; T" d1 o( g) c q3 ? itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;' ]: `! u/ v( s
0 d) F# [& D8 J- Y- u1 M
( ( CUser*)this)->CreateItem( &itemelem, &nID );
! a; ~$ H/ U/ L4 K3 L0 ^+ j8 M4 V4 x/ T }
$ ~( J7 c! @- F0 Y O g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
+ j0 F) E/ m$ u: w _, N9 \4 p; { ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
+ N0 ~" E# _. V$ m, ` ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );( ^# s7 i8 T: |5 J- R. ~& p
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
, G# l$ d5 F" d9 s X" O* O2 V ( (CUser*)this )->AddTaskBar();*/
# G3 D$ b3 a" ? ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );( n5 X( b, b" ?' F
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?" n# I) D9 b7 b6 n$ Y( b- J: A. j
((CUser*)this)->CheckHonorStat();
# D) _, {5 I" }6 [" D ((CUser*)this)->AddHonorListAck();
) x1 B4 |; x9 F$ G! R. [" a. b5 | g_UserMng.AddHonorTitleChange( this, m_nHonor);& T" p& r. x# x! e' ^/ P
#endif // __HONORABLE_TITLE // ′Tà?
; U8 s5 w% E5 a* A* {# ` }! W4 }0 y! j5 ~. F
#endif // __WORLDSERVER% D! }1 _% R/ ~4 B A
}
- i) B4 w) ]# c9 b+ s* j" e9 C) i e4 u% L8 M$ P
然后你进入functextcmd.cpp并添加以下( Q+ W% g* l1 M6 b
3 K# w/ }8 ?; `4 I, f3 ?4 S0 h- d5 Y代码:( b1 }: ?* U6 X% W/ s
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )3 T& d7 O: t3 O+ j% _
下面插入7 n* H- Q4 E+ v/ n5 n6 a
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ]& Z7 Z& U& X: w$ H# ^; `
. [* _; O: ]9 l# q z k然后你去
) Y9 C3 Z5 b# G' k. g# ]5 Y0 R6 U) a4 Q( f7 ?8 t# ?7 u. K+ A
代码:3 `# }4 O" d4 A: B
代码( `0 W% g; X3 Y$ e: O
BOOL TextCmd_ClearPropose( CScanner & s )* d2 D' U x& C u
{4 D0 N/ E- n. L3 Y7 X
#ifdef __WORLDSERVER
4 W2 s2 F" O6 ^! G CUser* pUser = (CUser*)s.dwValue;
! V0 t" `& f4 _: f* G g_dpDBClient.SendClearPropose();: Y' P- j" N& F( e O' r" _# F* r
#endif // __WORLDSERVER! z" {. ]& j2 i+ i* v" M
return TRUE;$ O0 L+ i5 P' @8 ?: w! R3 b; P
}
. J. h2 k/ f2 C" m0 D+ m下面插入3 r% G5 v! h% o% t o! h
BOOL TextCmd_rebirth( CScanner& scanner )9 A; `7 `' |2 Z' I7 m9 B
{+ b+ ]% t$ b7 E, }' p$ m* b
#ifdef __WORLDSERVER
# e/ S2 [; D* |4 ]$ j0 ACUser *pUser;' t+ D- Q* r: m- |
pUser = (CUser*)scanner.dwValue;
1 K7 W0 h1 `3 L. @3 `4 uif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())8 j8 n" q; j& R- U$ w
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);1 g5 F6 a& ?6 |% o7 X0 H* U
else
5 Y4 ]! ^$ L0 c5 U: h8 FpUser->AddText("你还未达到重生条件!");
& i* o m5 t: j5 z#endif4 _' [3 n: }# b7 J9 }7 k# y& _
return TRUE;
8 W# G3 m/ H2 \3 v. a, X! e N}
+ _4 \. b3 H4 x2 r/ d( @+ D% a& }) _" i0 |: a7 i
' U9 T5 y+ Z6 z8 P+ Y& k; i) m
+ u" B7 Y3 J e) z! v
: n: I! P1 p8 @# `* k |
|