|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
; W/ e9 \) I( y3 p$ X, p. r+ W0 ~ t2 c# Z5 P
Mover.h
8 W: Z q; O" Y0 n( f/ K6 ~% H6 ]7 K9 Y代码:5 e: X I+ T, P9 Q8 l
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü1 z- X% M* S; b& S
5 @9 u! [$ d( _
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; w+ C3 T7 U# a' f ~4 X$ w/ c
+ ~5 A( S9 ^! T7 t然后你去mover.cpp添加
* x/ t7 I3 h* V/ _( B# ~8 n! G1 ^4 W, V1 l# H2 y* @
代码: F, _9 D7 \! d8 M7 T6 \- Q
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
+ F4 r0 m9 w1 n% U+ ~{8 F) f& g9 a0 h$ e
#ifdef __WORLDSERVER
/ z5 ]/ K. H# h$ l' @ // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
' h4 M$ M# h. x7 _$ l7 Y MoverProp* pProp = GetProp();# k5 d) ?' T# E* z: s; a
if( pProp )) c6 ~/ M/ F% M6 a, t' d: o
{( J" N Q8 G/ ~0 \: O* [0 y
if( nJob > 0 && nJob < MAX_LEGEND_HERO )) q' N% M$ r0 j5 ]7 R2 J
{
% J0 W6 h9 E5 l4 R: y% e AddChangeJob( nJob );: Z, y) K+ i# x$ p3 Z
}else{1 _7 S8 d0 ?0 Z: {$ k
return;
* f0 B% i- Z1 h4 S4 H }7 c7 P7 y& [! @$ K3 x
int nPoint = 0;6 t0 m& x4 A5 ]" A) @* c* i
if( m_nJob == JOB_MERCENARY )- V) ~- ~8 z# t) j0 M
nPoint += 40;
3 K# o- }$ M' c else if( m_nJob == JOB_ACROBAT )
& `5 u% v$ k7 \ D nPoint += 50;
/ c; d4 H# m. B! ~0 s2 U3 Z, x+ x/ H else if( m_nJob == JOB_ASSIST )
w7 Q% ~3 { Q2 n) B- Y* C nPoint += 60;
% t6 k$ Y% F% X! u3 X8 a* X else if( m_nJob == JOB_MAGICIAN )$ y$ r: J( O& w( g
nPoint += 90;9 d, u/ q8 D# ^
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
& g1 L, t' p2 ?2 E8 F nPoint += 120;& P& n6 c' X6 c2 P: d0 }: C2 J! F
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )1 T0 S: |" k+ H) q
nPoint += 150;) f1 F% l4 m& _ ~$ w& |( \
else if( m_nJob == JOB_RINGMASTER )
) G! ^5 W* C$ u nPoint += 160;; O. O# T& c' `1 _. l! E
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ); R3 o! z8 d- c7 y ^& A
nPoint += 180;
% A3 ^( N8 K. S) t) P) ^ else if( m_nJob == JOB_ELEMENTOR )
' N( W. y4 x2 Q; W- h' v' x nPoint += 390;1 X. h I0 c {: M5 T) @) v
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
9 o1 [+ x* ~! \, X; T# q2 t7 u5 z nPoint += 120;" b% I- G7 u; _; R/ h6 J
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )3 Z# u: p/ X- I6 k! o3 P
nPoint += 150;
% H7 \9 A; u; l& v: Y+ D9 M w else if( nJob == JOB_FLORIST_HERO )
3 p7 x$ V @6 r/ F; B. p; L! T nPoint += 160;
# y' R/ X" g8 E; b. C: Q else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
4 U) H, p+ Q L H nPoint += 180;
* Y( I% v' c1 Y7 |' _7 `$ { else if( nJob == JOB_ELEMENTORLORD_HERO )$ h5 B- ~/ ^8 x( h; z
nPoint += 390;
3 e& e" l- B8 r+ v
" M+ E2 @* O" t8 W5 m: } AddSkillPoint( nPoint );
d! u5 h! R* Z0 G" L5 f/ D m_nLevel = nLevel;$ B, i3 B5 C+ p- o
! p. n5 P7 j( k9 ~- C1 D3 H SetJobLevel( nLevel, nJob );
/ j# x5 Q9 s2 S m_nDeathLevel = nLevel;+ K1 s7 |& ]5 M0 X, Q8 r1 U
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans5 U) Q& G% W. E% D1 B
if(IsMaster())7 m% Q) r7 H0 s, m$ V' s6 l
{
" s; S% x( G4 D e& v6 d7 }/ d int dwTmpSkLevel = 1;//60, 72, 84, 96, 1082 c* H1 q& D/ x E+ O6 S! |. P
if( nLevel > 59 && nLevel < 72 )
' Z8 f7 S) w* Y! D+ Z7 W& C. V3 Q dwTmpSkLevel = 1;
' p. O2 j2 [. x( N; e) X. Z% ? else if( nLevel > 71 && nLevel < 84 )
& Z7 P0 {1 T) q6 M% x: O g2 F dwTmpSkLevel = 2;( A+ p h' w* _4 H% f1 M$ U
else if( nLevel > 83 && nLevel < 96 )
. Q% s8 A: S5 B% O! e! m dwTmpSkLevel = 3;
: l y( b3 \ q+ Y else if( nLevel > 95 && nLevel < 108 )
% w6 j' H2 Y4 g$ h4 Z9 K dwTmpSkLevel = 4; O3 D- u% } P, ?" L! x
else if( nLevel > 107 && nLevel < 120 )
0 J8 I; r* R/ d! V- G dwTmpSkLevel = 5; U i$ t( m1 Z. g+ q7 t( F6 L
for( int i = 0; i < MAX_SKILL_JOB; i++ )
1 j; R: K7 @" C5 R* p& R9 c) }6 c {
& V: d; b2 w2 P5 l( o/ X A P LPSKILL lpSkill = &(m_aJobSkill);- M; o0 {' m4 w" e L0 J3 _
if( lpSkill && lpSkill->dwSkill != NULL_ID )# u- c) k" v% M" s6 Q- Q1 ]) i
{9 r2 p' r0 R6 K: v$ _) V+ f8 j: w3 T
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 0 Y6 a) P" z: S7 n7 B0 `
if( pSkillProp == NULL )
2 K# S) y) Q# J- ~ continue;" [9 ]/ u' h7 Y
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
! ]2 e3 E3 c. D" Z3 o f6 q continue;0 ?9 X7 [) L( r( o; b4 s. F
lpSkill->dwLevel = dwTmpSkLevel;
9 O' h& `- ?- j" @8 Q0 j4 v) d }- o7 q, G2 Q+ o4 L* e1 b
}
$ ^; o% G% b( B9 e! e }& v+ @, l8 a& [
else if(IsHero()) D1 _/ P/ u! \ A; G) A; V) q& r" j
{8 X4 q3 Y1 g8 f4 w4 u5 D
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ) |& w: o2 e/ V, p! T
{ + m! ^7 r" P3 {5 e! W* z; M. y
LPSKILL lpSkill = &(m_aJobSkill);
5 j/ H6 E: K! t& W6 Z2 x* Y! X) V5 W if( lpSkill && lpSkill->dwSkill != NULL_ID )' d" J* d+ B& U$ ?. l0 ]- w, {/ y, W
{
8 `# ~ g: y7 N8 V% E ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 9 N2 X4 m+ l* l3 P
if( pSkillProp == NULL )2 ]2 J0 b: l( O: f& F' y+ N
continue;
5 ]( g+ a, {3 n D! J: H8 T if( pSkillProp->dwItemKind1 != JTYPE_MASTER)+ i8 x" g7 t% X) ^- M+ d, h
continue;
6 @1 A2 r/ ?+ }- h3 x lpSkill->dwLevel = 5;% {8 H3 T) a0 _
}) C* [- {- q2 s) w! N# V6 E+ f2 g
}
( o& l+ S) A5 p) G y6 Z: ?, I }6 g* C8 }# w+ }4 k* }) b
else if(IsLegendHero()). F4 P, c! p! z; L4 D9 u8 v
{
1 a& E& F0 M* h3 \ for( int i = 0; i < MAX_SKILL_JOB; i++ ) \& D. [2 T5 `6 M( o( }' j- S& E
{
" o, F- y5 F6 r" R LPSKILL lpSkill = &(m_aJobSkill);# V {( A& Z4 k+ P2 q' Q6 v
if( lpSkill && lpSkill->dwSkill != NULL_ID ). l {( J) i& K) \
{
) ^( u6 H, g; G+ Q: p ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); $ G/ g; F5 _/ L& E, A
if( pSkillProp == NULL )
( d. E: t4 f5 ^0 }9 b! m continue;
7 p3 z# R; j. H3 z if( pSkillProp->dwItemKind1 != JTYPE_MASTER)+ T# m; {& d6 {8 _1 d5 Y/ R
continue;: O. g) ?" L, {1 t+ g3 E
lpSkill->dwLevel = 5;( }+ l" q9 L* A! \
}2 \$ T& r) N) l, ]0 ]
}
* @: D5 Z+ l8 T, S' [* e) @. @ }
' \% z+ | |# a8 h9 l4 ^#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
9 y$ Y/ h9 k/ B8 |3 Q( { C if( bGamma )0 i. u. K/ ~) x% M H# B$ o
{ t4 ?/ R6 i, j' X2 n, Z0 t
m_nExp1 = 0;
0 I" F* C/ h: k% _3 \ }
/ U2 X J' x9 w) x6 M7 \0 m( Z& Z$ K' R! j9 v1 c
( (CUser*)this )->AddSetChangeJob( nJob );2 e5 i0 Z( G- ^# h. R5 o
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );6 w1 Z# S( C, h5 `, R0 c8 ^
: {4 C! @' ?2 a- U+ S7 G4 }9 n3 v+ b; k
#if __VER >= 11 // __SYS_PLAYER_DATA3 ^/ A# d- m1 R# d+ a. G, @
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );# e2 Q7 I, m, }8 P3 ^* Y: y- K$ ?/ H
#else // __SYS_PLAYER_DATA
' D; E7 @1 Z, _3 i g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
( D( r0 l+ s2 ~4 p X g_DPCoreClient.SendFriendChangeJob( (CUser*)this );8 H) B5 \$ Z8 V3 }$ x# D: g; O) Q0 i1 _
if( m_idGuild != 0 )
3 p! ]$ ~/ N% w, U+ u4 t. E' [( P g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );& }5 ]1 O: w9 E5 h
#endif // __SYS_PLAYER_DATA
. ?" V' p: C9 w5 D SetHitPoint( GetMaxHitPoint() );2 | v1 D0 I/ b! _5 H
SetManaPoint( GetMaxManaPoint() );$ x6 ~4 e& |! K. t7 V% s
SetFatiguePoint( GetMaxFatiguePoint() );
: H6 i1 a4 _5 v2 m* h if( nJob >= 1 && nJob <= 4 )0 M; o' F0 O" e# N Z2 A
{3 x( T& J0 u& N; X- W
m_nStr = m_nSta = m_nDex = m_nInt = 15;9 K2 c2 |2 o7 k# Z5 C0 [8 D8 `8 m
m_nRemainGP = 28;' T) q2 N/ u6 J, W0 s
}
) [4 R r0 w n, e, }5 n if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )3 m# q( y6 ~) Q) a
{
. X, D5 u5 |* V* S/ P" Q8 a m_nRemainGP = 118;
$ i7 v h. C* r9 s7 q //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;6 z9 h1 n3 C- b: o! K, r9 H
m_nStr = m_nSta = m_nDex = m_nInt = 15;
+ ? v u% e7 H8 Q5 E }
: P" K7 j6 V( f+ X* f$ P: O if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )/ @* Z& v7 W, T
{# H. O- _* l' {" @* i: [
CItemElem itemelem;
- k' o$ s* n$ X0 ^+ u itemelem.m_nItemNum = 1;$ l4 D7 M1 f, w! k5 p1 U
itemelem.m_bCharged = TRUE;, r/ z- D3 @' u
BYTE nID;2 f# ~0 r. ?$ n: N7 _
' o4 }8 e3 e. S6 u0 l if( nJob == JOB_MENTALIST_HERO )
" K& {9 u+ [! V0 H' l/ K1 e7 V itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
' n% }9 n! a+ I1 O0 g6 u6 x if( nJob == JOB_FORCEMASTER_HERO )! A/ k# z0 a6 t5 M) E% S
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
7 x! }' h$ c4 ?) \, a7 E& d$ ~- _" c# i; Y; i- C* e F
( ( CUser*)this)->CreateItem( &itemelem, &nID );
1 _7 c0 k) e" M7 v }
$ o5 k6 k6 A/ U) v7 K3 o2 A g_UserMng.AddSetLevel( this, (WORD)m_nLevel );( E5 T: h- J4 L9 h! O0 T
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
1 e9 N1 D. [+ ?6 T& s q! G ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
* @8 b; ]/ a: k, w+ Q% }3 C /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
6 a/ p9 s0 @ o4 @ ( (CUser*)this )->AddTaskBar();*/
L' J. J" D8 ]- c) v" S' T ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );- m; _ X ^# o! f* ]
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
3 Q$ D5 L I" x+ B Q8 M0 d: J1 `6 T ((CUser*)this)->CheckHonorStat();+ j5 S; t0 n8 D# `5 W0 }- F3 C
((CUser*)this)->AddHonorListAck();
2 L6 v& U; L8 |, b% g g_UserMng.AddHonorTitleChange( this, m_nHonor);& Q; }* T1 _8 j2 N6 r
#endif // __HONORABLE_TITLE // ′Tà?
% y. o3 X; R7 q+ D }
5 D1 n8 k" v1 t) G* n; F2 d( t#endif // __WORLDSERVER5 t# u I4 {; H" h' p; b& W# D& H
} " G7 Z! {: l# Q( u8 h C
9 p; z) g% c7 I6 s6 a; u
然后你进入functextcmd.cpp并添加以下1 ~; D+ j0 C) K: p
0 Z5 O: n9 P. u5 f! T4 q
代码:
' C$ a# h# _9 D. n& ION_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )6 Z2 w, O2 n ^
下面插入
6 H# o; h/ [3 f! ~0 EON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 2 M# |! j6 g* a9 l: }
8 u& N* s% C! }$ {然后你去
( p' D+ ~0 V" C2 N6 P: s6 F! P4 z: d3 ~4 Q8 w; f
代码:: U( T2 ~) p9 q5 f8 j
代码
" X# D% e2 d% |$ |6 j$ F$ \9 H, ?BOOL TextCmd_ClearPropose( CScanner & s )
0 P8 _- q9 d! {4 R{
% v" p4 ~" H, e8 F7 q#ifdef __WORLDSERVER
: C9 s3 b3 L) ?2 x CUser* pUser = (CUser*)s.dwValue;1 [1 h' Q8 E: {6 C g
g_dpDBClient.SendClearPropose();4 J Z7 |+ W% v; a/ R2 ]1 ] }
#endif // __WORLDSERVER
, J" U) ^+ J! X6 D, A- [: r return TRUE;* ]) r4 R0 H) d; m
}
2 I7 D" ?5 G) f# f) s下面插入
$ `1 x0 L4 a; h; }2 E2 U( n1 kBOOL TextCmd_rebirth( CScanner& scanner )- Q8 W2 j! T6 A. N+ `
{
3 J$ b, @3 ^- s" d#ifdef __WORLDSERVER% N2 r6 z; M" o1 W3 p' `- @7 J8 s1 r
CUser *pUser;' Z; n6 y& w7 r$ b. v) Y
pUser = (CUser*)scanner.dwValue;" r, M- K, R# Z% V# X
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
0 M9 ^% P) B' G, ipUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
; g8 k' X0 I w4 h7 U: S* |else
2 h! }/ L m5 B0 g6 q. NpUser->AddText("你还未达到重生条件!");/ o- ^, ?! [( ?2 {/ t
#endif0 f3 x0 j" D0 w( N# U
return TRUE;
+ ]" n) D: U) V0 T9 m( f; n) \0 t} , i9 }' P6 R# d' w3 }7 N u9 O
: H. Y$ q) X; ]+ ?. `3 e$ q
9 x) o$ |5 m$ Y9 \, H. Y7 Q1 P+ L) F+ i V
9 H+ v, Z2 e* a& ~. L8 d/ K2 s
|
|