|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel- s4 z0 F7 Y* d a: G$ m y: k
3 c& ?# h$ D" D. \, [/ x
Mover.h
) @( O; S% h& h" j8 Q' J7 r: H* L代码:
2 J% a' N5 V6 x# N找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
" [: p& S8 ~- ^. T0 {
3 P* G$ F0 M1 o" E% N' v' `1 a4 r下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; . o/ d4 Q3 T6 W9 O1 f$ W9 M6 p+ P
( p! U W7 | Y' S; e
然后你去mover.cpp添加
- C4 ?2 g1 k! H% d: q
, f V6 B3 U: K代码:) q+ M: q, M5 R0 J( C8 s. w
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )1 R7 h% H6 u( g& q( E+ m
{
5 i- E8 @& l; T2 W#ifdef __WORLDSERVER
5 ]6 X/ |5 ]3 Q' @5 \7 j+ ~ // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó6 A6 [# m' W) c, h
MoverProp* pProp = GetProp();
) O/ [0 m% u) T# ` if( pProp )- B" l; ~* G2 s7 ~
{
, c7 C/ ^: W$ \3 _: R if( nJob > 0 && nJob < MAX_LEGEND_HERO )3 q6 ]- N2 N: I+ ?' V+ C
{2 m: R n. k l; f: u* d
AddChangeJob( nJob );
$ u N1 X2 I2 M9 S }else{+ v7 s) I( Q' F0 W" G7 |
return;8 g9 H* w3 { s0 E# f: K7 d9 Q
}
% c( j. q( w1 }" @ int nPoint = 0;
9 R% M5 c3 @% Y# t' [1 p4 i if( m_nJob == JOB_MERCENARY )
] y0 e7 r; F% F9 Q* E nPoint += 40;1 c" t: h! F% H8 k( e7 a3 N- y
else if( m_nJob == JOB_ACROBAT )
D6 e: Q/ ~, J1 O- T8 q* T% p nPoint += 50;
1 }$ d. H6 m2 S4 a else if( m_nJob == JOB_ASSIST )
. M& @8 W/ R4 \) g { u nPoint += 60;1 q/ C1 A/ N$ ~/ G* ^
else if( m_nJob == JOB_MAGICIAN )% F2 G9 c* _, r; X
nPoint += 90;
) q8 d) [$ O* D7 ~) j% }* r( |9 e else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )/ B3 i# O+ z* X7 \% Z! F5 ~
nPoint += 120;
1 o( j8 S S% F/ w# a else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )) x. i4 R X7 O
nPoint += 150;$ G2 u/ C: }& m# R
else if( m_nJob == JOB_RINGMASTER )# C' X# r" W5 L' R. J4 p
nPoint += 160;3 k, Y% J* T$ o
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
( K! _ [7 H3 e; u5 m$ L9 ^ nPoint += 180;
4 ^/ l z+ f5 I/ c. P- [* D else if( m_nJob == JOB_ELEMENTOR )
5 M( K) h. D) F* C o nPoint += 390;
' _- S( i* n5 d. N& |6 ^: } else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
; c$ Q! }7 q. l, |. I/ ? nPoint += 120;
y6 |2 f1 x3 s- T else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )0 x0 c% n% v; D4 Y
nPoint += 150;
; z( I& V) N: u4 q' u else if( nJob == JOB_FLORIST_HERO )
# S7 Z* Q! S9 _0 F: c) U3 _' { nPoint += 160;
1 D4 i$ k3 J% {0 ~ else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ): _5 p7 W" p- [5 e, m1 `
nPoint += 180;. a9 y7 x- s6 ~( w5 D3 I% h' o% e
else if( nJob == JOB_ELEMENTORLORD_HERO )/ |/ d5 e+ q! }& |0 d! [2 q0 b+ ?
nPoint += 390;" x. r2 X5 K6 j8 B& t9 A7 _2 x
% \" y" ~9 z2 r; M AddSkillPoint( nPoint );
# w9 G0 l+ f" y( Y* g% r: M m_nLevel = nLevel;! U( m% T9 Z; ~2 D" {0 Y7 m+ N- |: M
8 ~( f$ S4 l6 F" o/ S$ R SetJobLevel( nLevel, nJob );0 c! C) R9 @+ r1 ^$ A n' S
m_nDeathLevel = nLevel;
4 A! B. K0 P* X& v. h2 C3 \/ c#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
" w6 \7 T/ O- m if(IsMaster())
* F( V7 Y) u- X {
- V& R; [$ A' ^ Z) X int dwTmpSkLevel = 1;//60, 72, 84, 96, 108% d- P M- g6 P/ E6 A+ {
if( nLevel > 59 && nLevel < 72 )
- r4 K$ \+ Y: |9 Y, t- J5 f dwTmpSkLevel = 1;& Q. c' D: a9 U$ i# S( C) b0 P% _
else if( nLevel > 71 && nLevel < 84 )
3 J) x" W/ ^1 Y# I% h" j' w7 |; a dwTmpSkLevel = 2;' R. K/ `# k P
else if( nLevel > 83 && nLevel < 96 )& E: h" U4 t) j6 r* }5 p$ u8 W
dwTmpSkLevel = 3;# \1 D* s; l- x2 B2 K
else if( nLevel > 95 && nLevel < 108 )
6 g m. \0 U, r3 p3 ` dwTmpSkLevel = 4;, O7 [- W$ ^3 J/ J) B! F) X
else if( nLevel > 107 && nLevel < 120 )/ i& h9 c" a$ @ f! W8 A
dwTmpSkLevel = 5;
! X' Z2 @5 Y* ~4 F for( int i = 0; i < MAX_SKILL_JOB; i++ )
6 t( X! u: X# q$ z6 M {
: u3 e, Q9 F( N6 u5 g) h LPSKILL lpSkill = &(m_aJobSkill);
: ], K9 o' X9 L5 Q: X if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ |/ d0 m" G3 Q! f6 G U$ E ? {; M( B$ c+ ?& u
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); / q- l3 d6 |; o _
if( pSkillProp == NULL )
( q4 X. m( W8 O, b) O7 O continue;
- r- B; \8 Z. {3 Z x/ P& G if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
% P6 v& d8 F+ H& R! T continue;
* _- C( @' S. |# J lpSkill->dwLevel = dwTmpSkLevel;2 K# S2 @! y+ l$ U7 P
}
% ^% K* N7 l& k6 @( C }" }$ q; |5 E% t, @* a- Q
}) l8 Q7 V( Z7 o
else if(IsHero())) Q! u+ L/ q2 |1 `. F% Z* C5 z
{
. [ x6 d$ o7 B for( int i = 0; i < MAX_SKILL_JOB; i++ )
/ p6 u0 C/ g; u& L" t! f _ { + l: Y; d! u, c& I( {$ p
LPSKILL lpSkill = &(m_aJobSkill);, _/ L' V% [& _$ p3 a# f: Q
if( lpSkill && lpSkill->dwSkill != NULL_ID )
* s6 X5 y: N. X4 M {) j% o4 s9 h$ s0 _# ~
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
6 d) |+ d, u9 t0 q. y% d3 } if( pSkillProp == NULL )5 ^2 B/ d8 }# T" h4 |
continue;7 |2 W; Q! c6 @
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
2 Y. R: c5 m8 _$ ]& Q4 J6 v& ^0 n continue;0 b0 ]# b% `' @
lpSkill->dwLevel = 5;6 v9 f6 [0 z3 H' w1 q/ d2 Q
}, h# N m% N' B7 f
}& G% _! Q7 B5 F# [ m
}+ C4 E) {, h2 {- l3 i
else if(IsLegendHero())5 h. W( h- c7 F; u8 T
{, ~3 p x3 W2 _" p( z; S) @) I
for( int i = 0; i < MAX_SKILL_JOB; i++ )
* v7 b7 C1 y2 |- ^" D: c {
5 Y0 _* z1 P" J+ T8 n& B: } LPSKILL lpSkill = &(m_aJobSkill);$ S0 d }2 ]) r$ y1 h- O6 K& [
if( lpSkill && lpSkill->dwSkill != NULL_ID )2 y, \9 X, {, W; p
{
. w, e8 g! L& e5 @$ w z ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
7 h" S6 z, N3 b if( pSkillProp == NULL )- b* F: o. k- g f2 @
continue;$ t6 r4 {% g/ Q( d' ]
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
, m( `. T& ?: H+ l# k. W continue;
& H6 t! d7 k2 V3 S- I) }7 R lpSkill->dwLevel = 5;4 J( i5 X! O7 P( g: d5 N2 w
}
1 L( P; Y* l$ l2 e$ A4 v# y }
" a: Q8 @# }* {0 g }
) m& K. s3 S& j m; E#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
/ v. y) H6 Z: ?) i& O6 v if( bGamma )" Q6 ~; }6 q e0 H1 r: ~
{& ?3 `4 i5 Q- V4 {) }2 o2 `9 e, J
m_nExp1 = 0;) P" t9 i, h# B( }
}$ e* i2 ?& r; l9 Y2 R( z
F- P; F( x3 p. Y" j: |$ q5 W
( (CUser*)this )->AddSetChangeJob( nJob ); l& R: A% l' o6 S4 e, I0 w
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );) | N" k5 u- r+ a& `0 g
& c2 b# b. A$ p/ j# i% o3 _
1 o# R& V4 d9 H9 `
#if __VER >= 11 // __SYS_PLAYER_DATA
6 I2 n5 a: ^, ?' ^+ \/ A/ h7 V g_dpDBClient.SendUpdatePlayerData( (CUser*)this );5 Z+ x. M5 v8 H4 J7 u
#else // __SYS_PLAYER_DATA" ?$ [4 V. y8 A8 t! L6 q+ t& q$ F% A
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );2 P. x3 y! Q9 _9 a
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
2 }% d* s1 Y9 _+ G* j L1 z9 n1 y if( m_idGuild != 0 )
( v" k* u9 L3 P6 z g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
: M0 S& d+ N* Z7 Z#endif // __SYS_PLAYER_DATA3 O) J1 k4 q2 \1 D
SetHitPoint( GetMaxHitPoint() );1 y7 l; a1 w; C( n/ l
SetManaPoint( GetMaxManaPoint() );
" z. `: ], u2 Z2 n, C. c4 W SetFatiguePoint( GetMaxFatiguePoint() );
7 G, a, }! b* A if( nJob >= 1 && nJob <= 4 )
1 C( O/ L# Y# a( ^2 }; G- K& e {
. a8 K) {8 H( I m_nStr = m_nSta = m_nDex = m_nInt = 15;
1 L" d4 K% @) } m_nRemainGP = 28;* A1 Y3 f0 Y- `" F9 x
}# d; D" k/ }2 ^, R$ k) X
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
, }( Q* v6 Z. Q" ~ {
9 q8 w7 p8 [( z0 Z( l m_nRemainGP = 118;( U( S9 Q/ K; D4 V
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
. \; B |$ O* T' }* B6 @' e1 M m_nStr = m_nSta = m_nDex = m_nInt = 15;' a- u: w! w" U# D" X3 P6 p& v& C
}
+ i* Q# t0 i: ]9 M& Q' a+ V- a5 c) ^ if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
0 H% i2 b' P+ c0 v8 E {
/ R9 S8 l& B0 p8 t% v6 p CItemElem itemelem;1 V* ?" d0 @% p
itemelem.m_nItemNum = 1;
4 y" k( T$ ~; }& ]' [# d1 M itemelem.m_bCharged = TRUE;
- `3 {* K8 a/ x( m4 m BYTE nID;
0 D3 v+ Y+ U" j' n5 c( [6 S* ~" m) r% k; v& R- s
if( nJob == JOB_MENTALIST_HERO ); g# i& W: B7 ~8 V8 j6 m# u
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;! w3 R9 y/ U0 l: n1 k0 b
if( nJob == JOB_FORCEMASTER_HERO )
7 R, g3 e# B: F; V itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;8 k& h! c1 o, j8 G) n% l% w
( F4 l& r% z+ i' R1 O
( ( CUser*)this)->CreateItem( &itemelem, &nID );
$ U+ f) k% R8 G8 Q; ` }
3 V( C% e' U& G8 p4 T! M- ]; B8 W8 Q g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
) r" a5 [/ @! ]) Y n ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
. b% r) b3 n+ m6 D. ^ ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );$ z: K4 V% N3 m: N
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
j7 h" ^% R/ s( Z5 h ( (CUser*)this )->AddTaskBar();*/
- K1 ]0 l' I/ e ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );$ ^! f/ E H. Q2 V- a
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?/ w6 ^/ M/ w8 D* X+ l1 e v7 L
((CUser*)this)->CheckHonorStat();: x: H b3 H* b0 {- e8 C& u
((CUser*)this)->AddHonorListAck();
' B# m& V e6 B" I1 d g_UserMng.AddHonorTitleChange( this, m_nHonor);
2 ^: y5 n% s" N# ]#endif // __HONORABLE_TITLE // ′Tà?9 u; ?8 A; A) u( a) U
}
, h( `; W/ t# }* ] ?2 t#endif // __WORLDSERVER B/ ^5 S1 U& B5 r3 @4 `! I
} m" y E4 S2 L! F0 t
# n( D# P5 x5 N2 U/ ~+ g然后你进入functextcmd.cpp并添加以下& t8 q& E" X# _5 t% i# D
' N0 H9 P0 ?1 d. Z3 T5 g代码:
$ C: R1 a/ Y1 L- m) I7 o% nON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
) N C1 N3 U0 e7 l; p下面插入( u2 Y4 o& D+ R
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
7 T) k i' W0 d' h% F
( E l8 \% |' ~9 F1 V' t然后你去
. Y0 K' k! q) y1 u9 N" i* o* I3 l1 Z
' d% X+ U6 @6 S. ]9 ]2 H3 D代码:
4 f: }9 G" ?$ f代码3 @! L) n+ C3 O8 j" ~! }. n
BOOL TextCmd_ClearPropose( CScanner & s ) L/ T+ E2 t8 z+ f# T* M8 N" A, X
{, O' \ t7 w7 Q# m7 \9 Y1 @
#ifdef __WORLDSERVER8 K, c) L7 _5 H) I! }: t, e
CUser* pUser = (CUser*)s.dwValue;) Z% j5 S; k1 X8 R* n
g_dpDBClient.SendClearPropose();
& D4 c( U# T& B9 \/ n+ r* G#endif // __WORLDSERVER0 n1 X9 p9 v: u" y# w) b2 _1 s3 {
return TRUE;
- z8 r( Q" J8 u}$ Y& F/ {0 z" r
下面插入
9 a7 A3 H0 z! d0 Y, NBOOL TextCmd_rebirth( CScanner& scanner )
) `' l/ }6 g3 A$ F( m{3 b. ?: ]' n% I; O3 x( w$ }
#ifdef __WORLDSERVER
+ a) X5 g: d$ z. PCUser *pUser;4 s5 ~' p4 { J- a5 p/ r, M
pUser = (CUser*)scanner.dwValue;
# ]' ?; b# Q2 `" ~ V4 H/ ~$ kif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
# ^( v/ O: G5 I. FpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
1 ~) ?: _' o; B6 I- @# Pelse
# m' E" C: r; g3 P3 F/ ^2 vpUser->AddText("你还未达到重生条件!");
/ }: u0 j6 y+ G" ?+ ?, Q, A#endif, z& y! ~* k) V% [1 C
return TRUE;
\# i: R/ X3 `; W5 W9 _} ! t4 r& ?& e! c8 o
! Y3 w! f" [3 {, r! U" Y& h; m6 R8 e9 l0 I7 z" I; j
% S' x; Y9 i7 v4 b& q0 C
* e y7 K& }+ t; K& @0 r |
|