|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
- [) w: w2 u7 E+ f/ l0 z/ J) c! S; l7 R u
Mover.h& Z1 _- `/ |$ c- _. e5 z, z
代码:
7 U4 y+ a' A# l! m# L+ i找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü% B5 C6 j5 O: j& d& K
4 i4 R* G8 \' }- R' p
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 9 W: Q7 M" l: ?3 a; W; _
& ]5 V" r4 u" c/ ~/ L* R
然后你去mover.cpp添加* W. E! q K8 ?% z
) j F9 z5 K+ @( [% v$ a4 H代码:
6 S H/ X( I }0 R6 l( e) Yvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
s/ s( I }* O! S0 X6 c. f# e5 v{7 B( `! q8 k y
#ifdef __WORLDSERVER0 x* J9 v/ d/ n2 [% y3 h4 I+ k
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó" r4 b) p+ N. z. E, N
MoverProp* pProp = GetProp();4 ]; E. w2 x( E" r7 T% ^
if( pProp )# {4 r9 [- S, P- X
{
" s6 v6 f6 ~& f0 Y- s if( nJob > 0 && nJob < MAX_LEGEND_HERO )
1 Y! l' p6 v4 N3 E) U( _ {
) Z; @/ X7 @4 g, O* ~6 ~; @/ b AddChangeJob( nJob );
; Q- j$ \: f) Y1 N: m$ j- u1 h }else{2 O/ @2 |/ U4 H4 |- P5 o2 O
return;
$ F/ ~" U$ ?8 r1 w. F }
$ p$ x+ _ `5 g& F! ?* k2 H( m int nPoint = 0;. w; z* }8 }! ]& `6 V i5 v
if( m_nJob == JOB_MERCENARY ). D6 W1 w! n4 Q+ b7 n l5 Y
nPoint += 40;4 }" ]0 C6 C8 @$ j7 p& {$ y P- y
else if( m_nJob == JOB_ACROBAT )* O) O4 A- s0 a) Y* ~0 r f1 a/ _
nPoint += 50;/ z9 m5 |/ X5 O; l& e5 p& V8 U
else if( m_nJob == JOB_ASSIST )0 Q& }: A9 F4 p$ O/ b
nPoint += 60;1 t' I. q P2 D: j/ B" V
else if( m_nJob == JOB_MAGICIAN )
' F Z. q% a3 r6 q; @, B7 } nPoint += 90;
- f: E* B0 P( H else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )7 \7 u2 u3 T$ f. b+ w; `- ^
nPoint += 120;3 q: t7 ~" @6 e6 Y ~9 H
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )& H# u* J, \, o3 Q+ s5 j3 r _/ M7 ~
nPoint += 150;2 [( l9 E8 B# P& `% L7 ?- {
else if( m_nJob == JOB_RINGMASTER )
0 r. N0 @7 k$ K8 j% n! _ nPoint += 160;
! J9 ^9 C( {+ J: s( g else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
# D/ u h& u) L3 ~/ g+ L nPoint += 180;. u/ x1 I( }- e
else if( m_nJob == JOB_ELEMENTOR )
5 y5 i* \* N8 ], t nPoint += 390;
+ I9 j+ G. V$ {5 S else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
7 a5 h' c0 Y) e5 D; ~" f nPoint += 120;
) G$ @: L9 _; M/ \ else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )0 X* c& J8 T. V( {
nPoint += 150;
% h" ~8 O, Y9 B" g: Z& C& r else if( nJob == JOB_FLORIST_HERO )
# S% {% k7 L; V& j3 a0 f; T8 \ nPoint += 160;( @ T8 u+ z1 R* `) k% H
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )3 {9 @! M+ y) B6 }6 F. C
nPoint += 180;
4 s9 N& b3 \5 l" h, c1 } J/ {/ W9 ? else if( nJob == JOB_ELEMENTORLORD_HERO )
* m% `7 v6 k# F: o( G. a. H2 g nPoint += 390;2 C& g; z# q. y8 I: U$ c- T4 u
3 I* _/ \: i% R3 ]: N9 \/ W AddSkillPoint( nPoint );2 Z, Q! ]' E; T% G. G
m_nLevel = nLevel;
; Z; {5 _7 s" {& |5 C* i/ l. l- \1 u" }
SetJobLevel( nLevel, nJob );
' P6 l N: d0 u! m m_nDeathLevel = nLevel;
, u9 U0 e; ?) t$ v, B/ J( H* j9 \#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
3 B+ N/ E) O5 o4 D if(IsMaster()) w5 o& y* e. J6 [ e& F& l( o
{7 E/ E5 U/ D' q& |0 a! J' {
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
; Q- U% U+ ~" j& L3 p7 a; z if( nLevel > 59 && nLevel < 72 )/ Q5 N7 S9 @4 G+ A( Z; ?/ z# N
dwTmpSkLevel = 1;# f8 L1 E/ P. E, s$ ]" y; Z
else if( nLevel > 71 && nLevel < 84 )
. m% z7 P, R5 l! M( x6 T3 h dwTmpSkLevel = 2;
. r" h2 o2 J* Y+ ~ else if( nLevel > 83 && nLevel < 96 )
7 U, u% Q: ^7 D. w3 x% v dwTmpSkLevel = 3;: i7 W) N! }7 M! B9 V I n( q i
else if( nLevel > 95 && nLevel < 108 )
9 q% V3 o; e6 O* s* n8 N dwTmpSkLevel = 4;8 ?; \) ?; Q+ |( Q
else if( nLevel > 107 && nLevel < 120 ). K: I+ _3 N; U; d% }
dwTmpSkLevel = 5;
, L" o& Z' v9 V$ w% u, y$ u) M2 q8 F V7 w/ J for( int i = 0; i < MAX_SKILL_JOB; i++ )
* H8 z% U7 Q" X5 i! B+ L { . j6 D8 R6 _2 L# s- t2 w
LPSKILL lpSkill = &(m_aJobSkill);; O! u/ @( M% I8 M2 x
if( lpSkill && lpSkill->dwSkill != NULL_ID )- W# m5 s! h# F8 t) S% ~6 d
{
* X' D" W8 ~ @8 y+ J ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 6 b% U) h- V" b1 c% o9 [! R& Y
if( pSkillProp == NULL )8 K/ l* [; ? r6 S+ E
continue;
2 H O2 a8 ~, q0 x3 R& T, R. B if( pSkillProp->dwItemKind1 != JTYPE_MASTER)% t# a; ^+ b9 u$ L1 ~) K: I
continue;1 T- P) s U3 O
lpSkill->dwLevel = dwTmpSkLevel; G/ @" S4 D& |( q: k0 y
}
! u4 @# [- p2 F: b9 v# | }0 }( C& D! z3 H9 W) x3 a! F" v
}
/ J, {* C% i/ ], Z8 B4 U else if(IsHero())
) s) d! t w; ?+ c6 u9 C! U, @ {
& t8 J( @9 O6 |% @+ ^2 ? for( int i = 0; i < MAX_SKILL_JOB; i++ ) 2 R* j t) c0 s
{ ) x1 x4 i5 ^. Y; k* `
LPSKILL lpSkill = &(m_aJobSkill);
) _& F1 v i" d8 C if( lpSkill && lpSkill->dwSkill != NULL_ID )
3 a7 V5 \4 x3 {* S! y, c* ? {
- n' p$ ^* t0 c1 R ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
3 g$ y/ p. ]. T2 C if( pSkillProp == NULL )
5 v6 m- l G5 l/ [0 X* i continue;
/ C6 z$ ]$ d- e% C+ y; C5 t if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
6 e3 S8 |" G, M3 R: T continue;
" m/ X6 K2 b3 I Q9 n: U) {5 l7 M lpSkill->dwLevel = 5;. d8 d" V5 Y2 ^+ k6 y% b
}# |2 z6 D4 m4 J L4 p+ U( ?
}
( G" j: S7 B' v# i }& s5 x ?; c+ _, I
else if(IsLegendHero())
8 m; A8 W% W4 Y9 X& l. r {. p/ I9 V! B& f5 n- G5 }) O
for( int i = 0; i < MAX_SKILL_JOB; i++ )
+ s- v/ i8 d' Y# v& M$ O* ` {
# a) q$ B8 z6 G5 K# R5 Z LPSKILL lpSkill = &(m_aJobSkill);( ?0 s9 I M+ S5 `, ]
if( lpSkill && lpSkill->dwSkill != NULL_ID )
6 S% e% h: H8 }. P {& W8 v5 `! X O$ Z5 S' m* F
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); + v9 u0 O- q) `' ?* y
if( pSkillProp == NULL )- z! X a! D4 o
continue;* r+ x7 w6 M% d" u
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)' H% d/ |; z; A5 E' O5 O! m1 P1 ~
continue;& m: G/ x) {5 f+ L
lpSkill->dwLevel = 5;
* H& }/ _2 l' k; |6 I2 Y% x }
5 W3 B) K3 F. u, v9 a/ b. C }
& H7 S: H1 a9 X* w, p& ^$ D3 u! ] }
6 T" E- R: o B# b- ]& a#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
+ h7 P% G! x- ]* ?: f! }! b' h6 a* \ if( bGamma )1 v- X( v/ ~6 B: A* b8 G
{( h7 m$ ~2 N# O3 D9 @- I
m_nExp1 = 0;3 N. i% Y( U% `7 _$ k
}: b- F! j( s1 ^4 D: F% n: ]7 R
0 N6 ]/ }, D8 r1 f ( (CUser*)this )->AddSetChangeJob( nJob );
0 D* ^$ H5 m' E# S8 | g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
% Q; h' j$ Q0 z( `3 k7 C7 V! {! L
: w4 v" k. x" Q7 t9 w+ I0 ]9 {/ ? p$ P2 Y
#if __VER >= 11 // __SYS_PLAYER_DATA& \ z. `3 |& T4 X2 f- V
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );, M! V p$ M- [! t+ h) d/ O
#else // __SYS_PLAYER_DATA
0 [9 b( q5 x6 a# t g_DPCoreClient.SendPartyMemberJob( (CUser*)this );) F) T9 z# O% D, n
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );2 W& ^ g7 F% J/ u8 G* ~
if( m_idGuild != 0 ), t0 g/ }7 j% E( t8 a2 m' {; W
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
1 E8 c$ [; ]2 f Y* L( V0 E! W2 u#endif // __SYS_PLAYER_DATA" |; {8 `. L; ~7 w% s
SetHitPoint( GetMaxHitPoint() );
( P$ ?4 u+ ]7 M0 w SetManaPoint( GetMaxManaPoint() );
. p! P. w/ k, J SetFatiguePoint( GetMaxFatiguePoint() );: E: W( F7 x R, y/ @' f
if( nJob >= 1 && nJob <= 4 )
+ Z+ k( k% E& |0 J0 q {- ?% D7 r2 ~3 c7 O) B
m_nStr = m_nSta = m_nDex = m_nInt = 15;9 L9 R! X$ r. N) }2 l2 `
m_nRemainGP = 28;/ i: m1 u4 |) o& G! ~2 e
}: [8 s+ n3 i& L ]8 v
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
. c% e4 {4 n! G8 F {& J) T$ d8 {. p" w! C6 i( t
m_nRemainGP = 118;
" e9 k+ I7 @( T' h1 P //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
4 F5 u- |& w S* @: X m_nStr = m_nSta = m_nDex = m_nInt = 15;
' z1 x7 X! P; l: n4 f+ L2 B }
5 S4 M! _# ?- ? if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )2 }0 I+ ?5 N2 R
{, Z# ^. Z: X3 v
CItemElem itemelem;
3 H( \7 o7 g8 e! t& D7 x itemelem.m_nItemNum = 1;
9 y+ R; [ x) f2 @$ n itemelem.m_bCharged = TRUE;+ t! o+ i( N# D6 N0 L
BYTE nID;
4 |0 {. d% z. s7 ?4 U/ f5 e
3 X! s \6 r4 Z2 `& B/ A7 p, { if( nJob == JOB_MENTALIST_HERO )3 R) u% o5 s6 |) b
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
$ }6 B$ o; w8 }+ s! w5 E! z& s if( nJob == JOB_FORCEMASTER_HERO )
- Q. U/ u0 s. @) E( t$ K k# R itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
: l1 d) v" `. K1 U: ]8 \6 O0 ]% \4 {( T
( ( CUser*)this)->CreateItem( &itemelem, &nID );
- h8 z/ F2 ]0 _: c* P9 ?6 }' k5 Z }/ V6 `* L1 r/ m3 x
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );6 b9 ?2 J G2 `) ~
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );3 v: V+ F" Y8 x7 r1 Y, U
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );/ r7 m Z& ]5 N: [; t q( H1 e
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );# b6 Q7 I" G+ m3 r
( (CUser*)this )->AddTaskBar();*/
C V C2 s: G# x$ z ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
5 T) |) T# k1 f+ p/ d% q#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
% F$ ~9 \; w' r ((CUser*)this)->CheckHonorStat();
+ O6 y% ^ y- S3 T4 l ((CUser*)this)->AddHonorListAck();5 d% N( Z6 D. j5 h
g_UserMng.AddHonorTitleChange( this, m_nHonor);
$ I# q# h; Y$ |& r#endif // __HONORABLE_TITLE // ′Tà?
4 D9 j7 D$ d" {1 z: O/ S' s7 u% p }
- b' p5 p* M5 Y2 x/ i7 [#endif // __WORLDSERVER
+ C8 r3 |1 ]1 r4 h; F8 I8 [4 x} ' q5 t: N! j' P" u# _
; N: n+ g& J5 D6 Q3 D
然后你进入functextcmd.cpp并添加以下4 p$ C. z8 D, Q9 V a
9 C/ d) {' v5 P, y* A代码:7 {( M5 u2 M- O% e J3 f, M1 J
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ). s2 s: Z5 M2 d% `8 N8 U
下面插入/ R e" g/ _. g5 T( d, x% |
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) $ W- V2 |! L, X9 @# G
" U( s+ `$ ]. h# u0 A; R) R然后你去" ^1 E. S' C2 L$ [6 J4 ^
f6 ~8 s! i3 f+ l6 [& k% J& Q
代码:0 Y. u: U# o1 ?5 i. {- ?3 g& M" _
代码
5 w) l% J7 N4 l7 lBOOL TextCmd_ClearPropose( CScanner & s )& E$ e* k# R0 h# [
{' C4 s6 N5 b. L0 _) }! c
#ifdef __WORLDSERVER" Y1 w9 Z$ V( G3 _6 ^
CUser* pUser = (CUser*)s.dwValue;" X$ n9 _% c3 N+ `2 a
g_dpDBClient.SendClearPropose();
" T8 ?' H9 P1 I# q6 \/ m. W ~* F#endif // __WORLDSERVER5 o$ z D2 p9 g8 e8 o9 Q
return TRUE;+ T2 H2 S& {: H. ?- T; I# a' l
}
$ N! I9 O! ~2 H6 x/ Y6 s8 n下面插入
0 |1 n5 {& A: A' v1 m+ y, lBOOL TextCmd_rebirth( CScanner& scanner )/ k; u6 e2 `6 g. ^
{
' t7 x* \: m: }, i9 j3 {#ifdef __WORLDSERVER$ S {. P! {( y( B3 Z
CUser *pUser;" x4 v7 P- Y/ ^; l, t4 ~2 b
pUser = (CUser*)scanner.dwValue;
8 o# P: X4 p1 b" s! f* a mif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())1 z1 d7 T2 ?+ N( n
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);5 W1 a# v6 U0 {1 ^9 s: n# B
else
# }5 V" V3 [$ [2 F; ?pUser->AddText("你还未达到重生条件!");( j* o2 X* u9 R) i
#endif5 R' p# w7 F3 r
return TRUE;. B G8 e" ^* r) A( E/ g% R
}
9 {5 |) L! J7 Z7 K7 S
6 C Q, y$ U8 F$ v+ p
! r+ [) R* o0 w5 n9 }" \9 D3 N4 |0 i
0 r5 @/ w, R7 r7 i ]$ k/ r# U8 a! Q |
|