|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel% w& [/ @4 D4 ]% u g# n% c
( s, L( T9 r0 m8 M: z1 c) a B' ]Mover.h) Z. o9 V: k: u; D# F8 n
代码:
* C2 n4 E* T% U( f& V/ J0 N4 n找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü v$ G: r+ S& T
+ ]2 j) u, B/ R! |0 x
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
9 C. K: ~( X2 d# }, \) s7 N( r, s. N% [2 ?& I
然后你去mover.cpp添加
6 ?% ~- {* A, b+ v
$ ?. x) Y ]9 c代码:
* y1 L3 ^3 n0 Zvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
( ?! H, g+ ]7 H( v" B- e{
' s& A( D9 ?* q& r. V$ y8 \7 _& O#ifdef __WORLDSERVER
3 ~$ M( N4 Z9 b1 M // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó# x: U8 V/ n4 r2 F* K+ u
MoverProp* pProp = GetProp();+ t7 O) t# h! @9 S4 ~
if( pProp )
7 R0 g) A2 M, j {
/ ?; k7 w3 P( W1 h& ?0 \ if( nJob > 0 && nJob < MAX_LEGEND_HERO )7 e- J3 B3 c. H, {1 ^
{; J$ H3 i& t$ U2 E0 Z
AddChangeJob( nJob );$ s+ _, j; W. f4 I" V/ A x
}else{$ l8 P6 o# s7 p
return;
. U& c9 d; q0 h5 l, H \# u0 L }: u6 M# ]. A5 i$ Y
int nPoint = 0;
6 I/ H, w5 q# {' B: C4 h: I' n& ~ if( m_nJob == JOB_MERCENARY )# q& V1 Q& ?& F2 e% F7 V( r
nPoint += 40;' q5 m) V0 k, @7 v+ G" l
else if( m_nJob == JOB_ACROBAT )
% u, @" p# E) A: W" p3 d7 G nPoint += 50;
- X, A5 G- y$ f2 P else if( m_nJob == JOB_ASSIST )
& @; w, o4 d( y& M( m- ? nPoint += 60;
5 T$ ~3 C' p. `2 P7 q else if( m_nJob == JOB_MAGICIAN )
) A$ A6 I& z- ]- O, [, f0 o" r nPoint += 90;
- k1 u/ [+ e1 Q, g: L! _ else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )9 E: s$ a( m; F! b( y6 p: I" |
nPoint += 120;
9 m/ G7 A; _$ l- t$ l1 I else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
9 @' k* Y3 Z# K5 @$ Q nPoint += 150;
% q6 a4 L7 v% |# ^7 A9 d else if( m_nJob == JOB_RINGMASTER )
+ y' ^7 F) R# {7 S/ M. r( p" T, y nPoint += 160;8 E. r- a6 N. X' w2 ?7 z
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )# l3 q4 l5 o4 ^% K2 o9 g
nPoint += 180;: k2 s) { A3 f
else if( m_nJob == JOB_ELEMENTOR )5 j/ h- C1 O9 j
nPoint += 390;0 O. l$ N0 v; \
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
5 G/ E4 T( b& k5 h nPoint += 120;1 M3 ?) I @' q
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
2 a' A9 T3 x5 l0 s nPoint += 150;1 h/ ^+ X( H) ~3 f' {% [* d* d1 ]
else if( nJob == JOB_FLORIST_HERO )6 F a8 V# \7 o) W* R3 z
nPoint += 160;
' T1 ?& G3 m; F, y6 F else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )- C$ i# J& y0 T. f1 l, p
nPoint += 180;
6 Q0 K8 t4 T4 B7 K n& ^+ T! j else if( nJob == JOB_ELEMENTORLORD_HERO )6 N7 h f0 x& V
nPoint += 390;
5 d+ f7 k2 A9 g+ i" z- A- q. a$ h) `6 o! Q( [' I( X, B
AddSkillPoint( nPoint );
4 Q1 G: Z: `' ^& j. E. {2 E+ A m_nLevel = nLevel;
% ?3 M- ]% D) n2 E+ _# `8 ?+ |0 T- U2 u% E R. O! b K: h
SetJobLevel( nLevel, nJob );1 _+ p* j/ O5 B' Q
m_nDeathLevel = nLevel;! p& Q- a' d! {+ I* P
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans9 ^) a) T( F+ P( W
if(IsMaster())
: g# I8 [8 D- U, H {
4 r+ j& a- X# y int dwTmpSkLevel = 1;//60, 72, 84, 96, 1089 q2 w" ~5 q3 p* \ `( X4 u1 S
if( nLevel > 59 && nLevel < 72 ): G( A( O. J5 F5 }2 D% C( K) w' y
dwTmpSkLevel = 1;
9 `3 `1 R4 C' {, J4 ` else if( nLevel > 71 && nLevel < 84 )
8 _% B& X' R2 S/ c" x dwTmpSkLevel = 2;1 V) ]- r- e. W( r. y, b6 v" _; W
else if( nLevel > 83 && nLevel < 96 )
`/ v" ~. N. W- o; t3 | dwTmpSkLevel = 3;2 C( {) W' ~ A+ {
else if( nLevel > 95 && nLevel < 108 )
$ I$ J$ i2 l Q8 g5 B7 ^; ? dwTmpSkLevel = 4;5 q$ Z& O) |- f4 i( H1 T8 C
else if( nLevel > 107 && nLevel < 120 )
' `% j8 S8 w. D; C# a dwTmpSkLevel = 5;( k" }1 m5 c; V ]( e
for( int i = 0; i < MAX_SKILL_JOB; i++ )
- b: Y- s" y3 l( u" q0 g {
4 }9 Z4 T- r3 n5 [! @) V LPSKILL lpSkill = &(m_aJobSkill);
1 P: }. _% k5 }- ^ if( lpSkill && lpSkill->dwSkill != NULL_ID )
& r% u" E U. z( E; V b T8 x/ C {
& c- h6 U8 p& ? ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
) `* z" B" o$ i; S2 y if( pSkillProp == NULL )( n7 y5 w5 y& x6 S' }* Z
continue;
1 D7 L: E5 \3 s5 | if( pSkillProp->dwItemKind1 != JTYPE_MASTER): h9 ]* J- ^0 i- G8 y
continue;
7 J5 F* I" N0 X/ R7 b% x/ { lpSkill->dwLevel = dwTmpSkLevel; C7 D" o+ s' P* ?
}
8 B. V5 z: b$ U! G }% r: E1 F$ l/ d9 t T
}
# J& ?8 Z z$ x( _; {4 w: }5 A5 z" a" h else if(IsHero())
1 C3 S" l+ h) B+ e {
4 N2 @: V/ h; y- w) ` for( int i = 0; i < MAX_SKILL_JOB; i++ )
. e5 }6 G/ e* |; }5 f {
' e# S) I9 T s+ y- G LPSKILL lpSkill = &(m_aJobSkill);/ ?7 c" L" V' q C1 d) G T
if( lpSkill && lpSkill->dwSkill != NULL_ID )/ l( ~' I, S4 w* E- X: y* A* F7 I
{
* _& u$ [' N* G2 J u ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
2 Q. J& H/ Y+ c' m if( pSkillProp == NULL )
1 d4 U1 o' K; q! ]) v; f continue;
! S7 X# Q2 U, O/ R! r* X" h2 C if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
% K! E- r" Q9 }9 m$ M7 K continue;8 o( R. n" h4 U, L4 z
lpSkill->dwLevel = 5;1 g+ x1 ]7 |6 Q, D3 X, Z
}
; ^) G/ {' w" F# d2 t& w; c. ~5 V }
, G; Z/ K) h/ g8 ~4 \! ~ }/ a) W8 K6 }8 K+ y& j- K4 H' H
else if(IsLegendHero())
. }* Q% M2 W; G# d1 o6 ]# |+ A, c( Y {" _4 y$ C+ J6 m$ f
for( int i = 0; i < MAX_SKILL_JOB; i++ )
" H9 R+ L( w Q. G, f/ V3 v {
0 n& r3 B$ Y8 K' Y9 W LPSKILL lpSkill = &(m_aJobSkill);
. J/ p' F8 O7 C+ E% G8 D* a if( lpSkill && lpSkill->dwSkill != NULL_ID )
) Q; s* R0 H* j; r7 c# j# V7 _7 y {
! C, i! F4 `9 u1 m5 \7 a ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 8 |3 o2 J- V) f5 C5 A& ^
if( pSkillProp == NULL )
/ D2 P5 z/ @& ^+ e0 {# G continue;
! V% t0 F3 e7 n- Z if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
+ k, o2 ^# \ A continue;& A; G A; K' w% Q/ h
lpSkill->dwLevel = 5;% s& [3 @# Z" j# Q2 n
}
/ v7 ~% s- g& ~/ F/ F2 W X }/ V6 e% Q& n; J
}* S8 v" c) ?1 c- f0 V! W/ G, R
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans ]8 }+ w' |7 N l- G$ N+ g
if( bGamma )
; s# l5 ?$ i. p" ^; K w {
Y' ?" X' A" L0 J7 U% |, s m_nExp1 = 0;
7 s w/ _- k3 P a }
# }3 Y2 R0 [' ?& ?
# j; @" P h! o" k$ B ( (CUser*)this )->AddSetChangeJob( nJob );5 l3 _. V( I R) g
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );# G5 n5 [9 y$ n
9 ]- B! x' a/ Q2 o4 J, Y
$ r5 G& |; E0 n3 k1 K$ f
#if __VER >= 11 // __SYS_PLAYER_DATA- g5 V+ O! H3 s2 a& ^
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );2 Y, x6 x) l/ H" j) F5 G
#else // __SYS_PLAYER_DATA
9 x: s+ K' D% z g_DPCoreClient.SendPartyMemberJob( (CUser*)this );6 s4 M3 {! w- V: Y9 `2 t/ g
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
" ^& [ ?+ m$ q# @ if( m_idGuild != 0 )
* T0 R( H6 q& U) X+ a8 E* ~ g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );/ p8 D" T+ b3 {" \/ f s* O! H- Y# a
#endif // __SYS_PLAYER_DATA5 c2 W0 X* o E- G
SetHitPoint( GetMaxHitPoint() );, G5 u8 @6 H& J
SetManaPoint( GetMaxManaPoint() );9 u: }/ Z; R, q/ O( }: T
SetFatiguePoint( GetMaxFatiguePoint() );$ ?, B9 i9 K8 E! C6 K* P
if( nJob >= 1 && nJob <= 4 )& u; v+ |& G& m; b
{: c: p0 m0 C# x' D4 K. T+ V" a
m_nStr = m_nSta = m_nDex = m_nInt = 15;: ?$ `$ u; w2 L, F& H5 r+ s
m_nRemainGP = 28;
7 V9 `. T' H0 S: o* S/ V }
1 K' u; B- [' ?) {0 v! R* R if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )' q$ r! @( R5 e0 f: \
{) B+ _% o& a2 w7 M+ n: y" N
m_nRemainGP = 118;
( C9 K' A$ g6 C" A //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
/ K4 _6 \& { d( C4 P4 ]1 N I m_nStr = m_nSta = m_nDex = m_nInt = 15;: u- l- p1 C% _+ ?: O
}
% H6 M# H& |! y! ` if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
7 P3 G0 T |9 l) T" m {" Z' ?2 o0 K: A7 U5 T
CItemElem itemelem;1 H: q3 O# @4 O& C' c
itemelem.m_nItemNum = 1;
0 g7 h8 w+ K( N2 ^ itemelem.m_bCharged = TRUE;
' r0 X. x$ @6 \$ A- y2 M, b8 N7 [/ l BYTE nID;$ N; s- c, e u+ a" l$ {6 T7 t o
# {0 R/ R0 d- ^9 w if( nJob == JOB_MENTALIST_HERO )% d4 Q3 p3 R; X1 s
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
/ D2 b" d$ t4 i+ U, V if( nJob == JOB_FORCEMASTER_HERO )
) y" u/ \' q8 v1 W! s itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
: y" ^6 t: E# H6 o2 i
6 ?6 J% X4 D4 u# w ( ( CUser*)this)->CreateItem( &itemelem, &nID );
. o) \! Z7 G5 U3 d }
9 r0 \& a) i4 t+ G* R* y1 ^9 g: y |, S- v+ y g_UserMng.AddSetLevel( this, (WORD)m_nLevel ); ?* y( E2 B7 }' y- S) G
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
! X# |" V/ ]! ]+ x$ P. | ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );8 o4 n% O6 i9 Q) F
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );- `! a3 d' l. L. w/ ~
( (CUser*)this )->AddTaskBar();*/
$ z, s4 w7 B- x2 a5 ? ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
8 Y' g) f5 J4 c9 c3 z v$ Z. A#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?: w7 \. Y5 i# [) X9 q/ ?
((CUser*)this)->CheckHonorStat();! D; O5 `- l3 i3 c. \% b
((CUser*)this)->AddHonorListAck();
' Y( ?- A8 u( r. N g_UserMng.AddHonorTitleChange( this, m_nHonor);$ w+ h2 y8 U2 p- ~. K0 G
#endif // __HONORABLE_TITLE // ′Tà?. ?" @# } i. F
}) o4 B1 H! B, \3 q4 Z
#endif // __WORLDSERVER# h: \4 M( A. Y# {- |
}
) l6 P4 Y5 T" e* R. s% H5 X& @6 Q7 X: e/ x
然后你进入functextcmd.cpp并添加以下
$ c# l4 Y u" N$ i
" E) T8 Q7 l0 @代码:
2 K2 u+ f; `: [5 w* pON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ) i* F: A3 F/ k
下面插入
, d M4 D8 b* U/ P' vON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) % y; ?/ v) H4 L6 V
: }5 B# P! K! ^# x& ~9 u _
然后你去9 c. v7 F. B7 @' k
- Q9 ~. P! \; r% C6 P$ d+ q& ^
代码:
# S9 x9 ^7 ?$ h& w$ P* C# W代码) \5 Y7 h7 ^3 q8 y6 A- ^2 \, c: m3 }
BOOL TextCmd_ClearPropose( CScanner & s )1 s' Y% g5 w& _" P2 ^6 H6 d
{
& O/ P' T6 e2 k9 p6 Z. [) c#ifdef __WORLDSERVER
/ H2 D9 l% A6 H2 ^ CUser* pUser = (CUser*)s.dwValue;
- {! A% {0 O2 p6 m g_dpDBClient.SendClearPropose();0 W! j9 v7 i/ ^( r2 V
#endif // __WORLDSERVER v& k+ L1 i |# Z
return TRUE;
3 l, v: C% H! @% B}2 U& p( J2 ~7 ?% v1 {6 ^
下面插入, {. v* I% ~ L+ m0 o% |
BOOL TextCmd_rebirth( CScanner& scanner )
* K w% G+ V! m* X) N1 k9 f) f{ t0 w. B$ s& d# x
#ifdef __WORLDSERVER! T1 X4 ?0 J) D: X( V0 r2 }' _
CUser *pUser;
) X1 n3 j; y7 G, K |, ipUser = (CUser*)scanner.dwValue;" {: Y6 T+ y0 u7 C
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
3 S8 S; K$ r& n2 ]5 I3 apUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
. B* s9 c' Z& ]# }else
1 Z! Z: V4 Z: y. u: ZpUser->AddText("你还未达到重生条件!");1 w1 ?' M. e3 _' B- M; b
#endif1 m7 j9 T8 Y# u. n
return TRUE;
6 Z7 c- U2 Y& L% N' l& E x}
6 O& a1 S' ^2 ?+ L- `
) f9 a) h& F0 v5 ]) Y% P
9 k) D8 e2 f5 k/ Y1 }1 Q
2 d G" V( L2 \# d! X
* ~) `3 \# c5 w& w" g |
|