|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel! y$ C3 J, z+ E1 i C) d
9 t6 N2 o$ |7 O8 D4 t% w+ F
Mover.h
6 x, d) I4 P* b6 ^代码:
; M# Q/ F) t- s% f" {找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
8 ?% T8 x! J3 g) p9 ~( }$ U8 K3 \+ L" A5 W5 f) S% z4 r; F( Z. F
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 4 T9 R. S1 \0 v+ M+ L; x
; p1 h1 I: ^. o- d; |
然后你去mover.cpp添加
0 [; s( `+ n* [' m- H B' r' V/ d
q4 A8 G% B3 N代码:$ V9 `/ Q4 a0 Q3 B0 j
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
: l2 y3 h* @7 L ?. s{ P$ v; ^9 S$ x$ K+ q; O8 g1 y
#ifdef __WORLDSERVER
" f* a3 m0 }6 S4 A7 k: {; N // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
& h4 z0 u6 f' Y# p4 c$ R( |8 r, Q MoverProp* pProp = GetProp();
6 P5 k' J) \& E; d% a* @ if( pProp )
2 u9 r5 X( s; o0 { {! @6 \/ }$ A- W
if( nJob > 0 && nJob < MAX_LEGEND_HERO )$ Z* c4 r6 V3 e1 Z
{2 Q% \, ^- ~- d
AddChangeJob( nJob );) k4 Y0 g& E# H# c/ q( q3 N6 E
}else{9 B# t0 \3 \: S, V
return;
: ~: o& l" N$ W5 n2 Z }" | s( z( V- K) h- P6 o- {
int nPoint = 0;. F$ H5 f- b- s, c8 J* Z# M
if( m_nJob == JOB_MERCENARY )) k) u( d; Z4 G* _3 `
nPoint += 40;
2 a5 c4 k# n4 Q8 c0 e else if( m_nJob == JOB_ACROBAT )
( c: L E+ j" l3 ~; x8 L nPoint += 50;
J2 ^2 g7 _7 y. h$ N# E else if( m_nJob == JOB_ASSIST )
; s9 w* i; W" B2 v: ]6 Y2 b z, O nPoint += 60;, W" F. Y, B: l) T" N. V
else if( m_nJob == JOB_MAGICIAN )
$ S: [# V' k8 e nPoint += 90;' @) X7 U p+ T9 K% e
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )4 ?6 A) Z0 Z' r, T8 [0 S
nPoint += 120;
9 D9 w3 G3 s0 V3 p0 f else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
2 u1 _# T! \. S' W: Y) O' ^4 ]% q nPoint += 150;
# v! T1 L% S q( ~7 k else if( m_nJob == JOB_RINGMASTER )6 C+ |7 G& g R8 j
nPoint += 160;# h$ g3 j2 A9 M7 s
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ) ?; G/ C2 p3 i, [& E. j
nPoint += 180;1 n5 Z) q3 X9 T+ z6 d/ t
else if( m_nJob == JOB_ELEMENTOR )
* N2 j( l, P: a* p1 O. [ nPoint += 390;
5 k3 z( k% {1 Z# C4 G: T0 B8 ^ else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
6 ?! m& E) V5 p7 L6 A/ K nPoint += 120;
" r! a p& d2 L6 v; i: \1 { else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )! G3 Q) o% o+ A9 N( V
nPoint += 150;
8 n" n0 h4 F4 T% B9 U6 N# i else if( nJob == JOB_FLORIST_HERO )( K1 D! ^; b/ M# m& ] _
nPoint += 160;
; {6 d4 m. e3 j! R else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )2 @) C N& I6 x, y
nPoint += 180;
/ \, G/ e# Y8 Y; ]: l else if( nJob == JOB_ELEMENTORLORD_HERO )
6 U4 E4 [' Q' { K9 p) { nPoint += 390;* j. R2 p4 t- O8 r
( F6 c& Y9 N8 F1 m7 L! Q8 G AddSkillPoint( nPoint );* _. Y; |1 F. @8 ?" H t
m_nLevel = nLevel;
$ ^' Q8 k2 l! q! z+ [" P
4 y: b$ ]. z$ W1 M0 ~; [% H SetJobLevel( nLevel, nJob );; }! o- Z) w* F* n5 H2 i, T
m_nDeathLevel = nLevel;' }2 a1 ]' O4 y) v. B
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
! h5 s: {) V- c3 b- }8 }, H if(IsMaster())
5 R+ {9 ]& R9 ^1 W% J. M2 L4 {& e {
6 s |+ u7 z0 H; ?7 X int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
! @! ~5 H' j. ?1 c if( nLevel > 59 && nLevel < 72 )" l! W: p: F! X/ q5 }
dwTmpSkLevel = 1;
; d: B7 F3 N8 I9 J else if( nLevel > 71 && nLevel < 84 ); j1 l- r7 {2 |" J) o
dwTmpSkLevel = 2;3 Z; L. x3 m2 U! A9 Y% x
else if( nLevel > 83 && nLevel < 96 )/ _/ E- O9 d4 a! q7 ] [& Q6 m
dwTmpSkLevel = 3;
1 @- Q4 F. h, J( c3 T( _& a else if( nLevel > 95 && nLevel < 108 )
: W; A9 ?; _$ Z1 l! A2 o/ W9 h dwTmpSkLevel = 4;
# j. L& ]4 F! u4 l+ B else if( nLevel > 107 && nLevel < 120 )7 x" ^5 C" s4 C8 W5 C$ T& Q, g5 ]4 d# }
dwTmpSkLevel = 5;
) s6 r, d) l1 |+ ~5 ~ U6 d for( int i = 0; i < MAX_SKILL_JOB; i++ )
* q' Z5 J1 k* I8 ^- ~ {
i1 }4 v5 C F8 j3 _) s' b4 E LPSKILL lpSkill = &(m_aJobSkill);
1 G7 O' Z: L' @9 G c' P8 H if( lpSkill && lpSkill->dwSkill != NULL_ID )
$ z# [. Z, I$ X$ Z {
7 D6 R/ o$ W# @2 o& d$ v ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); - t f4 J; l6 R" D
if( pSkillProp == NULL )
$ ^1 p' t5 R& @4 R8 [! w) A1 R continue;
8 v( O: a J4 B) Q if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
3 h5 c# ^8 t2 ]4 W continue;' n/ o* t( j1 `) p
lpSkill->dwLevel = dwTmpSkLevel;
$ {8 c: B* A5 N b( b+ }4 Y! M! j }- i7 X {3 k/ M# ~
}- i$ D8 O- A( J* J ^3 ~
}
: x8 R! y. n1 c8 k- [6 ~% w else if(IsHero())
3 c! T. N. s9 e) N {
7 _! f: Y6 O/ s$ E$ _ for( int i = 0; i < MAX_SKILL_JOB; i++ ) " b) }+ D( S' D' T
{ ! b. Q7 `$ g3 k) c5 z# e# a
LPSKILL lpSkill = &(m_aJobSkill);
9 ~# O% d- H0 z9 C. h. }. X if( lpSkill && lpSkill->dwSkill != NULL_ID )
" f/ M3 X4 V6 T5 B# o( e% A {
; n5 w( u0 V, T+ z0 u ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); - C" `8 N! d- A' o# {
if( pSkillProp == NULL )
0 j6 A+ l1 L8 ~3 U) j continue;
F0 r0 j5 l4 f* S# x if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
6 k7 ] u7 f" l; e* n; ` continue;4 j1 v! h" K. j* b$ h5 r9 N# E o
lpSkill->dwLevel = 5;
7 E+ Z2 j9 y: c3 R6 Z }0 D: L: w7 p$ k& L" C
}
7 F( ^) a6 Q9 E }
8 [# \. Q0 ?; \) O1 `: T else if(IsLegendHero())
0 \4 @1 F- i/ i4 k a {$ j% C( q# ?0 Q3 H: l. p6 f
for( int i = 0; i < MAX_SKILL_JOB; i++ )
% ]9 s, Z. P& f. S7 N2 H7 Q {
" G8 v& T% `9 x6 ]( g* ^ LPSKILL lpSkill = &(m_aJobSkill);
- I4 @2 T2 s' S* y# L( i if( lpSkill && lpSkill->dwSkill != NULL_ID )( Q8 w7 I* ~4 l
{. ~4 L5 J' f3 |8 q7 A& E `6 u
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ! u: i) _; l# `) i ]* J; X
if( pSkillProp == NULL )+ x& `7 u2 c! k7 @8 Y: _
continue;" { m7 a% \% {& o& e
if( pSkillProp->dwItemKind1 != JTYPE_MASTER) h' S% ~5 |+ Z) \: O* p t9 @. u
continue;& Z; ?, E- V# |' q& Q# l# O
lpSkill->dwLevel = 5;
' D8 X) o8 q) } `- y0 G: ~) a* v }
1 U' ?% q, c7 @6 L+ ]. N) d) ~& A% E }& }2 f1 A N- Q% g3 M' f$ T
}( y) `1 b7 e) G$ S& {6 a
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
7 w0 i0 F' c) @ if( bGamma )
3 Q0 B6 W# B" }* X% l( ` F {
( \# M4 ~& g: s m_nExp1 = 0;
" ^2 d* X+ i0 V, H }
2 a o+ F5 w; t) r$ ^& N/ d7 c5 p4 w: _( o( C
( (CUser*)this )->AddSetChangeJob( nJob );5 ]6 u$ }- d+ l( c) u
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );, G( r( w7 v4 {5 {" G8 \& l5 E( Z! }
: ~. I; U: y6 ]; i) H
8 N' c$ s2 |9 z1 _% B/ M#if __VER >= 11 // __SYS_PLAYER_DATA
8 a t: R: `7 i& | g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
5 S' ~/ @! q- V( m! i0 M- w% C) l#else // __SYS_PLAYER_DATA
" Y( g" Y! X- @ g_DPCoreClient.SendPartyMemberJob( (CUser*)this );, r6 g7 a3 n! S9 G6 f
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
4 A7 n( v; s0 A+ a if( m_idGuild != 0 )- H4 V* S# {9 h% @4 N' x1 M
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );0 ?7 V# P+ p, o7 h
#endif // __SYS_PLAYER_DATA7 U$ r' ~3 S- T! r
SetHitPoint( GetMaxHitPoint() );
; o5 ?0 P% _5 F8 C. C4 [/ E SetManaPoint( GetMaxManaPoint() );
: X# [+ s) W1 {3 O" `1 Y SetFatiguePoint( GetMaxFatiguePoint() );
& g% h7 m+ N3 U' V# K if( nJob >= 1 && nJob <= 4 )
% O6 c% N1 Q; G e {
+ L4 |. T5 Q$ y. l1 Q m_nStr = m_nSta = m_nDex = m_nInt = 15;: e/ Z" t9 j7 v0 k
m_nRemainGP = 28;
- y) \& r2 L& H+ A. t% a4 W& u }
1 [1 P8 j2 @7 ]- M7 x$ R if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
' m+ m1 A9 }# j) R {5 k' F3 N; m4 M
m_nRemainGP = 118;
; S: Q' u6 G1 \" g1 |( C- M0 l; n //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
4 h2 V. b! ^. t7 P, H* w m_nStr = m_nSta = m_nDex = m_nInt = 15;
9 W3 p( T3 W$ l* @9 \) j. o2 w# I }% W: y! I6 n- n: g* w5 X4 q
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
2 K5 R9 g6 F9 Z% A5 }5 y {( Q6 p: L2 I# Q& `0 w8 r: P0 P
CItemElem itemelem;
$ }: q# M% r$ k" D itemelem.m_nItemNum = 1;% [: ]3 d6 C$ |
itemelem.m_bCharged = TRUE;
' Y. S6 m& P8 r( Z! p% N BYTE nID;6 Y' Z- F7 s3 f6 [5 z
) y/ { h: ]1 H% L if( nJob == JOB_MENTALIST_HERO )
* x: j o5 n7 x itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
/ }& a9 q+ W& }5 L" b: G$ ~ if( nJob == JOB_FORCEMASTER_HERO )
: v( ^% y* W0 J) ?/ E* v1 B itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;0 s, m7 x" [# c$ ~5 e' Z
+ j# T7 o$ E$ M# c
( ( CUser*)this)->CreateItem( &itemelem, &nID );
. H# c" z! o! g }9 ~" I y9 @* ?8 T+ V* z# D4 e) N" }
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );, I L: }' t. k) u& k7 [
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
: h7 S* E7 s' P" o- d4 V: B* O; { ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
& I- R3 f5 v/ h- K /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
1 s8 `9 S/ V0 W) R1 ~! c ( (CUser*)this )->AddTaskBar();*/5 Y9 U, \, @! ~( L7 J. e
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
4 z" I0 ?# Y: O9 V# Y; @& W9 k#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
7 g9 \. c- i' G, o1 L: G ((CUser*)this)->CheckHonorStat();7 y/ f! F$ c: C! k1 S. f0 V. b1 L
((CUser*)this)->AddHonorListAck();
5 |4 O7 H6 S# i/ i, T' F g_UserMng.AddHonorTitleChange( this, m_nHonor);, Z+ h, d- v$ o( h. p
#endif // __HONORABLE_TITLE // ′Tà?9 Z: \5 X5 F, Q9 }( ^4 q3 B7 Z- h
}0 Z. Z" s% n4 T! V. U% j
#endif // __WORLDSERVER8 W2 b& ~- V6 b5 ?" O9 `( I
}
+ r6 K4 { V9 m& P8 T/ { u8 d8 G- ~" a
然后你进入functextcmd.cpp并添加以下
E, d; d+ X: N( t8 ^8 h
9 J# I, ^2 G7 g9 E' d, K代码:3 y# d: q5 k6 s8 p6 \; W- E: x1 Q
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
; l9 a' T/ Q2 }* q$ [' ?下面插入
8 } ?3 t5 j& u; \ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
* H$ r9 l) r& H6 j' a7 b! c3 v6 q( E. w; j% T/ [; M/ l" @2 I$ j( o
然后你去( X' Z) k$ g/ v; _# V$ ]5 O
4 V r) G x1 e
代码:
: F. d# x0 ?- M. y' f: b$ h代码4 o+ B4 Z, `) i( Q& L5 O
BOOL TextCmd_ClearPropose( CScanner & s )1 c; k$ j' Y" A! [+ T
{
7 O6 p7 W6 Q9 R) g#ifdef __WORLDSERVER
7 ~+ K: V: f! u* ]3 `, ] CUser* pUser = (CUser*)s.dwValue;
, l! _$ Q2 ~/ P( q* i% s3 \ g_dpDBClient.SendClearPropose();" e( N5 w, n8 C+ n6 R( a0 `+ _0 C
#endif // __WORLDSERVER1 n% U/ F9 N* {) r+ K1 u+ R9 G
return TRUE;
! w* E2 h5 u8 y. g, j) W5 B}
; J3 O3 f, A9 Q$ j+ t下面插入
! @$ A, Z! ^# E- L2 d0 s/ {' v0 eBOOL TextCmd_rebirth( CScanner& scanner )+ w) \4 d; a- m0 d0 t1 F1 `2 u
{; a# I$ {2 M# q1 Z8 s+ u8 H; Z
#ifdef __WORLDSERVER
. F6 L; y8 ~) uCUser *pUser;
* `8 _. m, z. |8 y1 T. PpUser = (CUser*)scanner.dwValue;4 X' O; ^5 F, @ j6 U! w
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
& w6 T2 z* Y/ e# ppUser->InitLevelPumbaaa( pUser->m_nJob-16,60);" \$ k! Q9 |4 R$ p
else
& ^9 s% \# E, HpUser->AddText("你还未达到重生条件!");9 r4 d5 f: z8 M2 `; ~. {+ o ^
#endif
* H- @2 \5 e0 c) _( l) n# f& nreturn TRUE;
9 w& s* o/ I6 Q5 I2 b4 a}
1 \1 H: q/ b, b- _
! n2 F" K" J, }3 i) _3 J2 }) v5 |8 y1 |
; ^( W# X6 E8 W" E7 j' }8 v
+ x" z/ v ~8 v2 o; s |
|