|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel X7 F) F1 S0 u0 h8 P
, [: p( t5 x& @" p5 ^
Mover.h
, t$ f0 a0 {3 x; X( H( ~代码:
' l( R7 z. f, P找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
+ C9 g' D/ F& i6 w f
+ y. y6 k1 E$ c; Y下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
5 b& F3 g' b& n9 n
6 {2 C+ V8 i* S& ?然后你去mover.cpp添加
& H* e& {* e0 a6 s' I) r+ e
; z9 _( ^) y4 P2 n代码:
( q, R& y: X9 T3 {3 S4 c& Ivoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
: I- q/ r1 f/ P* F{4 C- M6 X- o) z( A* K
#ifdef __WORLDSERVER
( | v) m6 T! ~; v/ ^+ p // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó' V, k. L; _ w0 {5 A
MoverProp* pProp = GetProp();$ P( P. _& I1 S- z, r3 M' g& _
if( pProp )
" [3 f% X( @. B' S {
. ]6 [) s7 J" ]$ m- c if( nJob > 0 && nJob < MAX_LEGEND_HERO )
. }" `5 G& h3 o0 Z) @ {
6 x% ?2 P! N' _; { AddChangeJob( nJob );
_# Q( J) V3 u ?* h- R% ?+ ] }else{
9 J8 ?- Y- w- g1 J$ s8 N return;
9 p' E* i: M# z; a9 ` }
& k$ l6 Y! Y- Y4 X int nPoint = 0;
. m; Z9 n/ m3 v+ }! u6 \ if( m_nJob == JOB_MERCENARY )
a& ]$ |& S7 K nPoint += 40;
4 M. t1 Y4 N, B* p else if( m_nJob == JOB_ACROBAT )
1 r: O- y T2 R% o: Q& h, ~ nPoint += 50;
% R9 z; M9 }1 j1 S else if( m_nJob == JOB_ASSIST )0 o" ~8 c" k* F9 a* |
nPoint += 60;
5 M% p/ K; U2 p8 k" L else if( m_nJob == JOB_MAGICIAN )" U0 ~( r* b, }9 | h
nPoint += 90;0 u% d0 u# k7 K4 v9 L6 C" F4 p
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
. X" v" T, x. u4 G) @7 _ nPoint += 120;
: Z! C9 d# M1 h/ L; `3 N7 Y, b else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )# k; {9 O4 n& `( ^ u3 @
nPoint += 150;8 F: c* \0 i% J& o6 b; ]2 r- U6 Z( S
else if( m_nJob == JOB_RINGMASTER )( y3 p5 w1 B9 k$ e* ~
nPoint += 160;
/ [ q7 w( X$ F2 ?5 c else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
1 [2 z8 S5 i/ @$ I- [) R1 j9 O' j nPoint += 180;5 ]; r7 E# K5 `9 j$ B+ _$ {! A
else if( m_nJob == JOB_ELEMENTOR ). I2 Z0 a4 R9 F4 D( I
nPoint += 390;0 M# S' T$ z G) c7 w" l
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
: L8 M( @" M {; Z( Q6 o nPoint += 120;+ \8 B: a. O- a. y
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
6 c7 T) b9 {* {. ?& y0 _ nPoint += 150;9 u) N9 P2 }( E2 @0 }$ P. G
else if( nJob == JOB_FLORIST_HERO ): c0 [, g6 J. l/ H! e. L
nPoint += 160;# `' t; Z+ }! _
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )8 N4 ?( c9 y9 a9 I) O% ~
nPoint += 180;) R! b7 g2 a5 s: s- b! Q( ]
else if( nJob == JOB_ELEMENTORLORD_HERO )+ S7 s3 b* T( _+ h5 U% S
nPoint += 390;* C9 D% B$ A# i
8 [$ U8 s5 Z$ }" t* f
AddSkillPoint( nPoint );
4 N" U/ Y: D' H6 V$ p m_nLevel = nLevel;' p( g$ }. C0 _8 [+ N, \
& F; e4 Y8 y( K A SetJobLevel( nLevel, nJob );
8 A- P9 s% H$ ]3 a- p m_nDeathLevel = nLevel;) q; y3 Y, }8 r) w% X# J
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
) _0 [2 @# `) N2 {* }4 ^' J, y if(IsMaster()): S' P2 ]0 v4 N" f- [' E0 K
{7 j: D7 A6 N7 F: m& s0 e( H
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
5 Y% a7 I* m/ O# t8 @& |' j if( nLevel > 59 && nLevel < 72 ); v4 |9 s, r1 L9 V% _2 B5 s
dwTmpSkLevel = 1;* q$ S0 k$ X+ {4 B
else if( nLevel > 71 && nLevel < 84 )
+ Z* B5 z7 x% T9 m dwTmpSkLevel = 2;( V# K6 w: X" z+ u
else if( nLevel > 83 && nLevel < 96 )
% ^- }& B. ~) A$ @' X! T dwTmpSkLevel = 3;# @: _' w9 Z8 M1 b) y, a
else if( nLevel > 95 && nLevel < 108 )
3 d' d7 m( Q5 u6 l( ?% S dwTmpSkLevel = 4;
* r/ A$ M1 _% }7 `. T5 n0 | else if( nLevel > 107 && nLevel < 120 ), n0 P! V! v/ K* T& t
dwTmpSkLevel = 5;* v7 ` r- x* c1 Z: L8 L: A
for( int i = 0; i < MAX_SKILL_JOB; i++ ) - E( y7 D! @0 z% C: `$ |
{
! y, H+ y" t: F& g. U% [0 \/ v- k LPSKILL lpSkill = &(m_aJobSkill);
% a8 c6 P s! Q3 o if( lpSkill && lpSkill->dwSkill != NULL_ID )
3 D7 {1 W: U3 K* w {
8 [. K3 i' t- X, ` ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
3 ?% `! [* n- |2 f if( pSkillProp == NULL )
1 G X P# w2 F/ [ continue;1 m; Q+ F' C4 S7 w$ R2 u f6 I3 M
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
6 P1 O. H5 e! k2 A5 Q( Y& \4 w continue;% ?4 S: z% c( j( P7 ]
lpSkill->dwLevel = dwTmpSkLevel;
. ~9 o, n2 ^6 Z( o' t/ @ }4 w1 w& R2 V P# }5 L
}0 e' i/ t6 {' \- i V, u
}4 z7 q* ?/ \* N; H7 o
else if(IsHero())( @: u/ r( X; x Y9 O: R' v" _
{. J& L4 o5 `6 i- P$ ?
for( int i = 0; i < MAX_SKILL_JOB; i++ )
+ j: u: T8 _3 n7 U' A5 K { 8 L! k9 Q" o* L
LPSKILL lpSkill = &(m_aJobSkill);3 @! ^4 z3 V7 x: H' r, b6 `5 H
if( lpSkill && lpSkill->dwSkill != NULL_ID )
) H2 G/ @9 ]" V' {" ` {
5 G4 `' K9 i4 H! N# w& m# k ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 1 Z) C) U2 b' R
if( pSkillProp == NULL ): b O! i2 |* ~/ E g
continue;
( O& t0 f3 ^1 [- F8 L if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
2 e8 s& |; F+ p# Q- r continue;; b) \/ b7 U0 P: n; w, l0 H
lpSkill->dwLevel = 5; `, b9 ^' N# m, A) u
}
u3 M( l" J; s# t9 }1 T }
6 H3 C, _/ g8 m: ]. W* Y }% I+ K& m( D6 Y) Z w* c2 P
else if(IsLegendHero())
8 {& p: b+ }! ]' n4 i- Q" Z {3 A$ f: N2 s/ a
for( int i = 0; i < MAX_SKILL_JOB; i++ )
4 C0 H) g4 u( ^* p {
" `2 }7 y0 z" ^3 X LPSKILL lpSkill = &(m_aJobSkill);) U$ a1 A" B, N0 p. d; G, B5 M) G6 ~
if( lpSkill && lpSkill->dwSkill != NULL_ID )
$ k2 x! |0 x' g' O( F! I9 h) N" j {
/ I3 m. x# y }4 ` ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
5 A9 _* n, A( O( Y if( pSkillProp == NULL ): [! Z0 s8 c, P# S: Z7 R9 t' n
continue;' @. O9 c! x9 r1 v. C1 w
if( pSkillProp->dwItemKind1 != JTYPE_MASTER) W; D+ \# h+ w A9 u
continue;* ~: P6 `" l6 ~2 X' r9 G
lpSkill->dwLevel = 5;% u& A5 z' ~& h7 c9 J: M
}
, `% }3 h+ f, V7 [% [ }0 `1 @9 Q3 F9 l
}7 X2 u: |2 t+ d0 u1 J, |' W; F4 c) H
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
0 ]) `& {( Z# H# A if( bGamma )
2 [# o0 }2 w& \$ |& I {* \# _: z3 `+ c# m S. G
m_nExp1 = 0;2 L! g2 M4 m, p9 p9 U
}4 ~5 Y/ b5 T. I( ?5 j
: o/ C- D: G1 a0 @' a# [
( (CUser*)this )->AddSetChangeJob( nJob );7 J5 m- W7 @6 i- t# n$ U) E2 E" B
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] ); p( M; I1 V' ?
7 ~! ^6 C' O: [) a5 g) j+ o$ d* c* O
7 r3 i" D9 D7 {& ]1 U#if __VER >= 11 // __SYS_PLAYER_DATA; ?; C U1 q$ G- S! u% J% l6 t
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );( g+ b* s1 C- y8 Z
#else // __SYS_PLAYER_DATA
( y S4 J( E, X0 M5 U g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
5 g7 B9 S) t3 K% H. r9 m- ? g_DPCoreClient.SendFriendChangeJob( (CUser*)this );& J+ a8 x A* |8 d6 I* f6 @$ ?
if( m_idGuild != 0 )
1 a; f5 m2 k. [5 M g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );6 L" s V- {, N ?" T% S5 R5 l% y
#endif // __SYS_PLAYER_DATA e4 u+ \3 b `) D2 _
SetHitPoint( GetMaxHitPoint() );
1 V' \4 t0 z9 o. U" E SetManaPoint( GetMaxManaPoint() );3 R9 O6 z3 T; d1 D: G+ k# h2 t6 K4 ^
SetFatiguePoint( GetMaxFatiguePoint() );! X. F+ _4 I. R- j6 Y
if( nJob >= 1 && nJob <= 4 ): K) ? B+ ?: i2 U
{
8 b& O5 F5 \% w) O; X5 L- _* c m_nStr = m_nSta = m_nDex = m_nInt = 15;
, w$ ^ ]2 H, C: J4 W m_nRemainGP = 28;4 V6 u* G: L9 O8 P, E2 s9 J
}% C' Z3 a2 {& S4 R, x6 j$ W
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
+ {& B8 ]% ?2 C {
3 ^# u1 v7 n6 y4 x- h9 g% T m_nRemainGP = 118;
7 g" r3 S5 [7 A" f6 D! ~+ B6 Q) f //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
" Y' K" z; b* L- K8 I m_nStr = m_nSta = m_nDex = m_nInt = 15;
8 Z1 z3 V$ d4 s" V$ F }+ @# d. g: ?% Y6 ^
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ); L: `- x$ o2 E3 g
{1 Q: M6 ^- R# D2 R) b) s. Q: m
CItemElem itemelem;. A% @) K8 w! g
itemelem.m_nItemNum = 1;2 C5 x5 |: B4 B+ j; g
itemelem.m_bCharged = TRUE; B. t) O& h/ O6 y* {
BYTE nID;/ C ?8 L6 r4 I) h- B) Y5 t! u
1 |& N/ A% e6 o9 @/ U
if( nJob == JOB_MENTALIST_HERO ). P, E. }2 H& J
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
- j- A% E9 j$ x2 A; }0 x if( nJob == JOB_FORCEMASTER_HERO )
9 R8 d+ `5 V! F- n itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
' a* c( h% A6 K( t9 j) }1 B5 l+ |+ P0 G( i% h# b0 z. f. `
( ( CUser*)this)->CreateItem( &itemelem, &nID );
/ Z: _: w- H; \0 x; g/ w }- Y- N! l; C/ Z. O
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
8 d1 ?9 y, @. O6 |- v ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );) m. j; K0 a4 s0 w( ]
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );% H* B3 q' p. r6 ^/ T# \# w; X/ v! M
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );: s$ Y r% W1 L# C, G3 J" Q
( (CUser*)this )->AddTaskBar();*/
! p6 T' M" J7 j0 Q6 z9 C ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );0 ]0 A' x$ c0 W$ j
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?2 b4 ^5 f( D7 q8 D$ }& ]
((CUser*)this)->CheckHonorStat();
, |# Z/ T5 d- w, o$ o* B ((CUser*)this)->AddHonorListAck();( V4 S+ B* @" W
g_UserMng.AddHonorTitleChange( this, m_nHonor);0 i) q0 h! X4 q# X3 ?/ f8 W
#endif // __HONORABLE_TITLE // ′Tà?
* J7 Q& _0 Z7 J% B; k6 o }
, y# z9 J4 |& [/ {& d6 ~/ X#endif // __WORLDSERVER9 F1 c! `# Q. Y4 |9 L8 [# A. r( W
}
) K. l M7 T* L% }: S4 R6 l! A7 b; [( a9 ?7 m3 U( a
然后你进入functextcmd.cpp并添加以下
* ?. e7 ]( L0 _4 l! `8 E8 d% }6 X9 A- M
代码:3 i# e; s3 k3 I$ ~
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
' L" m/ S( m' s( E( ~; h- K' X下面插入 t$ _1 w- W2 }7 R
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) " |& P% S6 `$ f. Z. f% T# V* K9 M
. J7 s& ]- N- |$ X
然后你去
& |$ E. O8 e# r3 [1 J6 p D$ W# U6 x5 P8 \7 O" I. y# M
代码:
6 E* x7 ~8 W: a! r! K B代码
3 f/ E) O C0 m O5 T$ |BOOL TextCmd_ClearPropose( CScanner & s )
- }6 V7 [ O: W1 q$ d{
& l4 Y( @$ I6 D; b#ifdef __WORLDSERVER
+ S, d( F& K3 A0 k/ c8 ~3 B: t# m CUser* pUser = (CUser*)s.dwValue;1 s8 k& [% o( |+ F; z3 G
g_dpDBClient.SendClearPropose();
* U) e& z9 I2 u; M#endif // __WORLDSERVER& f/ b3 S2 b! }, j; L
return TRUE;: Q. l: g7 |7 _/ ~, C8 c% M& r
}6 D' `3 @2 M& ~3 {
下面插入
- ^7 m t# g3 \- f5 l5 l0 JBOOL TextCmd_rebirth( CScanner& scanner )
8 u& O% t: }4 D8 _$ J# p{
% N$ W0 S+ _5 ?! W5 q% `2 U' L! }' H#ifdef __WORLDSERVER
9 R$ z* c1 w* s0 j1 rCUser *pUser;9 U7 B, A b, L3 O4 Z
pUser = (CUser*)scanner.dwValue;
$ X/ i" L5 r/ `! Q& Gif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
" f2 y6 }/ K( O$ D* Z KpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
( _. Y+ _, M4 a, zelse: K& W. o$ }4 {3 d) k
pUser->AddText("你还未达到重生条件!");
* X5 Z" G0 X/ M& g- y' ^ I#endif, a' @( x3 K& o# @, t0 ^; N
return TRUE;0 \: B+ p# C0 _/ S8 y" j1 v
} 7 {( B& s( y+ `0 h/ w. S
! ]3 z2 }2 B D5 @1 V, D: O
& I9 f& C8 q, b& I$ K5 o4 c# _9 [7 u4 ]- x y8 G$ N
% o0 ?$ t* ]: {9 N$ f1 u5 B |
|