|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel1 f8 I- t. C+ B1 J8 C: p6 `* ~7 Q& C
' d: u4 s& C$ MMover.h }; F) D9 V% ~3 u3 C x5 n7 r
代码:
" ~3 n& j$ @% H4 @2 P找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
$ B O0 J# D( E& f ~
& K8 C) ], e/ b, q下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; " X7 A, J, ^) T+ W9 g' j* n
# F, C, `# S7 ^. Q4 P8 i
然后你去mover.cpp添加4 u! G4 t/ u8 E7 n, f$ a, u
/ w% P3 s* I8 ~. {" c# F
代码:
. K) F& M1 {3 _" R; b1 T& Jvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
( \0 [; O+ d6 |, l7 _3 Y{
5 x! [0 j! O; y }0 @#ifdef __WORLDSERVER- x: X& X8 J# z/ ^) R( D
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
0 [, M2 V: ^# P, ~$ X MoverProp* pProp = GetProp();
) Q) n1 X1 Y( ?0 c if( pProp )
) R7 N+ S! l) a& { {0 M! Z; x0 I2 }1 }) I" G% O- M
if( nJob > 0 && nJob < MAX_LEGEND_HERO )) A a+ M) h! o, b5 o
{* u& ]7 h0 [8 A* a& o. ?4 S0 \& z
AddChangeJob( nJob );& |) E! x5 W. _/ _+ m: R! y
}else{( f- T( ?, ~ Q3 p
return;
# T% {" q! }# c4 H; C4 K }: s, `( ~, G9 \" g# x7 j! _; u
int nPoint = 0;- j) D, q7 K6 P8 O0 z4 j" r3 ]* o
if( m_nJob == JOB_MERCENARY )3 v6 m! _# x8 u" h0 o' ?% L
nPoint += 40;
$ j1 `/ o2 _# R% e+ C; B else if( m_nJob == JOB_ACROBAT )( \, L' M& g4 _8 G
nPoint += 50;
3 |$ V4 T& K } else if( m_nJob == JOB_ASSIST )
- h R9 x1 s5 c8 ^, A6 q D d5 H: X nPoint += 60;
' d& `) N2 R2 [4 ^7 N else if( m_nJob == JOB_MAGICIAN )- b9 N- B, x9 T# C6 e
nPoint += 90;$ }( T5 E! x5 e' c1 h
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
" `5 u( u- E$ q2 U3 @2 N nPoint += 120;
3 P& [/ M; \) a' o" z- ] else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )) n ~+ G% n6 I4 P0 Q9 L
nPoint += 150;
! y' V ^# V" r" x. w else if( m_nJob == JOB_RINGMASTER )
5 w! y# j& X# k' k7 B9 [ nPoint += 160;- n/ l, w# k+ h1 M( i
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
{5 T! h0 ~ l' E6 x! Z: n nPoint += 180;
1 f' @8 a; \( M" W& q else if( m_nJob == JOB_ELEMENTOR ); p. ?! E; k0 |! ~
nPoint += 390;
1 M+ \6 R e. G! n5 e5 b4 }, l- E! d2 b else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
7 Y- y5 a3 G) r' B nPoint += 120;% ^. H8 a8 q9 v- s: B9 [5 S v
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
% Y* D v$ C! q! n* x/ q' S8 E nPoint += 150;
% x R, T: [# g) w else if( nJob == JOB_FLORIST_HERO )
( B j: z5 d# _, R" Q' { nPoint += 160;
6 M8 x; Q q" ?( [5 d else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )1 U- z- {1 _, R4 W G* s! |
nPoint += 180;0 E# |8 b9 l" j; A. m
else if( nJob == JOB_ELEMENTORLORD_HERO ). G: W6 e6 @9 K( F& D
nPoint += 390;
6 h6 f, Q6 K7 C/ j, S! d0 {0 x2 o% J4 ?" R$ Z2 I
AddSkillPoint( nPoint );
. z6 G- W6 ?" `0 V) h2 u m_nLevel = nLevel;* E& R' ]' T) f" d; o5 [4 b
; L, C2 m7 s% O8 ]* X1 C1 m SetJobLevel( nLevel, nJob );
+ C* q; J2 i8 v/ L m_nDeathLevel = nLevel;
$ m9 {+ \8 C4 }#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
9 ]% \3 d5 q1 Z% C# [* V1 l# s5 j if(IsMaster())
q- N$ j7 z+ ~! a1 {2 p; o9 c* Q {" W4 n2 O! X3 W3 L; @' F
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108! J) [; v" l. }& \9 \' D
if( nLevel > 59 && nLevel < 72 )4 v4 U7 A& @+ q- E& x* O; P
dwTmpSkLevel = 1;
: m" [# k+ d2 q else if( nLevel > 71 && nLevel < 84 )
, O1 L' P, e- C3 }! g dwTmpSkLevel = 2;
: T) i* L4 Z G! ]: h, w$ {9 x else if( nLevel > 83 && nLevel < 96 )1 D9 c) p! T, C, N/ p6 ?
dwTmpSkLevel = 3;9 r2 |" l, i- C/ o, D7 H; n
else if( nLevel > 95 && nLevel < 108 )( r( c+ f# E, p) [ J
dwTmpSkLevel = 4;
c. M; j1 ]' ~, L7 C else if( nLevel > 107 && nLevel < 120 )
% T1 w* ^! n- S K& l dwTmpSkLevel = 5;9 y2 f- y& P( M, X. e
for( int i = 0; i < MAX_SKILL_JOB; i++ )
i! U6 E% J* z! f% q+ ` { ! o; @5 C% _7 T7 ]1 M s0 O
LPSKILL lpSkill = &(m_aJobSkill);# y A' R5 i; C, ]3 f! ?( |/ I9 b9 v
if( lpSkill && lpSkill->dwSkill != NULL_ID )
# P" t% W1 [& I/ y {
! b$ B' y1 P+ L2 f+ e" K4 Y2 _9 ` ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
% T9 z/ N- [- J/ o. E+ X if( pSkillProp == NULL )! M0 t: m. I( X% K9 i) J0 G' [
continue;1 m" o' y4 @ ?: q5 n6 n
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)2 F* U. X6 d; q
continue;& e8 K6 ~% \. f/ N; o
lpSkill->dwLevel = dwTmpSkLevel;
1 V: S1 y* D/ o, m, u: m }# r5 v6 Y3 w) f; Q
}0 f( b+ S6 ~4 Z0 g
}
+ z+ n- c9 ?' u, h2 b else if(IsHero())% {! c! g: F* A5 D/ O
{
% f4 s8 Z @# X, x2 ~0 X for( int i = 0; i < MAX_SKILL_JOB; i++ ) / k6 }. M: {& T/ s3 _
{ * J, a8 M& H; D
LPSKILL lpSkill = &(m_aJobSkill);3 t1 m. c y/ a) W1 \# Z- X7 i; U" C
if( lpSkill && lpSkill->dwSkill != NULL_ID ): A5 R- a7 L/ c& D8 T+ G
{6 t& {2 I- G, \7 \! v
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
" ~9 Y" G; e! L- P2 J4 r: V if( pSkillProp == NULL )4 @- O' N$ E1 _( L; r g7 r
continue;
. m) [% S0 ?1 P( i3 S if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
2 }" l# x/ V+ m' F continue;
* J* l* ?* A( ?/ ^) Q% p7 J lpSkill->dwLevel = 5;$ G) ]9 X; i: a" [- t
}1 ?! |. [) E2 ]
}
9 S9 P' J4 Y/ X: A4 h }2 M# J6 g6 l s4 n
else if(IsLegendHero())
) ?) E9 d6 a6 M; D5 A& T7 T" r {
% b- e0 i) w4 L9 z% L2 K0 O for( int i = 0; i < MAX_SKILL_JOB; i++ ) ( u* ~% p6 Z# ~* X& c! F
{ 6 l( s4 ~. K3 i/ t3 r3 U$ [
LPSKILL lpSkill = &(m_aJobSkill);5 u% |2 L, w* H$ D- g1 j
if( lpSkill && lpSkill->dwSkill != NULL_ID )
) A: A3 D, d" X# W3 v* y1 }* C {' P- `1 X+ X: A9 B' ~
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
" w( V+ l- w+ X# Y; P0 h8 b i if( pSkillProp == NULL )
' u9 b# Q: V! G; k/ f continue;
* f |* A2 w' @8 A- w. a if( pSkillProp->dwItemKind1 != JTYPE_MASTER)/ s- f7 H0 f! T) A, s0 w
continue;5 B( u. \$ n: U9 d5 F( ^8 h. ~
lpSkill->dwLevel = 5;
1 j, |+ W* K1 m- L }* o& m# H! Q; m1 a
}* ]8 n% K- l6 d- u: A2 b
}, R, C. }9 I; Y) A
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans( Q: J6 P6 N. H# V! ~# V0 q2 _
if( bGamma ) P, G* w; M* J0 B" q4 Z
{
6 Y+ j w: }) J( s* O5 ?. R2 i8 m, w m_nExp1 = 0;6 i/ H! v% z( @4 R
}
. {4 G# w9 @) J# `0 g
+ Y0 T, b+ z# \2 o+ U3 N5 N8 R5 q ( (CUser*)this )->AddSetChangeJob( nJob );
* m: ]3 Q+ v' N: T- W9 Y2 b4 K, N g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
u. {9 {1 x+ Y9 b; O( O( p0 ^! |) r$ r: N* U7 R
, r5 f; l0 |7 x0 x9 L0 K5 x
#if __VER >= 11 // __SYS_PLAYER_DATA
& J8 T9 ?+ a' c* e( Z" _; U: @5 H g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
, \% c, W3 N: W3 M#else // __SYS_PLAYER_DATA
5 u+ y) C5 I+ V; T. | }3 G/ d3 q% L g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
/ H! O3 c, u, ]5 ?3 q g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
, F1 p# A3 D3 \: y* N9 G* A) E if( m_idGuild != 0 )$ h0 e! {) M( s6 ^6 P3 @8 l3 ^
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );# X @; \0 t x! @4 W4 f1 _
#endif // __SYS_PLAYER_DATA# y6 D; @+ Y/ {- }
SetHitPoint( GetMaxHitPoint() );- |3 A! w5 }* k. W- X3 [
SetManaPoint( GetMaxManaPoint() );
! K$ R; e+ v, h+ W' x SetFatiguePoint( GetMaxFatiguePoint() );
* y4 A5 o/ Q* ^8 ` if( nJob >= 1 && nJob <= 4 )1 {( ?( m: w9 }, r; C {
{! p6 T, y& j) ]1 B0 ]# M
m_nStr = m_nSta = m_nDex = m_nInt = 15;4 J! j9 u( e; C. n# ?" C
m_nRemainGP = 28;
- @) H1 b2 H! r: t; y0 b" |; \ }
# Z" b" i# g3 r if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
+ ]6 p6 V1 B5 l( b {9 b) ]6 E+ M! u9 X
m_nRemainGP = 118;& H9 I" A% G7 \/ Q6 d' X
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
0 C, p( Y* C8 \8 J5 q/ K m_nStr = m_nSta = m_nDex = m_nInt = 15;; D8 G- C7 r4 `* k6 `! d3 X% \
}8 R* e# M D6 @$ q
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
( Z$ Z- |1 o- M! _ {9 V. q# o' ?: L* t
CItemElem itemelem;
. O2 H7 e6 S6 I: T- Z! M$ `' s, V itemelem.m_nItemNum = 1;9 c6 f N0 U9 m1 F% P/ E! H& a
itemelem.m_bCharged = TRUE;
7 B3 C5 o' C; \" h BYTE nID;
' |5 Y, k0 Z% X
, G, U6 h, ~* F5 W* S6 n if( nJob == JOB_MENTALIST_HERO )
3 M7 B, }. ^. f9 K! w: m5 b D7 ?# Q itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;8 ?# |$ Z; E; k0 Q6 U: {5 \0 N
if( nJob == JOB_FORCEMASTER_HERO )
: \' X* i: h4 D0 I8 P4 Z- n& s itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
3 Q: K. r1 w, }) ^; O
8 R1 Y1 ~" d) u/ W7 q ( ( CUser*)this)->CreateItem( &itemelem, &nID );$ y ^; g: @+ l3 M( L/ T
}
/ E2 u" s# @, N- w4 x) z( W g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
( r0 R/ u. G% g l" r! n ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
# k* r$ [' @+ p) y, g2 C ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );1 P9 v8 J) u! x \+ B6 o
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );/ U; I' [4 P* D& a3 e" G% `
( (CUser*)this )->AddTaskBar();*/% q- C: \ e/ j( s$ f; g
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
- W3 s2 {0 ~( h$ G) O#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?0 X: q* ^8 z4 x/ V; G: e7 X% o
((CUser*)this)->CheckHonorStat();
* n/ g) n; P2 M3 I. I% b9 h ((CUser*)this)->AddHonorListAck();
m8 E! `2 u" M2 x! T; V* y g_UserMng.AddHonorTitleChange( this, m_nHonor); l6 |2 r7 A9 l1 Z/ m# q2 x8 z
#endif // __HONORABLE_TITLE // ′Tà?
' G4 n. ~: e9 s/ n; m- j }
7 `% t" |2 E1 f#endif // __WORLDSERVER
" ]0 E' L6 Q+ D8 M; K+ ?- d) L}
" L# O) I5 \ y9 Q' k6 w$ G# A; b5 \; Y9 x
然后你进入functextcmd.cpp并添加以下
- P+ [1 S. C. C/ Z& f6 I7 }
6 _8 E6 p( [1 y w代码:+ g0 }" G5 H$ V2 Q+ o) B. _
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
) ?) ~# |) \5 O8 @& I- S1 K5 W下面插入
4 d( Q! ^ ^3 W h* R3 V8 u* l/ CON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
( U! _' S- S9 n4 [
' J# }, Y+ N$ K2 L然后你去
5 b* e- @4 Y5 z! \' |) F9 s" `/ [" s' q s3 ^1 z& Y! h `
代码:8 D: {2 d4 s2 T2 V$ W7 s* ?$ _
代码
7 k9 x+ p: G' s: C/ l7 LBOOL TextCmd_ClearPropose( CScanner & s )9 t$ ?: C' R, J0 e
{) w$ }% _( @, ?
#ifdef __WORLDSERVER
$ Q7 W+ [% [8 V0 @. m* {! I) v% ^ g CUser* pUser = (CUser*)s.dwValue;
2 f- u$ J, P, U$ m% O l- G/ Q g_dpDBClient.SendClearPropose();0 M" V5 F/ a) J
#endif // __WORLDSERVER
% N8 L( a+ R( i; ^6 v( p return TRUE;
+ \" f) ?7 v% J* {7 M}
/ }& ?. r8 y7 [( B6 n: o2 e下面插入, `4 B) }$ N9 y/ T3 l# _: w, v
BOOL TextCmd_rebirth( CScanner& scanner ). h) s% n4 `: p( M
{
9 z B; J6 x; z6 M3 o( `#ifdef __WORLDSERVER1 O4 M+ o# {# |' {' n: z
CUser *pUser;. q a% m! g. C
pUser = (CUser*)scanner.dwValue;
3 O3 b+ a* h9 [+ {( x/ [! ^9 oif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())" W/ U6 b1 [' d' B* \( O. ^- `& I
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
8 u' L* ?& N Felse
* p6 J. E/ i6 _- q( C9 f$ ypUser->AddText("你还未达到重生条件!");/ ?0 A* {- x) I
#endif
; y, q1 B. l1 q; |% \4 ~; hreturn TRUE;
" B3 T$ M) R; ?}
7 t7 z/ p: t! v* I/ f E. F
( d5 I! N& V, b% [7 }; L. r" a1 w
( ^6 U# u5 I3 Q/ a" d. q: T& Q5 F/ x/ z7 A
6 p" m& i9 g3 U/ G& P. |& r \8 z
|
|