|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel* h( `% A+ C( Z- j# {
' j1 a. g* A* D5 _- v+ ^9 z( aMover.h I: s1 j/ V$ |% t" D7 Y
代码:4 q# c. W' B R' v" J6 G: {
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü- I7 e8 a7 @: v3 w Y4 U3 w4 ?
; j4 g& [; ^: T5 I9 ?6 Q6 H9 E
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; $ v! ?7 }1 m5 ^* j3 \
( N5 H% p& E0 \ L( O然后你去mover.cpp添加
2 [' C5 c( | B1 L- M4 I5 G0 y, g% H, u2 @# T" j
代码:. Z: W: ~9 f9 W
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )* _4 Q& z. h' V6 O2 `3 ?+ b. K
{6 ~' o: e; e7 C" ^8 F
#ifdef __WORLDSERVER2 l5 W% x" r( Z
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
7 A3 @& R3 Q, d MoverProp* pProp = GetProp();
5 T: v' ~" I% T4 m; U* w if( pProp )
/ a6 s0 l/ e& d8 V+ | {; R/ D. J. v: M, i' ^
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
' R/ {* N- u" e6 c {/ J6 K5 Z# J( R7 Q
AddChangeJob( nJob );. X( k+ f/ T3 A4 b1 r3 z
}else{* J) X+ O- s$ v- D
return;# ^- O7 @0 E, q. V9 y& E
}3 a% O( I2 u6 f
int nPoint = 0;
8 l( D- @8 P- P" Y- E if( m_nJob == JOB_MERCENARY )
% r$ W7 D- D- E+ x! `8 M/ d4 w nPoint += 40;
3 b4 H: O+ t+ B4 k else if( m_nJob == JOB_ACROBAT )) S9 B4 h/ e& ]$ r6 O, N& t
nPoint += 50;
a+ K; Z/ F1 b+ |9 e, \ else if( m_nJob == JOB_ASSIST )6 U+ n7 `6 K' \
nPoint += 60;8 ?4 y) n7 J- O$ h$ I: B& A. {
else if( m_nJob == JOB_MAGICIAN ), z# u5 d9 l! @2 S8 g) [
nPoint += 90;
+ u+ c0 _0 w" a& E& G& U else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )5 d7 F0 C" m2 V
nPoint += 120;
3 A3 S. \5 x! ?2 Z0 U, o else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )% C% A% G* v* A! {: n& x
nPoint += 150;
1 K+ M/ E. F+ N0 x- ~+ w else if( m_nJob == JOB_RINGMASTER )6 ^' X$ R7 v/ _; ^1 i- J
nPoint += 160;
1 w5 W* S8 b7 b- w4 J! n* a else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
, o' s$ z+ b% U. `; e @ nPoint += 180;
. C6 l0 k% C8 n$ J3 F% ^ else if( m_nJob == JOB_ELEMENTOR )
, I! D, ^/ N( z" `9 k7 z3 z nPoint += 390;
) K! W7 n: r$ p else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )2 M1 L( p. W' W5 d/ D1 f& o
nPoint += 120;8 R* r; x. Z2 ~
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )2 F, g5 s1 ^* s% u, Z5 v! |) z* M
nPoint += 150;
8 W! o0 b+ a1 F+ G: r else if( nJob == JOB_FLORIST_HERO )
" d# ~- t o6 m5 X nPoint += 160;; M# h3 r7 K' H: g# H4 x* T
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
+ m" Y) r& D1 h0 _5 M6 K nPoint += 180;
) G$ M& z Y2 o9 i; w else if( nJob == JOB_ELEMENTORLORD_HERO )
& U5 n/ G4 ?! b$ ~0 e$ Y* @ nPoint += 390;
% F T n' }; S: P/ R0 m" C! t e7 Z# l, c1 T
AddSkillPoint( nPoint );/ k" G) R9 U, s- H% [. Y
m_nLevel = nLevel;1 X1 c) c8 }1 t/ |5 ?. V
/ l2 f; c& t$ F% s
SetJobLevel( nLevel, nJob );1 F3 r: Z. \; L
m_nDeathLevel = nLevel;
: `& A$ {6 l P. b#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
+ s5 m% Y" x f: `& b* Q; E0 \% u if(IsMaster())/ E0 ?1 m9 f0 d. ~9 r
{ |. f3 N( Y' c$ I& L
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
0 T" P, A4 _& n$ j if( nLevel > 59 && nLevel < 72 )
+ P3 t- {' F8 h' h dwTmpSkLevel = 1;
- V: H: v8 m6 l& u, T! m t% L else if( nLevel > 71 && nLevel < 84 )
5 x; A! s" w e$ `+ H5 L7 p5 v dwTmpSkLevel = 2;
' i4 h7 S" t1 Y) F( s else if( nLevel > 83 && nLevel < 96 )
1 E' }" h+ x' v& n1 e( \" n% T dwTmpSkLevel = 3;) c4 P& E. s+ p
else if( nLevel > 95 && nLevel < 108 )
) e2 `3 m$ b+ e9 b/ k dwTmpSkLevel = 4;0 v/ o6 A' z: @/ X+ Z2 _: E
else if( nLevel > 107 && nLevel < 120 )
& k/ v2 R6 |9 _% ~ dwTmpSkLevel = 5;( }4 |: r6 ~* H$ G' Z
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 3 ]$ l5 M) s7 m/ i7 ^
{
* X2 G |8 P7 S# ~# v LPSKILL lpSkill = &(m_aJobSkill);
* p ?! p/ ~2 u6 N J5 S if( lpSkill && lpSkill->dwSkill != NULL_ID )
# p0 u, s* I7 V; `( R {
3 y m6 J% C! Q% t9 | ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
& J% B. `3 v/ y, K- B if( pSkillProp == NULL )! p9 s4 v/ \6 u% \
continue;
# l- e) ?; _% b! [: v" B' K3 H5 A. h if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
0 r9 {6 k9 c6 @$ m( S ?5 B! f continue;' e1 ?8 V) h/ s; j
lpSkill->dwLevel = dwTmpSkLevel;; u1 {3 \0 x3 }5 [) Z/ i
}2 E- j% n+ b" F q2 ~ L |! h. ^
}: b! A; @ r0 n7 N
}
1 m, K- t( Q: z. _; e else if(IsHero()), n' o7 S+ U4 a, V% V
{
8 v: Q' s8 {5 ]) E+ d; V- L6 M for( int i = 0; i < MAX_SKILL_JOB; i++ ) ' _3 A/ \& J% M9 G/ i+ R- c
{ & P9 H* y# a$ s% b+ X
LPSKILL lpSkill = &(m_aJobSkill);
, x+ v( @1 B5 B0 P6 } if( lpSkill && lpSkill->dwSkill != NULL_ID )
- i0 T9 b: j2 k2 [+ q3 G" v {! m$ W. z6 L& F+ |, X) w
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
: J$ C6 p% M, K4 ?; O if( pSkillProp == NULL )
0 z0 E0 V$ K3 A: C k: ?4 k! e continue;
# `0 C; a4 u1 q ?2 ^+ G7 i if( pSkillProp->dwItemKind1 != JTYPE_MASTER)9 w3 t8 U9 c, w. m
continue;# V: ~2 u7 k& w" _* ]* e8 _
lpSkill->dwLevel = 5;
$ h( L0 e, M( a+ s" { }
* Y4 H% G* b/ S, e3 n }
1 P; c! t2 ]7 Z9 _& q0 g0 Z1 j# B+ t }
9 D9 ?# J5 W; l6 X else if(IsLegendHero())* s# c. H& Z& X$ ? o4 B' \" t
{3 h4 i9 F" S) d8 @
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ) Y1 \: C4 k. K- w
{
) g& w5 d$ w: \ LPSKILL lpSkill = &(m_aJobSkill);4 b! u( S, W, Q8 \% [+ D" N ~# W% L
if( lpSkill && lpSkill->dwSkill != NULL_ID )
6 b% v8 H: y) c) A {0 a, x1 Z' x& z: J4 N
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); . I0 x7 F1 O; z& o* Z& {7 s
if( pSkillProp == NULL ) r( j/ [0 u6 B8 L6 c
continue; x: D+ T, o3 ?/ i6 V% v# K' s7 |
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
8 x% G0 b; S; {1 } continue;
' i7 k/ }6 R, }1 `. {, m lpSkill->dwLevel = 5;
4 P* c$ E. C$ y- J, H }
6 {$ y- P5 x7 d3 [; @ }5 x1 `) } t% T! p: q
}
6 o6 j+ N4 o. W# x6 T9 w, h#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans: f5 u; _+ n! w7 Z
if( bGamma )! q" V2 V# N' Q
{( h+ e7 y H3 \1 v1 j+ Q& V
m_nExp1 = 0;- N) O7 U# j6 [6 g. b; B1 s, m6 r
}; L- N# i: T; }1 M* Y, k
0 ^9 z7 S; w3 S4 g; @ ( (CUser*)this )->AddSetChangeJob( nJob ); t$ @+ ^( G- G R2 r1 K
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );& w1 y( ?$ H" F" f7 \
+ D% a6 X6 _$ v. `9 }. N3 a
- a3 z9 K/ j f |#if __VER >= 11 // __SYS_PLAYER_DATA
4 d! A# _2 f. x' L4 e6 l# a g_dpDBClient.SendUpdatePlayerData( (CUser*)this );/ `1 D) k% g, d8 e
#else // __SYS_PLAYER_DATA
4 ]) t: T" F, C& C( Z+ c8 N g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
) J/ b! I; v# | g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
Y% B2 F+ B* a% K1 ~ if( m_idGuild != 0 )
) A+ q& r8 u i9 K g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
1 q2 N, G7 i( u' W4 i#endif // __SYS_PLAYER_DATA% i* I j- ^: C: \
SetHitPoint( GetMaxHitPoint() );
* B3 u* d! x+ J9 }. `' d SetManaPoint( GetMaxManaPoint() );
: X1 E! }& `5 t SetFatiguePoint( GetMaxFatiguePoint() );& Y9 k0 }# [, W
if( nJob >= 1 && nJob <= 4 )
; e4 P& y. ^9 ?8 O* Z& Y" j {
% z& K" l( \) l3 B/ W) B1 Z m_nStr = m_nSta = m_nDex = m_nInt = 15;
3 I: L. e2 E' r* r! o m_nRemainGP = 28;% a$ n( A" [+ F9 L
}
. E2 z0 j2 ~# P# S- r E% { if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )! F6 L0 Z. J: i3 D; e$ C" h& I
{
' Y A _9 p& v1 K- j0 T m_nRemainGP = 118;
# \7 r1 p9 J0 D$ p% v //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
/ |. {+ n( o6 r- n5 H% D7 t m_nStr = m_nSta = m_nDex = m_nInt = 15;
% m1 g n% Z" \ E: `( ?% N }
* s, U& K/ Q* K! M+ T; ^8 w if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )& W' i( }' F: h
{
4 h! n/ T+ y0 N( g( O6 q CItemElem itemelem;$ O& L/ u5 e5 u; w% n1 G9 y
itemelem.m_nItemNum = 1;1 W# o: J S- \# F
itemelem.m_bCharged = TRUE;1 o% ~3 F6 f/ f6 N/ X" u# S
BYTE nID;) [4 l/ g9 G0 _6 O% p6 X& B
3 z7 t% f% G) C7 V/ S if( nJob == JOB_MENTALIST_HERO )
2 M! O, h6 G+ x itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;4 D" i' F: M: |. h( p6 W
if( nJob == JOB_FORCEMASTER_HERO )
# P6 d0 `1 I: V/ W* r itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
& t! q' m8 S% Q Y4 `; C4 {; [6 Z1 {- T! |; r* a
( ( CUser*)this)->CreateItem( &itemelem, &nID );( J; p5 {: i! @9 ^
}' _* {1 T) T/ @. Z& r$ h
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
& t# C- t& c2 s r9 t/ h; f ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );* d, ]9 @# J" I2 _
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
7 K1 V6 @5 H/ x# o: e% l /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );# j7 E0 d; d& p% f% q
( (CUser*)this )->AddTaskBar();*/
; x6 i* X2 Y% O) ?' D ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );( d! A& b& H; K5 }" Z! B0 u& r
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?8 o) t) T& F' T+ x& h- k! N- ?
((CUser*)this)->CheckHonorStat();% y7 i( A! I. |" s
((CUser*)this)->AddHonorListAck();
& l! o* ]/ I6 _0 A$ R g_UserMng.AddHonorTitleChange( this, m_nHonor);3 y: o2 ^$ r3 D2 ]4 h; w
#endif // __HONORABLE_TITLE // ′Tà?
# z A4 a" s6 U% ] } }
8 X% _% R# c& o8 K#endif // __WORLDSERVER G- X8 R1 U, }9 D. z! G3 b
}
" Z) S" A0 c& q8 q2 O8 ~( I5 w) P3 V3 H/ h/ Y; c
然后你进入functextcmd.cpp并添加以下- H- }! C8 `4 d! ~' S
@1 N9 ?1 o' V- M( `( o
代码:5 R6 A* ?0 _! f1 _4 M+ m
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )7 w2 T N5 x4 m5 ^; |) P
下面插入 ~3 g- ]8 E. O5 Y! J
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
& d- X N7 G, t1 R. Z) V
1 x4 J3 ?2 }- Q" i然后你去1 L; |- K) ?) i; f T, M( p' m
; t: P# }3 I4 l+ L
代码:
% m2 X# m# r3 G代码# ~8 |) b8 ~ ~/ _/ `( |
BOOL TextCmd_ClearPropose( CScanner & s )
8 A4 G, [6 m! }% \% A& O; j) F# V{
, c8 a$ Y; y# f; w; a4 Q6 Z |#ifdef __WORLDSERVER
% C( a1 t' K6 j" N! E7 p CUser* pUser = (CUser*)s.dwValue;
9 |( G/ @" B8 n5 `8 k g_dpDBClient.SendClearPropose();
1 X: t) [) J9 N6 Z#endif // __WORLDSERVER, E( \9 }, ^; p" w. k- g1 Y8 X
return TRUE;7 a* U- Q0 {! [, m8 x" v
}
4 n C5 y2 ~/ y; A下面插入9 r3 r( G% X9 L8 N. G# m
BOOL TextCmd_rebirth( CScanner& scanner ) p1 `3 p9 f1 \
{1 ]1 k4 K3 F K
#ifdef __WORLDSERVER, n" g7 z" Z. P3 X4 I$ Y0 x
CUser *pUser;
! P' {- H2 J) k, ppUser = (CUser*)scanner.dwValue;7 x! I- l4 A& {+ e3 }/ o
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())1 z' ^3 g% A1 k5 F2 W2 \" D% x2 p: k
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);1 {. B7 ^! m3 E
else3 ]# z& E6 C1 [" L9 Y6 ]; Y1 W
pUser->AddText("你还未达到重生条件!");
% [ M! L! k* X* G0 v; J* l#endif
Z4 l, R3 a2 H8 f1 Q: jreturn TRUE;' Z% R6 K; T# Y B
} 0 G2 P! r7 V* }; e' i
0 t9 b# n- B' Y% T/ G
5 A# U/ ` q0 x. W( C/ V! S8 m2 g' t; C$ l% O
7 u8 ^3 i& B9 F4 Q* U: l% _
|
|