|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel. T: v0 l: Z$ { m; q" _
4 g8 p0 W; ? j/ @% X' b- J
Mover.h/ c; I/ J8 K5 V6 K* F m5 a" I
代码:
3 u* k4 |3 b0 F找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
5 h) J4 V/ m' S' n2 c
6 W, v: s0 A' {0 [- E& M- M/ G% f下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; $ B' Q8 x5 Y) d+ W- H
. K+ z' ~" J. d% P B% }
然后你去mover.cpp添加- L' p9 M; ]$ e% L" B7 Z
1 M2 m2 ]3 I" ~, e
代码:9 f+ Q% i# \1 w9 [# q' G/ m6 P
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
# t, A' Q7 W4 d3 z: o3 D{; ?+ H# S3 g3 O6 L {
#ifdef __WORLDSERVER! S8 q( h& k. A. @, E
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
* F6 [$ o& ~. Z! {* Y0 Q MoverProp* pProp = GetProp();
9 V6 R( r9 x. i$ ~" Z" N" }' Q3 u if( pProp )
* ~% V% J9 C$ m* S8 { d {3 J" y3 p& Z2 v' |( F' m
if( nJob > 0 && nJob < MAX_LEGEND_HERO ): z8 n* a8 Z+ E; S& |; y
{
n: @0 m1 c2 c AddChangeJob( nJob );
$ w7 u1 G, z1 B2 h: } }else{
# x* K! z5 p) |2 E return;
1 k, d, w7 g; B8 d* p1 b; ^# ` }) s; w3 ~; E$ @7 S# `$ L
int nPoint = 0;9 v6 M8 K, T/ T& C
if( m_nJob == JOB_MERCENARY )
& [2 S* ~- N3 y" j) u& }) v W7 F. ^# Z nPoint += 40;8 D- {! b6 a4 f; D" k
else if( m_nJob == JOB_ACROBAT )) B: z4 h. }) S" o2 ]
nPoint += 50;
+ p4 |: r1 x" b1 g6 H0 U else if( m_nJob == JOB_ASSIST )
$ X' {- y: J8 x9 C. h* u nPoint += 60;& |4 m: P* P) g" l" E1 H# [
else if( m_nJob == JOB_MAGICIAN )
+ H& @$ F$ T. C2 c4 c- |) _. N* { nPoint += 90;+ z$ h& H, m7 {
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
% h. J. X8 i% a1 a( W9 P nPoint += 120;
3 n6 K3 T6 b7 s4 h4 ^ else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )7 J I0 {1 K6 H
nPoint += 150;
! e' l4 x: T# N$ U else if( m_nJob == JOB_RINGMASTER )1 F! m, Q' L6 L, f" u6 |2 Q
nPoint += 160;0 ~; o! Q$ e/ X9 z1 D; e5 }
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )! `, h+ Y/ g4 q1 ], Q
nPoint += 180;
, W; C& H0 ?5 D& G else if( m_nJob == JOB_ELEMENTOR )
. ~ [6 _0 f+ L nPoint += 390;; G% ?. D1 q+ ~2 N! N; Z
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )) J) Z n9 }1 R1 N
nPoint += 120;. \4 x* X+ B% O# h
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )% f Q5 A* S, _7 a! [5 g
nPoint += 150;' {1 a( z% ]+ `8 ?* \
else if( nJob == JOB_FLORIST_HERO )
, Z% W3 D; d6 _% C6 h nPoint += 160;
6 n& |8 L+ X9 ~9 }9 s3 a else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ); G: h* K7 c2 q2 B" R! d
nPoint += 180;6 V I' k5 a" k' C; H5 L
else if( nJob == JOB_ELEMENTORLORD_HERO )
- F( I! k/ Q" I: p) X: |( F nPoint += 390;( h7 R) x/ I3 O+ k, h1 }
" A# R% u/ C0 S/ z" O- m
AddSkillPoint( nPoint );
* w2 @- f1 u6 \5 b& ]( ?" g! y m_nLevel = nLevel;
# S/ ~/ D, q: U- d* u+ A8 r
+ R" [$ S' J% \* u0 `2 x2 Z SetJobLevel( nLevel, nJob );; w! M3 y, _1 K0 x3 \3 Y: ?5 v
m_nDeathLevel = nLevel;* ^( l1 r: }1 P* c; j
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
& y7 M: y' s' X( i$ M if(IsMaster())' U: T- [' ? O/ \- Q, Y
{
9 Z" y ?3 f! | int dwTmpSkLevel = 1;//60, 72, 84, 96, 108. r4 X/ n X: w0 i: V) m6 c
if( nLevel > 59 && nLevel < 72 )
, m# V; e7 B$ |4 h% F4 R- \4 \ dwTmpSkLevel = 1;) ^6 b; U+ j! |2 g( `" X
else if( nLevel > 71 && nLevel < 84 )8 d; n2 J' n: u0 P, Z" b( F( w
dwTmpSkLevel = 2;
! C1 }0 r/ L P" A* O# l else if( nLevel > 83 && nLevel < 96 ); M) p4 }- p( d8 g
dwTmpSkLevel = 3;
6 ~7 B5 z% B# L: q4 a else if( nLevel > 95 && nLevel < 108 )( T s- j8 n3 z$ N' S
dwTmpSkLevel = 4;9 {2 J) o* y; `$ L" ^, [* P
else if( nLevel > 107 && nLevel < 120 )- i* L2 ^; P* |0 Z
dwTmpSkLevel = 5;# p: G. X; A/ s# v, ?5 t* K
for( int i = 0; i < MAX_SKILL_JOB; i++ )
5 U' H; f+ g, W, g( o { 5 Z+ @0 d& A8 ?, A1 Q( a; U
LPSKILL lpSkill = &(m_aJobSkill);4 I8 u1 Z" k4 u1 \9 @7 z5 R( z
if( lpSkill && lpSkill->dwSkill != NULL_ID ): r V0 K5 ^, O" `8 _+ l
{- b$ X; _% e3 c+ w; ]% A5 p
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
- q5 R- q+ l. I: d! f+ l9 _3 ] if( pSkillProp == NULL )
# A# H: N! S E1 K Y& B continue;1 D; H0 [' J, w3 o4 t' {* X
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)5 ? K& p( m- F9 m0 O, J8 J' U
continue;
" p3 b3 n. t/ j. T8 r5 C lpSkill->dwLevel = dwTmpSkLevel;6 ^& T$ e: Z) V; d4 E' l
}
+ {! W3 f) D3 J6 {4 E, ] }5 X7 h9 L2 S* |* [
}2 ?) r% a: j, S4 ]8 r/ ^2 h8 y
else if(IsHero())
2 W9 M! P( o1 k4 ^: R8 h {
" `! i$ q1 N3 v' {* ^ for( int i = 0; i < MAX_SKILL_JOB; i++ ) % H. X- h# y4 ~* b+ t4 A. V" H
{ $ \! w/ l4 x/ l& h; d* s
LPSKILL lpSkill = &(m_aJobSkill);
7 c: O8 Q1 t0 X3 D* r if( lpSkill && lpSkill->dwSkill != NULL_ID )
* J+ e3 g: b, I2 ~ {8 g8 e: s+ Y8 M* r
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 2 C1 A! v0 X; F+ q/ h2 [
if( pSkillProp == NULL )
/ A* B/ T6 d2 o# N- } continue;
8 Y, Q- G, G' j if( pSkillProp->dwItemKind1 != JTYPE_MASTER)( w. K/ c. \1 I
continue;5 z5 T8 |" ]% G) a1 k5 A8 I( g9 Y
lpSkill->dwLevel = 5;1 f; S( @) ~" t
}+ ?1 b* X& E& _
}
. h4 s& {1 M+ o! j4 J7 Z }1 j5 X' r, c: {& N% R/ Q9 U
else if(IsLegendHero())5 p$ N5 I4 z/ e1 e& }! S
{' R- v( q# I2 W- @7 c
for( int i = 0; i < MAX_SKILL_JOB; i++ )
4 P: B0 H) S, X) N9 M( b { 4 G) j6 ]9 @+ k _, e, ~+ z2 b _
LPSKILL lpSkill = &(m_aJobSkill);
% O( r& K) |0 K* e, I if( lpSkill && lpSkill->dwSkill != NULL_ID )) z3 L% R9 K6 j/ z3 N
{* @! Y: Q) y3 F* k/ w
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 7 q, b) B6 j4 e% Q7 _* O5 W' j! Q
if( pSkillProp == NULL )/ {6 i9 n& U I+ C3 d4 b, U. ~
continue;% J6 s4 S0 L6 Q6 z
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
) F J5 D+ S. `6 ?8 ]8 I continue;
$ c9 T H# Z. L1 ?* c lpSkill->dwLevel = 5;
1 X+ H0 I) S7 B7 V }
/ r7 a4 e4 |! f1 t/ ^6 { }
6 m1 A5 j; Z$ h0 t4 A* I, u }
- e6 G( a6 _* d- M- U1 f* x" b: m#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans" U& q1 S5 m* R P3 g# x
if( bGamma )
: S, h; y& [" N | {
7 f$ b. [5 k1 E1 H! |- c* \ m_nExp1 = 0;
" \% d7 L1 [$ x" F3 X$ A }
$ F* P+ d( g) `' ^& p9 K* m
4 H/ g J3 S$ ~, @" P ( (CUser*)this )->AddSetChangeJob( nJob );
6 K& b4 b5 Q! }# m0 O+ y g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
2 M5 O% M1 a' h7 p
4 Z5 V4 @) {9 O- Z7 c9 i- w, X) H8 e9 b
#if __VER >= 11 // __SYS_PLAYER_DATA
- ^; k+ ]4 D4 Z+ Q* `# P* S g_dpDBClient.SendUpdatePlayerData( (CUser*)this );$ t" p5 j& \) M) U5 U% s' e% g6 y
#else // __SYS_PLAYER_DATA
& W2 k) `( X& {" n& y0 _ g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
0 n0 p; \' z8 z3 ^9 M& r& j1 |* Y g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
1 g, q( B; G# \' A if( m_idGuild != 0 )
# f6 ^ }% |$ I6 x g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );* F- \; W( x9 z( K
#endif // __SYS_PLAYER_DATA
7 I7 ~' \ m$ F; J5 m SetHitPoint( GetMaxHitPoint() );
1 K: W4 G4 e) B SetManaPoint( GetMaxManaPoint() );
1 P9 Q7 c( P+ ~7 R SetFatiguePoint( GetMaxFatiguePoint() ); o/ V6 n: @/ U( ?1 p
if( nJob >= 1 && nJob <= 4 )
2 k1 O; B- p9 \1 ^# | {8 L6 {: F, f" {- w, R: K q
m_nStr = m_nSta = m_nDex = m_nInt = 15;4 _+ i1 X" n6 K; T7 w
m_nRemainGP = 28;
/ N: M% S7 t8 b5 @! X }: S! d2 T: \ N& {$ l
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
" }% V( Z0 Y. H* \ {4 r h5 r* y Z$ P! J p
m_nRemainGP = 118;
0 T, @/ D. k+ P, c7 K8 ^ //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;0 w/ c, M7 X4 t, M; s" Y
m_nStr = m_nSta = m_nDex = m_nInt = 15;
+ T. B, S, c( ]: T* F' X* A }
+ Q* L$ [3 H- b$ v if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
3 U. @% P9 u1 f, }+ k- J {, T* o' w3 ~- ~+ N8 ^) C
CItemElem itemelem;5 }8 s2 o# @2 _% o# B, v
itemelem.m_nItemNum = 1;1 O8 n6 h2 U; r; x0 y
itemelem.m_bCharged = TRUE;! c3 j2 a% g% `( w$ b2 ^- |+ Q
BYTE nID;" @* F# p- N" k! u |
1 ^: J. F+ v) Q if( nJob == JOB_MENTALIST_HERO )
0 D7 o- s& `# o: \1 o! I* o itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;4 I6 w" R" Y$ f/ `; T
if( nJob == JOB_FORCEMASTER_HERO )
' _' E% R9 w: F7 n/ S4 `- i8 E. I itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;% G6 I, n. t' M, B/ @! b3 [
' x: [! h0 U- \4 q
( ( CUser*)this)->CreateItem( &itemelem, &nID );
3 O6 r1 U0 u4 K, [7 g: C }
( ~9 X7 ]; F+ d) X) Q" O g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
/ U% X. {- d0 G6 t1 l! U% _) v ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );$ W3 ?" m) O) O7 Q
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
# m3 G+ C1 n9 y /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );0 @) Q* o6 ~3 U% k( o7 y3 a5 d( M6 ]
( (CUser*)this )->AddTaskBar();*/7 O! x! ^: z! z1 |& G5 y4 P
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );1 H w7 F& [, B3 L% x
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
& F+ o( I0 T6 V0 r' K0 g$ q) v ((CUser*)this)->CheckHonorStat();
4 P) z0 K3 y! y5 Y7 @. Z5 Y) \7 h% y ((CUser*)this)->AddHonorListAck();
* c) n8 Z8 z4 _. V& c6 [ g_UserMng.AddHonorTitleChange( this, m_nHonor);" O- ^& S# u5 G! a) u% d$ p6 G
#endif // __HONORABLE_TITLE // ′Tà?7 D0 o1 s) {$ O/ F' z
}
) g8 u/ {/ D- S1 H+ _* q#endif // __WORLDSERVER
; X2 B. p' n/ D# C* s a4 d} ' K/ b- K- }- t. W
. I6 f& j: A! A. H; Z! j, n然后你进入functextcmd.cpp并添加以下% b8 f4 N& q3 h
9 m9 Z; p; F( ~. V
代码:2 [9 t3 m7 e$ |
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
9 z" P& t& u4 B/ V6 g; J下面插入, ^+ `2 W4 }5 j) G# X( B/ ]/ R
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
. g" V L7 N3 j& d5 Q& c( N# _& _( P: g9 {8 d
然后你去
) B. k# W* G3 M5 r+ s
" o+ [+ t/ f1 X) D S: j代码:" U" S( l& J$ ]1 Q' @$ A ?
代码& J5 `5 m( U4 u* p! @1 a
BOOL TextCmd_ClearPropose( CScanner & s )/ s/ Z9 m9 M/ _2 R B" f; t% h
{
% \0 s" ?2 S' n% v( K#ifdef __WORLDSERVER
% N; f6 ]& _8 T' t7 Y- t CUser* pUser = (CUser*)s.dwValue;+ t' t5 T: n; f1 x6 a
g_dpDBClient.SendClearPropose();
( n$ a0 U3 M e1 h" o6 A7 P#endif // __WORLDSERVER: A/ z5 q% ]# G; m _7 |
return TRUE;7 T0 X3 a; _- M$ S8 f) k3 A
}
! _+ z0 |! c. a% }) R" X8 ^下面插入
2 i, g2 X3 L$ x& TBOOL TextCmd_rebirth( CScanner& scanner )
& ]: n a. B( \" m- y{$ f% u9 Z" u, \4 V5 X- K
#ifdef __WORLDSERVER2 Y: C& s8 `6 r3 L$ K
CUser *pUser;* v2 V8 A; q+ h4 P; d/ I0 m
pUser = (CUser*)scanner.dwValue;+ n5 f1 Y- K! b
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero()); U. w# X% @* M' J z
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
( X! b& Z/ Y: H2 U5 g& uelse
* h; A2 q2 `/ s qpUser->AddText("你还未达到重生条件!");/ e7 b3 m/ H& h7 K+ q2 R
#endif
/ _, u/ j! _/ i3 dreturn TRUE;/ J( _+ g* B& y* k
}
% H k& _( n! f, W& Z; c$ Q: [& }# B0 ]- y0 A
4 J2 k, z( [- W
- N. f! q8 _* ^# I$ z: O! _0 `2 E; ^8 a; }% x& b0 B0 A+ s
|
|