|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel. G0 e! H( j( x8 R
$ S1 M# c! k1 c) e$ A" U% t7 q
Mover.h4 C! k) ]4 w6 y2 Q1 b5 {+ s0 ?1 C3 _
代码:, a1 }5 n1 _+ u2 M9 b# j% i
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
. Q8 y8 Y+ ]1 m' ^; I2 C( Z& u5 J4 L% ^: o6 T" |/ q# y; G8 @
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; % `9 g) x; n6 W0 q$ b3 Z) n
3 {/ Q3 v( \5 r5 g8 W1 t7 Z
然后你去mover.cpp添加
; i6 j& m7 y9 k# W' `! d
# @7 }4 \$ H( @' _- U2 d' [! f S, K代码:/ I" R. x0 d% Y
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
+ A5 I4 ~9 i$ H' n; V% c& b{
: {6 T8 ?& W4 c# u#ifdef __WORLDSERVER
; }- d2 Z* w& O+ ~) ^! f/ E2 G // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
# g/ Z" U# W2 G! Y# y MoverProp* pProp = GetProp();9 X% u9 [- U6 k x# ?$ r( O
if( pProp )
8 @3 z; r1 q* r+ l4 t {
6 B+ N1 p; X: U6 |8 H if( nJob > 0 && nJob < MAX_LEGEND_HERO )
, S/ ]" H, F9 T- \ s {, O, y9 S- J: E) Y7 f0 T% H7 F
AddChangeJob( nJob );) w4 c- m$ I# C0 S
}else{
7 E" I$ O5 A! Y4 U, _ return;* ^. B% p6 t M, H- g) {
}* L% V; l8 t$ [% x' }
int nPoint = 0;
! p# x* S2 F0 U( N* U if( m_nJob == JOB_MERCENARY )
! }- L2 s7 M3 G3 S4 t- |) e5 I/ G nPoint += 40;3 p j) K- o3 G$ u/ H& L x( S
else if( m_nJob == JOB_ACROBAT )( T( s. V, g+ S4 d/ n$ B+ O( n
nPoint += 50;& _' L) S) b8 a
else if( m_nJob == JOB_ASSIST )+ L0 z) `; n- [) V3 W, J4 p0 ]$ h4 t
nPoint += 60;
) Z6 I! W" ]# \! G8 G else if( m_nJob == JOB_MAGICIAN )
1 j7 K/ K% f! G. v- v- l& d% N nPoint += 90;. H2 ~8 Q) L. ~+ J3 ~; r" v
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE ). F# j3 y) U, z+ F$ ^6 {$ o3 x5 n* y4 |
nPoint += 120;
, J- H: J# O3 u; L/ | else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )2 d# y$ u" q5 O
nPoint += 150;8 W) ?% J6 t: S _% \" t
else if( m_nJob == JOB_RINGMASTER )( r# F( k7 j0 u5 C& {* }
nPoint += 160;5 X0 D7 }0 j; z
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
8 ^9 k- S8 d* z. r7 V8 z7 I R nPoint += 180;
7 \+ C2 A& `$ [ else if( m_nJob == JOB_ELEMENTOR )
4 e; |' S' J* |5 M7 m nPoint += 390;
9 C- u4 b9 O4 i& F3 Z6 {- } v else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )4 U. p3 w% q0 t( T
nPoint += 120;
N9 @3 m2 X' e/ H6 Y" x else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
- S" W5 x2 K3 J, T) i1 i3 O nPoint += 150;) j$ C' s+ r+ d0 B9 M+ G" P
else if( nJob == JOB_FLORIST_HERO )
6 N/ ?1 a- f8 b2 e& ` nPoint += 160;2 `5 q2 `0 W7 i; `' z+ a l
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
p& w! c$ c0 ~ nPoint += 180;/ d) t8 C* A& V! g- ?2 m) ?4 F
else if( nJob == JOB_ELEMENTORLORD_HERO )9 r1 C. B1 ^/ \- K
nPoint += 390;
A5 w+ ^( B% Z" M
8 Z& j% ^6 i/ R- L! w AddSkillPoint( nPoint );" ^1 `% ~% a u# r' P7 n
m_nLevel = nLevel;
' F5 B6 h- Q* s# z3 J5 t4 I: F2 S- t3 p- p, }
SetJobLevel( nLevel, nJob );. z7 |* j, a# e7 Q, F2 o( e
m_nDeathLevel = nLevel;
/ F, Y8 E% r" r; d: i$ x) d#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
5 e# |8 B) ^' w8 y if(IsMaster()), \/ W' v7 v# w k; g+ k B( E
{: T) x/ w& v1 n9 Y* u1 z& l. w# T* D
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
1 y+ d9 `/ x+ N, p5 H# D* c if( nLevel > 59 && nLevel < 72 )
7 i+ j$ t; F n dwTmpSkLevel = 1;+ d- ~, q t9 N, w q% u
else if( nLevel > 71 && nLevel < 84 )4 L7 I ?. O( f: z+ b/ E
dwTmpSkLevel = 2;" d4 d$ _3 M* J: q7 B! w+ V8 F
else if( nLevel > 83 && nLevel < 96 )8 F( k) t* ~/ l# M$ u; x
dwTmpSkLevel = 3;$ H4 A6 v( W+ ~: T8 P' r% k/ c7 D& j
else if( nLevel > 95 && nLevel < 108 )
4 ?, }$ d0 o+ V, \+ S dwTmpSkLevel = 4;
7 a A7 n @5 g ~( D else if( nLevel > 107 && nLevel < 120 )
% q' y, G+ l3 b0 f& B! R3 F dwTmpSkLevel = 5;
4 Q _# \ x6 y for( int i = 0; i < MAX_SKILL_JOB; i++ ) * h; u. `- D4 v4 s* d% ^
{
/ I. p/ O) A) Y/ b+ n, y LPSKILL lpSkill = &(m_aJobSkill);
, q5 y" k+ |( Z if( lpSkill && lpSkill->dwSkill != NULL_ID )0 q# Z! R$ t; N- m
{/ c1 K1 e; l/ I, _$ H4 ~
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
" P' }" f7 O+ V: I2 y5 `( ^0 O if( pSkillProp == NULL )
+ a1 _; G7 A0 a" i continue;1 W+ x- U3 |% k
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)! h! n$ U& G- d
continue;
; h6 }4 `6 ~! M7 Q8 W/ p3 S lpSkill->dwLevel = dwTmpSkLevel;
* L+ d4 z$ A# `. o1 I& X }& ]* a' l2 l& f* Q# k3 @) l
}: q$ @ E$ m1 Z7 }& I. d! X9 T
}
1 y: I0 \' G$ s \ D else if(IsHero())" v& Q/ u+ E p. x
{
% D5 T B. `/ L) h- u% z- b- @ for( int i = 0; i < MAX_SKILL_JOB; i++ )
2 R, V) s( W N3 n7 n; t, y# r' R+ D { + w- Y2 j9 G1 J% a, g
LPSKILL lpSkill = &(m_aJobSkill);
* P8 s7 U7 f' z if( lpSkill && lpSkill->dwSkill != NULL_ID )
3 b' i) A" _0 h a {
0 w8 K# C) m* R& Y: c ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
! D/ u g: y8 {2 }5 l if( pSkillProp == NULL )
. g5 J) w# ]6 H9 U9 E. ^ continue;. l7 i/ I+ c, I' X
if( pSkillProp->dwItemKind1 != JTYPE_MASTER); b0 a8 {9 D, W1 R$ r: ~
continue;2 l' P1 k; t& h5 h( W8 b9 ]8 ^2 x
lpSkill->dwLevel = 5;' C7 n5 K' d/ v3 ^) x \. P
}
% E! f# G4 F. {& v }
# j4 l# L" a$ }5 {$ [! a* w& Q3 ] }/ k3 z0 c' I, t. M1 K. k
else if(IsLegendHero())
3 i" S' @, U8 I( r M2 i9 m- x! T {
0 m, U; I/ O. o6 \3 U9 q& N' v) c for( int i = 0; i < MAX_SKILL_JOB; i++ ) * v, R, E- r( Y0 h
{ + K ^) i' o" q5 y# M
LPSKILL lpSkill = &(m_aJobSkill);
( {2 Y0 C1 x2 Q* J+ [; r6 `" c. A if( lpSkill && lpSkill->dwSkill != NULL_ID )
3 s' I% R# r9 K" Z: o4 S {
7 g$ z+ _0 o; V6 }) m$ C7 b ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
) V, D& L( U7 j* u0 }! A if( pSkillProp == NULL )+ n" w V% l) Y& k1 Q( Z& e
continue;
9 M! }' \7 `! u F3 U# | if( pSkillProp->dwItemKind1 != JTYPE_MASTER); q6 s: m* N, a$ G" E7 S: |; x
continue;
: |" R& w0 ?! t! k lpSkill->dwLevel = 5;
1 g# l0 |; x+ u7 i; }( R8 p }- X- [ `) o7 a
}
) y) m+ G( p& f }
" G9 Y0 h0 Y, h E#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans, Z# c$ |" {7 |0 p2 N9 w6 h
if( bGamma )4 H$ o! ^) x% I* F- X$ u+ M
{' G& f ^7 h4 }4 m- J" F. g% H" q
m_nExp1 = 0;, |0 W2 x+ p9 h0 t5 E% L( c) p
}
" R- K5 H8 R0 u) b+ R' c$ f: w& F$ y' ]+ }
( (CUser*)this )->AddSetChangeJob( nJob );
' e( G1 a# ?3 u, o+ L g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );8 k$ |; E0 @/ }, b4 Q$ n) p
3 K" ~! }2 I( {( _+ _
. Y& c& e L& [2 E8 t+ x#if __VER >= 11 // __SYS_PLAYER_DATA
( l/ o7 y3 O* g9 a+ J& Z g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
/ o- M' H4 n, T( N#else // __SYS_PLAYER_DATA
3 R1 A& u" ]& r$ \/ b" Q3 ^) O g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
/ \8 f% f6 A' V, K1 K; B g_DPCoreClient.SendFriendChangeJob( (CUser*)this );' z% z9 [8 k& \( ~
if( m_idGuild != 0 )
# p4 w5 k/ k# g4 g, Q5 b g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );$ @# ?, I0 w$ o2 Z6 r4 {# a1 S
#endif // __SYS_PLAYER_DATA
* d; s4 {# k; G; f4 c/ r3 | SetHitPoint( GetMaxHitPoint() );
! o2 N& E# H1 p5 b+ U9 | SetManaPoint( GetMaxManaPoint() ); w2 C6 ?# d1 g) H c
SetFatiguePoint( GetMaxFatiguePoint() );
# ^/ E7 h2 B* }+ G/ N& e* ]# a* L2 B if( nJob >= 1 && nJob <= 4 )2 S4 f7 S6 o& n/ E
{8 N: o& k+ A8 h7 d! K V
m_nStr = m_nSta = m_nDex = m_nInt = 15;4 a4 F# h0 _9 b% ~9 h) o; i
m_nRemainGP = 28;
- k4 D s# ^% c' } }
! @. ^: b* e4 H7 Z) j6 y if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )4 y7 L) u2 J/ f
{
2 @- l* g7 K% ~+ Y/ ]9 j; `8 p2 K m_nRemainGP = 118;
% n3 _- J# d0 z/ {% a/ | //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
, @ v* J) b. G6 a& c a m_nStr = m_nSta = m_nDex = m_nInt = 15;
. s& {9 g2 K0 {$ }, T. M3 l0 ?3 k }
/ A6 a& T: {( Q1 @" A& d if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
6 A2 {/ H1 q( w/ p! @ {9 E7 F! G& n9 X) l5 `+ D( ~
CItemElem itemelem;( k4 F* z1 F; i% s8 o8 f
itemelem.m_nItemNum = 1;0 N/ h, B4 x8 L0 C# _8 ^( i0 A) A4 T
itemelem.m_bCharged = TRUE;
( q5 s+ H* N6 u& o BYTE nID;
& s8 n; K$ _9 |$ g& S2 ^
% e0 g0 {# r! M% r! Z0 U if( nJob == JOB_MENTALIST_HERO )+ I% p0 v$ H3 B
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
; i3 l1 E9 d, K8 N& }' }( o3 B if( nJob == JOB_FORCEMASTER_HERO )0 O0 q- E, \& d0 ]0 Q( t, l
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
1 P; d0 @+ d5 [3 d. e9 I/ m+ J7 T! l) L' b0 E! Y! w
( ( CUser*)this)->CreateItem( &itemelem, &nID );7 _1 {; Y e/ p2 A, c
}' O) `4 k! `6 V8 u" y" n: r! n
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );: c) q+ R6 x( i
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
: d( U4 t" c+ u: ? ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );4 u6 ^: U9 b5 r7 H7 B
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );/ _1 p# W& B2 f
( (CUser*)this )->AddTaskBar();*/
* Z8 U8 ^$ K) D# T6 x1 F; N ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );* T0 R& d& [5 O
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
! z0 g: o" c9 y- N- p ((CUser*)this)->CheckHonorStat();' j% g3 a1 Q# c3 h$ @1 o2 j
((CUser*)this)->AddHonorListAck();
' O( l& z# B( H& l! H1 a g_UserMng.AddHonorTitleChange( this, m_nHonor);" R0 B) c+ w; N2 a, C7 }
#endif // __HONORABLE_TITLE // ′Tà?
6 H; u+ a$ R+ U- W+ b }0 v! M8 O) g( J5 P8 F, H1 r
#endif // __WORLDSERVER# P# J- H3 a8 z) \) I! w% Y' P
}
, b" ?1 D$ r7 Q" U$ F. X& W0 J. d) v# V' E4 Z
然后你进入functextcmd.cpp并添加以下. Q# F t# [" q3 H+ g+ t: K; M
/ M, `6 v+ s; X4 z& [3 B
代码:# H* Z9 Q* a3 a2 x9 z
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )- c6 Y% ?/ G& S
下面插入& L9 u+ J9 C( k6 N/ c/ N
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 3 L, a9 q3 M- h
# `& V3 f4 {4 s5 @
然后你去
0 z& q; w8 B8 ]% W/ P9 n9 [ a" |1 g: E' p" W
代码:
4 J; {8 ~& T h) C4 W, ^代码8 a+ N! @' |5 L0 z, i, Y7 w
BOOL TextCmd_ClearPropose( CScanner & s )/ j1 V& }4 }; ?3 G) z, S9 p2 @2 a; u
{7 \% H! Y# A( o L0 ?; K% ~
#ifdef __WORLDSERVER* I7 _2 ^7 W8 Q/ c
CUser* pUser = (CUser*)s.dwValue;
* K) {; i. ^% s% E8 O' p& J+ b2 a g g_dpDBClient.SendClearPropose();4 V) Q9 D5 ]. ]
#endif // __WORLDSERVER
) t7 e, X8 Y$ K' p return TRUE;
5 i3 j0 x/ L" ~( x, i; T}. [# ]% P" a, D1 e2 e/ t
下面插入
8 i- \: z9 a% j* `: O' xBOOL TextCmd_rebirth( CScanner& scanner )
( t) M% F, l- e$ K1 A5 p; G{
3 F- a! p' |2 I0 ?1 f#ifdef __WORLDSERVER
. Q) O3 i0 v3 p! v+ \9 UCUser *pUser; n9 K3 N! K: I4 r
pUser = (CUser*)scanner.dwValue;
! L& b$ Q4 c, K4 Zif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
" L/ N9 H. T+ C3 Z* o- p( G* epUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
- c9 [4 S! P2 l3 l; K: ]: z& o# Oelse
/ e8 j0 e9 d! epUser->AddText("你还未达到重生条件!");
2 ?' c3 A% F0 H' x: n0 s1 G#endif
) Q6 V- g' A" V; J% O5 Creturn TRUE; U# b( K; ~5 r2 G: |+ }1 o, e1 }
} 7 q/ H" m r. g6 @8 F
4 g* q9 o' V# x- e/ W9 X# \
8 U ~ c! v! H1 y* E% h
8 T0 s3 P2 [) T& _, `. Y
! @! o, ]% S0 N( s0 A |
|