|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel0 Z L) e! |3 L$ F9 S( K8 g
+ r% G Y" F6 ?$ s$ R/ jMover.h
. I* ^( J8 N' j6 ]2 L2 `/ p代码:9 c; t/ n' X8 k0 A4 J7 G i. P
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
7 i" J( ?! o7 a d9 {
% S7 T! o$ e0 T5 W0 T0 c+ h- ~下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 2 R( W6 R. o- [8 P& c
2 W0 q1 k& o' h然后你去mover.cpp添加( h) U$ |, x# R7 d8 |0 m
9 F8 H8 O; Q7 R W代码:+ L( y' e9 T6 I8 g
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )+ {* F) c2 O7 a* S
{
9 l0 J, k4 r* ~( g$ d#ifdef __WORLDSERVER6 ~( R% N3 L' a9 h% x8 c( j! M5 l4 h
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
" s& U2 _, r2 \( N( [4 ?2 | MoverProp* pProp = GetProp();
* K2 t( R) }9 m" P6 K- h if( pProp )
/ \7 D) L, S7 _% @/ R3 w2 M {7 q( a& W0 [* W7 K" c3 H) u
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
. P4 g# J2 I3 ]2 ~ {/ }) E. g, m6 u
AddChangeJob( nJob );+ H5 `$ x: B9 o" \5 v
}else{( y! H4 ?4 L; x/ {3 j
return;
! [+ L* n' t' V) h. k }
" [ p2 L1 ] W7 I7 A int nPoint = 0;
, W2 B+ _7 ?7 Q if( m_nJob == JOB_MERCENARY )
& j* E; U/ Z5 w* u$ W nPoint += 40;' E- d" S) t; Z( m* Q" L; M
else if( m_nJob == JOB_ACROBAT )
; {$ Y# G! J5 g% c7 ? nPoint += 50;
+ x6 d; d& T/ o2 f2 T j" M else if( m_nJob == JOB_ASSIST )
+ S1 \% D `7 \( n% C: ]/ t: J1 V nPoint += 60;( o3 U' V2 S4 H7 P
else if( m_nJob == JOB_MAGICIAN )6 v! g j# j, l, G% G/ J
nPoint += 90;/ i$ C. d0 c b! r Q- \+ a
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )9 [$ |) T( }' @+ A# V# j8 J
nPoint += 120;
: Q& l' S% e' l. `/ a& g ^2 h else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
( J" D6 {4 E5 ^; Z- m) F& u2 D2 g nPoint += 150;
2 R' n: d: |$ @ else if( m_nJob == JOB_RINGMASTER )
! k" }% O5 q. U9 i! k nPoint += 160;
1 r1 P% [/ L$ m else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )8 { `2 [! x0 Y4 d
nPoint += 180;) G% H7 v1 c$ m" U% j
else if( m_nJob == JOB_ELEMENTOR )* o; K: U; b/ }0 N0 |5 _
nPoint += 390;: o7 Z- ]; z5 |
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )5 Q" A* T/ N3 G
nPoint += 120;* L5 D7 k- R" |5 Y6 a
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
1 D: V8 l) b( Y nPoint += 150;
7 L1 g: a& x- L' I else if( nJob == JOB_FLORIST_HERO )
( P/ G) u6 f0 [+ c# _1 }& R nPoint += 160;+ L3 d5 k" s [3 m# _) R
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )' s2 j! c4 G! L( F1 ^
nPoint += 180;
: t! A, A" c5 [" ` else if( nJob == JOB_ELEMENTORLORD_HERO )! _7 J+ v6 X% ]3 w7 N! J$ d- q
nPoint += 390;& B: y, S, m# K+ M7 S
# K0 }0 d( q( L/ r/ [. g AddSkillPoint( nPoint );
: u% B) H) @4 k+ ~ m_nLevel = nLevel;2 E! @. g8 i; C- t
0 B' O9 {/ b. L9 s1 i! t- y SetJobLevel( nLevel, nJob );
! z; R; A" Z7 N* T! f m_nDeathLevel = nLevel;
+ S1 C+ w0 {& i- d I- |#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
+ w9 y/ o; F+ O' N* K" E9 b if(IsMaster())/ f6 M$ m( `/ g3 K4 A3 W) R8 {
{ A* f6 ^8 V! F5 B
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108( D* h3 s* L- g& {0 Q/ v
if( nLevel > 59 && nLevel < 72 )
! I' J6 E' @5 l: h, P dwTmpSkLevel = 1;
: l S4 s) o8 E. ?6 v else if( nLevel > 71 && nLevel < 84 )
0 k- c1 O# k5 ?% f' h4 S2 P# O( f# K dwTmpSkLevel = 2;
( x( \" v1 i. w2 ? else if( nLevel > 83 && nLevel < 96 )7 U- w' R" W% ?! m
dwTmpSkLevel = 3;
' Y+ O0 F7 \% C! B" u# l0 u$ _ else if( nLevel > 95 && nLevel < 108 ) Q0 e% @- t; T0 o3 u' c
dwTmpSkLevel = 4;
( m" d2 ~3 T' K6 t, G else if( nLevel > 107 && nLevel < 120 )& m% v) G5 H. j
dwTmpSkLevel = 5;; \* h! M- b: M
for( int i = 0; i < MAX_SKILL_JOB; i++ )
+ H. B* q1 W, \' k2 n+ Y* @; x' s { - Y- G0 V/ V, J
LPSKILL lpSkill = &(m_aJobSkill);' \6 l% [; o; y
if( lpSkill && lpSkill->dwSkill != NULL_ID )+ L; d) x, v! {# z
{% t8 l; F/ U C! D# _& j
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); " B: X) s! ?: A6 m$ X
if( pSkillProp == NULL )$ |8 m- S- t% m( t; X; ~- O* o
continue;
$ r* c; h0 d& n/ Z0 t if( pSkillProp->dwItemKind1 != JTYPE_MASTER)' }* A. X b ]) h$ b5 x: k) z+ w
continue;
$ N- e @# ?: r3 L" I% ?4 ~ lpSkill->dwLevel = dwTmpSkLevel;
: i x5 B5 V" ?2 k8 @ }
; {) \- H- Q( L8 ~ q) D' F6 h' i }+ d1 D8 z& u8 d- g. S
}
1 a0 o1 |9 p8 a else if(IsHero())* W* f j; O8 _! R; q# Z6 y# t! a( D
{
+ A, ] i3 v" U% Z+ Z$ R2 o2 u for( int i = 0; i < MAX_SKILL_JOB; i++ ) / Q' x A) y- h% K5 w2 k, s0 q
{
( Q0 R" I- R; Y4 ^+ R LPSKILL lpSkill = &(m_aJobSkill);3 I2 u; M4 B q& z0 r3 h3 {: l
if( lpSkill && lpSkill->dwSkill != NULL_ID )
2 B" f/ m- U$ @& a# E {
0 m+ G4 L. K0 g8 u+ i) b4 f. } ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 4 r, Z. V6 Z+ ], q7 x* d5 Q. N# O
if( pSkillProp == NULL )
: V! ?3 Z, m4 m4 P, r% i continue;4 b5 N6 ~# }3 `8 A4 U, ~
if( pSkillProp->dwItemKind1 != JTYPE_MASTER); i0 I% M# m# v+ X
continue;
. a% z/ R& m# O6 G lpSkill->dwLevel = 5;
$ J0 G3 w: x# ]9 i7 [ }
% e8 _* J. P1 J8 t# y2 e }
. [! a5 }, b" t/ E }2 V% X! s0 }- _% S
else if(IsLegendHero())# t* e1 W$ e0 [& C( [
{0 e+ z' b6 H* h2 a! x1 u' P
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 9 V9 |( ~6 o. [: A
{ . r5 x6 p6 R2 [# B0 A. u1 y. {
LPSKILL lpSkill = &(m_aJobSkill);% u; U) h+ v; p( K: I
if( lpSkill && lpSkill->dwSkill != NULL_ID )
# l3 J4 _4 u( p {
8 P0 N5 x* }1 F% h% i( n. d ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); # X( P7 `# l$ y# `
if( pSkillProp == NULL )
# m5 [1 m1 Y- j* { continue;
0 ?' z; Z0 D2 _0 F3 X H% p- I if( pSkillProp->dwItemKind1 != JTYPE_MASTER)7 z2 K3 c' K# q' a C
continue;& t0 @2 f. S' ^
lpSkill->dwLevel = 5;
X/ T) m4 m0 w" \ }
6 D% v( [! Z0 b' ?8 u9 k9 N }3 e: r5 D' T2 s! f
}0 \+ p" n$ V9 P4 p4 @4 o
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans; E- d) [2 m+ u1 V4 Y
if( bGamma )$ H: F" ]( A; K4 {
{
# p! b! k4 V0 W3 c# _3 }4 B m_nExp1 = 0;" o" g% _% h: F2 a8 j
}
$ l. G* p1 \* P
1 c ]2 [. g1 r! R1 J; B ( (CUser*)this )->AddSetChangeJob( nJob );
! k3 [' _" X L( y& K+ g1 U9 @ g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
6 l9 d# V3 _! s, ?: h3 T4 O0 Y
: O% W2 R! G; ^# f L; P$ V
) ~! _* @: E' G! `/ ^5 E- y#if __VER >= 11 // __SYS_PLAYER_DATA
* ?5 m& i. q" ]0 I g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
# X9 [6 t) ]- E. _: z* U#else // __SYS_PLAYER_DATA
7 w/ M# @0 @2 _ g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
) y1 y" W7 D* [# e9 O g_DPCoreClient.SendFriendChangeJob( (CUser*)this );: T. v" D& S' t, F9 t
if( m_idGuild != 0 )
7 Z# }* E, J% t0 Y4 U; N g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );' C; ]4 |9 l6 B; b
#endif // __SYS_PLAYER_DATA" F- I1 @2 u: [: d
SetHitPoint( GetMaxHitPoint() );
; }0 U3 k# ?5 J C! u SetManaPoint( GetMaxManaPoint() );
- a3 _$ q l# e/ c" O SetFatiguePoint( GetMaxFatiguePoint() );
$ @- p5 N# s; g0 F7 n if( nJob >= 1 && nJob <= 4 )! N3 G8 [' s. | q
{
) s5 V- |/ m' V* S m_nStr = m_nSta = m_nDex = m_nInt = 15;5 x$ x# y* S& _; t8 o
m_nRemainGP = 28; B8 g+ f7 R. C; G* a
}
4 ~/ N( v; _7 c) _4 _. v if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
, Y' ?9 H( ?6 P5 i5 }2 m. x {
3 W) H4 A* S) Z6 I t+ a' x( L m_nRemainGP = 118;
! M$ a% W- Y0 R# y //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
2 G# x4 l) `" }+ x7 d m_nStr = m_nSta = m_nDex = m_nInt = 15;- ]% e7 w* Q* \. ]/ J
}
2 u3 G- |% w9 d7 d9 X% B if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
' O& U n% e, s+ y5 I! ]3 X {6 z- O/ |" q7 h# _/ v
CItemElem itemelem;
1 _6 D2 Q* W5 c3 @# Y# z itemelem.m_nItemNum = 1;
" ]" K$ U0 n" V+ v$ x4 b4 o1 `4 T itemelem.m_bCharged = TRUE;
( i0 o0 Z, k7 g( }: g5 k; [ BYTE nID;2 R% z9 K, C4 r, b# u9 R6 D% F
O' o) }* w; i. p$ A' T
if( nJob == JOB_MENTALIST_HERO )* N3 [& p! ?& r1 E# R% _+ r
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
" j- n3 J9 x* q; N( ^! t4 n) o# P- U: M if( nJob == JOB_FORCEMASTER_HERO )5 @" f+ g9 P7 ~- O# n; A
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
9 e% S5 s& Q4 ^4 m1 L! D X" l( l5 w6 z: U4 n6 {3 ~
( ( CUser*)this)->CreateItem( &itemelem, &nID );
; c6 [) N% L+ T; A* @ }
+ @) L% x7 L+ n+ x g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
7 {' s+ i) F# e& J7 Z# N k/ ? ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );# R- l5 U3 I8 C, z3 s. J
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );1 e0 N8 |8 D& j& y
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
8 o, W! {; l) G4 s% P+ ]5 N& S ( (CUser*)this )->AddTaskBar();*/
' a) f) }" v0 _5 \4 s r ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );8 Y$ N. Q& {9 ~7 w' p+ M3 d+ c1 d0 j
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?" Z9 a# k7 D% L) @
((CUser*)this)->CheckHonorStat();7 \6 M! m; k. [/ P& I- L1 S4 O
((CUser*)this)->AddHonorListAck();
& O& C* q4 I) T: [$ V/ A1 k& G! d g_UserMng.AddHonorTitleChange( this, m_nHonor);
# Z( j7 P; b2 E# V- G, g#endif // __HONORABLE_TITLE // ′Tà?7 v0 f9 D0 j) O* g
}
" O7 m1 S6 k1 N2 T% \& n#endif // __WORLDSERVER
% `4 A! ^: y' x3 ~& l} , [- X) y; j$ S; D+ f$ V
* ~" |; t3 [$ l' @. E# ?7 B+ w' l" F然后你进入functextcmd.cpp并添加以下+ n' ], d/ a' u8 h2 k6 ?
5 l0 r0 x' Q. P1 r; A$ N代码:
( `! g2 m# C+ VON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )- h' f4 J4 G+ a* U) n
下面插入$ z6 t. ]' G( R g' L" D9 }
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
g6 h2 q5 ~7 `4 m- F7 v4 s0 o* v- V8 t" H
然后你去
/ C$ f1 g9 y' `
. P) x% K0 P7 N& w9 E+ H代码:9 c5 v2 N$ [' v" B9 E. }
代码% y4 `; c R" V" z1 H" r
BOOL TextCmd_ClearPropose( CScanner & s )- | x5 Z5 x; `% Z
{/ [$ q5 S7 l1 d8 p) C$ b6 M
#ifdef __WORLDSERVER
6 D2 U$ i6 ^! ^ h0 X* T/ d/ I9 n* t CUser* pUser = (CUser*)s.dwValue;
* U- V( w8 h" W" [3 \! D g_dpDBClient.SendClearPropose();/ ]: P* r r Z% [; ~
#endif // __WORLDSERVER
- {- u6 G3 l3 F" I return TRUE;! }. b* {7 K8 ?1 T# \6 x$ a4 T
}2 i* B. Z; N1 D- x
下面插入8 J0 l) h9 N# E3 Q1 B0 U- _; i" V7 P
BOOL TextCmd_rebirth( CScanner& scanner ), n# A, y, Q1 c2 q! D
{1 f, T t0 U# v/ k3 C: y1 K) ]
#ifdef __WORLDSERVER
# Q. D3 A* X7 _4 _9 vCUser *pUser;8 a' R' _6 Q6 A! Y- Z/ F9 {( h
pUser = (CUser*)scanner.dwValue;) Z/ K; a3 x/ y: v3 }
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())0 m# n6 @$ m$ S8 F
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
' u) `$ E1 K0 w" g8 A% ~' M- uelse/ T* X0 b( M) z' y3 `/ n
pUser->AddText("你还未达到重生条件!");
% @4 ?3 Y+ b! X( U8 ]2 {! q#endif
0 G" P! t$ _9 t+ ~0 z+ k2 q4 Xreturn TRUE;4 V6 ?/ E) z# }6 W- [9 I5 Y; E
} ; g4 t' |4 i9 P! \. c2 [
7 @* |+ I& R0 z& {' _
! a C# x: g* H+ z- V) L) k
7 b+ Z1 y/ f: i3 y7 g8 G
V) K- `/ S4 O# D" p7 \ |
|