|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel- g4 f1 M0 s5 F N7 j" ^3 a
4 Q* U2 c$ i6 j5 S( R6 G$ x y0 L' L
Mover.h
9 M8 M) F5 V' I i" W% z代码:! l/ G3 t) n% G
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü( q: R6 H0 Y! F, k6 B
+ I3 {" h0 d5 `! @' \
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
/ `5 k: k$ a: g U! l
/ j+ {6 @1 T# p( J. {, r/ ^然后你去mover.cpp添加- T& A9 E& }; K& @! R
$ i2 s( B. @7 ?$ S6 a代码:7 e3 @! c' k0 S% T# z0 i# p
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
- @( A7 e! I+ g8 [{
& t, j. [5 e- v2 X S- ]#ifdef __WORLDSERVER
9 P8 X, m' ~& [- ~' a( I% E( Y8 q# m // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
7 m0 }9 e- F3 t3 t! s3 k: b MoverProp* pProp = GetProp();
5 ~$ G3 M0 b/ j( ? if( pProp )
9 m3 z: [$ e/ A2 ^& `& L+ @ {2 D- a' S: a6 J- U" L+ N
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
2 C- t1 q5 o- j. S/ S {
. X4 E, e- p; Z% P- c# q AddChangeJob( nJob );! C. r; y6 L4 a% p% S& l: M
}else{
# ]" `; `! E$ Q" V return;( H" E) Q9 K/ X {% }
}) U" F" S* t Y2 L. i- c+ s) X
int nPoint = 0;
" _% b* M( R, Q! ?$ e3 s if( m_nJob == JOB_MERCENARY )
/ d! D4 k ~6 q% ~: R$ ^ nPoint += 40;
S' g" B8 u5 ]* h1 H$ b0 [ else if( m_nJob == JOB_ACROBAT )$ L. C" @3 C# C% B" i: z
nPoint += 50;
8 w8 [2 A2 n0 L; ?+ T else if( m_nJob == JOB_ASSIST )
y& O7 A/ a0 A5 t, q( Z" @5 O# c nPoint += 60;
O" ]5 b# z" a else if( m_nJob == JOB_MAGICIAN )
9 _- c$ V: v" ~3 B8 P nPoint += 90;- `7 t2 N6 C0 v+ m( s2 H
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )1 M: U0 P7 O2 l# @. F: a5 h8 h1 A% R' Z
nPoint += 120;, G. p" a( B# D! p
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )* `. f/ y# N9 P4 O- Z$ J# Q; z$ B$ D
nPoint += 150;: R. @" ~+ t* B; j2 `# E7 Q
else if( m_nJob == JOB_RINGMASTER )
$ ^ y9 U1 ]+ ?% D7 \* [& U- G nPoint += 160;" _$ P. t) o) X1 n, M, R$ }
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )& O% @2 O5 L2 x8 |$ }' F3 |2 Z* w
nPoint += 180;
" n4 R2 X) N: @, l: Z) w! O# v else if( m_nJob == JOB_ELEMENTOR )
5 B" p3 [& f Q& `* V {) } nPoint += 390;
( P4 S: C8 Q, F" r2 D3 U: { else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO ), q# O }; i6 F' a7 J% A; Q
nPoint += 120;7 g g# U2 y' I* k' s) G
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
6 t i/ \- H4 U& k3 M; c4 H4 z nPoint += 150;4 y" {; j$ p0 v$ t! |1 t5 J: P
else if( nJob == JOB_FLORIST_HERO ), m+ s! [4 B( \' U
nPoint += 160;
. Q Q- Y. U$ u else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
' k( ]$ J. Q) n7 o" V7 W nPoint += 180;5 [- L# H4 U" l* N4 _) q
else if( nJob == JOB_ELEMENTORLORD_HERO )
( A$ s# P! O! p! t: { P nPoint += 390;, i- L1 l6 U% N/ z$ T' [1 C
* ?8 A7 L' l3 m0 z8 q AddSkillPoint( nPoint );
' {$ i+ R% y5 n3 q# T$ C6 a3 Q m_nLevel = nLevel;8 o( P% q5 _, d& c/ |
. _* y. a& G h8 n+ \
SetJobLevel( nLevel, nJob );' ~5 W6 x* V$ J J8 h
m_nDeathLevel = nLevel;
' q9 E2 G! j. Q: K @9 U#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
3 b+ Z- D' H: H- X" E0 b if(IsMaster())% [" ]" K& f* N, s8 W
{
! E* L) r! y# P- A+ l" ^+ B int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
# s- f& L) f6 d! }! p* _ if( nLevel > 59 && nLevel < 72 )
% q: F5 s) S7 c* l. A dwTmpSkLevel = 1;( G" U O1 E; H; G
else if( nLevel > 71 && nLevel < 84 )7 U4 w8 P# w) Z
dwTmpSkLevel = 2;& J5 H# X+ T+ h
else if( nLevel > 83 && nLevel < 96 )
" P8 t. I) O2 k' x dwTmpSkLevel = 3;
4 r6 V# v8 w1 r0 B else if( nLevel > 95 && nLevel < 108 )
5 {8 e0 Z6 W- I. d( k% v; L' A dwTmpSkLevel = 4; ^- d9 b0 i$ ~2 ?1 r$ n
else if( nLevel > 107 && nLevel < 120 )
( S9 c0 {; S6 P0 O; y$ X" k dwTmpSkLevel = 5;
# y( t+ z9 y9 T) r1 I/ D' o/ f% z for( int i = 0; i < MAX_SKILL_JOB; i++ ) 3 }# V7 s/ i* B! y5 k& U
{ 9 u, }9 x( i- J* n3 m, h
LPSKILL lpSkill = &(m_aJobSkill);
- x& f* X. T, @3 A3 |6 {) b if( lpSkill && lpSkill->dwSkill != NULL_ID )- t; r5 l; i) x; c, h
{
5 m; J5 {+ X; m' c1 n; n9 L ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 8 L* g& m/ |" I3 l$ w
if( pSkillProp == NULL )
, O9 z& j6 P c6 A/ s+ O1 n9 z continue;
) ^ v8 n+ u1 o" i( y0 Y: Z if( pSkillProp->dwItemKind1 != JTYPE_MASTER) G- y- z# }9 q! B
continue;
. q; M. ?' M/ D! a, r lpSkill->dwLevel = dwTmpSkLevel;1 d1 M7 q1 B! x! l5 O# a, z1 ] {
}* I* k) d5 J6 n4 g6 ~
}$ m" }) | A* _' m5 [6 ~$ E M. W
} T2 `. ?% \- A B+ I2 ]8 t/ A
else if(IsHero()), E1 O9 A$ c0 v, R1 r U( X9 x8 A4 e. U
{/ G0 `# R5 E8 y. F* g
for( int i = 0; i < MAX_SKILL_JOB; i++ )
$ D9 z/ {6 f0 g$ b9 _ {
; M# r( O8 ~0 c1 N" E: P* @1 V LPSKILL lpSkill = &(m_aJobSkill);
! v/ L- ^! a4 @8 ]$ l8 k7 _ if( lpSkill && lpSkill->dwSkill != NULL_ID )# U; L; S0 B; l$ b( B% C
{
' m3 ]( y% Q& b" j1 a* W6 V4 x ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 9 T* t( r4 ]* `- [! E
if( pSkillProp == NULL )/ e# Z$ D! z; a2 B0 }
continue;
' J, m4 y" |$ b if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
# Y* @( Q( E& E- Z6 I/ } continue;
: ~, G& k* }3 s) { lpSkill->dwLevel = 5;
# J f& Q* {4 @; n9 ]& H! r }# A4 ~5 o4 n" Y3 f8 q: |9 o
}) _# k8 D& y. P
}0 i/ S1 j0 a6 W5 [
else if(IsLegendHero())
" `0 O! W' Y3 X; N+ E! u2 u {$ c4 G: M8 e/ L3 Y- e$ w" T2 q$ u
for( int i = 0; i < MAX_SKILL_JOB; i++ )
1 T* A; S3 v: p* ]/ C {
& @* z. r+ q* P2 S+ a LPSKILL lpSkill = &(m_aJobSkill);% x+ R0 g$ V4 L5 @" i/ K! N( a
if( lpSkill && lpSkill->dwSkill != NULL_ID )0 w* U1 e4 ? a* r% l8 A2 O
{
; _; q* w* \, {) } ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 3 C+ l; C& c0 H! m; s3 ?. v$ P
if( pSkillProp == NULL )' t/ K( I- }8 u* B
continue;7 R0 a. Z! ]6 q7 ~' i( k* r! e
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)( W; _2 q, S- g4 e4 l7 H
continue;
0 T5 o9 a/ l9 q, y lpSkill->dwLevel = 5;
3 Y! O0 t, r( w% U }
- v0 {5 K2 }3 m) | }% q' I P; d# `4 ]8 T% M' o" c Z
}
3 ~" D1 K- K6 v6 Z3 `#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans, g* U. } i4 {4 N( l1 k
if( bGamma )
- p' S9 {6 A: A `6 F" M; Q {
, F9 J X3 U, S# N& d* x m_nExp1 = 0;- k b j. k' D2 X; K# R3 H
}
/ d3 \* v' A% ~) A
- U6 W# Z0 O; i; t9 W- g ( (CUser*)this )->AddSetChangeJob( nJob );
8 D' p+ a/ t. N ~, H0 ?+ H g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
3 z/ {$ R* |- y& x3 t1 D: B$ K3 d# V$ T8 W" k
# b; V2 ^: H+ i7 r: C* `#if __VER >= 11 // __SYS_PLAYER_DATA
* F" F$ I4 ~$ |, v2 k6 F9 ~2 Z. Z g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
* f1 m3 B+ Y; T9 |7 c+ J#else // __SYS_PLAYER_DATA
+ Q% H+ a; E" n0 R# P( b- V: o8 | g_DPCoreClient.SendPartyMemberJob( (CUser*)this );9 p9 \- Z. u. R
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );& F$ X, o# u% u o T( ?( w, _
if( m_idGuild != 0 )
* \8 E) d& ^. u; q" o* b g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
+ |& e0 m r% M& z#endif // __SYS_PLAYER_DATA
+ P! G3 o+ {4 x; G. U0 q SetHitPoint( GetMaxHitPoint() );! O, J2 L$ Y7 H; g3 e) T; e) B% G; E
SetManaPoint( GetMaxManaPoint() );
' Z, r, k( P1 j' t SetFatiguePoint( GetMaxFatiguePoint() );/ @8 Z, z8 P: u z( Y
if( nJob >= 1 && nJob <= 4 ). G& M" S0 T' O. e# M, u$ B) \3 o
{8 L/ _/ p3 X- z5 b' H
m_nStr = m_nSta = m_nDex = m_nInt = 15;* ? B3 a M& W" k
m_nRemainGP = 28;! k I, j: K$ Y' N3 l( v+ g8 Y
}
% Y- H# `8 F; B$ d- L if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )+ {, x. T9 ?+ r- c7 C
{
# l9 i% d0 N' x m_nRemainGP = 118; m7 ^4 J" m7 _; v9 L
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
8 l1 I8 M5 h+ Z x8 T m_nStr = m_nSta = m_nDex = m_nInt = 15;9 Q: I' k9 i/ C. _% l0 o
}
" c" A+ v8 }) q9 ]3 D3 ? if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )" f$ w, Y* v, J0 E
{0 l! [3 t6 D2 b
CItemElem itemelem;
7 m; `( Z# T6 n* H. Z; t0 [7 K itemelem.m_nItemNum = 1;
3 R4 D; j; y' k9 K- R% s6 \ itemelem.m_bCharged = TRUE;
7 ]1 s+ G8 W% Y) _8 u, `2 j: m9 s BYTE nID;
4 q. r$ E; q) u
: o8 F' j& _/ h# j, c0 h, B if( nJob == JOB_MENTALIST_HERO )
/ q2 {* V/ `8 h% d8 C8 \ itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;0 y, d# i1 x) n: C! I& o
if( nJob == JOB_FORCEMASTER_HERO )5 A( ?5 L5 J' D2 }6 m; Q
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
2 X. C7 u% M0 k( ]7 S7 _. U
8 @ I8 B. E x ( ( CUser*)this)->CreateItem( &itemelem, &nID );2 x6 h* g) c# O$ Y( ]& m
}
/ ~0 D) r4 H& E3 ]( ?% [ g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
% U* `. i! u+ \& L$ [ ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );1 J% B& Z* f Y0 i% ~, w/ |8 X
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );$ L4 j1 N6 N0 Q) J& b+ g
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
" Y: @) e0 l$ [ T0 H. l& I, n ( (CUser*)this )->AddTaskBar();*/3 Z& O! f! N7 D- G" X6 O9 V* [# y
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
+ J% v! v x: C' A L; X#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
" y$ E7 H$ e+ Z5 W& F& O: B ((CUser*)this)->CheckHonorStat();; M7 n0 e" k. a% U
((CUser*)this)->AddHonorListAck();
+ \' }+ [+ @, W+ {* l g_UserMng.AddHonorTitleChange( this, m_nHonor); u( ] y0 Z8 @) T8 C ?
#endif // __HONORABLE_TITLE // ′Tà?
; b& m' Q, P/ k6 Z2 w }- F) f' A! F# G/ {
#endif // __WORLDSERVER( z) `4 [4 P: U# q" z" @
} / }- O7 D' z. r6 l' r( J. n. a& D
( ]! C) Q4 Q+ T' F, k" v3 M- L然后你进入functextcmd.cpp并添加以下7 u) M; I/ n% i# M- ]& q& }9 n8 J4 M! q
" b9 e# o2 B# Q5 z$ [( B
代码:
4 y* Y/ ~2 C. Z) V3 F0 OON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )9 E! G. |$ e) H5 _9 o; o! C3 K
下面插入
" U# r5 b& d: Z3 n! rON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
: C3 ~1 w- y1 ~4 N0 e- R0 X( ]0 Z5 M0 c4 y4 `$ ~, m" _7 I
然后你去
1 {7 R7 D5 s p5 o& _2 |
; o. Z% v- M0 u8 E& ?8 J代码:& O5 o p- i4 _( [# R- K H
代码
" D# B; l4 H5 _# EBOOL TextCmd_ClearPropose( CScanner & s ) \- o$ Y' D; R( j" I5 {$ H0 ]
{* f/ x- T$ W& P8 ]1 Q
#ifdef __WORLDSERVER& G7 s& v- |* A2 `1 E# k3 C& ?
CUser* pUser = (CUser*)s.dwValue;& X. X; _3 x z5 k2 @/ y: O
g_dpDBClient.SendClearPropose();
1 T& ~ Y; r% H9 ^5 S" D#endif // __WORLDSERVER
2 K. X1 p) A& o0 Q return TRUE;
7 k, L* t" l1 \4 X}
x9 k4 P- ]4 S ?下面插入- H1 q$ T4 H6 L% \, K9 C
BOOL TextCmd_rebirth( CScanner& scanner )
8 D/ I$ n% a' r: A{
4 ^. d/ p) z3 d#ifdef __WORLDSERVER
/ c; [; T q1 ?9 R. S" sCUser *pUser;. L8 D4 s! y2 e" m/ e
pUser = (CUser*)scanner.dwValue;, o% P4 E( U+ ~# D) I( ?2 ]
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
. T; T3 ~. |5 m6 W( v- _+ b R9 hpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
# q8 g6 ^6 q G& Y+ S3 C; Ielse
6 M( t0 o' K$ D, D1 b' T, spUser->AddText("你还未达到重生条件!");
( q. r4 y# W( N0 ~# n, j% ]#endif7 x% K6 C! F( e; p5 h8 W7 O$ Y
return TRUE;
: `; c* S3 Q$ q} 5 F) ^! y" u) G" o
& i7 U7 X9 F& G- L9 H) E3 Y( K; z' }- y/ G+ T* c
& b2 {& x$ Z8 s. t z
. w5 h! v. r$ G: G, i |
|