|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
$ w, S/ w9 e0 g( M2 }, q& {% [* G; L* [$ l; z
Mover.h
$ l* Q+ l& U* V- s& W$ |- Z' j代码:- O# }. j- g+ V. v8 R# I
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü, ]4 Y. ]% |; b$ F9 Z
. u/ m6 w- D1 C/ ]9 G下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; $ X( }1 P# S1 o9 t
; P' z! S2 `- H( D! g, g E然后你去mover.cpp添加
8 v8 U$ E6 C O* L4 f5 o x! Q! V3 R. B$ b& o) Z: I* m# M
代码:
! k% Q" Z# I6 T, dvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ); \4 ?% T5 u; l1 s* c7 v+ ^
{/ h: S' R7 d( u2 [& D, a
#ifdef __WORLDSERVER, t$ U6 Z$ `9 b2 ?7 v4 ^/ u
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó4 `7 b e# s. W5 f+ C
MoverProp* pProp = GetProp();* J9 s3 z8 i/ I, J5 \$ d$ o$ Z
if( pProp )! k" q/ Z7 p5 Y' k! |
{
7 b, O. n: Z5 t3 w8 x if( nJob > 0 && nJob < MAX_LEGEND_HERO )
, \# c+ B( Y; k( _, |0 N$ o8 E9 m {6 x3 z3 Q+ h+ E7 Q- N# Q
AddChangeJob( nJob );
( m- ?6 i7 P4 w9 e7 u( z }else{
2 G3 C# @3 m' Q2 _+ | return;
5 e: s: s- E c) e, D1 P }: F. x$ v! B% h
int nPoint = 0;( B- x! @7 i m7 s9 a+ s
if( m_nJob == JOB_MERCENARY )8 {- J) f+ L* Y$ P. F
nPoint += 40;3 G% Q9 ` k! Q; G1 |
else if( m_nJob == JOB_ACROBAT )
+ y3 R) ], C: z+ Y( E nPoint += 50;
9 H$ j! C6 z4 u else if( m_nJob == JOB_ASSIST )
' m/ Y( @9 R2 k* K# q nPoint += 60;
* U: A! h, F; r& f/ h) C else if( m_nJob == JOB_MAGICIAN )% d7 t0 H% A: u$ I" |
nPoint += 90; j$ h& K& r& o% f, |) e) f6 @
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )+ m# y3 n3 _# l, [
nPoint += 120;
4 |' G. t) F" Q, ~) } else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )! M8 O9 K1 y$ y7 v/ `+ n
nPoint += 150;
" {4 i# J: C6 y0 L5 [ else if( m_nJob == JOB_RINGMASTER )
- u- \/ X- U- i nPoint += 160;5 d$ ]$ V. o4 J2 ]0 U* D
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )% p% ]& i1 s2 `# z t
nPoint += 180;
9 j9 H9 U& z K1 y& h# @ else if( m_nJob == JOB_ELEMENTOR )
; z- g) q: u- e( A nPoint += 390;
* q& ~% F4 C) S/ W; {1 r else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
9 \$ s) f; h; N nPoint += 120;
9 f/ N$ A+ s' a else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO ): l9 |8 T2 Z; r& ]) G6 O7 P8 T
nPoint += 150;
1 x7 }5 T2 h$ ~% R' y else if( nJob == JOB_FLORIST_HERO )) ?" i& J+ s) q2 k3 z
nPoint += 160;
, l! i% b1 |7 s1 Y3 N else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO ); ~; {& d$ ?7 a' f
nPoint += 180;
7 u; C4 o& K( k$ q+ s else if( nJob == JOB_ELEMENTORLORD_HERO )4 D$ ^, N7 h# Q
nPoint += 390;1 W2 I( A9 t/ N" N5 P% Q- w
" s9 e3 z& V$ d) h AddSkillPoint( nPoint );: O2 }. a, p% {8 E
m_nLevel = nLevel;: _5 P( \' V" f! T$ T: [
2 q6 Q0 B; M! K- l SetJobLevel( nLevel, nJob );
# i. a. h& p9 g m_nDeathLevel = nLevel;: j2 e7 t/ H7 F/ ^0 W; t
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
' X! I' w" |; _9 l! J if(IsMaster())
9 l( q: t. u- Q6 U0 E {
, @* K& @/ G1 M9 q. W int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
& W+ l- O+ V" j0 `8 r4 C if( nLevel > 59 && nLevel < 72 )
- t/ M7 ?7 v7 y; o dwTmpSkLevel = 1;
5 t L5 o) x% [* H9 h) m; j else if( nLevel > 71 && nLevel < 84 )
1 P5 p; y+ N, G1 ~; c dwTmpSkLevel = 2;
9 t$ G, A, p. ~, n8 H1 f else if( nLevel > 83 && nLevel < 96 )& L) J/ ?( B8 A+ j( z& | U
dwTmpSkLevel = 3;
! Q" Y) z9 a2 s7 H2 v else if( nLevel > 95 && nLevel < 108 )
9 ^! D1 Q' S5 L( ^9 R; Q8 `2 q9 N dwTmpSkLevel = 4;/ b' \' _* ^' Z) ]
else if( nLevel > 107 && nLevel < 120 )) O9 t6 u/ ^" a8 T8 j' T7 {* d
dwTmpSkLevel = 5;1 m M6 G4 `! H9 H6 \. K
for( int i = 0; i < MAX_SKILL_JOB; i++ )
5 E) Z' d2 K+ i1 H; Y: I7 c: E0 E5 L {
; m/ U- U% g, v) G8 ?9 s LPSKILL lpSkill = &(m_aJobSkill);
3 I* i4 s7 ~2 M$ f, w& [0 g if( lpSkill && lpSkill->dwSkill != NULL_ID )
, I8 M3 g- e" U0 N) |4 f {, C. Y+ A# W$ {6 c/ _
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
$ m9 x4 O# P6 e: k3 o) f# k# L if( pSkillProp == NULL )1 R; _2 O. s. N) @ l* A
continue;0 x" H, f8 ?) V$ W G7 m- r" C
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)+ c& L$ Z' Z" F
continue;& X7 ~( c. {. J/ @/ O+ H9 l
lpSkill->dwLevel = dwTmpSkLevel;
6 s# y5 L3 r( f+ o# x' ~( x }
" t3 X9 g8 J" k% V7 ~; ~0 {3 P; D4 k+ F }; b) F' W( {% a" p/ e. J( ~
}3 t* u+ A3 m! j- W4 E3 S
else if(IsHero())8 l5 W; j; b% c; `
{
/ C6 [$ i9 a H1 d' m for( int i = 0; i < MAX_SKILL_JOB; i++ )
" I! n! v+ z9 ^# V! a { & y! l# t- }; \8 T0 K
LPSKILL lpSkill = &(m_aJobSkill);7 E. k" ?0 H' V
if( lpSkill && lpSkill->dwSkill != NULL_ID )7 [8 w( ^+ h% N; C! T
{4 o- I& b9 ^! t# Z
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
4 ?9 t t& X4 ], `' s/ ^: @/ i if( pSkillProp == NULL )! s' p/ h. ^1 V2 u; k, u1 m
continue;
0 q3 v9 Z- j( E2 P; Z if( pSkillProp->dwItemKind1 != JTYPE_MASTER)* \0 Z6 T) O) I" T5 p" \
continue;
0 u6 ]1 P: g: w5 z9 p lpSkill->dwLevel = 5;% z. d- b" P. P7 K6 p% b
}, D1 W! w ~1 u/ m( f+ w
}
0 `: |8 R% Q. e# x1 z$ y }4 Y) o b6 r- g" S t
else if(IsLegendHero()), X0 k. G2 v& X a, B# _7 V
{7 E8 H1 v' m3 X8 e8 ~6 P! k. @
for( int i = 0; i < MAX_SKILL_JOB; i++ ) $ {7 h3 E6 }% W' K
{ ' ~3 i4 H' \ A
LPSKILL lpSkill = &(m_aJobSkill);
) T; E; ?+ p% L4 d& O$ G4 e5 o if( lpSkill && lpSkill->dwSkill != NULL_ID )+ [ z) @ m( t( i
{
9 A0 k* l- ^% G) \" N9 i ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ; Q8 O- d- w8 v1 P$ y8 Y. n
if( pSkillProp == NULL )( U) I: p* y9 M/ g+ Z! [0 O u
continue;! g. c+ `5 @7 R6 I M" Q4 W
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)1 k6 `. o: b% ?" W: h4 u
continue;0 p6 \& k1 k, @- w/ _' h2 Y2 m
lpSkill->dwLevel = 5;
; n1 J( X0 M9 A ]! g }
5 _6 S! Z! P# T( m }
+ P8 Z( K4 G5 i: \' F, u" { }
) t9 C6 M8 \* F( b, z#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans$ Y0 }! B- {! N4 X9 Q K- X; a j/ w* V/ q
if( bGamma )
5 X# r! E$ q+ d1 g/ J, n {
/ b2 F6 V9 e8 e+ ], }7 Z m_nExp1 = 0;
. n7 X" f. I6 n" x6 L5 A }: c1 ^- @% B& O0 _9 l3 r
3 ]4 s8 a# c8 s3 v( r# Y ( (CUser*)this )->AddSetChangeJob( nJob );; ?, O1 H' j k2 M: d
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );( ?" k0 S r& ~# h) r6 \7 c p, _0 Y
, v9 X" T) x5 }* S, L% V0 H. o: L( V- p9 f" b( a
#if __VER >= 11 // __SYS_PLAYER_DATA
: @8 U4 w/ d% W) e0 W" q g_dpDBClient.SendUpdatePlayerData( (CUser*)this );! |8 _4 S& u7 P3 ?
#else // __SYS_PLAYER_DATA5 r3 W5 ]7 n- D: R# Y
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );) h. D: k2 M6 V. h( n; ^* r" i- i
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );# @) ^9 n/ H4 ~+ k4 ?
if( m_idGuild != 0 ), M" I. c5 ?9 T9 B) o
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );+ Q3 s: k$ g7 t( c# v# Q) ^& ?! S
#endif // __SYS_PLAYER_DATA$ f$ p) w! z- W3 S, P2 {% h
SetHitPoint( GetMaxHitPoint() );
; s: O7 B+ Z2 P' W* ~ SetManaPoint( GetMaxManaPoint() );$ R. `! C! p* D3 i) D/ ~1 c: r0 o" O6 S, k
SetFatiguePoint( GetMaxFatiguePoint() );
* u3 U% Z$ O" y ] R( e if( nJob >= 1 && nJob <= 4 )% |& o1 o+ G) I+ Z0 a
{6 Z+ E# N- g# S7 D; j, s
m_nStr = m_nSta = m_nDex = m_nInt = 15;( I2 K3 j, x9 E
m_nRemainGP = 28;
7 k" y1 A- G5 _; m& k }
6 a4 O1 C5 }! V# r0 L/ I1 h5 A if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )) ^7 j: h( d @$ h4 @* T( ]) S2 }
{
) `# j* X9 q1 f" i3 y- | m_nRemainGP = 118;
7 a! V9 o( ^8 \/ H! O! h9 }! J //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
7 @$ j) P4 H, m1 O# y6 [7 c m_nStr = m_nSta = m_nDex = m_nInt = 15;% r+ a4 I$ [, G m, ~2 {
}
) H# U/ U0 |# J8 Y$ w if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )& q+ x& X% h. \7 @! k
{" G/ R) N& M, W8 H
CItemElem itemelem;
4 k" h( v4 n* t; y itemelem.m_nItemNum = 1;0 R: {5 R1 @* e0 h* r) Y# a9 _
itemelem.m_bCharged = TRUE;
$ Z& w% l# K) L" ?: n BYTE nID;
* a% @+ O1 ~4 f. \
' y) P ^$ j* u9 [: Q$ b. D if( nJob == JOB_MENTALIST_HERO )
; ^% l* y1 `6 t: u itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
+ t" [9 Z: ?& {1 c. `" [: ~2 M if( nJob == JOB_FORCEMASTER_HERO )
9 V) E- p' h% v% b5 m" n itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;, j" J" [2 ~( Z& B! k; \6 r
7 o! }) f8 w4 i# N1 C ( ( CUser*)this)->CreateItem( &itemelem, &nID );
5 P1 ?8 c9 T5 G5 R2 l# z% y, s }
$ s. E" r5 B- V z1 r: z* L# ~ b; u$ m g_UserMng.AddSetLevel( this, (WORD)m_nLevel );2 y. e, z7 A- R' Q/ y$ F
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );, u2 s! V" `) i2 f7 x. Q/ Z. Y
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
+ ^' }. [$ c* _% K( m- }" s. n8 O. ] /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
& U; Y8 f! U$ P ( (CUser*)this )->AddTaskBar();*/
5 {, X* }0 r1 `- p, N2 o ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
5 V2 r! j0 B! ]2 k# A' ^7 ~#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
/ ?: v2 D! g+ u3 J ((CUser*)this)->CheckHonorStat();
1 `+ n+ @* R1 u ((CUser*)this)->AddHonorListAck();( R$ B) k* c) D$ G' X" O/ }. H+ j
g_UserMng.AddHonorTitleChange( this, m_nHonor);
0 h5 M( g4 }. Z& z3 |( H* r' L#endif // __HONORABLE_TITLE // ′Tà?
( A/ w# ?1 Q0 f }
" Z6 D! _2 w0 t#endif // __WORLDSERVER, c8 w; C5 T$ R: W5 r; Q8 B" E
}
. W- n8 |) W+ G( i1 x3 q5 O$ Y* E. r0 H
然后你进入functextcmd.cpp并添加以下
# y# y8 h: V7 j2 I6 H
" N- x2 {2 n @+ r代码:, N) [. d+ i6 o- A1 g6 P* F6 M8 `
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
. J I. Y: j1 r- }下面插入
2 D2 } r& V% A' ?3 p0 `ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 2 }3 S+ [7 r6 I+ N0 k% M" Z( }
/ Y9 `+ ]4 [/ F8 M7 R' U然后你去5 `/ v4 ?( z& p% j: }! R$ I/ y; A+ G
. A! a, r" X( `* M8 c代码:5 F S P2 d" k+ Y! H1 ?
代码+ f9 \/ X! i$ S. r5 d+ L6 P
BOOL TextCmd_ClearPropose( CScanner & s )
* @! a1 h/ ^9 E) p- D{
8 K3 {2 O$ v3 _7 u- A7 G#ifdef __WORLDSERVER8 I8 Q/ r7 s7 [+ o& O/ p
CUser* pUser = (CUser*)s.dwValue;+ w3 Q: B, H2 v& G+ P
g_dpDBClient.SendClearPropose();
3 ]* S1 O. s7 g' L N( u* E#endif // __WORLDSERVER0 f K. r- M5 [$ L E1 s2 K3 q) A2 ]
return TRUE;
5 O [0 W" X# H% ?4 D}1 `1 m. Y/ Z# f" @$ T: x0 e
下面插入& `2 M# l# Q4 j) u, |
BOOL TextCmd_rebirth( CScanner& scanner )
$ ?- M% F/ ?8 h( P& w- [{! |' Q# d$ V% ]" o/ u
#ifdef __WORLDSERVER
7 E0 _5 }6 g3 C U& m! L$ QCUser *pUser;, L$ m* F, s7 ?. ~( U
pUser = (CUser*)scanner.dwValue;
- T9 m8 y: D7 `; ]if(pUser->m_nLevel >= 150 && pUser->IsLegendHero()): \* w: j# c& c/ G
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);9 n' \0 @/ \5 X# y1 @
else
4 P+ l ^$ c: [7 B; }' l5 |$ u# EpUser->AddText("你还未达到重生条件!");
) v6 h$ D* y5 R- P* F7 G0 ^4 C( \1 o#endif7 `4 L5 U3 M, I4 s+ ]$ n
return TRUE;
; b4 F7 e* v# j- C U6 I}
. q4 Q$ C* n l# `& s1 Q/ w' D# j
- z! ]1 f4 G3 M" r$ D8 u/ ~
' \' C* {( W; r- R1 S* Q
P" U O1 @$ I
3 L5 v! Q4 r2 P" m/ c |
|