|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
2 `3 j! T2 s9 _( Y- N2 M1 a8 `
" [" b( O' U) Q# Z; m) w6 Y/ W% l9 y( U4 jMover.h ]- [( \* v& R1 C( b4 q
代码:
- H# h: P; E0 W/ {9 [2 [2 {4 ]找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü! ^/ n! ^0 u; s% Y
0 O0 [( J# U" R' [2 ^下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; - e/ T9 o' T* a6 V" Q
3 {3 l. d3 z# p! l: S+ Z$ J2 ?- a
然后你去mover.cpp添加* {- }0 Y/ B ~; Q0 w
' |) o' b2 R' I# ]6 L1 ?6 N; T代码: x3 i+ s; v+ E4 C7 B
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
8 L2 P- Y! B& N3 g' Q' w{$ c7 E/ Y3 q9 {& n5 g! x& r/ Q; {
#ifdef __WORLDSERVER9 R. k% _% Z+ N; r
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
" |8 q6 J/ b6 ]+ r MoverProp* pProp = GetProp();
: t2 Q) y" k3 P% {9 D" b8 Q if( pProp )8 k% u$ }# K, R; O
{
& h" n% Z u1 V( z+ K0 h% q if( nJob > 0 && nJob < MAX_LEGEND_HERO )4 s. o# W9 }% y5 }+ h
{! n9 N, T7 D9 K) X
AddChangeJob( nJob );
! O$ p e& r0 _ C" ?. [ }else{
5 ?3 E+ x6 O/ ~/ J# e+ `/ { return;/ b f g) x" W
}% q; A/ `9 E# }
int nPoint = 0;
- D0 B2 {# N9 X4 ~ if( m_nJob == JOB_MERCENARY )4 X0 b9 I, n" Y' w# U
nPoint += 40;
4 @) A5 M* c) E. k else if( m_nJob == JOB_ACROBAT )
6 t6 I2 T2 x: o7 Q- v* X0 v# r nPoint += 50;7 P4 v4 e- T2 g+ H, v) f4 g O/ M
else if( m_nJob == JOB_ASSIST )8 V0 a! o9 V4 Q% ^
nPoint += 60;. l6 z" T" G0 @. [. n, F, Q
else if( m_nJob == JOB_MAGICIAN )
3 i8 @3 v7 F, u1 e& f: {/ z' C7 T- j nPoint += 90;
! m- y7 J+ X( B5 C/ G else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )) x9 L, \, @& B, f5 Q& A
nPoint += 120;
5 u; X$ i) p1 g, H+ Y" j else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
: O8 k& L9 L0 B9 Y" J nPoint += 150;1 z( c( G* A8 D' e; @
else if( m_nJob == JOB_RINGMASTER )
$ K# @, C3 H% v3 l nPoint += 160;
4 I* F' Z' [. e; z1 u else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
4 R* j) Y, [& A9 X3 e h nPoint += 180;
; p8 g3 j; t6 a; q6 e else if( m_nJob == JOB_ELEMENTOR )
8 C- r v3 B* }! _0 x- ~ nPoint += 390;6 ~& |& U6 J4 r* N, i
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO ), F4 }; Q ?1 X6 }5 w9 P; ?" n6 |
nPoint += 120;
! P/ r) Q, ^ s else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
' X9 |" I3 G$ ~' j9 d6 A nPoint += 150;
9 F5 ^+ O: F4 m+ ~ else if( nJob == JOB_FLORIST_HERO )( T" N' m# J b/ L+ U# n
nPoint += 160;) q$ k8 b$ R& u1 E! B
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
# m1 E6 ~" `- b6 [, r nPoint += 180;: U! k, z+ b' n) y0 \
else if( nJob == JOB_ELEMENTORLORD_HERO )$ U) X/ h& Q9 M; h* ~/ F
nPoint += 390;' D9 L, `, F9 E; M) Y
0 ~ S+ h. e! {7 K* o0 n* H4 v; u! N
AddSkillPoint( nPoint );
: s( d5 v/ j: F4 y1 | m_nLevel = nLevel;
* n! G6 r3 C7 E9 i! Y- i' r+ C
* m0 g2 [* q* i* E8 j+ T& J" F SetJobLevel( nLevel, nJob );/ x$ w- |- [+ }$ U! q, h0 a4 I! X
m_nDeathLevel = nLevel;9 Q. p( z. h* Y& \1 X; L2 f
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
4 A5 i4 m( d$ [8 G if(IsMaster())
9 e4 C8 V8 w; j {! _& ]% o: Z5 N0 s
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
8 C' M j: h5 Z1 s: C if( nLevel > 59 && nLevel < 72 )
* r. [1 J4 E0 x dwTmpSkLevel = 1;# h' x7 s8 I: ?8 c) H+ D
else if( nLevel > 71 && nLevel < 84 )- M. O, z& _! l! {# i. I7 ~
dwTmpSkLevel = 2;
/ m; t3 D: h& z& L: ]8 m else if( nLevel > 83 && nLevel < 96 )
9 W- W6 q( c( U: l dwTmpSkLevel = 3;
2 b* g/ f3 [0 A; { else if( nLevel > 95 && nLevel < 108 )
- K6 j: }$ \! \: h dwTmpSkLevel = 4;/ Y- A8 S; j. O$ A
else if( nLevel > 107 && nLevel < 120 )4 z& C8 x0 b) z N. b1 D5 s; h
dwTmpSkLevel = 5;
5 H9 J+ w L; H; M for( int i = 0; i < MAX_SKILL_JOB; i++ )
6 ]( R( l8 M' | { / g: g+ M9 z3 S2 S1 K
LPSKILL lpSkill = &(m_aJobSkill);: F0 k# r6 r) T, n! F
if( lpSkill && lpSkill->dwSkill != NULL_ID )3 U9 M* |. T- h) O7 r) X* y
{
) ?0 [$ Z& o( p ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ) \) l) `# \9 k; l
if( pSkillProp == NULL )
1 A' Y/ t0 g, I% r. S. ^# C continue;: w# ~7 v$ a8 C0 P' r1 m$ r
if( pSkillProp->dwItemKind1 != JTYPE_MASTER); z, }8 B$ a7 m5 n
continue;7 J5 i1 j* @7 r8 I1 c
lpSkill->dwLevel = dwTmpSkLevel;2 r) u- V5 Y0 R4 z$ i* C3 J+ ?
}8 N- d3 k, _# i9 k7 Z* r
}
. {8 M* w( p/ I. p3 H: P9 n }. D0 @+ |1 b4 @, w2 q3 X7 Y8 f
else if(IsHero())9 f6 W, Q: E ~. `# Z( x4 R! h) V
{7 l$ [$ Z ` H4 M0 X9 w
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ) p3 u# L' d1 G+ _
{
?9 D% E/ Q, w7 O4 U LPSKILL lpSkill = &(m_aJobSkill);
6 o* U1 v3 K# r4 W if( lpSkill && lpSkill->dwSkill != NULL_ID )
6 X) C5 p' j4 \- b& n' W {
8 u& A9 L# f& W ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
( X3 ?) A5 \( e- y/ Y, @ if( pSkillProp == NULL )
/ y, B4 Q& G- i! P continue;2 |8 A8 h. y5 _4 Y
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
; t V8 h, T% V% f continue;' y, O" U% p$ i `/ t! J& s
lpSkill->dwLevel = 5;. v, U* a( D* m% c! y
}
* b' t9 u. |: l0 o8 A }2 d- b$ Y- W1 @. A' n
}
# D5 O& O' P5 J9 T1 _8 V! `- c else if(IsLegendHero())# x/ b- k; Z5 i# @
{- k9 ^! w% x$ ^4 W8 H* z
for( int i = 0; i < MAX_SKILL_JOB; i++ ) / C* H! e, w' t
{
( |2 H2 h) H0 W% a% e LPSKILL lpSkill = &(m_aJobSkill);/ Y' s7 X1 J4 @/ @+ J
if( lpSkill && lpSkill->dwSkill != NULL_ID ), k4 ?7 }" S7 b/ l% K! B
{
: I2 [! W% g! s- T ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ' w9 N6 ]9 d: ?, h7 z
if( pSkillProp == NULL ) X: v: N, T$ m- d/ q6 i7 x7 Z
continue;
# i% g2 \- [" B- ~2 w) p if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
! c- u/ v/ d0 b, ^0 ]! d continue;6 i2 G- C4 M, G3 L# A
lpSkill->dwLevel = 5;
) p9 @* v- M* Q6 t( { }
( C4 H- H7 z+ ^1 c }) ?! ^1 `* p6 x% r
}9 S$ o& u* ?" M, c: ?
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans% B1 W: G1 \5 Q# S! p2 z: _
if( bGamma )
& {) O/ [; F5 T! N# h5 ] {
5 z/ ?6 e- m; Q m_nExp1 = 0;
, g& K2 o1 u7 m. C2 I# |5 j! ~ }
# g( i$ Z; D. ^' W; B
2 G) F8 M- S, R0 l% H6 W ( (CUser*)this )->AddSetChangeJob( nJob );
1 Z/ Q8 Q+ K8 y, w! y+ ` g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
; R5 k6 j# `/ g% p+ X0 L8 q
. Q. N) }/ n7 P- O+ |- n L
) v5 ?+ Z7 R6 F: f: e. e#if __VER >= 11 // __SYS_PLAYER_DATA
' ]" {( Z9 E* P- B. D$ I5 Q8 D g_dpDBClient.SendUpdatePlayerData( (CUser*)this );% u' h0 a3 `3 t
#else // __SYS_PLAYER_DATA
4 N* w, J7 g: D2 k" K1 x g_DPCoreClient.SendPartyMemberJob( (CUser*)this );2 W8 z4 I0 j1 ^2 n6 C; t
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
8 y2 k8 u. D) m if( m_idGuild != 0 )" Y+ P& b( t. X& ~ B
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
# ?5 x1 ]& C! B7 M2 V#endif // __SYS_PLAYER_DATA
: N- I- p, \ ^/ V: L SetHitPoint( GetMaxHitPoint() );8 w2 h! Q* P$ R, y" m* a
SetManaPoint( GetMaxManaPoint() ); Z( E1 o" f( j. S$ \) ~0 f: y
SetFatiguePoint( GetMaxFatiguePoint() );
1 g5 N2 W: ~& X/ A8 x if( nJob >= 1 && nJob <= 4 )' l) `' U9 q* e& S @" f
{
$ F% V! S5 T& s! v7 J m_nStr = m_nSta = m_nDex = m_nInt = 15;
# R" W( w1 v8 V! x8 M( R" K2 S5 M m_nRemainGP = 28;
0 {1 T/ z5 p. Q }
' X& g, A' F2 _9 t) J" \. D if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
3 g3 b4 y/ h5 D7 F {0 N# P9 j' R" B
m_nRemainGP = 118;
- y8 j; L! W1 c9 m- c //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;* c' ^6 z+ U; Q7 f' H8 i$ |; s
m_nStr = m_nSta = m_nDex = m_nInt = 15;$ J; d3 @9 f) S1 X2 H
}
7 W$ m7 A, {" V4 q if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
/ ?$ P ^& d( u {
( x' `. r8 |. x CItemElem itemelem;
0 m" C. c3 v3 A) @9 g itemelem.m_nItemNum = 1;) B3 A: O# \' r1 u- y
itemelem.m_bCharged = TRUE;, |* b+ h7 ]$ ]8 [
BYTE nID;
1 V& o- E" g2 A( Q: h6 b
. K! G, @5 C1 n4 j6 W- x( m if( nJob == JOB_MENTALIST_HERO )1 G3 ?7 E1 m; A% `
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
4 |) y: ]9 o0 `. v7 f" f if( nJob == JOB_FORCEMASTER_HERO )3 x. |2 n; e% J- l3 [% S
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
) c% ?2 G% Q" t# H6 M- w- t. q! G0 E. ?) k1 W6 c
( ( CUser*)this)->CreateItem( &itemelem, &nID );
0 x+ e! s4 g; Q. S- A! u }
/ q' q* E% ]6 W. v: I& D% | g_UserMng.AddSetLevel( this, (WORD)m_nLevel );1 W! a5 u+ z- q9 u4 ?1 f; ]$ J Z0 X
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );9 l; w8 \& q. ?' K' G
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
. x+ @! m( L4 s; p, P /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );$ f* I4 B- A$ L, w
( (CUser*)this )->AddTaskBar();*/
* o/ o9 G- ], ?" e2 J8 B t$ L ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );3 u% C* {9 P0 L) r9 y
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?$ e; v4 A3 G8 L% `
((CUser*)this)->CheckHonorStat();, R, G" U1 i r% a+ u, \9 l
((CUser*)this)->AddHonorListAck();' D* m8 B! D1 q4 s# A- y* E
g_UserMng.AddHonorTitleChange( this, m_nHonor);
& s; a# v" t! k5 g( U#endif // __HONORABLE_TITLE // ′Tà?
- A$ k$ [! m9 o( N }# a& C, x; z5 t' @
#endif // __WORLDSERVER% V0 V* }7 L7 p
}
& I4 Z. d& _4 @ `5 ?3 ?5 t7 Y6 P4 {' l8 p5 T
然后你进入functextcmd.cpp并添加以下2 Y! Q, E( \. G4 n+ B& ^4 W! L
5 A, Q3 c, ~0 J/ A2 g% }
代码:9 I. `0 B: L0 A1 h f
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
$ `, d1 _' Q! a' ]. r( S下面插入
+ k2 D& _' u, _& X6 cON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) . W# E- s5 {, ?7 ]
4 v7 @) B/ M: H3 N& `. f3 H; V/ }然后你去
& m, `% K' I1 y+ C1 ^, ^" G/ \
& [2 D6 ^7 p% {) z5 ?' _代码:- X9 j' u& U k% ~
代码
0 ]1 f \; |" X9 ^$ C+ {* h) l. C6 yBOOL TextCmd_ClearPropose( CScanner & s )# E. c$ o; J* A, f5 b; b) G
{
- e4 E" Y1 y! j#ifdef __WORLDSERVER* Z: d) \0 W, `$ M% t
CUser* pUser = (CUser*)s.dwValue;. `, z* P% z9 z% ?8 Q
g_dpDBClient.SendClearPropose(); f9 Y7 `: i+ m
#endif // __WORLDSERVER
- J4 }; j( X8 C0 R" d return TRUE;
' g2 _& T) q% c6 c' x: F0 m}: R% _+ V, g( \: d: A2 z" F: n
下面插入
$ ^) Y6 a: D6 Y" D3 z9 @: SBOOL TextCmd_rebirth( CScanner& scanner )
" @' _# u; T8 O" Y+ b{. L* \: p3 V# I) _ R9 p6 G
#ifdef __WORLDSERVER1 m2 `1 |: ?! P5 w
CUser *pUser;
" _4 L4 J8 ~* K# o0 U6 f! z+ ~3 x$ XpUser = (CUser*)scanner.dwValue;
. v- J C# V! t8 O* t& `if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
" C! E( _1 g& MpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);" v" T" u! ^# ]: o( Z4 \
else
J" H+ W+ }$ Y6 C/ l7 upUser->AddText("你还未达到重生条件!");
* ^3 X5 T4 c& h" P0 W#endif
3 \! a: w2 G9 t. U; z& Treturn TRUE;
+ @, H, P6 r# Q} ' M! R+ H6 N; Y, y0 i
9 e6 ~2 f" Y4 R: e
, E/ W2 @% n! _% N6 ]; r1 P* G9 E# \8 D
8 v, ]7 y( } m+ u' k9 Z
8 O- A. i" M4 }: |9 B |
|