|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
% a q. b0 v/ b' i4 y( Y8 u# N
/ F0 o) S" B/ q# f* mMover.h
) O3 x, k& l. E. Y0 Z2 |" _! V代码:
. a" D8 [: D3 f5 ] a7 h找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü9 l6 w; @- `. Z; E" E' h" L3 e
& W. {( b7 |* `0 A( Q- t
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; ; j3 u2 W k3 m8 b
, Q9 o) d! h0 K
然后你去mover.cpp添加
6 }2 d5 h0 r7 u$ ~1 t' O
& n, P0 l7 z/ }$ z5 o5 o代码:
7 u# {+ f5 Q) P) J* hvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )3 Q/ Z4 x4 G7 N7 b: A2 z; ?
{
# @2 R7 s1 m% X/ z' |+ g% X7 u% B#ifdef __WORLDSERVER( ~6 t* s: |; C, G3 {
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
6 g _5 z; ^1 ?. m/ s! i MoverProp* pProp = GetProp();
" \# F8 L6 _: l% ~* r if( pProp )
{& N! ~; w9 c0 p {1 V" @5 I2 f( r* n2 U, F
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
j) F; k2 X. V1 v {' G* u& Q2 k5 s. I
AddChangeJob( nJob );% e3 ~" Y& {2 U5 B T3 F
}else{
+ ]7 s& \: _$ i% p( U, c return;
' t: i$ D- j1 ~& o* D5 b. ] }1 s1 K6 a! s- w3 u
int nPoint = 0;$ q @3 F* g# i$ G, L
if( m_nJob == JOB_MERCENARY )6 \' D' \3 w* L. L* T; v9 W& `- ]% G
nPoint += 40;# S3 W5 j3 x& n5 n0 D
else if( m_nJob == JOB_ACROBAT )3 [- _" Q# K% @0 q O
nPoint += 50;( X9 N: _" m: E1 ]3 I$ F
else if( m_nJob == JOB_ASSIST )# N" y4 Y! D8 p' d
nPoint += 60;
# q! Q* }. H6 N$ c' E, X5 a5 X, C else if( m_nJob == JOB_MAGICIAN )9 ~8 s+ n: C7 q" [1 l/ b% D
nPoint += 90;% d8 Y1 B8 O: x( I
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
! z! a* ?5 s% k- y' D9 f) y: d( i nPoint += 120;/ z' S! I! U/ g, L
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )- m6 h9 i$ |+ d$ \2 e5 u2 L! `$ K
nPoint += 150;# D M) n- H K7 ]
else if( m_nJob == JOB_RINGMASTER ) w0 l4 L. I& ^9 t* T! P& ]
nPoint += 160;( e- u n" [% K
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )5 d0 T, o, A+ z5 i6 k# E" I( u, E, b+ {& z
nPoint += 180;
% W. d$ O% p7 E- t6 P else if( m_nJob == JOB_ELEMENTOR )
6 q2 U) c+ {4 E: ] nPoint += 390;' {: b( S5 _2 N5 R- F& Q) o4 A
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )' e% X2 I2 t6 ~( y: w
nPoint += 120;
. W* M5 M7 Y% ]6 t" _: D* [ else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
1 I2 h& e! k! _5 Y% i nPoint += 150;( l. o7 ~% H" U
else if( nJob == JOB_FLORIST_HERO )* l: }8 i3 s7 }
nPoint += 160;
r! a( F" _3 M: X+ f9 o9 a else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
: y# {5 o0 k- e+ D' q nPoint += 180;8 Y1 ?2 i' M8 h0 E
else if( nJob == JOB_ELEMENTORLORD_HERO )6 h R* q2 \( c, |
nPoint += 390;
) g8 i7 e$ E: N+ @' o: j7 S! @" Y/ W: p) i3 `
AddSkillPoint( nPoint );
/ X% h. V/ O/ @/ G# Z% c( Y: X. L m_nLevel = nLevel;
. e1 I' n$ b+ J) N& F, V9 u& C
# Y; C# ]# t, S8 X, j0 F SetJobLevel( nLevel, nJob );
* W3 H8 j$ }6 H) S; ` m_nDeathLevel = nLevel;
& M* q. q7 X% O: v#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
% v h9 o5 b1 v; c; D6 O" N+ q5 S if(IsMaster())) w" V4 D# L2 i7 ?. M+ s+ B
{
; M* `6 M% s) B% a8 @ int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
3 ~/ T% M# U. R& n/ ?: k if( nLevel > 59 && nLevel < 72 )
/ ?6 N0 v6 a6 s [6 U& R2 Q0 d dwTmpSkLevel = 1;- ?8 C- k& b- D3 T: C C$ J
else if( nLevel > 71 && nLevel < 84 )
& }5 y1 z3 J& F% r, w0 m dwTmpSkLevel = 2;5 l1 A0 i5 {! O* j9 \4 @& X a, w
else if( nLevel > 83 && nLevel < 96 ); j3 ^/ V' O8 [: g$ _. o8 G% C. H
dwTmpSkLevel = 3;
s5 _$ J2 u4 e; @/ P else if( nLevel > 95 && nLevel < 108 )& t% q( S0 Z* K7 G3 | X
dwTmpSkLevel = 4;4 J) H' c/ Y/ t3 G. e+ T" A1 j
else if( nLevel > 107 && nLevel < 120 )# u8 H0 K; `" L! z1 G+ S1 T7 N
dwTmpSkLevel = 5;# z: f- F9 k) D* ^0 s: M: i
for( int i = 0; i < MAX_SKILL_JOB; i++ )
8 B" G" }7 E( `: z% x X { 7 `+ i% D! V: |. T4 h! r' f
LPSKILL lpSkill = &(m_aJobSkill);& i3 Z5 S; @( X4 W2 w3 Z- l& b/ O
if( lpSkill && lpSkill->dwSkill != NULL_ID )
% p q3 \3 u0 ^3 K% p {
+ v- X* e8 v* @% a! M3 \: V ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 2 a% H3 R" Y$ [& [' [
if( pSkillProp == NULL )4 C1 u9 L' E- Q, A# e5 p2 {
continue;
% y/ Z d0 k) X* n if( pSkillProp->dwItemKind1 != JTYPE_MASTER)) R& M `0 C1 o4 b% S
continue;
% h4 U5 y7 H- J: m$ s* a1 l8 |3 D9 T lpSkill->dwLevel = dwTmpSkLevel;$ z( C) S* O) N+ o' Y. W) k
}8 o* x! V& K- R
}" a1 p" D" W* i, i! H: F
}4 Y/ p4 M) u/ I1 A
else if(IsHero())' s8 ^+ Q" C% }8 h! L+ O/ w% a
{
' B0 ~/ ] L4 ?+ y. Y& t for( int i = 0; i < MAX_SKILL_JOB; i++ )
& E! b, h1 |/ g8 Z7 g/ J {
4 H: `& i4 d9 J# Y7 X. V$ x1 @ LPSKILL lpSkill = &(m_aJobSkill);( S% s7 s+ d( U
if( lpSkill && lpSkill->dwSkill != NULL_ID )4 a. a8 l; z; E
{
4 @5 T6 ~ z5 t7 p B6 Y. j- m( n ] ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 3 M) W+ \1 l8 ]9 E0 b7 P
if( pSkillProp == NULL )
1 f( L8 r6 [# w continue;- S% ~ U, L& |7 O3 W6 p/ n& g, n
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)$ V- Y! L+ b' b( N: ]
continue;
i+ n6 E9 a! s+ |" O) t- P lpSkill->dwLevel = 5;3 ]: i* A1 |5 d, A' ]" R4 ]
}
# |( P e, K- Z S) ^/ R2 k8 z }0 p8 e7 N) {9 {0 F% ]5 R Y
}
$ p/ ]" D+ A; n; `, t% R else if(IsLegendHero())
" A7 [' a& [9 \8 v! c d {
7 H/ E. R5 H9 d5 @1 e for( int i = 0; i < MAX_SKILL_JOB; i++ )
" v, m7 E5 @8 A7 o% o/ E { $ F4 b$ B E" a) G
LPSKILL lpSkill = &(m_aJobSkill);
3 Q% c$ L* t& f+ U. w. M if( lpSkill && lpSkill->dwSkill != NULL_ID )( v% Y4 Q/ T) U9 R6 n3 |& z% n- n0 W7 t2 i
{
; ~& U; ], q; v# a- V. \ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
* r2 F: I! L |$ ]+ e. N- A; B if( pSkillProp == NULL )) T; }4 N1 i! d$ P3 D- D* L
continue;
2 F* ~4 [* z6 t if( pSkillProp->dwItemKind1 != JTYPE_MASTER)$ e; Z6 b- ? W' O R0 V: _, v
continue;
: w; ~7 q7 r( D. Z! n# Z lpSkill->dwLevel = 5;8 S* d, M& x% W `7 O) a: r
}
6 i: k5 N2 o" K! f" Q } f( l) }0 U t, U3 j8 {
}& A4 u6 x/ }5 x$ R$ e
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
( \7 U' q5 H# J# w if( bGamma )
8 p ^6 K7 q3 c) t {
; B+ u3 k, i. ?7 I m_nExp1 = 0;) d4 |& E: A, v3 `
}, [% J) c: a, c n# ~
' @8 q2 X! h5 T& [3 V4 h) q1 O8 C ( (CUser*)this )->AddSetChangeJob( nJob );
4 M2 R9 ?2 k3 X* l$ v9 v0 W g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );+ w, \$ S! W, M+ L# q9 `3 P6 {
$ W, b$ p' c8 B$ \: r0 t* b5 s' r7 |* T) m! `3 ^
#if __VER >= 11 // __SYS_PLAYER_DATA! X2 m# n" H3 E, x8 X0 ]# o
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );) i3 |/ {' g9 d* E. U% W8 F* c
#else // __SYS_PLAYER_DATA
: u9 _. k/ [1 O1 }0 T2 o g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
( c x' u9 j. U2 e' S+ N% n' P g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
! E# ?# u. F7 v, ^/ R! o if( m_idGuild != 0 )* A. l8 y: L* o4 H: m
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
: p1 Y1 b* r( E7 O+ g#endif // __SYS_PLAYER_DATA- E5 p' n* j) B: ]4 |8 e
SetHitPoint( GetMaxHitPoint() );7 _- e/ Z1 i2 f2 b0 n# [2 `0 W
SetManaPoint( GetMaxManaPoint() );
& y2 R* G' K8 V7 U SetFatiguePoint( GetMaxFatiguePoint() );% N/ G) ~# u& c8 u
if( nJob >= 1 && nJob <= 4 )2 t" q4 V# ~8 Q& b; F- ?! q, l
{
. v6 U% J, |0 h6 w m_nStr = m_nSta = m_nDex = m_nInt = 15;9 A4 }6 l& }0 }
m_nRemainGP = 28;* q# J- A; |8 O5 B e4 W5 H+ z
}! q6 v' Z6 e6 I% }6 G: x
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )% R3 c$ d V7 \2 b
{/ B7 ~& o1 s) V& D5 `
m_nRemainGP = 118;
/ G! Z: A8 z7 m( _* w. l3 r //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;8 ?1 i; q$ `" O4 O2 u+ K, H
m_nStr = m_nSta = m_nDex = m_nInt = 15;
3 e0 }) |! G/ n, N. D }
* t" H) I0 n8 R/ w/ i if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )* r' {3 H6 p" `8 c ]
{# E- x/ w/ S9 I7 i) K7 P
CItemElem itemelem;& U, ]- {# o1 z* m* D [
itemelem.m_nItemNum = 1;! {5 ^4 d0 _, ?; T; w
itemelem.m_bCharged = TRUE;6 q! j% ?$ \# V& `
BYTE nID; k: T! r* [& }9 Y- }
- Z' f" O4 h5 b) D. z if( nJob == JOB_MENTALIST_HERO )0 t; w3 f6 H {- G( f
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;( o/ w. u& l7 g g
if( nJob == JOB_FORCEMASTER_HERO )& r+ N2 N0 J: O Z
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;9 A$ I8 v& c0 n0 y
: p$ L7 Q* H' C- o
( ( CUser*)this)->CreateItem( &itemelem, &nID );6 ^: b/ @9 y' ^4 N
}
) s2 E$ v, [( G# q g_UserMng.AddSetLevel( this, (WORD)m_nLevel );6 y! c7 F- S+ W/ G
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
* z/ l j1 l! G ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );8 c9 E: m/ D" }! K( M9 j6 V! z1 Y
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
( ^+ b! o- Y5 u9 V, x$ g ( (CUser*)this )->AddTaskBar();*/4 o/ q! k7 d7 }! o, w, D
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );+ J2 K6 K0 L& b
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?0 f9 A9 t* Z. X" S2 r" j7 `) h+ o
((CUser*)this)->CheckHonorStat();* [* A/ a9 E2 Q# V3 q) N) U% T
((CUser*)this)->AddHonorListAck();6 l( P# i6 U: X
g_UserMng.AddHonorTitleChange( this, m_nHonor);
: p7 j0 a) @" u7 i6 x3 F#endif // __HONORABLE_TITLE // ′Tà?
, Z- P! U2 W% B8 T }' p2 c& N9 R; V' o* m
#endif // __WORLDSERVER
6 `1 Y) a `5 v$ b}
) H; H3 m. `5 b5 e4 M! F+ x! Z5 k3 Z; m' a) ]: j, O) |) H8 {9 n: b
然后你进入functextcmd.cpp并添加以下
" ~, l% X3 L! n$ F. d4 l& B& ~6 J+ B% X- S2 m
代码:
' x( h" j" t4 N0 |7 T, D! n7 UON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
' v* e3 b7 o3 \; j1 P/ U0 ~! F下面插入+ _; Z; ]1 c) l
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
# \/ _. U8 k" T8 G% N, W: g) }& r P" r6 b
然后你去
m! S @7 k6 w' F0 Z f1 Y3 H; g' [ @; Z7 e% r% s
代码:9 E S e% L/ E( L( Y; u. X
代码, d: [2 {3 T; n, P# J# g; w/ E: p4 H
BOOL TextCmd_ClearPropose( CScanner & s )
3 g7 V# k1 d0 g5 C$ _/ w& b N+ S{5 ]+ n4 X% x& y: A
#ifdef __WORLDSERVER
4 L8 p% {+ r# Y8 S% P; K* j CUser* pUser = (CUser*)s.dwValue;
8 @ p' F8 c, V" ?& [ g_dpDBClient.SendClearPropose();- [" b. C7 a; i: ]4 ^$ ?
#endif // __WORLDSERVER
7 p& Y6 n% |5 O3 n. w5 _ return TRUE;8 t' ~ i1 b8 y& T( y9 d1 Z% ~
}! K* H$ o" r. I; D
下面插入1 c6 w! O$ q, e2 I( D$ D
BOOL TextCmd_rebirth( CScanner& scanner )
/ F: [5 N3 e* p" ^% D. r3 y) U{. e" J ?. V8 L/ w& y: ^8 ?; Z
#ifdef __WORLDSERVER
" |& t0 h* M8 F: m" \& q. g$ l& B; W/ O' MCUser *pUser;9 }' G% h: p5 e: I6 W4 m9 s7 M
pUser = (CUser*)scanner.dwValue;# {; \/ R9 g2 t* f
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())$ p8 f+ V- _+ E; {
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
9 f `, }" b/ q) }8 N2 ~else
/ P" l5 w7 u9 T+ Z1 T! p: x0 CpUser->AddText("你还未达到重生条件!");" ^7 ~5 B) h2 l p
#endif' t7 V0 ^, {9 m6 n9 u& d
return TRUE;7 r+ f c- S( X
}
2 q& S' W. z& a6 b
, |" S5 T& U4 ^3 E% ]7 H8 g* A. g9 h4 v" O3 K; X
# p8 P2 Y, Q4 c2 f
5 r; T% ?- b, Y4 q M
|
|