|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel- r7 s; g+ B B& G. F M4 [% [
$ y! `$ y. u2 } e+ l2 p' F- V: uMover.h/ P0 u! M: E; D3 U2 @+ m- L' J
代码:0 g% A' {5 x7 T$ A9 N% K/ P3 ^
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
4 K( ^" l1 F0 p+ m0 d0 p1 G: Y" N/ H2 q" V, ? f8 B b
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
~# x# j7 Y' Z- I q% ~
0 J( n U' ~8 s" s然后你去mover.cpp添加4 S& w5 m6 }& @6 O3 J3 ?- o
: N3 m) w' C1 P& ]# P* L代码:
! a q# S0 Z( R( xvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ). B8 R3 i# q$ n8 F" g
{
, q& t; d4 P% g( N; t! x2 U#ifdef __WORLDSERVER
% O4 Y2 F0 ]3 [+ V- D // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó" o$ S, `/ \4 l! F2 Q& i$ q& f
MoverProp* pProp = GetProp();
, Z( O1 Z) z1 |7 l% a* K! g if( pProp )
$ \" s M+ k, ?9 O8 d- `+ i" U {
7 V7 [' K, u2 E if( nJob > 0 && nJob < MAX_LEGEND_HERO )
3 c6 R( a. @9 J; T' ~0 n { R" N+ v6 l, i/ c) v# Z
AddChangeJob( nJob );
. T: L' W; ]6 V2 Z& n$ h }else{
$ T( f' ?# V! |! j return;
B/ {7 K3 y( S* t3 d }
8 r T5 o: T6 Z* C: l" B3 [9 A int nPoint = 0;
9 X! K$ w! U$ w7 V6 C4 G( c if( m_nJob == JOB_MERCENARY )
" e) C- S- ~/ w, V( ]# n nPoint += 40;; E) ?- l) m7 f! T- Z ]( F# d- j6 K
else if( m_nJob == JOB_ACROBAT )
4 L. {3 g$ L3 \5 [* y* u nPoint += 50;& E& ?! Z6 x: c h+ ?
else if( m_nJob == JOB_ASSIST )
: m# a% r) P q( G- ? V nPoint += 60;
) i4 P3 h. L; N else if( m_nJob == JOB_MAGICIAN )5 B: @: h) n: @& H' j0 ^$ l
nPoint += 90;: _; A. `/ p* N8 x: M$ W
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
% v" a4 F' A( q2 ` nPoint += 120;! y$ I5 D5 F7 S; e
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
. ~1 x% {1 d5 ` nPoint += 150;8 A7 ~1 K P0 U% M
else if( m_nJob == JOB_RINGMASTER )0 a: e% {/ A0 V" F+ O
nPoint += 160;/ f: Y) N+ t% ^& S) o+ Y
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
8 h5 L# V$ `# I: t nPoint += 180;
; {8 ?6 ~3 ^6 o: s3 z else if( m_nJob == JOB_ELEMENTOR )# U( r& d8 W% L1 \5 E
nPoint += 390;0 w; a, m9 d: M. L- H6 M% o
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
; t7 G F0 j: L2 C3 S, D. i, ^ nPoint += 120;3 a& X: W) H9 d8 T8 y- t) x2 G4 s6 o3 z
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )/ T: I" z. `5 B
nPoint += 150;
2 \. g* H, U: m8 O/ w/ c6 t else if( nJob == JOB_FLORIST_HERO )
, Y% Q6 E$ H: h5 q' U nPoint += 160;) L& _, H* D) ]5 W" e% C! u5 W" j
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )# c' e$ ]9 u0 u5 x0 @! v
nPoint += 180;3 F8 M/ X K3 Q. R6 ^5 l
else if( nJob == JOB_ELEMENTORLORD_HERO )4 k) O4 ?+ A+ w2 }" j8 M
nPoint += 390;+ p! t/ \- j( q. U
B4 }) a' o! C9 M3 ?! b+ [
AddSkillPoint( nPoint );+ `- [" z: D1 U4 \. T) ~' m
m_nLevel = nLevel;
8 o# O2 i# @, ?/ R3 E/ h& g! @0 Z8 K( W: `# b
SetJobLevel( nLevel, nJob );
% h6 R+ v) Z: X0 }3 Y9 t/ ` m_nDeathLevel = nLevel;& m% P d' H' N% h' Z' k
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
( l# c) k* V: p! I if(IsMaster())! l6 W7 g" E2 j' h1 R; \
{
3 P( ]0 K5 q4 J A int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
0 v. Q- q* q9 b( G+ `7 v if( nLevel > 59 && nLevel < 72 )
N" R8 q" D. P7 x) V dwTmpSkLevel = 1;6 \2 V! X/ S8 Q
else if( nLevel > 71 && nLevel < 84 )
$ m, u, v! h6 o0 o" p% a. ~ dwTmpSkLevel = 2;
% i' K& X: N7 `3 F6 `' k else if( nLevel > 83 && nLevel < 96 )0 g' k5 h1 ]0 x$ a6 N/ F5 i
dwTmpSkLevel = 3;3 W! y- a6 Y( D
else if( nLevel > 95 && nLevel < 108 )
2 {) i2 H2 j4 U) W, L dwTmpSkLevel = 4;
8 A: @2 e, j8 K else if( nLevel > 107 && nLevel < 120 )# H8 U' o. i: A
dwTmpSkLevel = 5;
$ i/ o3 T! M+ n( M for( int i = 0; i < MAX_SKILL_JOB; i++ )
) b3 A5 J2 q0 x; U { g ^* H( P. C
LPSKILL lpSkill = &(m_aJobSkill);# n4 Z' B6 \- v- ]2 ?- X
if( lpSkill && lpSkill->dwSkill != NULL_ID ); }/ z1 B c) d. W: i6 s
{2 B4 }/ W9 K. H% }0 @; h
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
4 Y$ u0 |) K J6 X1 h7 {( U: T. b2 S( B+ ` if( pSkillProp == NULL )
. W/ b# c' M8 `1 G- t, h9 X continue;3 D' i1 S$ ^7 }* L) @# e
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)) b; c' s8 L m
continue;+ O9 d$ C2 W! c A, ?" o, u2 W
lpSkill->dwLevel = dwTmpSkLevel;
' _! R |( i! f } }
. v6 ]1 i* o6 Q$ i, {2 n6 b }
" y4 u( e" q# w* q$ C* G$ A# T }- K. Q1 V. w0 Y' i3 f/ L0 y8 m9 y
else if(IsHero())5 ^8 r& R/ n9 H5 D6 W7 }3 U( y: ]) k
{
* v3 ~$ _& I. S# q/ z2 ~& h1 I7 p for( int i = 0; i < MAX_SKILL_JOB; i++ )
3 j$ f, T: v! x# w6 [1 S9 p$ {: ` {
( K) ?3 c/ q2 c% o8 q5 L LPSKILL lpSkill = &(m_aJobSkill);
+ H( b/ O! `$ P' \! K f9 u! @* W if( lpSkill && lpSkill->dwSkill != NULL_ID )
! ?: [& x" w8 P* z {
$ I. |- c3 b7 ~) k# m ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
; b4 f6 ]; N: \0 x9 I9 y) w7 ^ if( pSkillProp == NULL )( f5 T: G9 y( ?7 P" h( g# o/ m) X
continue;
" R' y( ^/ U$ f# w5 j) ? I if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
8 T) [, }3 I+ i& \: h& a z9 b continue;. T/ {! e* \ ^, Q$ R
lpSkill->dwLevel = 5;
! A% R4 c4 V3 }, @ }/ J5 h7 N, ~: z, U5 {
}4 `, C, \- J) @( h8 _' v& F/ |
}
$ W1 J+ L( d& h# Y( x/ B0 J else if(IsLegendHero())
- ]. R |7 L3 x4 V3 o {
5 \5 y3 e* C: L: I7 U: v, ^ for( int i = 0; i < MAX_SKILL_JOB; i++ )
+ m9 r/ o. X/ b' @+ Z" B% T+ m { 0 e# o; F4 e4 X) ~' R7 b
LPSKILL lpSkill = &(m_aJobSkill);6 C- ~, i2 }3 ?
if( lpSkill && lpSkill->dwSkill != NULL_ID )0 B6 k! S2 m0 S# Q; `! p3 j2 o8 ~
{
! _# r- @, n. J7 `: D: C$ Q, t ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
. r" ~( u4 f. Q1 Z. Z" ~ if( pSkillProp == NULL )
* V$ ~# f& R4 ?" u( ]2 [* y' q4 E continue;
, q9 m; L) d0 { if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
9 G1 R: y8 w/ n9 y5 s0 r8 } continue;% _( m+ \ Z/ C, \
lpSkill->dwLevel = 5;0 R) d2 m4 s/ |! O: z
}4 o# N. t, E1 ^ H0 y
}
: v. G. W1 T) ]5 k* X7 r" y& C }- p& N/ [/ L6 @6 ]5 H' ]
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans2 ^! ?2 _* [% i% m( Q+ x
if( bGamma )
$ K, q$ ~5 G- n {
9 k, B5 J y$ l0 @: n' { m_nExp1 = 0;
0 A& F. g' P5 G# S; g% {& Z* L }
0 H9 i; d. U8 y
% @! l' K" [" D. ?5 | ( (CUser*)this )->AddSetChangeJob( nJob );
) j2 a% \4 M! ^" g% V9 ?# k/ z, i g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
3 g+ m' d- C5 k
8 z* e4 ?- ]& m, f" T8 O: V) c' T; Z; [$ Z8 A5 y- r2 h% g
#if __VER >= 11 // __SYS_PLAYER_DATA
6 M$ ~) T6 w4 z% U: ~. h g_dpDBClient.SendUpdatePlayerData( (CUser*)this );, A$ Y9 G! m; r% y/ V* R4 l! S
#else // __SYS_PLAYER_DATA3 B: m8 g. P, s" b E" X5 C& ]
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );" n, d% Z" W$ d- }% j
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );- _" Z$ n! Z) H5 S" p7 h
if( m_idGuild != 0 )
( \8 J- A2 P i U g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
" e# c' `. K& z6 N" ~0 p#endif // __SYS_PLAYER_DATA
) Y( _; c. N# t- s; D: q; b+ Z SetHitPoint( GetMaxHitPoint() );; J0 a6 b& o5 j4 S/ r3 b$ l
SetManaPoint( GetMaxManaPoint() );
4 H+ Z% a* d0 A6 v) G. \" \$ v SetFatiguePoint( GetMaxFatiguePoint() );" q8 w! v, j+ l: s7 m
if( nJob >= 1 && nJob <= 4 )- M$ f2 C+ m! Z3 l
{
3 B' [. v% R ~. w: o) u m_nStr = m_nSta = m_nDex = m_nInt = 15;
- P. `/ o. u; l0 j1 T& t6 T m_nRemainGP = 28;
) ^, g* [8 D' ~5 M7 s }8 z3 E- }- y B$ M8 y2 t
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )- f: N$ W' c- Z: b, \
{
5 e: Q1 \, f q; `: \ m_nRemainGP = 118;
5 C2 T+ Z& v" S% u1 [' g0 Y //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;4 ~0 ^& p, v& W& A
m_nStr = m_nSta = m_nDex = m_nInt = 15;
7 m3 k' J7 q5 J, U' V4 P7 O' j1 l+ p }( g- v( P& n) L$ I0 B
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
( d) T& p5 P a$ a0 T {
$ E9 d I9 k7 {% ?8 ?0 a CItemElem itemelem;) O0 p$ M: ?, t# k! D# o; q
itemelem.m_nItemNum = 1;
) @; y& p) s, u1 i1 x) t itemelem.m_bCharged = TRUE;! p& m5 i3 {6 T2 y+ X! {
BYTE nID;2 g3 K4 u7 P! Z% E. G* [
) O9 [% ]4 q: ?* W/ u( J# E2 d
if( nJob == JOB_MENTALIST_HERO )& L8 h# D9 p4 h& v) T
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
; @+ m+ j, ? u( q0 ? if( nJob == JOB_FORCEMASTER_HERO )( `) b: r1 P; M5 ^
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;7 J' A8 l. ^' |' j( A
& I$ C- m4 i4 r' }9 L9 K. X
( ( CUser*)this)->CreateItem( &itemelem, &nID );
1 a$ T# j5 _. o2 m }
% s7 v/ x, {5 Y8 W6 z( F* O g_UserMng.AddSetLevel( this, (WORD)m_nLevel );- c2 {# Q$ V8 x, i
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
$ A3 ^9 S+ ^$ e7 n* c! E" v# j# T; M: T ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );" e1 L2 V+ V T$ r, B3 e2 Y
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );6 [+ m! s; Z6 E; b
( (CUser*)this )->AddTaskBar();*/
3 j# B- J A5 k) t ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );4 K0 ~! }; G4 j* M+ }8 P! I
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?4 |$ L6 ^ e( R. l$ G, w+ H* R
((CUser*)this)->CheckHonorStat();* i% | y) J$ F5 m7 M
((CUser*)this)->AddHonorListAck();
% q2 a0 O* S8 v5 |; ]" g+ [ g_UserMng.AddHonorTitleChange( this, m_nHonor);$ m, s7 i+ |/ k. t2 W
#endif // __HONORABLE_TITLE // ′Tà?
a5 J/ J( g& e% h4 c) K5 V$ B O }
, ~$ H) g0 p9 j/ ^0 L#endif // __WORLDSERVER J8 A. |+ A/ K' V
} ( z+ S, H% ?9 z, B
* Z1 g- e$ N) ?; Z% U: r) C7 i然后你进入functextcmd.cpp并添加以下. [9 i2 w& L+ D: b4 V3 O
0 i6 g8 R8 o" x1 d, S
代码:
8 y. }/ e3 W! S' m6 p+ rON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
7 s& U4 F F0 O- ~6 K3 u3 b/ u. F下面插入 p: [% H7 I: k1 N7 q
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) a* r4 B( J5 S
! A4 ~$ }# W2 ^% {" R: E2 e7 {6 I& {% j然后你去' ~) J# s8 B% ~) i% n) J
: g" ^0 ^. v: q& l9 h" O; z
代码:
7 U; m: A0 a* V7 k2 @* n3 j/ u& o6 p代码: j% r5 W8 C3 [
BOOL TextCmd_ClearPropose( CScanner & s )$ t( u6 a" d" ^7 z
{1 @1 R- C9 A! }) c) s1 |
#ifdef __WORLDSERVER3 X" M" J& D: y0 S% u. b
CUser* pUser = (CUser*)s.dwValue;# B. Y; p2 o6 x
g_dpDBClient.SendClearPropose();3 f9 e' T( A) C; h+ k7 q; K3 q
#endif // __WORLDSERVER
7 i# D1 ^4 K1 ^* J return TRUE;
+ h+ _8 j- N$ U& [1 a3 Z6 n}$ f! m3 Q# V, t* l* C7 D: t
下面插入
$ B3 ~5 M+ z) |BOOL TextCmd_rebirth( CScanner& scanner )# D$ y/ d- _( H- v& }
{
4 i P2 S2 c. d( ?& A! z7 X3 j#ifdef __WORLDSERVER2 g7 v+ s8 Y7 @! d
CUser *pUser;
3 a( f+ K2 Y" D D; mpUser = (CUser*)scanner.dwValue;9 f, F3 h" N5 K% J4 k2 |) O
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
^$ D4 t4 @1 ?% `6 V0 }: LpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);/ m I: n! D+ w2 O: r
else
3 h4 Z; e9 I! e9 d( v- R1 EpUser->AddText("你还未达到重生条件!");
' t$ s# Y/ P7 W5 z0 c( Q: t& Z#endif: T0 i* t- q! K: J! j. q/ U c/ w
return TRUE;% s# ]5 K/ v5 ?2 u% d
}
, r9 \4 u g$ x5 [% b* J1 \, b1 e; L6 u: ~1 O% w; ^
$ j: T/ Y |3 ~( L0 B+ p) B& O6 b
6 H& w6 D+ G3 G, B$ J. D
# U, K" f4 j+ n |
|