|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
0 D: t: R4 B. W1 m ?( q
2 | x3 f# g1 E" e' O3 nMover.h2 z- O Z3 y; O* j3 S0 L. c: t5 L
代码:; b! q$ I$ X; S* `) F
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
8 d* L& u# A. f6 W. w; M
$ X+ b$ p$ t2 U, b下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 3 s' y% ~/ k4 M0 D. ?- v- `
+ T% X/ q( @& s5 x; c( f% v/ P* ?( }然后你去mover.cpp添加
9 n A& \5 K5 }: B0 O
0 a% K+ f& g9 O$ Z代码:
7 i) _1 \8 l/ U) Yvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
" g6 x# O$ F p7 h8 A% p{& ?3 R& n! D+ y0 j2 U: j4 b
#ifdef __WORLDSERVER
/ W9 S- M( [8 i2 L. q // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó2 F1 C% C$ @+ |4 e
MoverProp* pProp = GetProp();3 Q+ a, @; [0 i) u+ X
if( pProp )
0 r* |9 o5 `& C F {
, Z) l* K7 \/ O* M" I: @ if( nJob > 0 && nJob < MAX_LEGEND_HERO ); |+ S6 _ _' E. q& A! L9 E, f& S0 P
{% H {9 p+ O& O8 w. A+ H
AddChangeJob( nJob );, @$ M7 y5 |' ]$ ~, w9 N+ C5 r/ F! S
}else{
( e* } i3 g) Q0 N |3 C, E return;& w# T, e4 Q3 ]" [* h
}
4 M& X, c2 F/ O( u* G& e: y; ?* p int nPoint = 0;3 ^( Y1 J3 t% X
if( m_nJob == JOB_MERCENARY )
. S% U$ t/ |% m# _! w nPoint += 40;
2 ? h. D; x% Q5 ^9 [% a3 a else if( m_nJob == JOB_ACROBAT )0 V/ U5 [" w3 ^2 p+ m" ^
nPoint += 50;
; `6 N$ @0 T( b Y9 W5 U& i- W else if( m_nJob == JOB_ASSIST )
2 I5 R% U, F) }( @- o0 ` nPoint += 60;/ K+ k8 K6 D0 I; v9 ?) f
else if( m_nJob == JOB_MAGICIAN )
' E3 h1 Y' e) m( c c2 r4 M nPoint += 90;% U' _" L6 O* x6 f0 A
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )' X9 l% }. W7 z! R" f* \/ B
nPoint += 120;4 W& L2 k. V% N
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
/ T- d U4 l' c5 f nPoint += 150;. t" e7 r. K$ t3 _. Q
else if( m_nJob == JOB_RINGMASTER )2 Y) l) q; I6 x' l+ W
nPoint += 160;- Y) S! o7 V) \2 f' G. E
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
) @. i$ a- f" j nPoint += 180;& K* J6 P3 o) C8 k M0 L
else if( m_nJob == JOB_ELEMENTOR )- A& c2 i, G: V9 @5 @- z
nPoint += 390;& _/ y3 _0 A" n9 Z, h+ H/ a
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )* e6 Q% X$ O" j/ g
nPoint += 120;" t$ _7 v5 e% a# V, H
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
% [; J+ g& E2 C1 Y @) R+ k% x nPoint += 150;% ] q! g8 r# N; I" s
else if( nJob == JOB_FLORIST_HERO )8 ]. ]8 h) k6 F% f/ V* D
nPoint += 160;
" R# H# W' {( s4 z; q {" m* { else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
0 R0 d3 h: S6 Z5 E5 A y2 C6 X m$ x5 b nPoint += 180;
6 Q9 H! ]! T# A: v else if( nJob == JOB_ELEMENTORLORD_HERO )6 `4 G& `1 `8 w
nPoint += 390;
1 ]9 t6 w1 H1 w! |4 U* b* p+ V" g$ N6 H! w+ f
AddSkillPoint( nPoint );
1 y& B4 O/ Y# W' W4 b: _6 ^ m_nLevel = nLevel;- a) [3 l" o! v, t1 |
1 d: p" q. Q$ y SetJobLevel( nLevel, nJob );6 j! ?5 j) R6 w/ }
m_nDeathLevel = nLevel;
: W+ |: {4 d' v, o#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans$ A' C( m6 `4 x, z4 V0 G( [
if(IsMaster())# u# r a5 `7 j1 G+ P1 ^
{
+ N j% l" ^; }5 _ D int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
4 _9 ^ z& ^) D3 l+ e' \ if( nLevel > 59 && nLevel < 72 )5 _& Z. |3 [1 g5 M; B% e
dwTmpSkLevel = 1;9 C6 V5 r. A- A- Y+ v$ r
else if( nLevel > 71 && nLevel < 84 )/ m" @# @3 J9 T$ s1 N
dwTmpSkLevel = 2;
) X( [/ ]( C) U, M" y: z else if( nLevel > 83 && nLevel < 96 )
7 ^" B4 }/ q1 x$ n# D1 ? dwTmpSkLevel = 3;! l6 e Z4 Z0 s# k5 V8 ?
else if( nLevel > 95 && nLevel < 108 )
' J* P% Z( h* T9 x dwTmpSkLevel = 4;7 C5 d5 h, K* A# a. z* n( X
else if( nLevel > 107 && nLevel < 120 )
1 G C, w0 t$ u/ H8 ~ dwTmpSkLevel = 5;. F) v4 _6 x& E$ O
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 0 Q8 Z! I* t! Z3 _
{
, C( p: ^% @1 Y7 u+ b) h } LPSKILL lpSkill = &(m_aJobSkill);4 a9 U6 k: p8 A% p7 ^- U
if( lpSkill && lpSkill->dwSkill != NULL_ID )0 w5 f6 M e: r; L- w1 N, D' P
{
|; a- z' ]4 k4 o6 }6 D$ h& n ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 7 Y& f6 K5 R- L3 x
if( pSkillProp == NULL )
- b/ s' Y( n8 M. K; ~ continue;
- S6 F4 `3 q2 \( d% | if( pSkillProp->dwItemKind1 != JTYPE_MASTER)" i( w* D4 ?) J6 k8 _) L% b R
continue;) Y& |% z8 z p4 ]" ?
lpSkill->dwLevel = dwTmpSkLevel;" H. G7 r4 z) B0 ?6 G6 O* O
}1 Y5 R% z( t0 ]. d9 ], ?+ l
}
& a/ y4 P+ v. C3 U0 A4 ~, G }
' k6 \" y; Y) u. K! S2 H" ` else if(IsHero())
8 b; s' N+ U& V' T4 r% t {9 h5 P& f, n3 A* ]6 [/ B2 N
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ! P. v+ C7 z7 ^( \. ?! u) @0 h7 |
{ 4 }, a4 F( `8 [( _6 M4 V7 W1 ^1 B
LPSKILL lpSkill = &(m_aJobSkill);7 j9 m, `3 R: I2 ~6 X1 S
if( lpSkill && lpSkill->dwSkill != NULL_ID )' z6 A% B3 r$ w' o
{8 c$ I: M6 I3 G5 g5 b1 R
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); * y# h: P! M$ d6 p
if( pSkillProp == NULL )+ o) @; I) ]4 H3 F' w3 m4 E
continue;0 f5 \( C1 ~1 O; H& @! o! r. @5 Q k
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
% h1 e' J( l$ P4 {- V continue;
. @% g* W$ ^( S2 E! O7 h( y7 E lpSkill->dwLevel = 5;
+ _5 R& g) [" M- _6 P9 E$ }' w4 Y }
1 `3 u4 u* ^! y: W) x5 `3 X. e& s }
, ?1 T2 u& `( v/ Y4 \ }" Q9 J4 G4 y. m4 F6 S
else if(IsLegendHero())1 i7 J2 ^! T& Z3 `- T
{
& h. Q0 a* }) u* i for( int i = 0; i < MAX_SKILL_JOB; i++ )
7 L$ j! Y8 t* E {
) @% A" d& O4 I1 L @0 l LPSKILL lpSkill = &(m_aJobSkill);) C q' V5 r- t6 Y8 b+ B
if( lpSkill && lpSkill->dwSkill != NULL_ID )( X1 f/ _4 S) O/ j
{+ Q( ^( i$ E7 |! U( z1 y1 j) K" r- w* W
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
+ T3 N, F+ L. [2 A if( pSkillProp == NULL )
+ s7 j! w$ x1 v* j2 N Y continue;
+ e: K) x8 Q$ [0 X5 a+ }( A8 [ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
( j- A; l9 S$ b5 D* i0 ? continue;( ^' D+ ^2 J( I7 p+ M
lpSkill->dwLevel = 5;
9 J% O1 K1 O# q% E F3 c }& w& {* ?5 ^ X; K9 s
}
3 `% Y# ^8 R `! Y% u }% x [- F+ ~+ V, `
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans! M0 [+ Q9 O3 J
if( bGamma )" {8 v6 y5 c) M# w0 x: g
{) q" D1 O0 P. Z+ F. e7 ?& G: H( |
m_nExp1 = 0;! D. d2 z% N7 [7 C6 W- n9 F
}2 J" r/ s" O% d5 d' [6 @5 T1 |
* \+ J V( V$ N' O Z2 d( W+ b1 h
( (CUser*)this )->AddSetChangeJob( nJob );
" v+ M4 K3 N: e: t g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
9 t" `1 ~% }/ E5 v1 ]/ h7 }7 J- |8 y* }& F& p9 z6 N4 a
2 e* [' {7 d* F5 H' N3 u$ m6 o. x#if __VER >= 11 // __SYS_PLAYER_DATA$ y. {" r( q2 l2 I* D4 Y
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
R3 {* K4 _# _' p#else // __SYS_PLAYER_DATA
* n5 @( }+ H% v! Q g_DPCoreClient.SendPartyMemberJob( (CUser*)this );- ~8 ^7 ^6 V) Z" @0 C4 X, R6 d* H/ [
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );- a" D' `, o9 j" D ~
if( m_idGuild != 0 )
! D( L; ~% A; ]/ {" R g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );7 l; Q7 c8 {2 {0 z" y8 D
#endif // __SYS_PLAYER_DATA# a b5 ]6 A* \% v% D. `! M
SetHitPoint( GetMaxHitPoint() );
2 F7 [$ c! A, @7 P. L SetManaPoint( GetMaxManaPoint() );4 T: Q8 b; t# d
SetFatiguePoint( GetMaxFatiguePoint() );2 ^$ v" g. Q" `4 N1 a1 o* @
if( nJob >= 1 && nJob <= 4 )9 r+ m- H$ C5 t, J# k* A
{, Y1 B% \9 g. M" m
m_nStr = m_nSta = m_nDex = m_nInt = 15;. K) G |. U% K# |5 B v
m_nRemainGP = 28;
' W8 l: {% e) R& W6 G }
9 t5 H6 I1 N9 s+ n if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER ). T) a6 {6 `- }7 E! w# @- g4 ^" o
{% a" V7 I! J1 T1 r; b3 O! T- v
m_nRemainGP = 118;/ L3 ]8 ~4 \# Q: c" ]. X+ ~7 ?
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;, ]7 J1 k( S# }+ x: ?% R
m_nStr = m_nSta = m_nDex = m_nInt = 15;5 ?/ x0 ~: O: Q" K7 e( k6 Z3 I' y
}2 C3 h8 l+ Y, D, b9 l! A. j
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
?6 N; _! Z- H0 m7 K/ v w/ _ {
; h( U- ]2 V. G4 m7 H2 g/ N- S2 T! ^ CItemElem itemelem;
5 R/ E% E, K0 C$ }( c4 t9 k itemelem.m_nItemNum = 1;. b" h6 P. E4 t; W# G, v4 t1 t
itemelem.m_bCharged = TRUE;; S3 d' D* m) J' L3 _9 |2 R9 |$ n
BYTE nID;3 E7 k& p4 \8 x2 b; ]
8 v v) d K1 q1 m if( nJob == JOB_MENTALIST_HERO )
( Y) L$ a* m5 \7 \/ R& C- p$ u itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;% _3 q6 B' m0 L4 d" H: F
if( nJob == JOB_FORCEMASTER_HERO )
. x, H# g5 V8 c$ q' k4 |1 r- P itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;* v$ D7 }. F1 i2 v v7 ^+ r' z2 c
; k) g1 Z7 j, V" u# u ( ( CUser*)this)->CreateItem( &itemelem, &nID );
4 g& [ _3 L: H" w3 k2 W }
( D3 ~" T# f' V f g_UserMng.AddSetLevel( this, (WORD)m_nLevel );3 x9 i: z* i2 C! I9 @
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
8 Q# _- O3 F: c& d: p8 @ ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
( ^ ?- a9 x" v% g; m5 C8 p /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
9 K' v% x. X, R ( (CUser*)this )->AddTaskBar();*/$ \/ i2 s8 `4 F: S7 e% X+ `; m
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );' L; i* m( P! D/ O! ], `
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?! B4 P# ?2 ]$ K: ~( g4 ]
((CUser*)this)->CheckHonorStat();2 n" ~9 H- r+ Z! ]; x4 g: |! p
((CUser*)this)->AddHonorListAck();" v" [: d( u- g' n6 ~9 I3 d
g_UserMng.AddHonorTitleChange( this, m_nHonor);+ g9 ?7 ~) p) Y& M: {) @: U
#endif // __HONORABLE_TITLE // ′Tà?
5 ~4 D1 ~7 }) a3 m% Z3 C }
# j C6 \ w9 H* V. q#endif // __WORLDSERVER+ F# ^8 S4 c+ ]# I& [ v
} : M7 k/ F$ r2 Q
3 b& b! \2 \* u& Z, K9 n! B
然后你进入functextcmd.cpp并添加以下; B! C. Q; b- J% _0 Y
$ Y2 x6 Z9 i* _& M) S" |代码:, `* q9 C* j, Q
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
1 e, A8 x3 ` f) m+ `7 E; V4 _下面插入
) E) H4 A# P" m8 i. z; zON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
* u$ b' n# I1 e# E+ {
$ \! x1 x% [' r0 L, v1 _然后你去
+ K& j9 J" t3 @
7 C5 F) ^. U& B" T9 U代码:
* ?) F. R+ o m. P8 y( Z7 w代码& o0 u( ^* U/ g% K
BOOL TextCmd_ClearPropose( CScanner & s )
x7 H f/ ~" @( |9 B0 U2 H x1 z{
. q' E* u& r. g7 I5 [#ifdef __WORLDSERVER
* A9 u) p3 c w CUser* pUser = (CUser*)s.dwValue;
+ w& i) I/ o- H' ^: L$ M2 ` g_dpDBClient.SendClearPropose();& F+ o6 G2 S" I$ Q) K; ]
#endif // __WORLDSERVER
8 z+ r$ Y! h# ]" e9 z3 D return TRUE;
4 ~( S: }! X/ J2 v6 C3 W}
: M4 t5 m" {, S下面插入 r% V* R7 O" Y, e
BOOL TextCmd_rebirth( CScanner& scanner ), \* Y1 Z+ c& ]' } z9 b
{
' |# H9 F& V w5 k4 A2 G+ h; [+ z#ifdef __WORLDSERVER( ^# a4 q& \5 L& ^# \
CUser *pUser;
! o8 H" G! P% R0 r- b, RpUser = (CUser*)scanner.dwValue;
2 S k: Q! @7 L1 G$ nif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
* W4 E9 K+ ` W$ [! ^, CpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
+ _! K; @. M9 r$ celse
- T$ } a( O! X3 D1 fpUser->AddText("你还未达到重生条件!");1 W' H$ c ^* n& j5 @
#endif
9 Y$ b! {7 j/ M$ c3 ~) H# q5 P) v- Ureturn TRUE;
; x4 ?" l/ e3 O( J4 F}
8 L* n7 k2 p" Y/ z$ A1 N4 t
$ W$ p& `( Z% w+ I! f+ m E8 h4 ~& f# X! L
% L7 y6 Q6 k4 A5 G: l& H6 s( b, `! y! d* W& s0 S1 s% H
|
|