|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel4 b* T g! n" K3 a; Z$ o& v
_# m) u# n( }- }& Q- q, u, S
Mover.h
1 w$ G) m2 G B$ J3 N2 R: P代码:
T. Q/ e' r; k* q- k找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
" ^' y6 B+ ~ C; O' ^7 x/ Z& Z' R! f& J6 S$ h
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 5 A* O4 G7 a% I3 u$ C# S
* y, D1 [% N6 p: f
然后你去mover.cpp添加
% ]* H5 m7 ~8 z; b( @3 S
6 U# m% c P! U代码:3 P. [7 [- b- d2 ~8 r
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )) A% w1 n( U& |/ q: r
{
& c8 T9 {$ {3 |4 o) r' a#ifdef __WORLDSERVER" _; c( v! `2 |- Y
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
: O( P! s, }: B1 d MoverProp* pProp = GetProp();
" s) e% L5 l5 P if( pProp )
% g/ {0 ]* s( k# J/ Y7 _5 u2 k {' U) k1 O/ E/ v4 l: ?
if( nJob > 0 && nJob < MAX_LEGEND_HERO )# m N6 S# `& i* m* D. B* I
{
, q; y8 z0 V* C( x: ~/ }# u# V# L AddChangeJob( nJob );8 `5 r& d/ V) f( {) u
}else{
$ Z! Q- J0 l* e5 C7 J/ k! b return;
( l6 i# f% k; H' S$ P }4 p) I) a: M( Q, N* q7 X
int nPoint = 0;, V/ Y( `$ `5 ?% I5 M2 W
if( m_nJob == JOB_MERCENARY )
) A1 A2 M/ G% C% E/ R: o nPoint += 40;4 R4 l! Y) w8 P) R( W; K v0 s6 A
else if( m_nJob == JOB_ACROBAT )
7 @+ x2 X0 v! V: S9 m2 ` nPoint += 50;$ e+ O3 w5 V7 B) u9 z
else if( m_nJob == JOB_ASSIST )- Y% L+ E7 J" ^3 i2 ?
nPoint += 60;
{ x o" T( Y; P else if( m_nJob == JOB_MAGICIAN )& }! K2 e4 a* e$ \! [! q9 K
nPoint += 90;
' y* y& G5 q: f+ j else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
# Y% a4 v# [: H' }# k+ C# l nPoint += 120;
( f' l+ u: I6 Y& K% o" {5 b else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )7 x& x, _( K+ ]6 K) @# J
nPoint += 150;
( v0 i) K! K6 d else if( m_nJob == JOB_RINGMASTER )
' s) I) V6 t8 \9 ]2 u9 Q) f nPoint += 160;
8 v1 s' L2 l' G' i2 h$ ]' @ else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )$ H Y/ M+ I) Y& D: U i/ p5 U! Y
nPoint += 180;! Y2 k; X% C) w; P# D" _$ U) T
else if( m_nJob == JOB_ELEMENTOR )
/ f& T( v7 | i' @ r) U& _ nPoint += 390;" `( z1 N- ]2 z, p
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
* Y8 q% }0 ], J, ~5 o- i5 k6 h nPoint += 120;
# Y& R6 ?# k- P) F# u$ ? else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )4 M6 [/ A& s+ b3 u; y
nPoint += 150;
7 y$ x1 Z) c) ?0 V, G9 B else if( nJob == JOB_FLORIST_HERO )
3 K9 j3 v F: }+ t: A; J8 s' a4 I nPoint += 160;
( i0 X: L% |3 } else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
E( [# a5 Q6 S e2 ]6 ]" P nPoint += 180;- x, T' V$ @1 p
else if( nJob == JOB_ELEMENTORLORD_HERO )
) C/ {4 c4 V, I+ d3 f nPoint += 390;5 e% X! T# `: R j+ O3 w; l2 a4 W: q
$ H+ O2 `2 b- Z6 J' u3 q
AddSkillPoint( nPoint );
) S6 x K- r @9 j m_nLevel = nLevel;
* V$ y z6 u% y. A# r X: w4 ]& m% V! E' [ |. ^
SetJobLevel( nLevel, nJob );4 W% u; l; F( d/ a
m_nDeathLevel = nLevel;+ i- `4 b) c9 ~1 d1 C
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
. g+ \. r% x0 @ k if(IsMaster())0 _& l0 _' q/ F+ _9 C6 J4 q! ^9 d6 s
{/ j, f' k1 E1 `; W# _ g
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
$ }7 r. J! a1 {# x if( nLevel > 59 && nLevel < 72 )
- R i9 V- z( f( I( y3 g* b& {% ?) E5 Y dwTmpSkLevel = 1;
: }5 Z6 f1 ]5 O5 [: K b6 t else if( nLevel > 71 && nLevel < 84 )
* b- c1 y9 i# I5 o2 m! c6 C dwTmpSkLevel = 2;! X0 f0 F0 }2 p4 Q( K3 l0 m/ Q
else if( nLevel > 83 && nLevel < 96 )
$ Y, s s8 p% a% Z8 `6 ? dwTmpSkLevel = 3;! X4 E* L3 K$ q5 j) U, w8 M
else if( nLevel > 95 && nLevel < 108 )
* M4 w9 B9 s; ?. k" s! V dwTmpSkLevel = 4;5 y' K6 ^: k/ v8 K. l
else if( nLevel > 107 && nLevel < 120 )8 h9 i/ K' d1 |! a+ [
dwTmpSkLevel = 5;
( u8 |1 ]" l1 P5 Q) G for( int i = 0; i < MAX_SKILL_JOB; i++ )
' h) @! m: I% w {
9 w, t" F, [* u- e* P! q& s LPSKILL lpSkill = &(m_aJobSkill);. N8 C; A% f, V) ]! x3 O0 K
if( lpSkill && lpSkill->dwSkill != NULL_ID )4 g7 x) ^, @. \5 ~
{
. K( @' d& \1 K: d, d6 H ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); : v! [8 ?9 X8 a! m7 A; t
if( pSkillProp == NULL )* ]6 K" L3 |5 A- h$ U& [
continue;
. f7 U {7 P$ E2 p2 j- `2 l if( pSkillProp->dwItemKind1 != JTYPE_MASTER)& g7 Y5 h/ |. R! \& y' }, Z
continue;/ W% A5 V, |& K
lpSkill->dwLevel = dwTmpSkLevel;
; ?' x' j) K6 i2 H+ N. {( I. D }4 u2 y; ]/ s/ n4 ]+ `- {
}% M/ n3 Z' `$ y: j7 \9 f* x# V
}
9 j6 f2 E7 S1 L' S% Z6 X6 | else if(IsHero())
$ Y( E1 Q) c6 b3 L. q# O3 a+ w {
7 l# j5 E6 A7 g: i' F" g7 o. q for( int i = 0; i < MAX_SKILL_JOB; i++ )
+ d7 P* o& z, i$ X1 o% ~* M; N { 2 q' }# h h8 V: y
LPSKILL lpSkill = &(m_aJobSkill);
+ R _& v a5 v+ ^3 \& J: d if( lpSkill && lpSkill->dwSkill != NULL_ID )
+ `1 I% L3 `5 e( c2 d+ R {
- Z- M: M6 `+ S& S4 ~ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
# \8 f1 c n$ N& J if( pSkillProp == NULL )
5 ]; p' R& n: s0 ^ continue;
8 c! A. \+ Y5 b) d& [2 w if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
U- E5 B7 M& H9 T9 x' a continue;
. W+ k, h( v3 a% s7 V9 J; n" N lpSkill->dwLevel = 5;) z \5 _ m0 Y+ k) R: L7 @
}4 K- M" A* k M9 N, H3 m+ m0 M
}
8 c9 C% ~' G5 d' C }& r. j& a+ r, D) v3 k3 A; d1 y
else if(IsLegendHero())
2 K+ v% P. q6 } {2 `2 o2 F- `- O. P3 {
for( int i = 0; i < MAX_SKILL_JOB; i++ ) . @1 p6 g" s( ?$ |; } z, F ^
{
# u& ?/ W0 {" k/ k' P0 J4 ^ LPSKILL lpSkill = &(m_aJobSkill);
3 _% ?0 P- ?% i+ P) [ if( lpSkill && lpSkill->dwSkill != NULL_ID )* L1 j' C* M& P; g7 E% j2 N
{$ y9 K1 X k& |# F% f
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
- Z- [! |" H6 S( x; f if( pSkillProp == NULL )' o. K a7 j8 k4 }4 s- H4 [
continue;
) X* b3 s6 ^+ G9 k; _9 J7 h if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
" M2 s7 B) I0 U" N continue;
* ~' D& J! w9 k# T( A lpSkill->dwLevel = 5;, |: j3 e; [8 Q; ?# _+ |
}
! S: g, a# Z* V7 |; ~ }
$ n' Q/ I1 H; R L! S }
7 T6 N8 h, R1 F* n: Y#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
L7 K' ]+ c$ g5 g, O2 R8 b: } if( bGamma )0 Y' V9 [* L( o- H$ e& Y
{1 \" r2 ~( X6 X1 Q7 \( M4 |1 k5 B
m_nExp1 = 0;
1 u- I* `! L" S0 m } |. D: b/ b) J9 ~: D* I# ?/ M& L
- T9 J& f- K4 F6 p! \$ M" } ( (CUser*)this )->AddSetChangeJob( nJob );: C$ ]8 s' ~0 U: ]' g1 x
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );0 F$ C; d- _$ k
" f9 m7 `- `* q8 u+ Q
+ w) L: u4 M. X: b#if __VER >= 11 // __SYS_PLAYER_DATA- { Q' `' ^# k! g x
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
# e9 @" O. A7 ?$ [9 `; Q$ P" p#else // __SYS_PLAYER_DATA
+ E5 G# s1 c6 ^& U g_DPCoreClient.SendPartyMemberJob( (CUser*)this );1 O0 d i$ K. i3 V6 V$ E( b2 Q
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
' ~( L5 F. M7 [3 M if( m_idGuild != 0 )
; P! ?3 E/ \/ w2 D Z+ Y g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );4 n8 j4 { F) k. B8 `
#endif // __SYS_PLAYER_DATA
/ t9 w/ u g! r) V) w4 D SetHitPoint( GetMaxHitPoint() );
; y& y, p& p! M: r SetManaPoint( GetMaxManaPoint() );# l3 M5 R/ z+ ^- S/ i- D) c2 z3 M9 }
SetFatiguePoint( GetMaxFatiguePoint() );
/ ^/ m- ]9 n' N6 e if( nJob >= 1 && nJob <= 4 )+ a% e# [; N# p2 _6 V [5 ?
{
& ]$ S; W% D( s. B5 e m_nStr = m_nSta = m_nDex = m_nInt = 15;
) F5 @+ q- w: m! h* F; H4 ^3 K m_nRemainGP = 28;! d# r: ^# G4 u' w* ]
}
; g. @! u' i# C9 i& D, Y if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
$ }* n2 q5 i% j" G, M {
4 x4 F! y3 g( m% A m_nRemainGP = 118;
, S# [/ @$ ^% Q9 D& ` //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;0 p$ h1 u. f5 L
m_nStr = m_nSta = m_nDex = m_nInt = 15;2 V) o, G5 P k3 M
}( x/ g3 f/ i4 u/ x1 @
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
; a, i: |. v1 s% M {
2 b. d, r3 e5 j) _, }* R' \ CItemElem itemelem; N+ Z. V4 B* C0 {8 {6 v0 v
itemelem.m_nItemNum = 1;3 {2 r$ A5 d b. T% }4 c9 w) a
itemelem.m_bCharged = TRUE;
6 z l( L. z9 ^4 o. @ BYTE nID;
/ t$ R s# f5 M4 r1 \
7 D: F" ?! @' V7 t/ ^3 c if( nJob == JOB_MENTALIST_HERO )
1 f( G ^- W3 v W8 }/ t itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
- d9 F7 F: F; U) S+ q3 ]+ k, e) R) @) ] if( nJob == JOB_FORCEMASTER_HERO )2 U7 R# _4 y( N; i; Q
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;6 j$ I; I) S$ O5 u- O3 n0 }5 L
: a& C0 a7 y ^7 J* J ( ( CUser*)this)->CreateItem( &itemelem, &nID );1 |" p) m1 m( V$ P1 u
}; V& X' @# W+ I' ?1 y
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
, N& A2 j. ~+ D9 } ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
( H2 ?' K- P# s% h- Z ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );6 x o* d3 A4 Q7 }7 f: h7 m* ~$ x
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
. Q6 i8 B% K7 g# O( M ( (CUser*)this )->AddTaskBar();*/
! j( P. I' }3 j; r ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
" M: m) ^6 ]! j7 U3 Z$ y#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
' }1 d3 M x- j0 G0 H Y ((CUser*)this)->CheckHonorStat();! S/ n3 W6 l; l* P( w6 q5 T
((CUser*)this)->AddHonorListAck();. O) S) \" ?% J
g_UserMng.AddHonorTitleChange( this, m_nHonor);+ I1 L0 U: {6 O
#endif // __HONORABLE_TITLE // ′Tà?6 z3 ]7 b/ T" n$ L* Z' N
}
- R$ C1 ]; {$ s6 R: O#endif // __WORLDSERVER9 m5 v4 X/ n* v* @* \. f
}
: k1 S- f* a! \+ k0 @7 H. t/ c" N
% h' T% ]* |1 k' J. c然后你进入functextcmd.cpp并添加以下6 _2 ?) t& h( n" U
5 C3 N4 O, g; ^- K
代码:; g% m3 d* h7 C, X" f/ i9 Y
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
) ?, A" ]: o1 L! @8 p+ M: s y2 G# c下面插入
, G; G L7 H' E+ v! }4 C; T4 JON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ) f- T( P6 b, d ` k8 @* I
2 Z1 J/ `& S2 F: j
然后你去
, P, e& J7 B! v1 [' m" I; h, W+ o: @7 T+ c6 E$ Z4 y
代码:3 t: L# ~+ g0 } r" o. G8 L
代码" h7 k, k! U/ U
BOOL TextCmd_ClearPropose( CScanner & s )
& W H1 F# z; _# P{
. T2 c* x3 ?- O; Q p#ifdef __WORLDSERVER& Y/ D1 M7 r% B- J$ ^& u
CUser* pUser = (CUser*)s.dwValue;( |' z& P5 ^. a @; w7 c8 b: p* u9 v
g_dpDBClient.SendClearPropose();, ]/ ]4 ?& n R9 u5 _, g% a
#endif // __WORLDSERVER4 O8 V5 c; A( f5 C# j
return TRUE; K9 ^ A9 z5 o# U& O. v
}- Q% [% l: b6 ]# g; ?$ P/ i% n+ I J1 b
下面插入$ N. v [) ~" L1 [! {4 u
BOOL TextCmd_rebirth( CScanner& scanner )
- h! L# a9 ~8 ^0 K{
7 m7 O. U% A n6 D#ifdef __WORLDSERVER
* F9 o8 O5 S* i% f$ a' h8 eCUser *pUser;
0 b e2 {! \: K, o, Q5 _9 \* qpUser = (CUser*)scanner.dwValue;3 l* f" E A+ H! E
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
: b( ^' M, I/ N4 n2 J2 dpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
! j" ^7 Y( v2 |5 C# [' m0 belse
8 |* w5 z8 k/ l+ \5 j4 OpUser->AddText("你还未达到重生条件!");# E S6 F/ Q/ r( l1 i. ]
#endif
) g R& P' ~; Ireturn TRUE;; N1 [! i5 t" p* z* j3 Q2 o
} 6 a$ j) x5 T" v- a
& v4 a0 O5 K& s2 j5 q5 {$ m7 r
# Z. J7 i m6 u; l0 |8 X& R3 O+ ]: {, B8 | q7 N
; A$ T% \. f: `% K; e9 {0 a- H
|
|