|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
3 E) Y8 c+ X9 K. S1 j4 j+ T6 B8 G8 m0 |+ a$ |) [; f* A; a
Mover.h
7 D8 z; q% a C0 U代码:# t& j* L! Y5 _8 b0 t! k Y
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü& x# ?' ~$ s5 I2 {
1 q6 A1 y- r6 [: b
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 3 q5 U. o9 e9 K7 t
' c! `% G" F* }6 Y
然后你去mover.cpp添加4 E4 Y5 o9 I+ {0 S' R. ?4 \
% W+ T# K9 [8 n9 z代码:
" `: \- L% N& x3 ~void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
5 ]( t+ f5 `, o; q; i1 r4 j{, F7 Q( W) i8 R/ |) F* a& z
#ifdef __WORLDSERVER
: D5 q) @3 l. F1 z* w5 o7 r( U // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
, C3 C$ N# H, s- j: [$ a& G MoverProp* pProp = GetProp();8 G) ?6 S4 {4 l# V& N2 m9 Z
if( pProp )
- \3 f7 p6 H" U" s# j& A, y1 d {6 L# k% o4 v4 F9 B6 V3 n
if( nJob > 0 && nJob < MAX_LEGEND_HERO )3 {) ]) h. [, C7 `+ L5 B
{
3 O' U+ D3 @4 j+ d, e AddChangeJob( nJob ); f* `* y$ E. [6 D
}else{2 E* o2 O$ x) O5 y
return;
) O, }) |1 s$ x/ ?/ _4 C+ z }
& \9 s% v- E' q4 ^ |* v4 c int nPoint = 0;- U( b* c9 {- m3 ^ @/ t2 P
if( m_nJob == JOB_MERCENARY )1 P6 r6 s# c' g8 O* H8 ?
nPoint += 40;+ P: y6 Z" d2 p9 K" d
else if( m_nJob == JOB_ACROBAT )
. K& E; J. C: X' @% l nPoint += 50;% I c. u- h. {
else if( m_nJob == JOB_ASSIST )
) G$ U+ P& [; o& _0 H$ [% m( f nPoint += 60;
1 T8 z8 P& o& E, h) i* t4 _: @* ?; E | else if( m_nJob == JOB_MAGICIAN )
; r/ k: b, Z( w0 }4 V7 H+ {7 X) o nPoint += 90;5 V# b% p% \! G* u+ w6 L
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
1 B8 |" g, W- g) Z# m: S S6 D5 b nPoint += 120;# S) C3 M# Z5 p
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )5 \- n J& D1 O5 }$ S2 [! A
nPoint += 150;
8 S: K! J' k" o$ L. G% P( O else if( m_nJob == JOB_RINGMASTER )
! y4 R' X6 G, h. Q nPoint += 160;
6 X" p w. w ^ else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
7 S# L4 [2 F( A4 C3 ^! E) k nPoint += 180;
3 n# F2 y! u' c4 b else if( m_nJob == JOB_ELEMENTOR ); S/ c C) c! T1 p, t( g$ H
nPoint += 390;; ^. K0 A4 n7 x$ P" M
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO ); H+ }) @- r/ N% |
nPoint += 120;
" F% V; ^0 u6 l. T# w. @ else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )0 K3 G7 q5 f) y5 `* D
nPoint += 150;
& F( O9 B) j2 ]0 t0 j else if( nJob == JOB_FLORIST_HERO )4 ~- N2 W$ n. V5 I
nPoint += 160;
4 |: Q; F# g- ? else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
; ?! T8 `$ j" J8 a: p nPoint += 180;
- q( n# T- b/ q3 a! \ else if( nJob == JOB_ELEMENTORLORD_HERO )0 L: Y, _& l" C* n
nPoint += 390;7 x9 t6 [; c/ e" f0 i p9 ~0 ~
7 i+ f# l! \0 @% O3 b, E AddSkillPoint( nPoint );4 b/ S, {$ n6 U! M- |
m_nLevel = nLevel;
1 n n7 h% j9 e5 L* `% {8 }: p! P* _+ L: I4 X. ~# I
SetJobLevel( nLevel, nJob );% E. W. [6 _' N
m_nDeathLevel = nLevel;
& y* ^7 x& j5 g#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans" \; [4 G( Z. h8 v* P- C; }. @
if(IsMaster())
, P1 F% z' X; `6 ~ {5 ]$ t {
4 \1 z( w8 P) K int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
* j3 d/ ~, f9 t if( nLevel > 59 && nLevel < 72 )
* d- Z; W2 }$ F; O' q' V. }5 x dwTmpSkLevel = 1;
! i: e, `# }' a0 a else if( nLevel > 71 && nLevel < 84 )
* j8 ~, V+ s5 X+ G& r) r- ? dwTmpSkLevel = 2;( s- s P3 O5 P; o! Z( h8 ~/ \
else if( nLevel > 83 && nLevel < 96 )
. _6 H* L+ Z4 q/ z0 Y dwTmpSkLevel = 3;) d0 d; q# |7 P, D0 H
else if( nLevel > 95 && nLevel < 108 )
. B! p- h+ d% [( X& I dwTmpSkLevel = 4;; `( X/ R. |+ {; a4 ~. u; T
else if( nLevel > 107 && nLevel < 120 )2 M2 {3 l5 X+ X# m- ^6 J. A" q& L
dwTmpSkLevel = 5;5 s$ N( M( U) s
for( int i = 0; i < MAX_SKILL_JOB; i++ ) . P% u* G H2 N/ {& F6 i5 @7 Y
{ * p9 \" ^1 I! R0 B+ A+ h; b! C
LPSKILL lpSkill = &(m_aJobSkill);
4 q5 ^2 Z; X: C if( lpSkill && lpSkill->dwSkill != NULL_ID )7 G& K, W5 Q# C& h. \7 Z
{7 R' B! m4 Y. r& a3 y
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
$ N& e) |! J4 ?: k* r if( pSkillProp == NULL )
+ ?9 O; _- M3 O, z continue;+ G6 `+ T: K$ f+ a/ d
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
j: C1 z9 A, I$ Z continue;# `; o) q$ p$ Y( p% b2 D
lpSkill->dwLevel = dwTmpSkLevel;' ~& i v" H- ]& Y4 \
}
7 [* z# @' m2 K4 t2 g. E# ? }
! g* B9 W# r) G- O! A7 M }" s; ?: I# x# a) O
else if(IsHero()) p4 M- M& S, p
{: o8 S9 i9 G& e* @4 S- O6 j
for( int i = 0; i < MAX_SKILL_JOB; i++ )
: j* ]( n# Y/ F5 A { . S/ z2 v: z x
LPSKILL lpSkill = &(m_aJobSkill);7 s5 O6 m2 g) a# J3 r5 u
if( lpSkill && lpSkill->dwSkill != NULL_ID )
, j, b6 j& m, u% L {2 Z8 m9 F' Y0 a) K* l
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
: V0 P( E$ t$ j: A# m# D% R if( pSkillProp == NULL )
7 |+ v" d2 I9 N* @7 z3 a continue;+ y4 C9 M; `" F& V$ R0 G
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)- u4 U9 ]( h8 }1 H
continue;2 w6 i; Y. f* \
lpSkill->dwLevel = 5;
. W: t' `9 W, }7 L/ Z5 n9 @ }6 O2 e) b2 S. `# u
}
, K0 U% s" M# @/ B- E2 x }1 q/ q8 ~1 F- C
else if(IsLegendHero())
+ ~5 k: o: i3 O0 {7 ~+ R5 D {
5 ~( C0 Q7 t2 z' b7 o6 Y W7 Q& R for( int i = 0; i < MAX_SKILL_JOB; i++ ) 4 V9 I: a5 J' ]7 Z0 s1 T' B# x; J4 K
{ ( g" L; V- f3 ^ s
LPSKILL lpSkill = &(m_aJobSkill);$ S. v* a# D) _/ a) ~) G
if( lpSkill && lpSkill->dwSkill != NULL_ID )) F0 {5 ~0 p' ]9 q) \2 {6 c
{2 d$ o* Y* K! ~2 H. c* ~# M
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
2 e4 T: X3 O, c, ?! C if( pSkillProp == NULL )- l$ j( c) T& @- K, [) E
continue;& l* s* x3 ~* I' N
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
. U& v, }% z: ]5 f. o. [' {. D8 t continue;
) C3 A* v% w& d( O: l' |& h lpSkill->dwLevel = 5;
8 X6 w. F5 {: _ }
2 [8 }. u2 j/ ~7 q }; ]- g, a' g* Y O+ I5 B
}
! a, K6 J, Q( B#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans4 e- I% w$ ?9 e5 R# {( x7 u
if( bGamma )8 Y) }7 M0 u8 d! K5 _
{
$ h! R Y0 K$ S: o8 B* t% m- k j m_nExp1 = 0;
, ~4 b, L7 R- N, F( l; T3 Q% C6 E! U }
9 L% Y/ K; Z: S- A+ r5 c+ ~/ S* `$ O b p! b+ x+ a$ H" j1 K
( (CUser*)this )->AddSetChangeJob( nJob );
5 `5 s6 y$ F9 t0 K g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
8 X- p8 z" h* V9 z- c+ U; i7 @* B3 e/ g1 P# C4 Z8 V/ q
$ w' Z/ {7 W% K( e+ `- F/ y& w! S
#if __VER >= 11 // __SYS_PLAYER_DATA3 B6 \& m3 r& E2 `9 z, {
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
% V" {6 M1 Y( C#else // __SYS_PLAYER_DATA, M0 r5 U' h# T7 k W# [# l( d
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
. {/ N5 \6 W( T3 n, V/ } g_DPCoreClient.SendFriendChangeJob( (CUser*)this );' D- \* T( K( Z; c1 i+ N
if( m_idGuild != 0 )
$ `5 [, H( q4 r% P$ w+ B" p g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
# C& M6 w( c5 U3 X9 f#endif // __SYS_PLAYER_DATA
4 M; ~4 F! \9 D SetHitPoint( GetMaxHitPoint() );2 F) ^! _' ], R3 R" T1 a/ Q
SetManaPoint( GetMaxManaPoint() ); H4 }! ^; {6 D( U: l2 Q+ q
SetFatiguePoint( GetMaxFatiguePoint() );( Q1 G$ {0 S, f
if( nJob >= 1 && nJob <= 4 )
" J" {# @4 P6 }4 ]8 T, s2 f {) U2 m* }+ u8 b5 n& x
m_nStr = m_nSta = m_nDex = m_nInt = 15;( ^6 Y0 h- T8 {% }
m_nRemainGP = 28;+ m: b8 D$ e) c( B
}0 S5 m, |9 ?* l( T0 b
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )& X \) o6 W0 u5 b1 f: Y
{1 @( D U; P6 q6 L0 J" ]/ Y
m_nRemainGP = 118;
* | x$ y" G. e( y //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;6 x* H3 n9 Z& i
m_nStr = m_nSta = m_nDex = m_nInt = 15;
0 }9 H" y2 q! g6 Y# q }( ]1 M: K' R* ~+ o
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ); ^0 Q1 X# Q! j+ F0 i3 W
{ q+ w% t( D3 U d
CItemElem itemelem;
+ [9 c& D8 N1 j/ ? itemelem.m_nItemNum = 1; v# {& ~ d% u( k! x% Q8 h1 J6 _
itemelem.m_bCharged = TRUE;# c: e# _5 M' |" U. }
BYTE nID;
/ Z- M. s: u* F. f6 F! U$ H
. A. T! G2 C c* ^. c if( nJob == JOB_MENTALIST_HERO )$ \2 c- n/ N7 A/ u# w
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
( M! U$ \7 i6 V M% R6 T if( nJob == JOB_FORCEMASTER_HERO )$ D' o w$ Q& d
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
; r+ S- C4 s/ C
, D9 u3 z7 [: W" q( d$ Y+ P ( ( CUser*)this)->CreateItem( &itemelem, &nID );
9 z! U6 R/ c8 G" y/ F( C: Z+ I }
1 _& g/ U M! F; b3 \ g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
/ S6 l- E% r5 j2 R2 Y6 y ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
3 p" g" L1 Q q ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );6 c0 y) Y6 D! W- `* ~
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );+ _* k1 ~ F( V/ o( M
( (CUser*)this )->AddTaskBar();*/1 L, `* r3 U8 B
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );4 ~& `9 j, u* u
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?$ F# T5 v* N. B( J' b& {- u9 n
((CUser*)this)->CheckHonorStat();. N, @" b! q* C
((CUser*)this)->AddHonorListAck();
; M/ a. k% o! E% N5 e g_UserMng.AddHonorTitleChange( this, m_nHonor);# `! o3 e3 e7 n) ^0 ~
#endif // __HONORABLE_TITLE // ′Tà?/ W N7 D6 D! f. z4 J$ o; W
}/ t# O* ~( l( H
#endif // __WORLDSERVER
Y' x* m/ G. {, C/ a} 5 b. {* e, u; z5 n
+ n3 m/ s5 n3 l% X# m然后你进入functextcmd.cpp并添加以下( E3 \9 E0 N+ m
4 r. N R& {! p5 ?7 w1 q2 x0 D8 ?代码:
1 ~+ j" v, \: W; i+ _" uON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
# [$ u. Z# {/ O下面插入
# o9 A# @* U* n& P [4 P PON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
7 B7 b& U6 a6 `1 Y, r3 O
8 @5 e1 N2 T- l: z, l' j" g7 e/ q然后你去
* q0 q2 f8 z# @* g6 [' H: e) Z/ F( A* f7 P: N) d/ s
代码:
' n) r; f+ V9 {- D# f2 n代码) c6 V( B2 w: Y7 H* Y
BOOL TextCmd_ClearPropose( CScanner & s )
% W" b- i3 ]- n* x{
7 p; l- D! o2 T. N0 w0 I#ifdef __WORLDSERVER' g' k! K, y% y
CUser* pUser = (CUser*)s.dwValue;
! J h4 R7 c, h, T g_dpDBClient.SendClearPropose();
, [+ J) d- B% a; @#endif // __WORLDSERVER
4 e6 c5 C/ O6 y. I7 u" S return TRUE;
4 `, q8 f. ~. B4 {$ _7 m6 x}
; x6 e: }+ d+ u! K9 K( J/ D+ M( p下面插入- M, V$ w: ]! V1 K, q4 Y
BOOL TextCmd_rebirth( CScanner& scanner )
4 a5 S/ O$ ~3 `6 c$ t: p) P{: ^( t6 [/ O: M, n9 K6 E: s
#ifdef __WORLDSERVER6 g- |: s4 G+ n ~9 |4 v2 x* Q. ?) \1 V
CUser *pUser;
- z! E8 ?* m0 wpUser = (CUser*)scanner.dwValue;( G& J, f2 R2 z0 {
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
# [ a# ]6 m! R4 B" a; m8 H% j lpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);& b1 H9 c5 w- I2 c& L; B
else
* `. ^( p$ A9 L+ f6 R( epUser->AddText("你还未达到重生条件!");9 P5 g }; {7 I C0 _0 U! l
#endif" V4 j5 B7 d( S1 O
return TRUE;
* y3 d+ w' f% ]9 ]}
0 o7 @* c2 N6 [; m
5 \3 X( r& z' W4 O8 L( W- F' i' h8 b" c: v U9 I1 J
9 O+ q+ V6 {* N8 g4 l& ^% T1 D4 p* }
|
|