|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
$ N2 A2 Q8 H* |9 A
9 M" s! B; T% K1 B; bMover.h
5 n" N( k# A1 z9 \" _" X6 K代码:1 t }& S! P5 T6 X
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
- U) D7 \- z. ^) e
/ F" {8 I* G1 R2 x( x: i0 Z3 w8 H下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; : V# z5 b* X6 ]" P9 o/ G+ w
3 z7 l' @7 _; K3 E2 ^+ Q" \然后你去mover.cpp添加3 K8 \6 B- y X7 I& b
6 ]2 ~& E! M. ?% G
代码:; t& M! w+ F5 e
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
, A+ \; r. n7 Y, Q* z! E{
. t% O9 A9 D4 {1 ]+ |5 A% l' w#ifdef __WORLDSERVER
; |; J) R/ m7 E0 p* J/ p& z4 F$ n // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
6 i4 }7 v2 d2 { A" s MoverProp* pProp = GetProp();# _3 l1 O$ j$ l3 N# `
if( pProp )
4 c; P: v/ h+ N {
( L- `9 u% E+ t/ s; A- v. {$ W' L if( nJob > 0 && nJob < MAX_LEGEND_HERO )
9 Q: w# E$ I g+ L* G! C0 Y {- K; m/ A" G; W: G
AddChangeJob( nJob );. Y2 Y: {: T( S( c# ^6 f7 z
}else{" N. ^( C" C2 o/ h4 g' b) h
return; }7 F. D& k. E& Z# b7 v
}: }; u. M. J' T$ g1 L
int nPoint = 0;
, q' q8 N% O6 E if( m_nJob == JOB_MERCENARY )
) g$ k( a2 M1 U nPoint += 40;, c- T: u& Z+ g9 C2 y
else if( m_nJob == JOB_ACROBAT )
* ]- D6 ~7 u, Q* k: s c2 Y! s: a+ b nPoint += 50;3 ?/ S/ B' M6 ~8 {5 h& ]) f+ V
else if( m_nJob == JOB_ASSIST )( |% ~: h! ?; m" H! q
nPoint += 60;9 y7 @/ e- A3 ]& g$ ~+ C; A
else if( m_nJob == JOB_MAGICIAN )' j, R7 |, X/ Q4 x8 X
nPoint += 90;
3 J5 B: u0 l! }" f8 h& W else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
" k, [& i% U% @ nPoint += 120;
c9 M/ J. m1 G& L. I- W0 y7 e else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )8 p& A/ i" I v4 t$ y3 Z0 f# i' ^7 ^5 D
nPoint += 150;
u. p4 Q ]* [* M! e* G# G# D else if( m_nJob == JOB_RINGMASTER ): c; ?" \5 s6 p) ^8 x
nPoint += 160;/ N1 O0 Z' e9 B( N# R
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
; {6 y Y! b: Y; m2 e: L% C nPoint += 180;
+ i* a: t* K( o# r) [ else if( m_nJob == JOB_ELEMENTOR )3 a1 }+ `7 D% Z' ?; J4 E
nPoint += 390;
' }' P. z: q& x+ a2 c. @0 G else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
, M. K7 K% v: A# r2 z# r* u nPoint += 120;
. S0 v# ]* s& T9 S else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
$ V+ } ]$ ]+ q2 a( _( w2 _ nPoint += 150;
+ n" g( C. s/ `- z# Y6 C else if( nJob == JOB_FLORIST_HERO )
/ ]9 O( z l1 b- j$ { nPoint += 160;
8 e# w+ t$ a; f' }. a6 G else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
0 i/ C; e9 @6 F7 J$ { _ nPoint += 180;; Z8 y; i W* `9 `1 |
else if( nJob == JOB_ELEMENTORLORD_HERO )5 b) A1 T' i$ x B6 Y8 z
nPoint += 390;
2 b9 y, l) J* e2 y- C& L
! ` O4 t# ^0 W8 x AddSkillPoint( nPoint );
0 C, e' m9 i4 r m_nLevel = nLevel;. S5 L# B0 z' P: }
* S; n/ l2 G, ?4 p/ E& w6 V
SetJobLevel( nLevel, nJob );: s2 q- n. n5 i% j
m_nDeathLevel = nLevel;
' o- ]( N6 a* _#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
) K- u# ]0 H% ?( ~) n7 f if(IsMaster())* S/ r8 E$ k! A, V+ u# \
{4 i( f. K1 _& h/ S
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108% M1 W6 Y( J( @- J# N( W5 ?
if( nLevel > 59 && nLevel < 72 )
* X3 {' u1 U# P6 P" T2 { dwTmpSkLevel = 1;
. _0 N5 B1 S4 ~/ _2 ?: F7 I else if( nLevel > 71 && nLevel < 84 )
( }* j$ d- n! K& T# {- g dwTmpSkLevel = 2; `0 ^/ Z" q# _! d+ O/ w' i+ m
else if( nLevel > 83 && nLevel < 96 )
9 X- i1 s" x+ r4 E) Q0 e dwTmpSkLevel = 3;
+ m# [4 L9 T/ s! ~ else if( nLevel > 95 && nLevel < 108 )$ d" j6 ?# I1 N/ p$ w i4 |7 d
dwTmpSkLevel = 4;
" w2 ]7 B* l( j% v( W else if( nLevel > 107 && nLevel < 120 )5 M2 S5 S3 E' O# m p: ^6 {# G
dwTmpSkLevel = 5;" \* Y5 C2 E; L' p. I, \5 X
for( int i = 0; i < MAX_SKILL_JOB; i++ )
, e5 R q% u/ d# g- w4 v" O- R, m {
. z/ B* \& M9 H( \1 |- y. _ LPSKILL lpSkill = &(m_aJobSkill);
0 J+ @* p: i8 H+ u if( lpSkill && lpSkill->dwSkill != NULL_ID )! }$ M2 o% B) Z2 i+ i Q& s
{( c) e7 `/ i. V7 E% M g4 _! } f
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 5 O( j3 i% M- V' c0 P, t2 U' k0 ^2 s5 E
if( pSkillProp == NULL ); Z# j1 k, E6 y/ `$ j& v
continue;
! D% [. e1 }. x2 w! {; _ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
7 G" w% A2 {! [7 x/ ? continue;. E* s6 D0 u3 ]4 s; y+ Y
lpSkill->dwLevel = dwTmpSkLevel;) p& [0 x, h3 a& ^5 ^1 |
}
7 s- c$ v3 x' \6 u9 O0 [, V: n+ | }
0 [* k4 D0 I$ _# M( o9 ]* Q6 H: \- @ }; ~- K+ E- r6 ~9 s: r6 b, @0 P
else if(IsHero())0 m' }( q. |" g, P1 k
{
$ I7 G2 h( {* y, ?! ~ for( int i = 0; i < MAX_SKILL_JOB; i++ )
% \1 ~. U( l4 K9 b Q( p6 m- \0 R$ H { $ d3 _- I! T5 x4 Z8 s1 N/ c) c
LPSKILL lpSkill = &(m_aJobSkill);1 o, J+ r. v/ Q+ ]/ s% s
if( lpSkill && lpSkill->dwSkill != NULL_ID )+ t/ d5 Q9 i# K+ c( U$ [7 V8 J
{
: v/ G' B& T$ J ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
; H! v; V. t# P- q1 Q4 ~ if( pSkillProp == NULL )2 X9 |! R2 z. ^" F7 R, g' b
continue;
$ O9 J+ _0 y" t. m: }9 q& Y if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
, a% v" {' ~) m6 B' W6 g; j continue;
7 u( R. p; h# {/ I- L lpSkill->dwLevel = 5;
, P# q/ v+ A; ?; X. O1 E }/ G- e* Y$ ]% X7 h8 h
}
" i2 Z2 s+ _& n7 ] }% X/ [" T! N% W
else if(IsLegendHero())
3 r6 \) X0 {: o% V" _ {8 V) {! J% s. Y8 N! m
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ) P, ?2 s2 f6 ^
{ 9 j$ D4 I, `* H6 J! g
LPSKILL lpSkill = &(m_aJobSkill);
) ]2 C0 y1 F# H; M* O if( lpSkill && lpSkill->dwSkill != NULL_ID )" L0 Q3 p) k# y9 s! P5 b% r* g
{
8 k6 v2 D# s. C0 t! g ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
4 ^ K# l% i* Q' G6 z2 X if( pSkillProp == NULL )
8 u( B2 ^; v) v6 ? B continue;5 B$ g1 I% D0 |; ^2 Z) b' x% F
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
1 w+ Z3 n1 @8 S9 ^' x/ W! y continue;
; t0 h/ q9 O7 h1 E( P' e lpSkill->dwLevel = 5;- U y# c6 R2 q/ i6 M' K8 p
}& b! P- A7 j; T6 c- D& f1 A- [
}
; F5 e5 }. |6 D) h7 V% l; l# Q }% N0 A7 f9 e# @5 C4 f8 e
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans) R; L }$ B$ b f- W1 S e M/ A$ [
if( bGamma )
0 C; D$ f1 E; C {5 u6 g4 P; n6 |4 i+ l/ B
m_nExp1 = 0;
7 i) k* V& m* |- } c }
$ ?/ }' u3 u; Q& @
6 L2 w& s7 J; k4 @) O5 L- v ( (CUser*)this )->AddSetChangeJob( nJob );
6 E3 \9 q5 u4 Z6 {9 H g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
2 P8 {2 _- t4 T2 a4 M. s |
& Y, Z4 e+ X0 Y9 q0 o! s
0 C7 L" R8 B0 ]6 \3 Z: ]0 g' I) X#if __VER >= 11 // __SYS_PLAYER_DATA
, l* ]1 A: A0 X% N- T/ ^6 L) l g_dpDBClient.SendUpdatePlayerData( (CUser*)this );9 F" E/ l( j9 I! Y2 w4 f8 M
#else // __SYS_PLAYER_DATA! h! {+ m: m2 d+ T6 W: I+ N
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );. H6 k, R9 i- l2 M, s7 h# {
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );( c+ H/ `$ m% a" o. h% Z p
if( m_idGuild != 0 )
3 @6 {) X3 T, F) G g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );+ Y; J. X6 C7 O% b+ m+ E0 a
#endif // __SYS_PLAYER_DATA, S& `/ d5 ^) y) X- j* e# d4 c
SetHitPoint( GetMaxHitPoint() );- h0 F7 J) b5 G3 I& {' ]- I
SetManaPoint( GetMaxManaPoint() );7 j) I5 O! [% p
SetFatiguePoint( GetMaxFatiguePoint() );
% G% V& _* B1 W0 q$ x6 ` if( nJob >= 1 && nJob <= 4 )# S# M/ ?: _$ E. i, I
{
: l) P. ~; D5 w& l m_nStr = m_nSta = m_nDex = m_nInt = 15;
F3 g- T7 e; E& Y m_nRemainGP = 28;
7 |% n- a) C/ K3 G7 d6 ]3 I' ^# G }3 K0 M" i- N8 t
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
7 K3 l1 p' B5 p! E, e {
2 S' w G9 r9 a! R1 I2 N m_nRemainGP = 118;; j& d n+ U; |8 Q9 F+ J
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
7 f- x# }2 j5 U6 q' ~% j- l m_nStr = m_nSta = m_nDex = m_nInt = 15;- O. X9 i; U( d
} k/ u/ |( q% R. x) f' c* q, G
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
k+ }. X9 p2 c6 ?' i, w7 `# Z {. k) y6 x% b4 P7 \! d. @- s
CItemElem itemelem;
, s! W- z8 z9 f itemelem.m_nItemNum = 1;
* m2 l8 l% A2 v# l" t9 {( F itemelem.m_bCharged = TRUE;( [ s! S, ?6 m3 f5 `
BYTE nID;
3 p1 o2 \. [ ^$ E6 o% q! b2 c) q+ c5 c2 |* V. D8 C9 N O; @
if( nJob == JOB_MENTALIST_HERO )! @7 N( }5 _, B7 J. X7 |+ i f2 n
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;8 j E, D9 a2 P* q+ S4 j8 G
if( nJob == JOB_FORCEMASTER_HERO )" M: k9 a1 n8 ]: g: h7 }' b
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;2 s! |, Q* x( r
( O1 V% @( k8 S, q! e ( ( CUser*)this)->CreateItem( &itemelem, &nID );+ Q' @ `- }* l- I5 R$ H( r
} D x' y9 ]- M3 P/ e- s5 t
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
v! y, m. b& `4 ]; c) v7 p ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );7 Q. W8 f0 k* R
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
& i5 t7 v; x) M# l' a /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
, d* [; k/ n6 `7 u ( (CUser*)this )->AddTaskBar();*/6 |# H9 a+ J4 e4 v8 }8 Z+ d9 d* f
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );" E% `' b$ _4 o/ T, o
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
) N& L# G& t8 K I+ c/ d ((CUser*)this)->CheckHonorStat();
* r0 v- z% V/ s: `4 D" [! P ((CUser*)this)->AddHonorListAck();
) F- \5 p1 f* [6 G1 y4 _' i g_UserMng.AddHonorTitleChange( this, m_nHonor);, s. q- ^2 @6 [2 k
#endif // __HONORABLE_TITLE // ′Tà?
! H; h: n. @' ^0 y }
' g' l9 |, _. h1 t8 {9 M* @# O#endif // __WORLDSERVER
5 F" F) X( t, G8 s& s; L} . h% o1 K7 @- H3 F0 j) f8 \6 G( |
# x! i7 |1 F, c% M2 }
然后你进入functextcmd.cpp并添加以下
/ w, R: Z; N. Y/ f \7 b% ?# Q( S+ F' a A2 `' Q/ `7 m6 \ L
代码:1 o4 A: r5 g5 D$ ?, a! t
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )% t$ h0 M; i* S# \
下面插入
4 |. J& { X, n0 VON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) ( d1 k/ \5 T" U( P- k
' S1 X7 u& T4 V4 u9 _& v6 D; A然后你去
8 M# {2 F' `! U7 _( S( e7 R6 H2 w8 T6 F% Q5 Y k
代码:# a: Z! G/ _/ Z
代码
( Z! X- m3 L* A! g' a1 W" u2 O! oBOOL TextCmd_ClearPropose( CScanner & s )$ c* X! D* K( D0 U' h. `% {
{
& J; N# x L- e6 R9 K#ifdef __WORLDSERVER
$ r1 w. X0 [0 _: W" M8 [+ W, o5 X CUser* pUser = (CUser*)s.dwValue;6 w$ ~/ P, l0 U) g# B" u% j
g_dpDBClient.SendClearPropose();6 P" x, |- i; p6 D0 X0 e3 p
#endif // __WORLDSERVER
& D( ^: U6 Z: k' f$ r return TRUE;
( t | @- N2 \! s S* g8 D}; K! o0 j" L i0 z* C8 V
下面插入
8 Z8 N( L0 `, B/ X: G4 CBOOL TextCmd_rebirth( CScanner& scanner )
! h0 K2 p- o* w{' I0 s7 c6 Q; `' W/ W
#ifdef __WORLDSERVER0 c8 w6 T8 B; c
CUser *pUser;
$ j1 g; G) l9 B. W2 M/ HpUser = (CUser*)scanner.dwValue;
+ N# Y; N" y; `! N9 E7 mif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())5 z" k8 z! _" ~0 v' t# ?/ a
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);2 c! y: y7 }* Q7 W' W
else
6 E6 m/ O7 Y% ?/ o7 ~; DpUser->AddText("你还未达到重生条件!");3 Q7 u" \. G- w# K( J2 h/ l
#endif2 k1 O# x: k' }* |
return TRUE;
! m) {0 |6 G' u# A( m8 X L' X1 ?9 h}
. f' T5 }5 S" w7 F6 w) J M4 N' i" g1 W% S% `) `8 e) o+ o! |
5 ~5 ?) s- ^2 j0 {$ E8 v6 ?5 y1 O! j, K9 z! y3 F
( J4 `( [# m* V# ? |
|