|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
0 z1 C2 }& A& E3 S
6 [! v& C! A4 H [6 f( v e; GMover.h" B5 k& o, ^: a
代码:+ N; P; |# \- ^/ _# G/ K
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü5 {2 ~: T( w1 m, g3 w
6 s1 A4 W0 }3 m u( W0 z* T O
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; / q! {: I9 `. o: O2 ~ r
9 i5 q% F: w6 K. E; X1 N, F
然后你去mover.cpp添加# V2 ~* \6 A* u) }) t2 X7 i3 s; u- g
! ?8 i; B% b/ |3 ]
代码:
2 \+ P0 ?$ V4 T3 hvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ), R0 g( T9 O/ V8 e; y: P; J$ S; O
{: m* V( y. E% W' g( d4 n
#ifdef __WORLDSERVER
5 N# P" t0 k4 n. s5 ^, i! x+ n // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó) A1 [4 ~7 z( b3 ]
MoverProp* pProp = GetProp();
# b7 H) U* G5 y if( pProp )# h3 @7 \# D8 y7 H
{
5 ^# u6 K7 |5 o0 g; d) Z) L if( nJob > 0 && nJob < MAX_LEGEND_HERO )
; ?7 [, a( o( y {
. @6 m5 G8 D" }7 t& Q+ G9 m A AddChangeJob( nJob );3 g6 b9 S1 b e5 _) O% T8 n3 z; d
}else{% g4 F- L m' R9 R9 t; `# d# W6 a
return;
4 G# X5 r6 J, x: z: e; C4 Z }. I7 e& F% A# i, H( C( ~8 C
int nPoint = 0;
# A5 @$ D' C) s/ D, _ if( m_nJob == JOB_MERCENARY )
( Y' t1 O" }' w. ~2 v1 @2 Y$ K nPoint += 40;2 E- R5 A1 p- `, ]8 m
else if( m_nJob == JOB_ACROBAT )& v! p/ }& a8 f
nPoint += 50;) X" }( s e3 y/ O
else if( m_nJob == JOB_ASSIST )7 W0 F. |* S# }* v: E# _% Y- t
nPoint += 60;. x5 d( A8 w+ O
else if( m_nJob == JOB_MAGICIAN )9 u7 p0 E$ k6 j( L
nPoint += 90;
3 w, e* b4 g2 z" H/ e else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )5 o3 _1 Z6 N0 X$ T: a4 D
nPoint += 120;
% y2 c" p1 Q+ E2 J% |# d else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )' F- t" Z" h+ }3 c" `5 F& O( v
nPoint += 150;, g! P: x6 S+ B7 `& M5 f% j
else if( m_nJob == JOB_RINGMASTER )
' Q& a* }% O h2 }+ j' M: z nPoint += 160;
1 l% E6 |# ]4 P+ L8 z( H K else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
& j! X. r! g3 b0 \. M nPoint += 180;
+ {; m- x7 n9 b5 F else if( m_nJob == JOB_ELEMENTOR )7 o! U% M- w+ }- @
nPoint += 390;
+ h4 ^# j( u0 t& u else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
. I) S2 S: a: x1 A( j0 z nPoint += 120;- S6 m. o, ]5 G" q0 m* q
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )+ o4 K6 [$ [$ G. W5 n6 D7 }, s
nPoint += 150;) x! Y) L7 Z: L) a
else if( nJob == JOB_FLORIST_HERO )
" x) a2 r" K. f# b0 r nPoint += 160;
$ K$ p# e' t% ]% D* n else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
e6 o) s) t% i5 C7 C: m% j nPoint += 180;2 Q6 F' q: \ o- U+ ~% V( [8 |
else if( nJob == JOB_ELEMENTORLORD_HERO )
' p% ~' z9 b4 w nPoint += 390;+ ~: C4 v: [4 B/ ]
$ l% H' X/ J8 i& Y* F( j1 d6 [
AddSkillPoint( nPoint );
* G$ F- Y/ H$ I2 X m_nLevel = nLevel;
) O- @0 u5 }5 ~6 n! O9 Y2 f9 ~3 `( \5 a! k. O
SetJobLevel( nLevel, nJob );; Q! R$ f% j" {
m_nDeathLevel = nLevel; e8 d! A" _1 j7 E
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
8 b+ U6 D) S# h3 h if(IsMaster())& W! f3 t R9 n3 c
{9 |! _, c6 F' c& ~3 i7 `2 h
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
I) }, y: c9 V, c if( nLevel > 59 && nLevel < 72 )
( T3 ]* y" b1 p+ B! }4 m7 N dwTmpSkLevel = 1;
( |! A$ p" w' f, q else if( nLevel > 71 && nLevel < 84 )
0 J' f. Q& g" W* b0 C8 J dwTmpSkLevel = 2;0 O" \7 @) f! [. t" V
else if( nLevel > 83 && nLevel < 96 )
( g1 h* L; O, t+ S7 ~+ b dwTmpSkLevel = 3;% h( E( F( Q- g$ R1 r7 l7 {
else if( nLevel > 95 && nLevel < 108 )( B% Y9 _0 `2 V- O
dwTmpSkLevel = 4;$ K) K1 {. B. @; v, R5 {
else if( nLevel > 107 && nLevel < 120 )
`4 O8 N) Y! ~# Q8 @% r5 v dwTmpSkLevel = 5;/ f* k# q+ l: i4 P8 B5 N
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ! ~5 O1 N9 x! O) M' t6 I# @
{ # r2 d1 w) a3 P4 U, h3 s$ D8 w$ g
LPSKILL lpSkill = &(m_aJobSkill);' {1 c- o0 ], H; S s- U' x
if( lpSkill && lpSkill->dwSkill != NULL_ID )
/ b. v3 O- [2 V) D2 E6 j* q5 G {6 T! `, \3 Z# J, ^
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
) B# z% R) |% B c if( pSkillProp == NULL )3 f- o' m( w, l) ^. \( b( {7 ]0 `* j% ?
continue;
2 |& P `7 P& n$ K) ] if( pSkillProp->dwItemKind1 != JTYPE_MASTER)4 ]! s* J# K+ I" @7 X' k& U
continue;9 k/ ]- ]2 q% p% ?/ n9 O4 @9 ^1 P& x
lpSkill->dwLevel = dwTmpSkLevel;
+ E9 q% k" Y! U }! K* q6 X4 |) |0 `1 U
}
9 j8 k1 q o/ Y) Q+ _ }: w0 k3 b+ r$ f( r$ P
else if(IsHero())
4 W8 Q. u8 y: @1 J3 {6 h {9 K v+ s1 Y; J* F1 L) y* B+ x' R
for( int i = 0; i < MAX_SKILL_JOB; i++ ) $ ~! n3 H* c N3 Q2 [6 P
{ / g% ]+ L0 B3 F) a8 I
LPSKILL lpSkill = &(m_aJobSkill);
! {3 M) h9 d4 Q8 n+ E$ u# i if( lpSkill && lpSkill->dwSkill != NULL_ID )
6 T9 t" I# c* N! a {
" z- {# w& M; r k! e1 K7 X ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); % S/ t% A9 V7 Z6 m9 w( ^' ]
if( pSkillProp == NULL )
& D5 n, t5 j" }# J: k continue;
' ]0 j! F6 V5 a, j1 B, C if( pSkillProp->dwItemKind1 != JTYPE_MASTER) N N% K4 x2 N8 v# A
continue;" k5 d: ]7 E( z7 x2 s# ?
lpSkill->dwLevel = 5;5 C( p6 |& U) ]7 O3 l& N
}
* m' Q& _. b8 |& w }& }! m6 Y4 i7 g: W( Q! Z7 ~
}
% Y+ ~- l6 y' ~0 l& V else if(IsLegendHero())8 T, N- V4 R* }
{
4 e) D& A3 c, r, Q: U for( int i = 0; i < MAX_SKILL_JOB; i++ )
) J8 f+ z8 |% Q5 ~, M { 4 w; p5 \$ B$ U$ z' I5 u3 e* N# z, {$ `
LPSKILL lpSkill = &(m_aJobSkill);, j, b, d, X" O9 n0 \; A8 N" u
if( lpSkill && lpSkill->dwSkill != NULL_ID )
* k3 D: G$ P5 u4 H; | {
# s! f: c# c% M! l7 |$ n ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); / _& v/ Y/ g& T! u/ B
if( pSkillProp == NULL )" a/ ^3 B9 Q. z8 T9 t
continue;
1 D+ m. a, `8 i+ j/ q if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
, r/ t& m" w7 D. k continue;/ u' l; s5 v+ P! H
lpSkill->dwLevel = 5;
% D! F" R3 D# i* Q8 {9 y/ _ }: z& R; W2 K# L8 x i) d7 Q
}
) p3 @2 J3 ~* B. W% w( V }8 _- _/ k5 c* ?% [7 C
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans- ]2 _- K& o# d* k# r& v
if( bGamma )- }* F. v- p: r! e9 |
{
3 m$ A6 F: t0 Y$ G! V; l6 c m_nExp1 = 0;
' d) x2 M- ]- ?0 `& V: u& U" U) I4 B }! i2 W5 I2 d6 v( E9 R5 p
: F$ t% Y$ c0 {
( (CUser*)this )->AddSetChangeJob( nJob );6 D; L- g4 J$ T! ~" B3 K
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
; e$ l2 f E; i/ x+ P+ N& U
/ f6 {! u. o* w% B( u; M7 Y3 D( ]% k7 W
#if __VER >= 11 // __SYS_PLAYER_DATA
: }' I$ t) P9 I0 J! S% I g_dpDBClient.SendUpdatePlayerData( (CUser*)this );" C! I' x+ k' l
#else // __SYS_PLAYER_DATA
8 O: R# P; o* q6 ^ g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
6 J% C2 F2 r* U6 H, ?( U g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
7 r+ E. u8 o, Z _ if( m_idGuild != 0 )
8 M4 {" I: D0 \8 t: x g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
. ^2 k+ B$ C3 m+ V5 A# Z5 r: Y% ^, ?#endif // __SYS_PLAYER_DATA
! i7 c3 H( r A+ Y1 z SetHitPoint( GetMaxHitPoint() );4 s! \! g5 t4 E( D2 m2 {# e
SetManaPoint( GetMaxManaPoint() );" r; a' r3 `" c6 X5 @" G$ b5 K' L
SetFatiguePoint( GetMaxFatiguePoint() );6 w- |, G* N* c. R9 ]
if( nJob >= 1 && nJob <= 4 )
8 W. _9 y* x5 w! f2 G; [# E# Z { A; O1 b* G5 D8 Q
m_nStr = m_nSta = m_nDex = m_nInt = 15;# e% X. X4 R7 \
m_nRemainGP = 28; _- X- N0 g; K& G# p) f& q
}1 S8 a$ f6 I6 E- X
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER ), M8 _6 ~" B8 I' z6 m
{" B" Z- ~. ]! |5 i- |7 ]
m_nRemainGP = 118;0 l& Y0 K' F: b u: O& f( V
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;8 G8 z5 S. K& D# w
m_nStr = m_nSta = m_nDex = m_nInt = 15;0 @ U7 v4 f% ]0 e& r& Z* ~; S% ^- g
}) B. ?: N& d* q' w
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )" O) L6 `4 R7 F# r7 a( o$ s
{0 A0 K8 T' @0 R, G( m' p3 r5 E9 ?0 k
CItemElem itemelem;9 ]9 q$ f$ G* |: K# ]6 s- {# m
itemelem.m_nItemNum = 1;
6 z8 c k3 x- W0 e( o itemelem.m_bCharged = TRUE;! {1 t/ h# _9 H6 z$ w: r4 T$ O
BYTE nID;
! x7 ]4 a# c3 i6 b
% F0 s1 ~+ w* D if( nJob == JOB_MENTALIST_HERO )/ L- s) P% q1 o3 D: ?. b% ~
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
+ X# ^& K( y% w; f0 B8 A0 @' U if( nJob == JOB_FORCEMASTER_HERO )
i8 I* k) @! o. d" K itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
" C6 t( ?" w9 E% \: m; h9 P. m8 E( A, @/ Y
( ( CUser*)this)->CreateItem( &itemelem, &nID );
- h" d% ], s& m2 N$ N }' w' D. b. m4 E s* P3 I1 V
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
: U _. H- g1 b6 S- ]! o, Q- ? ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );3 U, l; B' G c7 ?, r
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );5 {, }& M- ?9 q% Q/ m' _: Q& L8 ~
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );6 m0 p) c k( I0 b5 y( q
( (CUser*)this )->AddTaskBar();*/
8 l2 O' d+ e/ [' k( U" ~' l; n ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
' _# h% v0 S6 ]5 D' w# R3 G8 M% i) Z% W#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?! w; L* N3 J) ^2 k. F
((CUser*)this)->CheckHonorStat();
% C* ^% g; R, D0 }' q' \ ((CUser*)this)->AddHonorListAck();
o' r8 V/ c9 ^6 |/ q/ e/ Z g_UserMng.AddHonorTitleChange( this, m_nHonor);
$ J( Q6 y z: A! J1 _#endif // __HONORABLE_TITLE // ′Tà?
6 L( F) `6 d" X0 H: X }: B; \& y( \2 Q( I7 i, J0 q
#endif // __WORLDSERVER
% R, K/ y0 h7 i. d* B$ I- c} 5 C3 A/ X/ X' Z! j/ \* O
! g" W! W7 R4 p: g; B/ F然后你进入functextcmd.cpp并添加以下
, r! r& ?; i+ P/ U7 g% k3 m6 d: X9 f5 _2 l/ m8 @+ O
代码:
: ?% T5 R# Y7 i2 @8 SON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )1 T' U+ D% \) T, c" K) i( S6 Z
下面插入
, J7 D# t& @. |: i' v1 oON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) # q% x5 w9 e. n7 c
% p4 V b( a: [& s
然后你去1 a' X' T/ J$ S1 S
7 d" X" s1 Y9 O1 a! N1 [
代码:
/ z6 o+ f$ J, b) T9 F) s, f代码5 d+ L: _0 k7 @0 N3 V) P' ]7 I
BOOL TextCmd_ClearPropose( CScanner & s )) ^, x1 y: g) Q" F, u7 j# N
{, U/ A" n3 P1 `. |+ D
#ifdef __WORLDSERVER
1 \4 F: r7 R- j7 j- {& P CUser* pUser = (CUser*)s.dwValue;
$ p3 o5 z3 [2 Z( ?6 j3 {) w# N g_dpDBClient.SendClearPropose();( A3 e; X! ^8 q) @) E
#endif // __WORLDSERVER
; p. F' D) c( @/ z" _; H/ x/ m0 ? return TRUE;
0 {) K) J7 C; N' B1 n! Y: W6 t}
" z/ {. Y7 ] N9 t! h [下面插入3 o8 I! E% }# x$ I; t
BOOL TextCmd_rebirth( CScanner& scanner )* O5 e) Y& ] k" X" Z# P8 _8 k
{# o" x5 T) y* E5 h! x# c
#ifdef __WORLDSERVER* y: Z9 }6 X+ Z ]% e
CUser *pUser; ~2 F3 J- O, e: L5 ]0 J7 u0 S
pUser = (CUser*)scanner.dwValue;+ ]0 v; i7 {( X% g H+ W2 ]! Q0 u
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())/ W ]6 l* ?# f d
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
% m q0 ?5 x# I1 D" N* m1 pelse: f% \: _$ D8 k- S4 M! h% ~
pUser->AddText("你还未达到重生条件!");3 M( R: X, R! }) `; o6 c, o4 O+ N6 @
#endif! f2 b8 K" ^: _# [0 t s+ C
return TRUE;1 C( w9 `% v( ^3 E! z+ w2 w3 A" _
} $ B4 g6 t! ]' S
% ~: }( S4 ? d7 j
; e* U1 b+ Q: H
* A! c5 R$ D S) Y
& X/ }/ U" g% J' i* F1 v |
|