|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel9 A; G; ]) T% O/ C
s1 M$ C# O- K4 Z4 x
Mover.h3 f1 x5 u0 P7 @/ o0 @3 T4 ?
代码:
- H0 Q1 H. Z: Q2 F# h找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
# n4 U# z. j: k) c$ I
( q5 z- @( S% J" ~( [& F下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; , C! {* r) @% l+ h( t, R
4 k+ x g! O8 S0 E* g4 f N0 g1 q
然后你去mover.cpp添加
2 h' Y1 d( _4 N4 j
) W& ]# O4 U1 Y代码:
/ W( p/ e* K \void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ), i$ g! {2 i; Q* B6 c0 L G
{
+ Q6 F; X8 E8 D+ Z3 n#ifdef __WORLDSERVER
. C5 ~# B7 h; ]) k/ D) U // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó9 t0 W$ ^5 q: n4 d% Z) y
MoverProp* pProp = GetProp();8 \! j& A- E! _! P
if( pProp )- q' i3 Y0 u" e! C/ g8 `. ?
{
; q1 N9 @3 P6 ^" x if( nJob > 0 && nJob < MAX_LEGEND_HERO )/ A; |6 Y0 `. ?6 ~1 k9 m; V
{+ G H2 ]) Y2 Y9 F
AddChangeJob( nJob );
1 M K! \8 B$ d Y) ]3 p1 o5 g }else{6 s% h1 f- v% J9 o! y
return;
2 L% h0 H# r5 W: p }+ @, x" W/ ?$ b8 d3 K' D
int nPoint = 0;! G+ p' v2 _* N- o8 [/ k. P
if( m_nJob == JOB_MERCENARY ): T3 v/ n" D0 v& U# i6 k" M
nPoint += 40;: Z8 \2 b G! ~3 G! @4 s
else if( m_nJob == JOB_ACROBAT )
1 u& P. c8 l; x nPoint += 50;3 k! _% N/ [" H5 B6 G; ?
else if( m_nJob == JOB_ASSIST )# U+ O/ O* ^/ o, I7 j# g, A* Z0 [
nPoint += 60;
" r$ N! g- |) w& m) f, X/ T8 w else if( m_nJob == JOB_MAGICIAN )' L+ \! z7 B+ P- ^ a O
nPoint += 90;! y% u0 A/ l+ \
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE ), m; h' M; h. ^8 n/ q$ N
nPoint += 120;* ^. k$ i4 ?3 r' B7 C5 Y
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
5 B6 S! K& d; y! E: P( |3 t2 L nPoint += 150;1 s* Z; Z/ b* D1 [
else if( m_nJob == JOB_RINGMASTER )
8 f( F6 P% k% Y nPoint += 160;
) w, H2 c, u8 i, v! y6 @ else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )* B# a# p1 s9 O* I
nPoint += 180;4 g( M9 z+ z% W
else if( m_nJob == JOB_ELEMENTOR )
( U( j" b, X9 l0 ^, d% d# {1 r- j# \; { nPoint += 390;8 `! T- C3 j' P
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )/ j4 [8 b$ S4 l2 u' U
nPoint += 120;# u/ s% q7 w+ R7 S: {
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )- P) M* `9 S# ~: H* T6 |
nPoint += 150;
$ ^8 s+ g0 F! B else if( nJob == JOB_FLORIST_HERO ): s* E# r" ]' g2 W6 z- r& G( r0 h
nPoint += 160;
! Z! O! E6 s: x' M+ p6 Q else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
9 j) q6 k+ E( w* t0 ` nPoint += 180;8 f3 _ o! Q3 P' X
else if( nJob == JOB_ELEMENTORLORD_HERO )
$ e1 K5 {+ t2 q+ f% M nPoint += 390;
0 V( a+ c5 K7 c n q h8 E& K1 l0 F# {- C# g. z
AddSkillPoint( nPoint );
+ f; N! n& T) g9 A7 k) E- N# D m_nLevel = nLevel;
7 h+ R$ B, b0 D- y2 S( M- A8 w' {5 W
SetJobLevel( nLevel, nJob );+ ~0 n9 D/ F" R* `. V; c# j! c d
m_nDeathLevel = nLevel;
, t* C& x+ t& ^3 V' \; ^$ p#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans G5 \4 h9 p3 C# K! @* z
if(IsMaster())
2 B6 u: `: ?& \- t2 g {
( v" n% H$ x: R: y6 l1 b. L9 w int dwTmpSkLevel = 1;//60, 72, 84, 96, 1089 a, ?' H/ K \
if( nLevel > 59 && nLevel < 72 )( O+ `; Y4 m$ b8 P6 t+ d. F* u
dwTmpSkLevel = 1;8 D7 w8 o) e" Q$ c% _1 W _% H: [
else if( nLevel > 71 && nLevel < 84 ): N% a& e; }0 V5 e/ p% ?% {3 H X( y
dwTmpSkLevel = 2;
( `* o4 f/ a$ m" } else if( nLevel > 83 && nLevel < 96 )
7 u" @1 x" |8 [ dwTmpSkLevel = 3;: \4 [- ^3 _8 u( Q" ?
else if( nLevel > 95 && nLevel < 108 )
# t1 v+ a( j8 U( c3 x) O dwTmpSkLevel = 4;
* f( l, Q8 \8 A/ P4 m9 V7 T else if( nLevel > 107 && nLevel < 120 )+ x9 l9 Z9 J9 _2 @- g" c* j
dwTmpSkLevel = 5;
, b- x/ L L/ E for( int i = 0; i < MAX_SKILL_JOB; i++ ) 3 W2 o1 ?8 Z( V w$ j2 l% U
{
' R1 H( C! S, Q; _, \: j ~ LPSKILL lpSkill = &(m_aJobSkill);0 _! e, W6 ` M* n: ?* O* h
if( lpSkill && lpSkill->dwSkill != NULL_ID )) |( z" L" r# {7 D2 {5 I
{
) }6 U; v1 h8 j% u& j; n ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 0 Z& s2 E8 ]& { N, j* J
if( pSkillProp == NULL )# Y3 o& `5 A P. u6 A3 r
continue;# R; E* m( k1 [/ c( Q& e) `5 l
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
4 u1 r- V. ?5 a7 z6 c( f1 \4 a continue;8 q& d$ d4 @' \( y. {; k! J
lpSkill->dwLevel = dwTmpSkLevel;9 U$ y/ o. l& ]9 k7 F3 J
}
. S( V( i9 L# e$ P }; H. ^+ ~" p: i, s" t( t
}) f% B0 J" K9 s. m6 P: y `3 d- Y
else if(IsHero())& |$ ^, w6 z2 \3 P# z! d
{9 _" ]8 }$ G8 t4 H2 q
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 6 m! P7 ] S; [( L
{
4 n* @! \' o& r% u* ]9 O LPSKILL lpSkill = &(m_aJobSkill);' F; e6 [* T8 a: R5 v
if( lpSkill && lpSkill->dwSkill != NULL_ID )/ N' j6 {3 f& k. m
{
# m# b) ]. |% @3 @ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
% s+ l' m! f& T4 \( h! R: F* m if( pSkillProp == NULL )
( ~5 }8 u$ ?$ }0 v; P continue;
7 t. x7 R; g' B' k4 }! `" |' i2 I if( pSkillProp->dwItemKind1 != JTYPE_MASTER)- E. c5 s" ?& `7 q
continue;9 f* M/ W5 ^: T
lpSkill->dwLevel = 5;
0 Q9 }" d6 q1 o6 ^4 w }& b% ^9 b% w; c, v' A; `. Y
}4 z3 D1 u4 W7 ]( h, |" @; { w1 O i
}
( h/ t0 U/ J" k else if(IsLegendHero())( M R( o# E$ ^
{
, p& x. r" X7 I; i8 K4 o5 \2 d for( int i = 0; i < MAX_SKILL_JOB; i++ ) ; m- R% _, h) r( `* l' u3 I2 n+ E
{ # A) Y! p7 S5 U; b) L, B
LPSKILL lpSkill = &(m_aJobSkill);
- D" r" q7 Z1 _1 b5 w+ S if( lpSkill && lpSkill->dwSkill != NULL_ID )+ F( O* L+ P$ p; l8 I
{3 T! c. C& f7 I$ g
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
6 t f) t3 k- v, I if( pSkillProp == NULL )2 T( B$ L' e( U( P# d2 P. N/ z
continue;
1 {+ m. k8 l* j) T# t if( pSkillProp->dwItemKind1 != JTYPE_MASTER)2 J7 Z" c" M1 O. G7 r% _
continue;
/ ]: ~; m& S; ~6 y lpSkill->dwLevel = 5;# F E. [6 P' }+ }# A
}! V3 K- C' R$ T1 w! }
}: _2 I" m2 L- R' s; `* k
}6 T( [0 u C- I
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
" R: l1 }+ J1 e2 H( ?: h3 V+ j if( bGamma )
( b8 Z+ P. `+ G/ B {
" w( x0 [ R' I5 m" X m_nExp1 = 0;
- }& j' E c2 ]6 z& R8 y& i% R }- d# X" t* m% q
3 x, n$ D' m9 b2 @3 H ( (CUser*)this )->AddSetChangeJob( nJob );
' m* Z' N7 o. B+ n! D* h2 e g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
4 D; C; F; R& ^! P; m- Z. v
- X1 o$ {! E u& r# v' n" C9 B5 W# V* @( s. P+ F- O
#if __VER >= 11 // __SYS_PLAYER_DATA/ d9 y8 c3 i8 I. i9 \
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
+ f" X6 m2 x' _6 N' |' j#else // __SYS_PLAYER_DATA
3 a; b+ w+ o% u3 h0 { g_DPCoreClient.SendPartyMemberJob( (CUser*)this );4 u, z- L$ a3 V+ @4 a1 a0 _# T
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );( w8 ?9 {+ c0 Q& h# A3 E. o" ]
if( m_idGuild != 0 )' U9 F0 y0 C, }/ {- T
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
& I, @( | k( G9 q#endif // __SYS_PLAYER_DATA* O* O/ j" W6 Y4 H( M
SetHitPoint( GetMaxHitPoint() );
& F W' Q1 j0 _# f4 v SetManaPoint( GetMaxManaPoint() );0 `8 u# l9 q; P
SetFatiguePoint( GetMaxFatiguePoint() );
4 z4 Y6 a6 z, z9 r if( nJob >= 1 && nJob <= 4 )
# N+ k3 q l$ h& {# y. E {
/ d/ g2 m4 U! J' W4 n m_nStr = m_nSta = m_nDex = m_nInt = 15;7 \# p0 D* X V7 ]3 j/ @
m_nRemainGP = 28; D) F2 {" e6 _/ t* S% P
}
% N$ c/ b ^ F% [! A. U7 ]( A2 O if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )9 E+ q! ]( v) ~' {3 y& h# _
{
7 Q. v0 D9 W# z, o. M3 i3 r$ `* u" ^ m_nRemainGP = 118;: X$ \8 M6 d [1 U! F" c7 \
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
0 H. b* F& U+ R; \+ C0 f* b% g m_nStr = m_nSta = m_nDex = m_nInt = 15;
% R4 X# Q9 C4 l* o2 X }
8 ]7 \1 u6 Y; q$ b5 x if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )' f C, h% Y! J. A7 T5 O+ g2 g
{/ s6 J, J9 b3 _& y4 h: y7 P
CItemElem itemelem;
' C8 C5 Y1 O3 K itemelem.m_nItemNum = 1;3 ~5 D+ L) b" U1 ]7 e, n- q q
itemelem.m_bCharged = TRUE;3 G% z/ Q: o4 L& _
BYTE nID;
) ~4 x( F2 [+ O$ A
% Y0 a3 n& x j if( nJob == JOB_MENTALIST_HERO )3 E; [, F* S! ~& Q4 G$ n
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;; d) w6 |1 I3 f/ g3 S3 U( W
if( nJob == JOB_FORCEMASTER_HERO )
* k. y# ~6 b8 @* G0 ?5 _ itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
9 a h' `& L+ C. P# n
8 v8 o w& S H: j( U: q( W! f ( ( CUser*)this)->CreateItem( &itemelem, &nID );/ p2 L% A2 B1 ^) W4 s$ `+ \
}
# @& n: T! o1 u1 `7 N# C6 _5 p g_UserMng.AddSetLevel( this, (WORD)m_nLevel );! E; m/ K# p+ ]( \
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
, K) E6 m4 M+ m+ D: t( V ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
0 O$ S& p& z5 n1 N4 k /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
& A! [5 R# k2 v) _. U. v3 | ( (CUser*)this )->AddTaskBar();*/
0 D1 E4 K, q3 {* h% R% ` ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
( c+ b! X+ a- _#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
% n8 T6 M" ^, a" z, o* ] ((CUser*)this)->CheckHonorStat();
0 [- [1 F* V" V8 ~/ c! y5 |: ? ((CUser*)this)->AddHonorListAck();6 J4 w8 r \! _" U, h2 b4 U
g_UserMng.AddHonorTitleChange( this, m_nHonor);
' b% @; `! v6 F2 v# j9 j5 ^/ e#endif // __HONORABLE_TITLE // ′Tà?" R2 T0 j6 R. ?- j2 |
}0 X" e6 ]; o( A0 t
#endif // __WORLDSERVER
8 t0 f' b# x* @}
. B1 ]$ r0 s; O" N& W9 q
* i# \8 w- e0 k! W; @然后你进入functextcmd.cpp并添加以下* E& [9 i: K; @8 Y& i: Y
! q3 v1 r, W" q4 ^0 N5 U* L代码:5 ^0 |; p" ]% W2 ]+ e
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )' B. z% v, r. `, ^: ?
下面插入, { t; w. p9 q8 I/ f5 g
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 7 j+ b; g- t M
: h; N# B: @7 c# o6 P
然后你去
" C4 X5 Z/ n4 B4 X1 }
: C0 ~- n" M7 D- _. x9 }代码:
. a! c" O7 G+ n1 \: r代码
: b4 z) o( E3 l' o }9 NBOOL TextCmd_ClearPropose( CScanner & s )7 x! v& s+ k- f k, r0 O# |8 S
{
2 y5 w. s7 w9 k- G. k3 k#ifdef __WORLDSERVER9 F0 H5 P7 \& r# W+ _
CUser* pUser = (CUser*)s.dwValue;2 b- w1 W1 h' @- P2 z6 e
g_dpDBClient.SendClearPropose();4 e- X6 j( r! t! k2 L5 C* r% s1 `% D
#endif // __WORLDSERVER
" Z7 h" t; R5 f# w return TRUE;; [/ s. G5 @- n6 p$ z( v* J
}
" P2 B) x* Y5 \4 k0 f& ~下面插入
6 [( S: Q' p4 ]# w: v1 s. g; MBOOL TextCmd_rebirth( CScanner& scanner )
% q2 [+ m3 r7 p4 r, X{
2 @ X, R! Q. S2 J' _' _#ifdef __WORLDSERVER
z3 s. f6 S5 I. Q+ J7 W+ KCUser *pUser;
9 P C$ U6 r4 i2 ?6 s) c3 g' tpUser = (CUser*)scanner.dwValue;
\/ X; G: k+ y+ R' y7 i6 [if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
. f: D" R: h0 I5 y3 L! u1 \pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);0 V# Y; Y. V6 |! x6 ^
else
/ F! u+ @% ~( }9 {# |. CpUser->AddText("你还未达到重生条件!");: t6 P& F7 d* V L9 ?# x0 [. q5 a; E
#endif
# K5 V0 w/ ~3 Y+ U$ K4 _8 Xreturn TRUE;
: [, i7 C, |6 w" o- X" l) w2 N8 J$ y}
9 R1 U! ~# Z' \' L ]' Y- S2 N4 Y. V
$ w- t! `1 Y5 _% G" Z6 G
8 T) }& V' M' Q0 G: N
# B, Q2 J' Q$ O; i' P |
|