|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
' u; B" \$ u+ B4 f' v7 z! x. [0 T: f; l" |2 D
Mover.h
" R) n3 b% K+ d. @代码:
6 ~& G5 i8 n/ _找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü9 w, ^# N- |4 {4 ?5 P$ v( }
; O' N1 o$ m5 d" p
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
! I) }8 v. e4 h/ \- z4 y4 |! V
4 R) q4 m8 h/ |然后你去mover.cpp添加
V% b, @' y- U n, f3 ^; M% z$ s" w! Q; [( a* I$ U0 m: u
代码:
p: g. G/ t' J! ? d4 _' Gvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
/ ^, {/ E2 i& V{& J9 q0 U& m& Z0 z
#ifdef __WORLDSERVER
2 g, t0 g9 f) N8 S) [3 k W // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó5 Y3 N8 V% r+ O2 \
MoverProp* pProp = GetProp();# n0 ?+ p; S) Y9 P
if( pProp )
0 c' c, b& d' s) P {0 ]6 n; w4 E; d/ C
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
9 m3 R V5 Y! J7 Q* c {6 m/ N* g) m) L2 u
AddChangeJob( nJob );
0 c% Z: _+ q! U% D/ {4 k+ i }else{
3 B8 Y0 N% \& I7 |0 p- g8 ~ return;7 r0 @' o9 [5 N% C n
}
* H. S+ ~7 e8 }! J! G int nPoint = 0;
2 R; @( e2 x) G- ]. E; \# V! O* _ if( m_nJob == JOB_MERCENARY )3 y3 N0 K( ]5 {7 g5 \( e
nPoint += 40;
( V! C; A# \3 f. C6 g else if( m_nJob == JOB_ACROBAT )$ q) j! @3 j$ d
nPoint += 50;
- H6 X! I7 N" j" y) M: J else if( m_nJob == JOB_ASSIST )" V) \: @1 X- Z) r
nPoint += 60;, {& N6 t& f( d! C4 A7 ~: a1 ?; T
else if( m_nJob == JOB_MAGICIAN ) \& H1 \& D% V9 u6 y
nPoint += 90;/ n8 m' C/ b& x& J3 w
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE ): s6 i+ s- b3 s+ N# u
nPoint += 120;8 A; ]' a+ W1 N4 e/ U: O8 r
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )& s- x- _3 l; l5 V0 C+ k3 G& T* R
nPoint += 150;+ J$ w8 ], t8 B" z2 u
else if( m_nJob == JOB_RINGMASTER )
* p j& ^% _8 q nPoint += 160;
5 H" m+ h3 V" ~, a" G! d- v' S2 c else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
* h9 O7 r0 {' x nPoint += 180;
, G! i: _; H5 @& ~ else if( m_nJob == JOB_ELEMENTOR )& x. I2 r0 D6 f6 u% u: g' i
nPoint += 390;/ H& C( g- H0 {$ w* {
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
8 F x4 r- i2 ?6 K" @# S nPoint += 120; V/ l$ U* U* [, h# b
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )* B! [/ Y' `" X5 f" ?
nPoint += 150;8 M" X! W9 a2 p9 G
else if( nJob == JOB_FLORIST_HERO )* L( }0 Z( ^& y" B& f7 q
nPoint += 160;$ y H x7 N0 C# k6 Q7 g
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
9 I2 e2 |. t9 \/ V nPoint += 180;! w) p: @4 O; ^' _( Y9 k% V$ F
else if( nJob == JOB_ELEMENTORLORD_HERO )
6 F' j' A' K4 w4 B Q nPoint += 390;
$ a0 C$ I! a" s, m2 {0 r
7 k- ^4 E( U& F0 ]$ J' p7 i6 Q AddSkillPoint( nPoint );) }+ i/ s9 m. J) T0 f. ^' _7 S3 R
m_nLevel = nLevel;2 Q7 z2 @3 H0 K) P
- c. L) a w2 Z. e. I/ l ~, y+ { SetJobLevel( nLevel, nJob );
7 x4 Y$ ~8 p: w! ?* c9 t' g, v m_nDeathLevel = nLevel;
& s; L+ M* b6 V5 P#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans6 f% O: G% k1 z
if(IsMaster())6 |( x( o9 y! A4 [3 q
{9 ~4 s2 C4 c: s, ]! ]
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
( M+ u+ h$ x) K! P: m if( nLevel > 59 && nLevel < 72 )3 Y5 A) n4 |2 U, U, B5 q! @3 z! T! ]' ^
dwTmpSkLevel = 1;- [/ o4 G* R% [1 W5 L5 F# l$ H. n$ i
else if( nLevel > 71 && nLevel < 84 )8 M/ W( f9 i9 C* H8 P
dwTmpSkLevel = 2;
2 E( I7 Q5 M0 ~. ^% @- \ else if( nLevel > 83 && nLevel < 96 )+ F6 f: A \" O4 V, L- M
dwTmpSkLevel = 3;
2 P: v- w v) v3 v. A R: v else if( nLevel > 95 && nLevel < 108 )1 e( j# l$ G) ?5 Z
dwTmpSkLevel = 4;
5 @- `/ m/ n% B; G/ s$ i else if( nLevel > 107 && nLevel < 120 )
3 l p- K: u- t4 D' o9 s7 d# p( v dwTmpSkLevel = 5;
( _& _1 U7 d1 C! d4 C! Z* G for( int i = 0; i < MAX_SKILL_JOB; i++ ) ) _* ^( C& T2 Y4 W& s
{
b8 Q7 F! Z/ E4 g LPSKILL lpSkill = &(m_aJobSkill);
8 k7 I$ [* g8 M9 x0 m& M6 n; i! \ if( lpSkill && lpSkill->dwSkill != NULL_ID )9 H0 O4 E1 n! g4 m, F' J
{
5 `" Q% S. `! w* V! o) [# X ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
' E& a0 X) a+ c; \ if( pSkillProp == NULL )$ E: n9 b& M' w7 b* H" q: }
continue;
Z. \+ J6 w( g. |5 m if( pSkillProp->dwItemKind1 != JTYPE_MASTER)' j6 o- g r: g
continue;
# K0 I9 Q6 u, n lpSkill->dwLevel = dwTmpSkLevel; J- Q2 }3 U! Z, d9 P9 ^# v
}3 J: E9 ?9 j9 c6 a0 e' [* I
}
: d8 s/ h& }3 _ }) F0 l4 ?% a. ]3 ^
else if(IsHero())- |- L/ p5 u7 U6 T2 y0 a
{- ]5 f. L! }- n" R
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ) e, z' R4 N3 i5 [
{
' c/ { R/ e+ c9 \5 U LPSKILL lpSkill = &(m_aJobSkill);$ ^! ~, u/ W4 Q& V, L2 G
if( lpSkill && lpSkill->dwSkill != NULL_ID )
/ O& n. M/ c/ { {* B+ t3 P7 H- a! f- X" ]5 X
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 2 o) n, h/ [' X q* g
if( pSkillProp == NULL )
/ n: [8 v) E6 W/ t* k continue;
) v/ g4 g) J6 k, N9 d3 C. ~- K- ] if( pSkillProp->dwItemKind1 != JTYPE_MASTER)6 K& F. B% r6 o2 B0 m
continue;
+ T c( c- J# z3 n lpSkill->dwLevel = 5;
/ o6 c3 Z. s! J7 {+ m1 W% g8 x1 x4 Z }
3 b3 ~, a; Q6 P ~, c }; M' h$ n' @5 `: e
}
3 q U" o' i7 {# Y9 S else if(IsLegendHero())
& K+ b _9 s$ V+ D1 s4 x8 K {' F. d- b8 ?) F3 m/ ` [6 O
for( int i = 0; i < MAX_SKILL_JOB; i++ )
+ F1 _/ e* A+ M# f {
" r( [$ C9 l$ {9 M! p# s; q& k6 _ LPSKILL lpSkill = &(m_aJobSkill);
D2 E1 a3 y% j) C/ U3 B if( lpSkill && lpSkill->dwSkill != NULL_ID )0 V+ _, c4 r; w" @5 m* o. y" @: g
{; m) c/ K' T3 ~; J# a/ s
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); # Y/ n s# c9 g2 o8 u, X/ `" z7 f
if( pSkillProp == NULL )
$ \6 @6 Y% W3 c t9 t& i8 u" E continue;
- E1 N G, K/ a5 ~ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
3 S; _0 y; e$ [, B# k! }7 Q continue;3 C: a3 w4 K- m {' y2 \
lpSkill->dwLevel = 5;
* b9 B. g l+ n8 x }: e. P# j( d6 U) l6 x
}
% v: T0 `6 W- H; I9 s: @ M# j }1 Z, O4 |+ g9 r9 l P8 S& R' I
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans) |! {; S" _" ?. ~! w
if( bGamma )
/ J5 b9 J& `$ S0 m3 t# j. Y {0 J3 t5 {" ~0 q
m_nExp1 = 0;$ Z) O, h9 |0 X8 _
}
& E9 p' [; g7 Z/ q; _' F, W9 A/ K; T8 O+ ~9 F
( (CUser*)this )->AddSetChangeJob( nJob );
8 I" n# R$ [4 b2 @8 @+ Q g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
. Q0 B5 s' C- G: z4 G2 \! [" e) j8 S1 I9 v6 `2 Z
5 c8 F9 H8 a, D9 O8 t1 y, m' H
#if __VER >= 11 // __SYS_PLAYER_DATA
& l/ F4 p' i3 r4 J* [( N+ Z g_dpDBClient.SendUpdatePlayerData( (CUser*)this ); w3 W1 Y% p: v9 \
#else // __SYS_PLAYER_DATA
+ d8 V2 `+ r. a0 c8 t g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
8 K& k& R6 {6 t+ w5 y3 R$ Q g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
+ G# ?0 j9 n, ` M: D# Y if( m_idGuild != 0 )
, }2 H( ^9 z0 ?& ^9 N* o2 D6 M4 ` g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );. Q" H# N4 W* @8 b* ^
#endif // __SYS_PLAYER_DATA0 h8 n6 l6 @) Q* |( [. k% w
SetHitPoint( GetMaxHitPoint() ); ^+ x: K( {9 u: [( ~( E: k) Y
SetManaPoint( GetMaxManaPoint() );' K; F- _4 E) A: A
SetFatiguePoint( GetMaxFatiguePoint() );! K, a; c; W4 N% U& E1 n7 [3 D. R
if( nJob >= 1 && nJob <= 4 )
5 ~/ M/ e+ v4 l) C, ] {& \! @5 a- W& K+ r. f1 Z
m_nStr = m_nSta = m_nDex = m_nInt = 15;8 y% I( e; @9 R
m_nRemainGP = 28;/ t6 C& \2 J, L& h1 R- E9 X) ?$ n
}& d5 a" ^% }4 S6 v
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
$ ^5 C" N0 V( A5 S {6 c+ ~6 u! b3 V$ @+ m P
m_nRemainGP = 118;0 J8 s2 P9 W; @. p2 R: e; ]8 B
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
/ S" u! A8 d* v R/ @ m_nStr = m_nSta = m_nDex = m_nInt = 15;
& O; ?% J" G+ j S1 T }
5 X+ d9 ?- c. m! R s9 | if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
: w7 s) c" L G, h8 a {2 i0 K6 H$ F3 f9 [; _
CItemElem itemelem;
0 G6 v9 p; I5 S! [% g itemelem.m_nItemNum = 1;( h2 W* z' E+ }. T
itemelem.m_bCharged = TRUE;
0 Y; U/ _! ?: J9 F' _" u2 G BYTE nID;$ T7 y. e2 T& O6 M; o. l
) m9 U/ {# T5 ? if( nJob == JOB_MENTALIST_HERO )
& _ U6 H& {8 \ itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;) v/ z' L' R1 B7 \
if( nJob == JOB_FORCEMASTER_HERO )4 P% c/ X! M! h2 o- |1 Z/ p
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
% x: Q5 ?9 F2 _+ ]2 ]$ B/ |+ _
$ f( H! m/ z5 e/ h ( ( CUser*)this)->CreateItem( &itemelem, &nID );/ @- _2 n) M- `" N- O: @
}: C* R3 m& g8 `4 z
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );9 ~, b+ Y, [6 ]% c/ x
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );! T4 \8 w5 C) E, J1 e' F
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );. K$ U# s4 w( ?' t0 @2 g5 u' h
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
) ^ l+ Z) W% S' P4 G$ o% Q ( (CUser*)this )->AddTaskBar();*/7 b) U ~! m9 v, g/ d
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );& z7 l9 V' T2 }# i( E0 o. o4 M" H: d
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?, @/ T, r1 s0 \/ _+ p7 c" q
((CUser*)this)->CheckHonorStat();; @6 w+ G: ^! g/ g7 D0 Z& ^
((CUser*)this)->AddHonorListAck();7 R8 d# l6 C( N& z
g_UserMng.AddHonorTitleChange( this, m_nHonor);
8 b+ O o# ` h7 l9 z#endif // __HONORABLE_TITLE // ′Tà?" m! o3 \- U* L- i! X$ r/ R
}% }7 m. O6 n& c: a4 V6 T
#endif // __WORLDSERVER
" K7 x8 u# H" j( h) |3 C}
: s( R: u) I! {5 v9 @
m, ^ h d& S$ V- e4 I& Z然后你进入functextcmd.cpp并添加以下
5 T7 b( }$ ]. m6 {2 R' |8 F# b3 T" K
代码:' v& `" @+ K- ]- ]9 c4 N6 U3 q
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )! O% h& I( r- z9 g. N
下面插入 F6 N8 V0 P3 {
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) . S- v) ], L% S) B. a
# i) A# D8 U6 f, Y% |, V
然后你去
1 E6 V6 a' k& H# i) V$ J, R. `5 s* \ j6 Y6 O, D6 c+ y
代码:) d. h& \' A! c) n9 V
代码& I& h7 P9 s( N$ f! ^
BOOL TextCmd_ClearPropose( CScanner & s )
6 b# ?% I3 b, y# Z{
K0 {$ [' G! T8 R: y#ifdef __WORLDSERVER
; E: Y, G8 C( C CUser* pUser = (CUser*)s.dwValue;
5 X9 V& e, @/ Q g_dpDBClient.SendClearPropose(); I: l6 x+ h# W, }
#endif // __WORLDSERVER
' a4 q0 y# v' m3 q" W return TRUE;6 M. H- D' z6 G4 \+ e
} e; ~1 Z* b$ ]
下面插入1 }) P% k# V5 z4 f4 p5 c2 n2 @
BOOL TextCmd_rebirth( CScanner& scanner )' \6 h$ y' W. [! G9 g8 Z
{1 ]+ ?) ?1 E; n6 Y Z
#ifdef __WORLDSERVER
5 r: n4 e& D: J% @% O/ \, g; ECUser *pUser;
1 X# b! Y4 E3 O' p. A! tpUser = (CUser*)scanner.dwValue;7 H3 P& W8 d+ W# ?% ^& C: A2 N
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
5 c# S# b( E* \0 L! Z6 |4 g2 T xpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);: Y" t) h: L5 i
else
* ?! ^3 {( L8 {3 k) `0 _# xpUser->AddText("你还未达到重生条件!");. S/ b7 _( I. @
#endif
* `! M L8 C2 R2 N: M% treturn TRUE;
, \; ?( l1 m7 _ p" M. u2 [+ j) X$ g} 2 F, |0 q+ `& j1 H
0 E Z7 E# f9 N; M' ~+ H, p% V( q: d# u: T) [5 D; W0 Z
1 j" X+ v- S# P" @! C% d! D% V- Z1 y4 u B
|
|