|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
! K0 y1 W4 K( ~! U+ B6 [
6 W y# |' d& ]- g; PMover.h
' H& E7 p9 m+ d代码:
1 m! p3 A* ]0 z找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
1 ^) Y, m! f6 \- E* H3 Q- ` G
8 O$ U$ L1 S& c1 y' y下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
+ L* @8 [! Y* | r, B
$ j- V F8 b( e: U! c% _然后你去mover.cpp添加
3 E9 x3 ]/ r: Y/ C6 I( z3 `
2 b/ B1 j4 i5 B$ C' e" }代码: G" ~$ h4 S+ P( t4 {- i$ a
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )& H3 a8 h5 ~% }( l) R2 l
{
7 I4 Y% U7 d- H$ {7 }7 H: g#ifdef __WORLDSERVER8 H" F$ L$ T$ C! t
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó6 @" Q3 ^ L, s, ]1 G
MoverProp* pProp = GetProp();1 R/ v; L. C2 G& F4 `+ J2 M# `
if( pProp )
; O( N+ X9 U& M4 T: _, F, b+ B% j {
9 I$ g9 Y3 U5 X1 E! c1 s, Z if( nJob > 0 && nJob < MAX_LEGEND_HERO )
& F; p; V+ C: c {
! Q' W+ f4 V# ?. d+ D0 F) ~) } AddChangeJob( nJob );
& t( w4 [; x2 y) [6 M& q0 Q }else{4 w2 d3 ` y/ O* [
return;$ w- F1 o' f- K) k6 l2 a) _) o
}
$ t0 B3 J9 M( i! j int nPoint = 0;
% n, O3 l( f/ m+ J if( m_nJob == JOB_MERCENARY )
- g0 ] i, |1 q( @3 w- w& @ nPoint += 40;
: C" a- C$ Y. T3 H$ y else if( m_nJob == JOB_ACROBAT )( F4 I6 f$ J! j# X) q
nPoint += 50;
& p4 J9 o* Z9 E4 I- n else if( m_nJob == JOB_ASSIST )
$ G8 G8 c$ f# q6 `, V" k5 m nPoint += 60;- ]4 {3 B, }/ E1 n2 R0 y7 L
else if( m_nJob == JOB_MAGICIAN )
: l. Z6 ]# r9 I: D( U9 |" e nPoint += 90;; p4 D& K% }6 |" i$ I- h; I6 K
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )! s3 y: z# l, c0 T! B2 T
nPoint += 120;
9 G2 E$ [3 w& M, x, f5 u9 p else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )2 d8 W }: w$ z0 z$ b
nPoint += 150;
3 x+ I. U2 T# x& K1 [( b else if( m_nJob == JOB_RINGMASTER )
2 U/ L2 m9 m6 j6 P5 p! e nPoint += 160;
% w2 B6 k& _7 ?$ R2 g, t. x" E* q2 u4 U else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )( F7 N8 t! O! n, a
nPoint += 180;
8 E2 z5 P+ R$ m0 @! r' P9 j else if( m_nJob == JOB_ELEMENTOR )
8 @& ^/ U; q7 v9 p nPoint += 390;
j- h6 w6 U, H! X2 b6 [0 M else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )# R& \. }, B9 g1 e! y- b; ^, B
nPoint += 120;
; K1 a5 q8 Y2 V. E( ] else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
/ v6 u, y; T B& ~; k nPoint += 150;
0 t; u' Q! D7 A) C% o else if( nJob == JOB_FLORIST_HERO )' r, a/ f' g9 B! _1 {( O
nPoint += 160;
' h$ D: I6 u/ ~; G else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
" E4 u( t9 x& V3 E: j# A nPoint += 180;1 p$ j2 D& L7 y/ T5 u& }
else if( nJob == JOB_ELEMENTORLORD_HERO )
( Q o6 S# l6 H( g; T- ?* C nPoint += 390;5 j7 W, s. A O) g% `
9 K: X4 D* L9 w0 g5 k1 `
AddSkillPoint( nPoint );
* P. a$ u! j# F0 r! D% y" ` m_nLevel = nLevel;8 U6 \8 z; S+ l J/ M; B
, j1 B0 h+ _: M4 ~ SetJobLevel( nLevel, nJob );
* c c2 k: X9 y- `2 n$ U! c m_nDeathLevel = nLevel;
$ i6 P# T( D, k+ y#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
% A- d/ Y2 h. o+ w4 [$ H8 W if(IsMaster())6 n+ a' d$ ~4 y; w, }/ Q% ~4 \8 H/ q
{) ~5 [& i& W/ {
int dwTmpSkLevel = 1;//60, 72, 84, 96, 1081 p( l" d2 r. w. m6 Q! `
if( nLevel > 59 && nLevel < 72 ), o# S% S3 z: K: Y! W; D
dwTmpSkLevel = 1;
5 O# m Y/ ?. d \! } else if( nLevel > 71 && nLevel < 84 )6 t4 b- [0 i2 ?5 y0 u
dwTmpSkLevel = 2;
" c9 a; M( [) i( b0 L8 ~* ]# l else if( nLevel > 83 && nLevel < 96 )
. j# w- ~3 q7 X" i" A# P dwTmpSkLevel = 3;6 \- V: Q' A# c! O8 @
else if( nLevel > 95 && nLevel < 108 )
" `' d$ R1 Q5 y dwTmpSkLevel = 4;
- t2 r( U9 i: r2 B- }7 @ else if( nLevel > 107 && nLevel < 120 )9 o- f+ q; M; x( i0 ~+ G( L$ o
dwTmpSkLevel = 5;
# K% {( w Q u2 I# \ for( int i = 0; i < MAX_SKILL_JOB; i++ ) 8 A! i) u2 H; Z' ?: r
{ & a5 o4 V+ N) [2 u; B! V0 [, L
LPSKILL lpSkill = &(m_aJobSkill);
) B k! x$ }3 n v if( lpSkill && lpSkill->dwSkill != NULL_ID )
$ f( c( a/ f1 i' f8 F. C {
' o: I! l$ O' O( Q4 f ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
, S2 L4 E% V& J; r k5 Q if( pSkillProp == NULL )4 \* g3 [( ?+ W4 a2 j( o
continue;# a \7 ~/ G" B+ g) V" q5 P) j
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
5 |1 s; Z' F* r+ d" h0 w- N4 R) \+ O continue;
4 |' B: J- T& e& {: J& Y$ l lpSkill->dwLevel = dwTmpSkLevel;
& A/ O9 y5 z3 y% W; M }
1 Y5 H8 ]0 R- ~3 s }
" e- n/ h# ^/ X5 I }
+ w2 D5 Q. H" G6 m8 j8 w6 ? else if(IsHero())
/ k& h: h) L' W0 {, t# v4 p {
6 e! F4 d# O( M5 p for( int i = 0; i < MAX_SKILL_JOB; i++ ) 1 m, o; G6 ?) j5 b0 h/ A" e! Z( M
{
* R: N; [8 o: a; E1 } LPSKILL lpSkill = &(m_aJobSkill);# d* x/ d; N7 M/ H
if( lpSkill && lpSkill->dwSkill != NULL_ID )
2 V+ D% R: o* I* Y# d {
$ Y& c* Y x4 }6 D ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 0 ]9 M: O' q$ k' T$ X$ U
if( pSkillProp == NULL ): R7 L. V( Z R: o$ C! u) d# U
continue;
" j" r e9 o6 J) z0 ^/ M if( pSkillProp->dwItemKind1 != JTYPE_MASTER)& P/ h0 y+ t' ^) ?
continue;& e' P2 X! ~% ^/ E/ L: Z
lpSkill->dwLevel = 5;/ U2 C! L: C+ x0 h) v
}0 f% x3 v# M9 ?% @
}
$ \ i9 }* ^/ D e }
- x( o4 t3 Y Y7 q% O else if(IsLegendHero())4 M: t9 G1 A2 f- ?+ a1 l7 |$ V" `% X; f
{: X- w; O: }5 l b$ q, ^$ _
for( int i = 0; i < MAX_SKILL_JOB; i++ ) " m; |+ N6 C& o0 p+ T
{
( [) V3 E# A1 O LPSKILL lpSkill = &(m_aJobSkill);
T3 H+ x0 @$ v) Q- W if( lpSkill && lpSkill->dwSkill != NULL_ID )( _$ y* w( Q% W e8 P0 ?9 U- y% d
{
/ L0 n9 `$ }; H& u9 W5 @: j# l ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); % t6 ^/ \6 r5 o# A i
if( pSkillProp == NULL )
+ R8 o8 W: a; i+ [' m: d continue;
+ p% V- z, x3 k0 A& V2 x if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
: I2 x( i* L6 O$ L continue;
; R( i4 u5 A, z( J6 i2 U lpSkill->dwLevel = 5; }: g3 H+ x" A7 q; }4 m" J
}
' k4 Q9 b8 e/ @ }" X/ s/ \5 N2 t5 m! E8 L; X
}: s6 e8 i# @1 S
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
5 @% Q% O7 v" i! Y; a) \ if( bGamma ): v$ F; o3 t* G
{# }$ E, i, I2 K% v) a/ m1 ~4 H
m_nExp1 = 0;
2 e, r1 P$ [: l5 N$ }0 h6 Z }( E' S# E' C; }9 X {9 e
; b8 k, V2 C& y4 e/ m1 G
( (CUser*)this )->AddSetChangeJob( nJob );
5 c, Q; ?0 \6 d: Q, J% M g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
3 s5 G) I$ n8 N. t# g! M( }7 E. J B0 z* @8 ~) q6 j
( F2 k7 L+ F' a2 E/ {( ?#if __VER >= 11 // __SYS_PLAYER_DATA
- m3 F* P# D' p: Q. _ }7 L g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
4 S$ r' ?; [+ y* ~#else // __SYS_PLAYER_DATA
1 e# f- O) u4 l' v g_DPCoreClient.SendPartyMemberJob( (CUser*)this );' X; M( t7 K3 D( j6 B1 U) I0 R
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );% }1 A; H6 A- C- W6 X! b* Q4 ]
if( m_idGuild != 0 )
* m+ w7 P" ]: Y, F g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );, U: g# [" ]5 Y3 A$ P1 N0 W* e
#endif // __SYS_PLAYER_DATA: [- C6 `$ A( J; P" H/ A& Y
SetHitPoint( GetMaxHitPoint() );
2 O# n/ u$ c: }/ W5 v SetManaPoint( GetMaxManaPoint() );- g. H% z7 B+ e& Z
SetFatiguePoint( GetMaxFatiguePoint() );
! q! q* l! w8 g8 f, l9 b$ C if( nJob >= 1 && nJob <= 4 )
( ? l8 b1 }3 y% }" g6 H {
6 t) K" Y: ?) }/ M6 s3 t* x m_nStr = m_nSta = m_nDex = m_nInt = 15;1 R- ~5 q3 _: u! I
m_nRemainGP = 28;6 ^8 k9 L/ O) {7 |1 j7 t( I, D
}' _# E- X( N5 t- q/ q& _, ~) J
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )3 o; ~& t6 N! c' v0 U
{: E$ G g) y2 y/ j3 T3 ^
m_nRemainGP = 118;( @& X2 I7 c, q; p) S! P# ~
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;. c% U. D6 [. F p/ l2 |- L
m_nStr = m_nSta = m_nDex = m_nInt = 15;
% E- ]$ l% ?/ R/ a4 e6 s8 C }
1 Z+ d& e" p' U$ A' a if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )' D) T& p, |, y& P0 ~$ D
{
5 P7 K# H2 X3 L, e CItemElem itemelem;
3 U8 x# a" k' v" W X! d/ N& A itemelem.m_nItemNum = 1;
% R/ W6 X/ a: {$ z+ ~) k M* w* n- E itemelem.m_bCharged = TRUE;& L3 V( ~ k+ J" z0 g" d, a7 w
BYTE nID;
# P& i# T$ m6 ]* \& ?
! p+ C. V. }1 d2 R1 X if( nJob == JOB_MENTALIST_HERO )7 ^. W* B" U- g) ?8 Y' B& D, s
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;0 ?( C* F" T- k2 X% H3 }
if( nJob == JOB_FORCEMASTER_HERO ), h9 y. Q+ }) l7 b
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;7 i( P$ Y+ o' @/ {5 f
$ Z- v2 N- y8 l/ I i Z7 ] ( ( CUser*)this)->CreateItem( &itemelem, &nID );/ s# a/ y1 A4 n
}& X& U3 A' J) c: D$ X
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
' F+ C4 b+ q% j4 E' a( [ ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );# [6 f% y2 Y; p
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
5 F" l8 H& ^5 r) I7 H/ f /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );2 X: s& X* X' j5 J( L; J; k$ e1 r0 o5 G
( (CUser*)this )->AddTaskBar();*/
# z/ }' q; q' }. T ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
: ?9 C6 ~! e2 v, S#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?, w+ y4 F" U/ x2 X# A! U. Q
((CUser*)this)->CheckHonorStat();
+ R7 M( }+ D( ^ ((CUser*)this)->AddHonorListAck();) d! n: w, z% Q* ] P
g_UserMng.AddHonorTitleChange( this, m_nHonor);: B U/ p. L0 K
#endif // __HONORABLE_TITLE // ′Tà?
& `' q3 D9 T8 Z }
# d5 q. i6 m# w- D#endif // __WORLDSERVER7 n% Z4 A# i! z" y: G$ x4 M5 e
}
5 ^2 r: l* E4 n% u4 }: z3 H7 g7 [
然后你进入functextcmd.cpp并添加以下. K, U1 l$ Y. J* _
" X6 l6 f; [0 z/ `% l: s代码:+ Q4 o8 v9 r) Z: X1 J
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
5 X- G- m3 s e8 z4 C% Z; `. q. q下面插入( I9 V. n5 P* W
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
* L' x# T x% g- [$ E9 Z" p- T& ?2 f: B( R$ p& Z. s
然后你去
$ Z9 X4 F0 [: ^: k; Y
( ?: O- u6 l7 H' o代码:
$ X* U7 w2 n% s' S- X代码) F& h/ O( ^# d- m! _
BOOL TextCmd_ClearPropose( CScanner & s )
- A# w8 x) P6 z- F5 Z{
/ s. e- {% [" T' s1 [7 e& [0 p; ~#ifdef __WORLDSERVER. |/ {0 e5 ?& L% O6 K" ?; Y0 O
CUser* pUser = (CUser*)s.dwValue;" Q5 ]( p, T! }9 v4 R& C& Y" W7 h
g_dpDBClient.SendClearPropose();6 P" s4 c* _# j( h/ P) n+ Q* g/ i
#endif // __WORLDSERVER
# V8 d8 }1 e& v& P- R) o return TRUE;- H+ { N! \& e, M" m2 d. F* j$ d
}
4 z' V7 d' f# L# e3 T+ t8 _3 @下面插入) y% G+ k/ Y$ a2 E1 S Z5 v) Z0 E
BOOL TextCmd_rebirth( CScanner& scanner )4 v6 z$ _$ W/ C7 b2 J3 c. Y
{
9 O4 U8 t% M( s5 C6 p#ifdef __WORLDSERVER, g2 n1 }9 S4 \1 K0 e7 `
CUser *pUser;8 y K0 a* P$ l/ @0 x; w
pUser = (CUser*)scanner.dwValue;% s6 |7 j7 N' S
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())* s7 r* ?4 \& X5 e" p& u( b5 Q, L
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);( U8 h+ a9 N! M- {3 m, B9 [
else
. N4 ], |3 l1 q0 o, r, \2 GpUser->AddText("你还未达到重生条件!");
6 G2 V7 H' w V0 C* E: I#endif& N+ U% m9 e- ~: W; O. h, r8 G
return TRUE;3 G4 P- {1 l: r8 ?8 G0 f
} . m. _9 a: h5 b1 A
% R1 F+ E: V" j9 Y/ E2 n
8 I; y7 K+ d5 c" G5 O7 k
: D7 U: h5 ]: X/ z) O- h/ n3 o0 Z W- Y
|
|