|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel* f# [6 W& M5 X. s; H3 e
7 U' I% g: {6 j6 _; t$ w) yMover.h! S6 j* [: m* ?1 {5 d1 G! q
代码:* `' p9 \7 q# w. ^6 h) q! x
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
) u, K4 b O7 W/ I! n- I
6 C: K( d7 ]4 Y下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; * l4 J" h r2 q6 q5 l
]+ g% c# m- e& Z. D5 v; | D然后你去mover.cpp添加
2 e" B# h5 P; l. P5 m
* B$ K' N, Y1 d2 x/ e# X代码:8 p) @: d5 \2 b, R+ \ a
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )) P+ z4 ?- ]; f! @2 g6 m; v
{
' E" u1 ^7 p; Y. {1 e#ifdef __WORLDSERVER
; f3 j4 Z3 Q* ~7 @" j // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó7 R) q: n: n+ P1 r3 F9 O
MoverProp* pProp = GetProp();
8 V# N, Q* `' e x c- p if( pProp )
4 R+ P. P3 Y/ p4 V" T* A0 p {
; {4 B) @5 r! W/ \! u. Q' b if( nJob > 0 && nJob < MAX_LEGEND_HERO )6 ?5 _) N* T2 V/ Z+ g- a N! T% R
{9 \5 U2 l' h/ Z1 Z
AddChangeJob( nJob );! R: j% n. A2 D3 o
}else{
+ M8 v: V3 T# I return;
( _7 u) U/ G8 V5 A }
* B, K, v2 c' w5 J! R int nPoint = 0;
5 j- Q; w3 X) O: C2 E C if( m_nJob == JOB_MERCENARY )* Y6 F% }! p* g; k4 j5 V5 K. X( u n
nPoint += 40;
( |3 `' t0 z" c \* l5 L7 O! Q# S else if( m_nJob == JOB_ACROBAT )
& r. o" L0 n |" e nPoint += 50;' t0 F( W+ S. }5 _, |4 V* H. |: M- [
else if( m_nJob == JOB_ASSIST )
( I) S0 @# V: i; ? nPoint += 60;, w; a: d6 v7 Q. a
else if( m_nJob == JOB_MAGICIAN )
: w: Y7 l. P" D$ A4 X! P nPoint += 90;
. p: a h! Y1 F2 l6 ~* w r else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )6 l1 c1 N! Q# c& @& t
nPoint += 120;
. k! D# s2 H Q b else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )/ U) ~, z7 `* {7 R
nPoint += 150;
0 Y8 X$ R& q7 z else if( m_nJob == JOB_RINGMASTER )
2 p# m& W6 s9 t( u( j: Q nPoint += 160;, _, g7 j) a; n/ Y5 X
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
7 S5 O* i8 p! Q+ a. B% I9 \ nPoint += 180;/ [' A! v! T# X. T1 I. V9 ^
else if( m_nJob == JOB_ELEMENTOR )
+ A- h: u! m2 R/ d0 H0 ]9 b! f nPoint += 390;
& b* m! y- z. e) A$ N# T! e% O$ | else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )$ B; T/ `$ G( j! _! i
nPoint += 120;
& I6 K: \) E3 o, {( Q% K9 k else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
, u8 r: t4 E% q nPoint += 150;
9 \" h( t( s6 F( M+ y/ l t, s else if( nJob == JOB_FLORIST_HERO )
% x G: u- g6 L6 \/ c1 t4 A/ }' B$ W nPoint += 160;% o4 ]3 W- Q. i1 b
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )3 W6 ]6 e5 X4 W: G6 A. |
nPoint += 180;
) t+ B8 ]# V+ x& a# U( Z8 M1 i else if( nJob == JOB_ELEMENTORLORD_HERO )
/ Q0 _, _% C- [' P* |- A. b( t nPoint += 390;: V4 R( N+ i4 _3 w
0 {( u0 U; j4 x e# M- |1 o1 u
AddSkillPoint( nPoint );
* `, R% i3 X! K" Y- r2 `0 U( h m_nLevel = nLevel;# E) v8 i# w% t' [( [! r9 J
4 d, B i4 X, g O+ t1 X
SetJobLevel( nLevel, nJob );
" V! @7 k; E1 y1 W$ Y m_nDeathLevel = nLevel;8 ^; @/ f5 |: y! a6 m
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
( ~& u% U0 v# g1 m; \, m if(IsMaster())
, U) j. J4 N# z& q! l' E {
$ G& R0 w# k5 }8 o( { int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
9 f9 y6 H _1 P" _% ~( E/ c if( nLevel > 59 && nLevel < 72 )
7 r. d& _: M) o4 ` dwTmpSkLevel = 1;; e: t' L4 m9 H. S* s
else if( nLevel > 71 && nLevel < 84 )
4 i0 e0 w5 E5 v8 ` dwTmpSkLevel = 2;
8 `5 M+ B: e4 n# V( K4 s5 y4 I( V else if( nLevel > 83 && nLevel < 96 )+ G6 Y7 t4 r- Z
dwTmpSkLevel = 3;
4 @5 j% I# D+ z else if( nLevel > 95 && nLevel < 108 )
; Z3 Q& [9 I- j* v C5 f! Q dwTmpSkLevel = 4;
1 |$ a# m8 f# P; ~5 B- Q$ m( L else if( nLevel > 107 && nLevel < 120 )
5 u, k- i/ j1 p5 _ dwTmpSkLevel = 5;
( K! @ _9 {- q5 p6 ^* g for( int i = 0; i < MAX_SKILL_JOB; i++ ) ' J: M2 C- H$ i; q! o
{
( V7 H1 @" i5 n. m LPSKILL lpSkill = &(m_aJobSkill);4 {7 m( t% u( t& _- _% B, p8 y
if( lpSkill && lpSkill->dwSkill != NULL_ID )/ J- y" c# I& a
{6 K' [" ]* |: N& c
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 8 d1 Z! [. Y s( [1 c/ q6 X1 s( }
if( pSkillProp == NULL )9 D. h4 X2 B) ~, m. }
continue;
- w6 A0 Z7 K, T8 G8 T if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
$ \0 h& s6 ^9 U: y v continue;7 D2 f6 Z; F( {
lpSkill->dwLevel = dwTmpSkLevel;( f# t5 B% Q/ z* I# @
}! b" g$ S0 j9 U1 X6 z: u
}& [" R8 q: D" H3 @$ [, w. e2 p
}
( C+ l4 U* l1 A, ? else if(IsHero())" m, ]6 H4 [* m0 s; x8 A
{. w# ]8 @- ]5 G- k9 O
for( int i = 0; i < MAX_SKILL_JOB; i++ ) $ O" ~0 ?8 ^" P1 [3 l* @
{ * \, [" e) u* U/ K% @
LPSKILL lpSkill = &(m_aJobSkill);
2 \3 s9 V! p+ ^4 V( A4 H5 [ if( lpSkill && lpSkill->dwSkill != NULL_ID ) F$ \0 o, K1 c4 J. J7 p
{2 ?% ?: v7 t2 ^7 r: @5 Z" L8 ?* l
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); $ N/ f, ?0 O5 e) [2 _- P
if( pSkillProp == NULL )
d0 X2 _* V0 f6 Q1 { continue;/ F6 l$ `; N7 v8 S# L% b# E$ Z F/ ]/ Z
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)! i c: o. x, n4 H0 j
continue;
; z0 L$ q* G2 e3 ~ lpSkill->dwLevel = 5;
' n0 {. | u) }' R3 f# x+ H5 s$ y }2 {% W" t5 T% n8 S+ a9 @
}
# l8 @; s" y9 _4 v' b5 J }
/ H& Y7 S% T" y' T% [ else if(IsLegendHero())
) U$ ^6 q0 y( {' k" i( \ {# p9 Z$ v+ e8 j- N! Q- o" i
for( int i = 0; i < MAX_SKILL_JOB; i++ )
4 y+ t; f; }& r; c' N { 8 t; V# x* [/ y8 K
LPSKILL lpSkill = &(m_aJobSkill);
6 t& I; }: L1 T( i, [1 ` if( lpSkill && lpSkill->dwSkill != NULL_ID )1 Z; e2 {/ p6 F" U3 \6 ^
{
( u8 G, ?1 c5 f ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 8 \. @* F& o) h r. @
if( pSkillProp == NULL )# ]0 K) |+ g! ?* O0 i- W
continue;! [, G& V& X' N: D! b0 D
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
: Y( e: m0 f M0 \5 c: u, T continue;
. w3 |0 p8 H4 u8 L: Y, j lpSkill->dwLevel = 5;
+ i6 _; z" r. T6 d" r/ f }
- f. h" c9 l1 x- ` }
8 Q; G5 u4 U! E' @) \' A }
. G/ [/ [4 y. H( D3 i% Y7 A9 V#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans; b+ L9 `) ?4 D& b% |& v4 [
if( bGamma )2 Z( L; w+ i, i' K
{, |. {3 b8 B/ V! p
m_nExp1 = 0;
. |7 [$ B$ X! B5 e( y i }- Y7 C, e, {7 B) h- n% e2 z
5 \3 e; c& ?" W4 Y$ M$ |$ ]- R0 C ( (CUser*)this )->AddSetChangeJob( nJob );
2 J% u/ ^# j9 |0 r7 q" y g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
2 Q- `' z0 P) W, d3 W8 R2 h+ i. E* d& ]* L! M, x
& }* M- }' a- C# d) n Q+ ]
#if __VER >= 11 // __SYS_PLAYER_DATA
3 K2 R+ S# v' ~* K0 P g_dpDBClient.SendUpdatePlayerData( (CUser*)this );4 ?! D" S. @5 l( l; P5 e
#else // __SYS_PLAYER_DATA
M* @) l9 R7 h+ O g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
* H+ t& N" F8 F- b g_DPCoreClient.SendFriendChangeJob( (CUser*)this ); E, a* T! a; _; T1 w x" S8 b# O6 s
if( m_idGuild != 0 )8 v( x( @ G7 e7 Q3 E' k9 z
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
$ F4 j5 F1 @$ C" ]$ s' a" P) S#endif // __SYS_PLAYER_DATA
/ u( U+ Z+ E2 k4 y) _, N, X: U2 | SetHitPoint( GetMaxHitPoint() );
: ^7 ?' r8 z2 j0 U8 L1 ^3 v5 ]( ]! z SetManaPoint( GetMaxManaPoint() );
7 S- S8 s. Z+ o, t' } N0 s( \ SetFatiguePoint( GetMaxFatiguePoint() );$ T/ V: P- c* u! a
if( nJob >= 1 && nJob <= 4 )
+ q5 ]7 _. c( {9 p( x1 e2 e+ H {
& D2 |3 p* t4 ]# \) L m_nStr = m_nSta = m_nDex = m_nInt = 15;
, ~# a$ ]0 |; ?! o m_nRemainGP = 28;9 \& @7 N. Q" U3 p0 a5 O' j" F, o
}# W) R* x9 r5 A' }+ ^' _* {& R7 K) `
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
6 k' Y* P& n' i {$ N" z X& L9 t9 g2 S1 Y
m_nRemainGP = 118;
( z, U; B: | S* @2 `( q //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
8 b9 o7 S c% `' z/ \8 G6 z m_nStr = m_nSta = m_nDex = m_nInt = 15;( u: R, s ?- f, v9 Z& ^6 Y: Y
}
4 x9 i4 p. _. x2 l( R2 g! q& l% z if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ); |7 r) r8 @7 Z; h9 I6 l4 j8 }! c }4 q
{, {' \5 M% X" ^
CItemElem itemelem;
- b0 M3 u, D5 T$ r itemelem.m_nItemNum = 1;' f! a9 A1 z4 C% g6 t: F5 U U# |
itemelem.m_bCharged = TRUE;
$ A4 K5 c7 u! y e* d. K+ k BYTE nID;) V j5 [( x& u$ k
* s. Z0 Z8 v! i" p8 E/ T
if( nJob == JOB_MENTALIST_HERO ): q: h1 u& X% t2 U6 S- ^
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
( E% A' O0 n8 |5 q8 {( \0 I if( nJob == JOB_FORCEMASTER_HERO )
7 g; T& Q: A% D/ B! l, E itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
- d, `: P, z- |) ?0 Y* h3 S! T! L* o: j; k8 M
( ( CUser*)this)->CreateItem( &itemelem, &nID );
# ~5 b P t; v# M }
) u' w& n$ l+ ^! m$ h; e g_UserMng.AddSetLevel( this, (WORD)m_nLevel );0 q% g- d8 c7 f, l- g+ [0 c* R+ A
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );* Q* @! r G1 Z2 h6 ?
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
$ f. X( ?4 Y0 b9 r /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );7 `* h& C7 R+ H8 f/ a
( (CUser*)this )->AddTaskBar();*/ c" I* Z; [- j, y, l+ l
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
- ?, v! X& t# j5 u" V. T5 \#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
; v% {% t& S$ J( f* G ((CUser*)this)->CheckHonorStat();
; X1 N+ U0 v$ u: t7 M: q+ M1 Q ((CUser*)this)->AddHonorListAck();
4 |& A. @7 P+ ~% N4 I. @ g_UserMng.AddHonorTitleChange( this, m_nHonor);2 K2 j i, G6 K4 J, a# e) V! b
#endif // __HONORABLE_TITLE // ′Tà?
0 p: i5 n0 f3 Z }$ S' @4 g6 P/ }! a) T$ E3 B
#endif // __WORLDSERVER9 ~+ }! b' e+ {( L) R O
} 9 g' v( _, s, C3 s
& H( I I" M/ L* G然后你进入functextcmd.cpp并添加以下0 ~- ?8 y" t* ?- ~; t/ b8 R
Z" P! H+ b, K4 F代码:1 ], Q6 O" w1 {( C C5 F, ^3 W! ?
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )4 w, ?9 m& V$ R
下面插入
V P' V# ~3 nON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
2 l. g+ u3 J' G% O3 i1 B v
$ ]* E9 I# ]" e& P7 _/ Y7 G, E* r然后你去
6 p; \( t- ~0 I. F
. h( q) I2 M" B) V2 {, z$ ?代码:
& J. N+ E1 |0 s# @. D4 B6 s% |代码% u7 [" i% S0 t/ `, ]/ E
BOOL TextCmd_ClearPropose( CScanner & s )
' J9 x- [ v9 [) x4 a{
* u% h! w0 {. w+ J0 o; m#ifdef __WORLDSERVER
) {8 s: o; ~% K7 u CUser* pUser = (CUser*)s.dwValue;
7 b7 v* R' S' s6 | g_dpDBClient.SendClearPropose();3 U0 a+ a V1 |$ c+ @
#endif // __WORLDSERVER
' e4 f- I. Q4 E9 d2 s% {+ { return TRUE;
, V- H2 y. B( m}
' x/ u- ?( \' c: O下面插入
5 E* ^. |' Q8 b. E- Q1 H0 pBOOL TextCmd_rebirth( CScanner& scanner )
) X c& v, y8 |3 A7 N{1 V+ m/ `% q# j& I( l
#ifdef __WORLDSERVER! o& `; }8 u9 B J, B
CUser *pUser;
9 g% v% I B6 ?3 D3 ?# `: d4 ZpUser = (CUser*)scanner.dwValue;( u8 I" Z0 O# A; k! O8 z' l/ E
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
( V, Q$ C. g( B$ ]2 Q0 lpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);0 D9 I8 Z8 h2 a
else
/ k8 T3 ~# u. s2 ]" KpUser->AddText("你还未达到重生条件!");' @1 t% V) y5 E% s
#endif; Y* d" f) q& L2 k( ?! C
return TRUE;
3 g! X; Z' B4 n! G} ' _9 X: h% W2 g# g# O/ S9 y
4 f$ ]4 D5 ?/ ]1 l# [+ D/ [7 e- N. B
/ B( h6 s, v! Q+ p0 V1 E X+ E% Z/ h
3 ]9 b7 a4 _0 D1 h; {6 ~- ^: q1 [) [* }/ A/ O
|
|