|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel) u# Z2 P& M2 e
. z, }! e+ G# N d; n* v$ w( ~
Mover.h
8 x3 A8 Y0 }& \3 M0 H代码:
: K g- o6 Q: j( B8 N7 ?. N/ Z找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü8 n* g& i( R/ r% t- O
5 i8 e6 l# u. f5 B0 T3 x下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; + ?% X' l/ g) b3 f4 U- G
4 V2 l, y3 \5 Z5 t/ `然后你去mover.cpp添加
+ b6 {- G, G i: s+ \8 m7 @' ]. g' I- q: A$ W
代码:. D8 T% ?' K( s5 T# y& h# S; [5 Z5 J3 Z% [
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
1 f! A5 W& [# y7 {$ ~2 P{: n' K4 P- p1 p5 H
#ifdef __WORLDSERVER9 W- U9 W) n K) Z2 `2 L3 w
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó ]! l( j" D1 {
MoverProp* pProp = GetProp();, Q( y T6 s. p! g
if( pProp )
* N8 l7 H: T4 `3 o {
2 E- l2 E3 q9 q8 S7 S if( nJob > 0 && nJob < MAX_LEGEND_HERO )
3 y0 F/ X( l' d {7 J# D# p$ D: ?3 Q* t( h' d' b
AddChangeJob( nJob );# G3 q7 j' a4 P: |# H/ {- Y7 V
}else{
6 T* }! F3 [* J. e1 w* o return;/ C: m7 \ I+ y0 H4 N$ A
}- A8 z3 d! a3 z1 d
int nPoint = 0;
Q+ D4 D, M: T) h# Q7 ? if( m_nJob == JOB_MERCENARY )1 S, F* B8 ?; y6 _
nPoint += 40;
; ?2 t" v5 y/ B( `2 i else if( m_nJob == JOB_ACROBAT )
1 @! N! d) o7 ^. D% ^ nPoint += 50;
& Q6 R7 Z5 `; `4 O" D8 e: M, Y else if( m_nJob == JOB_ASSIST ) P2 {( }+ X& J! [
nPoint += 60;
' ?8 P. B+ y, i% q else if( m_nJob == JOB_MAGICIAN )
i( W( n4 A( H nPoint += 90;1 }" S- U3 q- J# J$ I) u5 T0 _
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE ) u2 v0 y7 d0 A- P8 q$ Y
nPoint += 120;. u1 p( b0 Q4 ^& e0 v
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER ) p& b1 u! U0 Z0 Q7 V
nPoint += 150;
5 h( ^, E" i2 b! A9 Z0 W else if( m_nJob == JOB_RINGMASTER )
& s7 w) p8 @; Q x4 i nPoint += 160;
* T0 Z# L- D! C! c2 W- }; v0 Y else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ), L( ~$ M9 ?6 n
nPoint += 180;) z5 p' o8 G; H" r6 q. A) J" ?( @
else if( m_nJob == JOB_ELEMENTOR )- [6 x+ _; M" _; C p! z# p* }" K
nPoint += 390;# i9 a; H8 E+ d' ]" @8 i
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )! {. h1 O) j( P0 m
nPoint += 120;- ^3 Y! @* D# U+ W& Z; M. U
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
0 q+ W( @0 g- h2 {8 q1 h nPoint += 150;* G; A- s7 ]; ]; y3 {
else if( nJob == JOB_FLORIST_HERO )0 G c7 A2 j" W* K: ^( g
nPoint += 160;
7 v3 q3 a. C/ e else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
/ t) J. g" A" x G" u% \ nPoint += 180;- E1 D; B2 Y5 t8 l
else if( nJob == JOB_ELEMENTORLORD_HERO ), |7 U3 ]. `4 R$ ^
nPoint += 390;4 |: {7 d3 P8 h5 P; l' c2 S9 A/ ~
1 Z6 g4 g4 ?+ E7 t% b: b1 x6 y
AddSkillPoint( nPoint );
: ~2 ?7 b0 i6 v# y8 }$ R/ c: O. f9 ^ m_nLevel = nLevel;( A2 |: g2 @8 G. o0 c t
, H. [; ~7 a" w- Y+ }" S. W" F5 y
SetJobLevel( nLevel, nJob );5 d. t3 }! { w$ B4 E4 S
m_nDeathLevel = nLevel;
8 y" P& z7 O5 q, _& _1 j' y& d8 Q% ~#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans( @6 ]9 ], n6 W2 @/ u/ D
if(IsMaster())
$ t- y3 Z. i) x {
/ C: o. }$ Y% s' E: e- e5 ] int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
u' P, h9 ^2 `2 h2 y1 \( R if( nLevel > 59 && nLevel < 72 )
$ ~0 m& @' P B( B' c- e dwTmpSkLevel = 1;' P8 l2 Y' }/ N
else if( nLevel > 71 && nLevel < 84 )7 ?8 D. l" M- B) N7 O2 {
dwTmpSkLevel = 2;. z2 X& L% |- w6 y9 k/ {( i
else if( nLevel > 83 && nLevel < 96 )
D1 i4 Y1 h! L& z) | dwTmpSkLevel = 3;
3 @2 ]- z- h. O. h+ _% U else if( nLevel > 95 && nLevel < 108 ), h7 U1 d6 t- Y9 V8 q6 v
dwTmpSkLevel = 4;
3 m% w8 D/ v, B" ^8 @% |0 A else if( nLevel > 107 && nLevel < 120 )
' O! H/ Z% a: a0 p4 b# H dwTmpSkLevel = 5;, x1 ]+ q& }- z# c7 y9 E) \
for( int i = 0; i < MAX_SKILL_JOB; i++ ) # R: T8 t. S$ N* W# [; c0 b. h9 F
{
8 s, o: Y" ^8 u LPSKILL lpSkill = &(m_aJobSkill);7 h+ t* D# ]; q# f
if( lpSkill && lpSkill->dwSkill != NULL_ID ); v6 G6 w# \. {9 }+ c3 B2 J0 N/ G# y
{
7 c- u* H7 R9 n8 J( ] ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); , B* ~- S0 b9 }+ f5 F! N) S
if( pSkillProp == NULL )
0 K. S) @. ]3 A6 ^ continue;$ Z; x0 d. F) |. C
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
( P' k) P! |( W continue;7 p4 a# d! w1 b3 ?, W/ h2 L7 p
lpSkill->dwLevel = dwTmpSkLevel;* K/ D# B8 c% Q5 z, H% X+ H* ~
}6 |& |! n2 D4 y8 r0 y' L9 O
}
: Z9 [- ]! W5 y7 a }- |! n2 A/ q" |) U( F$ Q S, X
else if(IsHero())
' u$ V6 N! U) h( p {( w( O2 x( M c" S) q% `0 p
for( int i = 0; i < MAX_SKILL_JOB; i++ ) & B9 F+ @+ R! k( e8 E* W+ F
{
8 P% M3 O4 X& N LPSKILL lpSkill = &(m_aJobSkill);
$ I% T! t4 Q. G% T8 _0 E8 M if( lpSkill && lpSkill->dwSkill != NULL_ID )
: t0 l% U8 l& `4 i& g, f {3 m4 K! s1 m1 n5 Y2 }5 O
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ' D: X' W' j0 m, d+ y
if( pSkillProp == NULL )
4 M* w7 x) u2 V3 E) ^ continue;
( A/ N2 B* b5 t1 j$ S ]6 {( Y if( pSkillProp->dwItemKind1 != JTYPE_MASTER)& r' s8 [' ?+ T5 _9 J: W
continue;
7 }- e5 C0 A2 h. n lpSkill->dwLevel = 5;1 m F0 \# y/ W- }
}, j% g+ ^( U' _* U. M. B" J
}
' r. s( Z$ s' m; |3 ? }7 l4 S3 B- L2 P' {. ~3 a+ l
else if(IsLegendHero())
/ f4 `2 _- P4 n* F4 m4 F! } {3 e- h4 x0 L' H3 s4 o9 W) ~
for( int i = 0; i < MAX_SKILL_JOB; i++ )
1 P6 M2 N0 c+ c9 s! j( g3 j% Y {
* \0 M6 i# K* b J4 l7 N7 e7 N' D. ?2 _ LPSKILL lpSkill = &(m_aJobSkill);
: h/ `0 e% j# u+ { if( lpSkill && lpSkill->dwSkill != NULL_ID )6 U0 Y* h0 V4 i, O' |" G
{- B' j) N9 U1 |" A- W3 M
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 1 x" t5 T& C$ i5 j6 Z) ?
if( pSkillProp == NULL )( R. f) p9 M' L/ X$ Z; v# u
continue;$ G' X) V6 t7 W" w, H
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)$ Z0 [, X8 f- H1 W; ^
continue;
" m( `) S) I* H8 N' e lpSkill->dwLevel = 5;5 m" E$ ?, L" s& ~
}* `2 q" d, V+ ?, W; `& H m+ q
}! A2 S, f: F. O& z' r5 S% n
}
3 `* B* y+ Q! [( S' S: ]#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans9 M! e! h0 H$ f5 e0 V
if( bGamma )! t2 G: k$ o0 a5 {; C8 c6 w
{/ J9 h3 l. L( z
m_nExp1 = 0;. [- N' ^. s* `2 p, O6 @3 Y. ]
}5 r- W" n2 }- d) ]1 I0 Y z
" O3 D( U8 c8 x' D6 I( E6 M- t! L, `
( (CUser*)this )->AddSetChangeJob( nJob );
( w+ x; R; z t6 _% Q g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );, |( Z" g! v1 D
( N# O+ K+ N/ J. V5 d2 z* Q
) r( X4 Y# V: L+ l; C#if __VER >= 11 // __SYS_PLAYER_DATA( C1 M* m; f7 n9 \& V' X/ n
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );5 ]) p1 N$ k( O+ j
#else // __SYS_PLAYER_DATA
8 T; L( R1 Y8 I( G m6 j g_DPCoreClient.SendPartyMemberJob( (CUser*)this );! X. j: c0 M/ X9 \; a
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
: ~! S! p$ Q! h if( m_idGuild != 0 )
2 I/ S2 b# M4 a0 v* Y5 W4 c* p) u g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );0 M ^1 x" R: S9 {% l1 R4 \* v, E
#endif // __SYS_PLAYER_DATA- h& [ \2 D7 T
SetHitPoint( GetMaxHitPoint() );
8 p0 K% ?# s) u3 R SetManaPoint( GetMaxManaPoint() );! ^4 W+ K7 E* J
SetFatiguePoint( GetMaxFatiguePoint() );
* w |1 m$ n' d if( nJob >= 1 && nJob <= 4 )
$ v+ ~/ ` d/ z& N% b9 c4 r! C; z {
, t P. O, r" ~1 z m_nStr = m_nSta = m_nDex = m_nInt = 15;
# J! H& r) P$ k0 c9 |9 ^" Z m_nRemainGP = 28;
4 T1 J. q; x+ I3 o }4 H2 J0 B. g' M0 b6 M
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )* i [% c1 h* t0 h, y
{
& P3 m) q( E. @( d! Y; p m_nRemainGP = 118;. l: w$ D7 _+ O+ U3 t& P; w
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;% f- |5 n6 \- A# J S9 [* N3 H v9 c
m_nStr = m_nSta = m_nDex = m_nInt = 15;6 `$ x+ `$ O X
}' v. v0 J5 j0 g/ D- [" \
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )# m y2 q4 O& R! x
{5 h( L! k' E4 F- g& O
CItemElem itemelem;
; Z# V) d3 X( w$ W E% G itemelem.m_nItemNum = 1;
' ]8 k+ ]7 |' @) x/ f5 f0 g itemelem.m_bCharged = TRUE;
4 N* {, R# w. E% p, C" v: q BYTE nID;
7 o. h- C$ p* E- x
7 {$ {- t4 Q3 A8 A# d if( nJob == JOB_MENTALIST_HERO )
|5 G+ K4 F$ g; R itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;$ f$ N H& P3 I* ]& Y" g
if( nJob == JOB_FORCEMASTER_HERO )% D6 G- {- W0 A2 M) D9 @% H8 t* O
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
2 f S( t& W4 X! O: _
/ ]* J( i! G. L2 p' i/ | ( ( CUser*)this)->CreateItem( &itemelem, &nID );
0 z# E. Z L9 H: o }
& j* r4 A& h- u+ I g_UserMng.AddSetLevel( this, (WORD)m_nLevel );+ n3 Q3 m% Z4 B; Q c
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
: M+ A0 F5 Q0 A+ L0 W5 g# X ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );/ | B3 H; c) j$ L" b2 P
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
W9 V4 s7 k- u ( (CUser*)this )->AddTaskBar();*/
( d, J! p) Y E ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
4 m( {5 F. k& t) N! v" j3 j1 P#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?* p2 w4 {! v4 b b5 X/ p) O- N
((CUser*)this)->CheckHonorStat();
* k. q; _" ~; B R7 l; F ((CUser*)this)->AddHonorListAck();
1 Z" Z* u _, U ^/ a" j: s0 t5 T g_UserMng.AddHonorTitleChange( this, m_nHonor);8 z [6 |. ]" I6 \- P3 p" m
#endif // __HONORABLE_TITLE // ′Tà?
, r7 x' q7 ?5 t3 M @# ]& z }# H6 Y* t" ?# M5 G1 k+ j P* a4 x; o2 L
#endif // __WORLDSERVER. _* C+ b; Q( a. A5 c
} 1 O* G# S& H& V2 S4 ]
8 }9 f' j7 u/ C7 N+ V4 Z+ F
然后你进入functextcmd.cpp并添加以下0 K( V% D! h/ G! j8 _' e' Z
, `% m8 p: x+ @# f; _代码:/ L4 A2 U% N4 t D
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )5 B7 B& C' X' e8 B5 w
下面插入
8 k2 N( i! ~8 `% ^2 Y6 i) eON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) & t7 Y2 l6 U% x1 l Z
! C R' }1 A' {然后你去* y0 @/ A+ _ y: k! D Z
, c& V/ [1 @8 A" k$ k v代码:9 B6 W, R8 ] z! `( w9 Z I
代码+ t8 L$ f, J* K
BOOL TextCmd_ClearPropose( CScanner & s )7 @3 h: ` t6 y; \
{
) F" p* F3 W5 t+ H0 S H#ifdef __WORLDSERVER- N' J# ]5 V2 y3 ?0 |
CUser* pUser = (CUser*)s.dwValue;
# P; d( F Q% d- \0 }7 o8 s g_dpDBClient.SendClearPropose();
$ a* B" q+ z6 w7 k#endif // __WORLDSERVER
* A" o1 g8 ?$ C3 w* U! B, E2 E3 a return TRUE;
: O) Z* M7 I7 P3 q& B}* X$ ~% Z! @4 ]; p* `" D
下面插入) D; _4 |/ \! X0 A+ R1 ^/ e% E
BOOL TextCmd_rebirth( CScanner& scanner )
4 _% i( O% x/ l/ ~. A0 I{2 K* s& ?' U; T- T
#ifdef __WORLDSERVER" A- V$ c* U1 e2 M8 F7 U" }
CUser *pUser;
. W9 Y H1 S3 x4 |2 z( P3 jpUser = (CUser*)scanner.dwValue;
& H( H& o/ u7 L# }3 q# G3 yif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())( J2 z0 c& s C
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);1 ^9 W- e) n4 E. S
else$ t6 Q# Z1 f" C \* d
pUser->AddText("你还未达到重生条件!");
8 O, U' C. ~: s9 p: K#endif
V9 F. u; o( D$ ?return TRUE;! |$ \) q2 ^! Z( i7 z* `7 }
} . _( u, i2 ]. y9 q' h
' T+ g5 J9 j+ S% ]
; \& N, V% \4 F/ v" @) `4 T6 i3 m) k( ^6 M X( B
9 s+ n8 P2 v" B+ O4 I2 O4 L |
|