|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
$ J- t! x9 t" L6 m2 W
5 S, v# D9 M7 O- F: u2 J& zMover.h; C8 T7 `; e) N) O( s
代码:
8 d/ E- E6 H! x5 V' i找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
/ U1 f% O0 ^" O4 K1 N$ V
8 {/ |$ w5 H+ L5 a2 R7 Z下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
2 a7 t$ l, V& l6 j/ s+ g; E2 J/ U6 y
然后你去mover.cpp添加
$ ^9 \4 Q- d/ y
2 i" F: t/ M* G* H" o; F代码:
3 d2 ^1 p; f* e7 y% N& zvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ) c1 e/ S# v/ m _ y* W
{& g# w# b7 i! C+ r* W0 T6 z( P
#ifdef __WORLDSERVER* ~$ b# l) j5 [( B% L: V) l K
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó3 _% I7 N0 U# ]$ ^0 E9 [
MoverProp* pProp = GetProp();2 y/ m( D& e$ Q1 j5 A
if( pProp )
5 P0 X2 R9 Y( E6 |# z* o4 a$ _ {
5 f" `( e7 } X1 _; L; } if( nJob > 0 && nJob < MAX_LEGEND_HERO )
3 `% U, H; f+ _ {
: M: }1 s, C6 a$ i3 b( D& ?+ U: T2 Y AddChangeJob( nJob );
- F8 ~# s1 _3 L }else{
* i, O) E3 F% Z6 C0 ? return;7 M3 h# t# q9 `9 d7 X/ V/ K
}: i# C! V& f6 X$ E8 r2 Y
int nPoint = 0;+ a, `+ C0 K8 H5 A$ O3 S7 B; U
if( m_nJob == JOB_MERCENARY )* W+ `# N* c6 C7 x. C4 c2 P; Q
nPoint += 40;7 Y9 p3 v- }: p F6 ~3 p- o
else if( m_nJob == JOB_ACROBAT )
" t/ K# ~' u# s' w2 `+ @ nPoint += 50;5 Z, ^8 L4 V6 [6 C3 t0 V
else if( m_nJob == JOB_ASSIST )
" R* i1 V9 Q: Z nPoint += 60;
: w& R' r! F! ~) Z0 f else if( m_nJob == JOB_MAGICIAN )
9 S: x$ a/ Q( \3 K. |& }4 B nPoint += 90;6 D: H2 K5 z. a2 c7 b
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
3 V% a1 H" o, g' B+ b C6 g nPoint += 120;
. G+ \! ?7 U# I- u% d" @ else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
6 ~4 N2 ]" W% A4 \ nPoint += 150;
% x% d G7 h* j' i' i else if( m_nJob == JOB_RINGMASTER )7 J1 `' V6 @2 D5 I
nPoint += 160;2 W. V2 ]. m' y9 J5 l
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )2 E! g* a; y5 Z9 n J
nPoint += 180;
3 K5 [; V. W# ?9 x else if( m_nJob == JOB_ELEMENTOR )
' s: u; [! w9 x8 M: s B nPoint += 390;1 b* m9 _- O/ X4 ^
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )& z( x4 l! a) }) M& s) ~1 l
nPoint += 120;# W3 y0 Y4 k1 ?# b8 O1 n2 o
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
- t- C& |7 {/ B) T! J' T nPoint += 150;
0 l: U. Y, ^9 ^ else if( nJob == JOB_FLORIST_HERO )' T) r8 B% v' w4 i* c, b) J- I6 L
nPoint += 160;
) q) Y# c% k7 ~; Q+ ?% ^0 T7 | else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ), Z0 q" c) j6 q2 Y3 w& `* c
nPoint += 180;. J( O, C# I4 G
else if( nJob == JOB_ELEMENTORLORD_HERO ); m) C6 S: _7 D% [8 U4 w) \
nPoint += 390;5 U: ]3 C- v! k, V6 B4 r( n
) b9 E7 P' y1 Z8 N9 ]- T AddSkillPoint( nPoint );2 t; N$ U9 w8 I: V5 k' M) H
m_nLevel = nLevel;5 w; O/ D0 d- ~( N9 S+ A
1 P3 P1 A7 [& J, g/ q! x SetJobLevel( nLevel, nJob );$ G# D& n- O/ u8 ? @
m_nDeathLevel = nLevel;5 s1 l" r$ {+ |; i6 `
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans# ~; Q9 |' C4 L
if(IsMaster())7 R* s8 e- e. B" A } H- u+ h/ \
{( F+ I- |: y# Q' w/ w/ L/ r; \3 @9 a% @
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
; |. h& T) b* \/ f7 `5 G if( nLevel > 59 && nLevel < 72 )5 o! X8 h5 D8 w# u9 N1 m
dwTmpSkLevel = 1;9 H) W2 S* C7 r3 Q2 a" D$ J
else if( nLevel > 71 && nLevel < 84 )- r! j S7 v+ Z' f, Q
dwTmpSkLevel = 2;6 S0 h. f/ e; `4 b# C9 e
else if( nLevel > 83 && nLevel < 96 )8 a; I+ i4 ]! t- ]$ G" N, w
dwTmpSkLevel = 3;
# [: o% B/ v7 F O, A: T7 B' @ else if( nLevel > 95 && nLevel < 108 )
' V; G2 ]* E. l9 ?; j6 f: e dwTmpSkLevel = 4;
) T( ]1 J! b$ O7 t& q4 W else if( nLevel > 107 && nLevel < 120 )
) B: z4 @0 A0 X9 O4 u( ^9 v dwTmpSkLevel = 5;
. F( c y2 B0 |$ u for( int i = 0; i < MAX_SKILL_JOB; i++ ) ( n6 r4 B# v7 m$ C
{ : W' f& E! U$ { H$ f
LPSKILL lpSkill = &(m_aJobSkill);
6 d$ Y5 O' p* i% | if( lpSkill && lpSkill->dwSkill != NULL_ID )8 C4 C; s: f$ V0 v0 t/ O
{1 ?* G% h4 w$ Z( E6 }# q2 s0 K
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
/ Q. B* J2 i" A9 U5 j if( pSkillProp == NULL )% S( K' w$ |& O/ w3 F
continue;! U; }- u* }, P# E
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
: {4 |- K; G6 a; y! I# _1 z1 ? continue;
( @& c; t( O: f$ j lpSkill->dwLevel = dwTmpSkLevel; g4 @$ i8 k% V6 A
}2 v+ J4 m- K7 q$ ?# J# E
}
+ ~9 @0 [; G: @% @& u3 E" I$ p } G0 a5 P+ c8 e/ H. H
else if(IsHero())
* l- I( ~ S- Z0 ^7 P6 H' | {# m1 ]3 _& `" v. E5 o
for( int i = 0; i < MAX_SKILL_JOB; i++ )
) l! s2 c. Y% ^8 I* i { % h: g/ R, L; h: \- i" R, D, B1 a
LPSKILL lpSkill = &(m_aJobSkill);
/ h$ I% H, W) x- _& p C6 m if( lpSkill && lpSkill->dwSkill != NULL_ID )0 f1 K- z- c( _8 ?8 V/ h; P# ?
{; R2 n) o) M4 Q! Y7 i
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
8 Z- V3 |6 ]+ J& n7 z. } if( pSkillProp == NULL )$ e4 C/ A% Z1 H, E! e; s
continue;
9 D9 q: ?: e M' l2 a if( pSkillProp->dwItemKind1 != JTYPE_MASTER)0 i/ K4 l4 R/ T5 a, | I. S
continue;
" h9 [% J7 f" ?4 D G% I& B# \! m lpSkill->dwLevel = 5;
9 O* {! ^2 N) g1 V2 ~% G! E }
/ M5 Z$ j `. s8 r7 D3 C/ `& V }* V) t) U) o) j0 \7 }3 g R) c
}
& _! R5 S! d; v v: f+ v% S5 ^ else if(IsLegendHero())4 j9 c( a: K) T3 e* w
{
3 S- s$ X% D2 G+ X$ { B+ H. T for( int i = 0; i < MAX_SKILL_JOB; i++ )
+ U. r% C. D4 I: s/ x l, ^ D5 G {
! S3 X" p' w7 V1 F LPSKILL lpSkill = &(m_aJobSkill);* C8 z7 [* j1 E; Z/ F5 k) g K
if( lpSkill && lpSkill->dwSkill != NULL_ID )
4 T) G$ H' b3 \- M8 C {3 @ O$ v& l' `9 p$ a
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ' V) N; U: a4 m% }$ R! }! T
if( pSkillProp == NULL )# i: s1 Y# V q( u' F' v, o) F; K8 F
continue;6 N& T! x: o& m+ j( V
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
' r- H; \3 a+ K) @ continue;$ A, s) u0 I& j2 f) [
lpSkill->dwLevel = 5;
' c8 l- i# Q4 n9 ~# j6 J% f }! B/ s: F8 u9 c: v9 y5 r! C$ p
}
x0 _9 }! ~7 `" l/ y$ N, h$ g }# G+ m6 _% j/ H! }* N4 j, ^% i
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
- p( a# N0 }9 G3 d" f if( bGamma )
. P! y# ^4 v0 A! X8 t* ^ {3 B J# t# n9 c# U. Q% e' y
m_nExp1 = 0;
/ j! U* f, j( ~; Q: f }) }, R. `2 i# e$ x
`- j) L7 D; {& h; Z( q
( (CUser*)this )->AddSetChangeJob( nJob );
- N! `& G0 P5 i* ~ g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );6 n7 P2 ^4 i# l4 n) I9 E0 f, d
$ H1 K/ E$ W* w/ w4 T, w) c
% D# d) o. ~; r8 m( N#if __VER >= 11 // __SYS_PLAYER_DATA
/ r. K; ~, `- l2 T& i g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
# a% d; j/ x! ~" e( `- n6 }7 n" l#else // __SYS_PLAYER_DATA
. T4 l# `( g0 I6 q" M g_DPCoreClient.SendPartyMemberJob( (CUser*)this );& l! T3 I( n: p, C
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );; r& b( ~3 e3 n/ |, B, T7 ?# d
if( m_idGuild != 0 )5 \' v# p$ I" t" I+ J
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );( {9 `! X" B4 S% H) Y
#endif // __SYS_PLAYER_DATA
6 A9 \/ Y- z5 a3 \( ` SetHitPoint( GetMaxHitPoint() );
/ s# U3 V8 t( z2 G$ A W% m SetManaPoint( GetMaxManaPoint() );
, m% h$ j/ Z( x: { SetFatiguePoint( GetMaxFatiguePoint() );
" {. f# M4 `9 ^ [9 l: p% L: a if( nJob >= 1 && nJob <= 4 )8 s) d2 Y8 H* J" R7 L i8 n
{, I9 I5 @5 d5 C( c. J# M
m_nStr = m_nSta = m_nDex = m_nInt = 15;1 j0 r0 k: x+ h$ N7 u
m_nRemainGP = 28;9 [+ ~4 T6 E% O# c, B5 U6 B
}
3 i! k8 @; P% t6 O; {# _ if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
3 l/ M8 S7 K" G1 y r# R& N# u; U {) o$ o* s1 N! J0 x8 Q; I2 s
m_nRemainGP = 118;! z- H F. e; e! \0 S( D4 o
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;: ~0 b. n3 Y7 |% n+ m5 r
m_nStr = m_nSta = m_nDex = m_nInt = 15;# j+ |; G6 F) ~0 J& ^% J
}
( o, i6 J; f* G if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
" k+ F. z7 `( {3 G {
l4 h8 o7 @/ z+ I* J1 H* ^ CItemElem itemelem;% C& D, m3 K! ~2 g% W& n3 s
itemelem.m_nItemNum = 1;
1 d* g* `/ ]$ ]. a itemelem.m_bCharged = TRUE;% ^/ ]2 W: g0 T( K
BYTE nID;
, M( _8 \. O6 s6 ~2 v* P( L8 g4 w7 m+ {# T+ K. P
if( nJob == JOB_MENTALIST_HERO )! }' [/ U |% X6 f/ p$ z+ P
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;2 l$ E) H6 e# w* N7 f3 f$ u" W9 ~
if( nJob == JOB_FORCEMASTER_HERO ); D5 f5 c& W: Q$ D8 ~" m0 ~, \
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
1 u" x& w5 L" m |3 G A) q" Y; B/ z9 D$ g) U
( ( CUser*)this)->CreateItem( &itemelem, &nID );/ D5 S! o% T; A
}7 _6 R* U# ^4 ]5 l, g
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
8 G v: a5 g0 g" U3 d Q ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
0 Q( Z+ i1 u4 F' P ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );5 i) P8 {. J# n% `. ?
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );* X! k( A6 z2 L- {
( (CUser*)this )->AddTaskBar();*/& E' ~7 m% [& l1 V' k
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
6 l5 S; }3 j) S" e4 s8 z& X! z#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
" D* y$ ]( A7 \6 M% ` ((CUser*)this)->CheckHonorStat();' f8 _; i9 [% W4 S! }/ `4 i- p) ?
((CUser*)this)->AddHonorListAck();
7 |6 l# l8 C7 l" z% n g_UserMng.AddHonorTitleChange( this, m_nHonor);2 I% ?9 a2 Q+ b* v2 i" o6 H
#endif // __HONORABLE_TITLE // ′Tà?
3 @9 S* R; x; Y- b5 R }$ E3 _0 J# [$ |+ v" L: f9 D: b$ a! {
#endif // __WORLDSERVER) i0 m7 P6 `; F
} # `& q f l/ D) b
" s9 S, {6 t( Q) n7 B i' m然后你进入functextcmd.cpp并添加以下3 h6 T0 {9 {* q% d( o; S& L
& Y# H2 A/ ]. h
代码:* ]9 A& U* P! \0 c2 h V$ H; H
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )5 H/ a- g7 B q2 f
下面插入/ R+ }$ d) d R! j3 Y; D
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ( G0 I$ ? F! P! Z
+ P9 N, u1 ^7 l$ w然后你去: _" b4 M# J) I2 }! w( |
" C0 ^" Q. s6 t; y# W+ U& f
代码:5 n; Q! z, g; Z- }: T
代码
* b4 I5 y5 @% z( x% V( gBOOL TextCmd_ClearPropose( CScanner & s )
. p* G8 _( ^; u/ v8 h% m) D{
) F' H" ?* w1 `- M1 m* G5 z#ifdef __WORLDSERVER
* G: Z* ]* X* B+ m; q CUser* pUser = (CUser*)s.dwValue;/ a+ Q0 o- u* p* j
g_dpDBClient.SendClearPropose();! e/ t: x8 v; w0 B( z" ~
#endif // __WORLDSERVER
, H- c, E7 J4 L: }# T$ \/ \& v8 ~ return TRUE;7 }0 F8 T3 }# ?9 u$ S2 t2 ~
}
. G6 V2 l" X; p6 q# _, @6 v9 r下面插入
. s2 j. c3 Q: B% ~BOOL TextCmd_rebirth( CScanner& scanner )* d7 E# h3 E1 ^* d# x* k! S
{
- W$ g! r2 B5 N+ [0 p$ Q, B#ifdef __WORLDSERVER
: j: `# R- v" a6 A; P5 o- ?" iCUser *pUser;
! B' t4 A+ H& t# dpUser = (CUser*)scanner.dwValue;, q1 I9 |4 ~+ b
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
6 G. G! a* ~# S3 f+ q0 xpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
: {3 p1 v: `8 B; w5 }3 J: S; Y* i$ t, pelse) v! v6 K3 z& V' t Q' |/ R3 v
pUser->AddText("你还未达到重生条件!");
3 D$ }8 z- i; v#endif
' u; g$ k" A' X5 ?1 ereturn TRUE;
9 l9 V6 G7 k3 q$ x- }- v7 A$ ^} - y& ^' |/ E( a9 y9 E" \: ~
$ g, e( s& |& }6 |6 p# Q4 u7 W
7 e- g% I( D/ d% V
1 g& J* y- j8 H7 I5 V
( F9 [0 U6 V; U. u; A |
|