|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
7 E9 |: Q( b2 r$ q$ W& a
9 b2 Y" [! J' |Mover.h
8 x. l4 C! Q) }2 U8 r代码:
% f" Q- N- p1 e% q/ x5 y6 O找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü8 H9 o8 m: e& e% I
5 R5 f8 C" G& {5 N2 a
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; * v/ o& j$ g" h0 [- ^
- i6 Z j* ?1 R# B8 q然后你去mover.cpp添加( N# s$ q" |5 j
7 `9 c7 E& i. n. U代码:( W& ]+ N9 t: t1 p/ S, f
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
+ t/ U9 w7 O5 ^4 F, Z{$ m% m& i, g0 H
#ifdef __WORLDSERVER
6 X2 R8 H! C+ r8 d; `. a8 Z // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó: j6 k' f- A/ F- `7 L! S
MoverProp* pProp = GetProp();
$ R5 t" M3 i( ^ o9 T if( pProp )
: D: s' `# O: @4 t9 V. |& r3 v! U {6 l f0 j/ x0 _; `* |5 q1 J% S
if( nJob > 0 && nJob < MAX_LEGEND_HERO )9 W* V3 N) ]6 Z# i/ b+ B5 r; w% s
{
# O0 G$ R8 Z% @' }* Y! e1 a" R3 h% f AddChangeJob( nJob );
: G/ e$ v3 X) R* q9 S7 l( U! k }else{
1 Q! M6 w* h3 [ return;5 n# c0 O. M- s* G; h) A
}
2 E B' ]! w! h+ P int nPoint = 0;4 _0 b; t- _1 S, Y) u5 A
if( m_nJob == JOB_MERCENARY )' G$ z9 \: D. R+ D5 b; E" ]
nPoint += 40;
& O# }# Z6 A- [3 [8 N8 L& W+ O$ x else if( m_nJob == JOB_ACROBAT )
( u% X, n3 s/ a nPoint += 50;( D( n$ _/ u1 [
else if( m_nJob == JOB_ASSIST )
% J- V5 V3 Q& ]+ m nPoint += 60;
$ v% W+ e- S3 U else if( m_nJob == JOB_MAGICIAN )& C# J+ {! M" A" v5 b6 W' _: e" K
nPoint += 90;2 \1 ]: z0 E* n0 w* v# C0 w
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE ), w% b0 z; A! l
nPoint += 120;
9 d: q* i4 E7 @* A else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )9 S6 h" \- u: Z! f7 V; K l
nPoint += 150;
5 ~& `( a' u& R, s" j# I# _ else if( m_nJob == JOB_RINGMASTER )+ [) F. c# m5 f% E) p1 a% D7 z4 M
nPoint += 160;
, C, [: h6 |- J5 \/ C: m* n( V else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )# o, x8 r2 ^3 O a4 P3 B, F
nPoint += 180; U _* D3 I @: {8 f& D" o! E
else if( m_nJob == JOB_ELEMENTOR )
* ]" Z4 l6 o" p. x1 |8 Q- J0 \9 G nPoint += 390;; Z5 A* F4 @$ O# c, N1 s" v* K
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )' X- n' P) b+ Y% T
nPoint += 120;
1 z2 e9 B0 {( G% f else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )" s! b+ V% ^5 N* s
nPoint += 150;; w* b4 D5 J* N# ^8 Y$ ^3 d9 g
else if( nJob == JOB_FLORIST_HERO )
8 x4 O! W R1 {6 h. x( w$ Z nPoint += 160;
5 f6 p: A W8 Z# W% q; C' B& Y else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
$ p5 v/ J' q! E6 Y& Q5 h8 k) w: c nPoint += 180;
# T8 f: e) Z- C4 J else if( nJob == JOB_ELEMENTORLORD_HERO )
# p1 E4 y" f9 f" t% {; j3 G1 b# s nPoint += 390;
0 a, @' ?' q1 s( X$ S! g7 g' g6 z S
AddSkillPoint( nPoint );3 o( N3 j( C% N# r d: D
m_nLevel = nLevel;3 O* f$ ~6 E4 f1 b4 J6 e$ ^; c
- B6 c) H! _# k0 C; ~
SetJobLevel( nLevel, nJob );
' l! I, a5 e6 N. u8 z, R: Z( s; y m_nDeathLevel = nLevel;8 ?7 o1 c v2 A6 ]
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
* N. {6 `9 ?2 X3 H0 X if(IsMaster())
# j6 R; ?: _7 D {; a/ j/ J Z) a- N: U$ g
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108# u* {, f) k: F4 E: I$ t
if( nLevel > 59 && nLevel < 72 )
2 g8 ^6 C1 Y" f dwTmpSkLevel = 1;7 P* X M9 T) p
else if( nLevel > 71 && nLevel < 84 ): q b* W. T2 J( H
dwTmpSkLevel = 2;5 ~! Z' z$ u6 V
else if( nLevel > 83 && nLevel < 96 )
. ^8 I; h; h$ V* |8 D dwTmpSkLevel = 3;
) n0 \" Y: y \ else if( nLevel > 95 && nLevel < 108 )
( {! m; D+ l0 n dwTmpSkLevel = 4;9 ?' u3 G p! {" ~# V
else if( nLevel > 107 && nLevel < 120 )
: }% K" z* ~: k9 q" l2 }& k# O" E dwTmpSkLevel = 5;
2 R$ M" m+ V8 f3 H% R for( int i = 0; i < MAX_SKILL_JOB; i++ ) $ S3 _: t$ b' _! M: \: f
{
' ~( Q7 c5 {4 G. l0 ~9 { LPSKILL lpSkill = &(m_aJobSkill);) j ]6 _3 j$ ], w$ x- h4 r* n. A
if( lpSkill && lpSkill->dwSkill != NULL_ID )# t& a) Q$ q1 s0 `" h/ B/ L
{& v+ `' u& H- y# F* Y) e
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 9 x5 E. V% ]( |0 j
if( pSkillProp == NULL )
7 e4 q+ |" n a S# ^! t l, K continue;
1 Z& t7 a, H. U+ q if( pSkillProp->dwItemKind1 != JTYPE_MASTER)7 z! h+ N/ k" b/ J- S3 f8 z2 }/ B
continue;
; w% B; @/ j; n9 j" u) C2 F lpSkill->dwLevel = dwTmpSkLevel;
! J" B+ {% r5 b6 I) r1 B8 f6 g- x }
: u6 d% n, r( C/ S- c! M7 ?# _ }; N6 E3 |9 d c5 @! D
}
1 [2 o) F9 `" j/ c' A/ I else if(IsHero())
% p+ x4 K+ V0 m a& x {1 r: H# [3 D9 h9 u7 j& z
for( int i = 0; i < MAX_SKILL_JOB; i++ )
; m0 N2 B& j4 f6 n0 ~+ O) m { 6 |) E: @! {* D) N- M/ ?1 ]' q
LPSKILL lpSkill = &(m_aJobSkill);
7 E7 M: l, B$ T+ M7 J0 U if( lpSkill && lpSkill->dwSkill != NULL_ID )
$ N& T1 ?& G2 S {4 ^6 Q; J; b( W* x
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
4 |- @$ i4 X$ m8 D) ?* y if( pSkillProp == NULL )
2 f' w- |& _: J- K continue;
9 H: O0 D& e4 I if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
3 t- \! L& }% Y0 F6 M3 k" N continue;
; d5 f$ r& F1 i T' i( r3 V lpSkill->dwLevel = 5;1 K: Z+ f& l, _% L6 ^- {7 Q: e$ S( P
}& o" h/ s3 d7 s
}
# ~5 l3 E2 B! J8 z" i6 H; K4 m }
) ?4 r! g7 S0 t7 K/ U4 _! {, f/ ~0 }, b else if(IsLegendHero())9 q$ \5 a! f, h/ O% Q7 s9 `
{
% q8 c, w6 j" H. z: Q for( int i = 0; i < MAX_SKILL_JOB; i++ )
8 T" v8 @" @* P3 z. w/ H { # L! G7 B& C' |. _, C$ V
LPSKILL lpSkill = &(m_aJobSkill);% j7 a* t9 y) F/ o; `. G% j: @: u
if( lpSkill && lpSkill->dwSkill != NULL_ID )5 \3 ^* ?# [3 r0 c
{
& Z* h* ~9 o, V! C# }7 K ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
8 m3 t. H: C+ k, `# r if( pSkillProp == NULL )
$ W, ^0 i7 H4 N& @6 i continue;
2 @% ~. d& F$ [' h if( pSkillProp->dwItemKind1 != JTYPE_MASTER)2 \" A: `; w% v
continue;
3 b* d2 z" U% \5 @* K7 e8 L; H6 x% | lpSkill->dwLevel = 5;$ v% p: }4 h: O& }5 Q
}
& P# Y' M. {6 h; n5 { }: Z; j6 D B C( @2 n+ E
}: l! p. D) L6 T1 Y
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans' W, z; R/ f. n5 {% w6 e# v8 D
if( bGamma )
, O# h1 d5 o' J: [6 Z) _( w6 D {
f' m5 F- r+ {, y1 [) r) I m_nExp1 = 0;3 x0 J6 ?" G- ]
}
1 f0 m H! n+ m: q. U/ w; C
" |0 u V; e; m! j0 }6 B9 _4 H ( (CUser*)this )->AddSetChangeJob( nJob );
: m* v9 @) U: ^0 E% {) c3 Q5 n g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
1 I' H- j* j6 H! o9 ~, `" f; L
) ?2 F. ]- W* J' S- {% E3 B$ ^: L0 H4 T
#if __VER >= 11 // __SYS_PLAYER_DATA. X3 t* x: m5 N1 X# z* {! I
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
6 B8 W0 G' V. O# @#else // __SYS_PLAYER_DATA
1 P7 _" {% L2 P, s: F6 S; }9 s g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
: g% A8 D9 A `6 @2 W g_DPCoreClient.SendFriendChangeJob( (CUser*)this );. N$ @) u6 ]" U. U# @' t9 t
if( m_idGuild != 0 )8 {' h" p2 U( s D# x$ y: m
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
7 m6 J: [ N. |# Z* i1 T* p3 }#endif // __SYS_PLAYER_DATA
6 i& H( t7 u$ P; N SetHitPoint( GetMaxHitPoint() ); \ x! Z/ i, `7 F1 B
SetManaPoint( GetMaxManaPoint() );
* |$ H7 b( F! H$ l3 S: T SetFatiguePoint( GetMaxFatiguePoint() );& P. ^# z6 {) x% b
if( nJob >= 1 && nJob <= 4 )* Q4 s# A6 f, r* X+ S
{+ j! a* r+ \' z: @9 ^3 X+ X
m_nStr = m_nSta = m_nDex = m_nInt = 15; M' t( p! ]7 e. N" e, b
m_nRemainGP = 28;! _/ ? M- U) H9 m5 t( a
}3 o4 S/ {+ ~- P# T! B
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
' Y$ Y6 S% t$ M0 ] {
5 y& z Z% r- Z2 F0 S/ w m_nRemainGP = 118;* ^' \, B w5 Z+ g! b) \
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;1 M6 Q; y2 }" d+ {3 j/ `; ]
m_nStr = m_nSta = m_nDex = m_nInt = 15;% o% G t& O: f9 c# B5 b u$ \
}. s) C5 r- z7 C7 z! A
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
$ o% r0 ?; F9 k. x6 U {
! ~8 N& ?) ~, k" b CItemElem itemelem;6 t8 v' p, g2 h: G8 H
itemelem.m_nItemNum = 1;; L! O: F2 S0 J ?- }; z5 N3 `
itemelem.m_bCharged = TRUE;# U, x" K5 i% ]! M1 H
BYTE nID;
5 K7 P& j( v# |$ T) n% J+ F" z h5 y
if( nJob == JOB_MENTALIST_HERO )1 \! _0 ?! G. O" z% A7 R$ g- l
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;; h0 M% l* x$ G6 [
if( nJob == JOB_FORCEMASTER_HERO )8 s, `1 c/ H7 D# }& M
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
7 s. l: R2 Y6 `" l* E( H& a3 O0 S) _! {% e* r& o+ r+ M; l$ h
( ( CUser*)this)->CreateItem( &itemelem, &nID );% h& k8 D/ }$ E
}( h) i6 k8 X; n+ M+ K6 Z9 J
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );6 z. a9 N0 n1 s4 w; m
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
3 ]/ @# x. Y+ t E% P, q' F ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );* Q, d: ^+ B K. [( _7 K( d6 T
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
1 R! M3 p0 t8 r( B ( (CUser*)this )->AddTaskBar();*/4 d5 l( O2 t/ n1 a
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );& H2 `+ @/ y v
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
5 o) k' Z- ^" R ((CUser*)this)->CheckHonorStat();
# {9 r+ N& A6 m, T; U% M3 a ((CUser*)this)->AddHonorListAck();, G' B: ^8 f5 {7 a, L1 _8 o
g_UserMng.AddHonorTitleChange( this, m_nHonor);( G6 a- K4 W& m4 @/ m" Y
#endif // __HONORABLE_TITLE // ′Tà?
! i$ U: c0 F& r3 F# e: q" | } y0 U5 W2 E: b9 y7 k8 u9 `
#endif // __WORLDSERVER
+ C- Y R" O& R/ T; ^% W/ z}
) V5 M# o2 Y. O+ T. y% u
$ O* f7 z6 |" y4 z. Q) }然后你进入functextcmd.cpp并添加以下
/ l. `) C, G: h7 I9 c- k$ e" g
8 X' C, B8 {3 m! @7 g9 {# d+ i代码:
$ C' f# a" o+ T0 w+ jON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )# @4 \1 A \: T2 r' o
下面插入
$ ~ D' I' U2 KON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
|* i$ k$ E0 Z4 I) b2 X8 w3 N) u* C% {0 @. Y9 B! x8 |
然后你去
+ p1 @+ C1 p6 l" {( Q# {
, G, U" `, A% C/ p+ N代码:1 `/ d% [) p. r; v, @5 S' F& E
代码
" T, M# i2 }/ {/ f( x! h1 \# f2 C1 UBOOL TextCmd_ClearPropose( CScanner & s )
5 P, d: X9 q: |% f" n2 r+ A{9 D% v3 ~) P( d, O$ r
#ifdef __WORLDSERVER, u# K7 F1 C$ a+ }. @
CUser* pUser = (CUser*)s.dwValue;1 P- o& \. ~$ p. \- B1 A
g_dpDBClient.SendClearPropose();
+ L' u8 {' }" ?1 v7 v6 M#endif // __WORLDSERVER: E$ w1 w9 G; u9 ~+ k
return TRUE;
/ b& }8 d% z. w4 E7 K}
2 @6 r6 X! f G下面插入% J2 i y8 j; [3 k
BOOL TextCmd_rebirth( CScanner& scanner )" y+ F# e- k+ S4 `9 T- N
{2 d- a$ F" C, r7 m
#ifdef __WORLDSERVER2 p0 ?' v- L$ L/ K W
CUser *pUser;/ U/ w3 D7 d1 N$ h7 h
pUser = (CUser*)scanner.dwValue;
" X& R2 C! Z! J8 u& ^, `if(pUser->m_nLevel >= 150 && pUser->IsLegendHero()). @ [! q. p |0 u1 \
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);. ~6 f' b9 }$ [* z4 {7 {7 n
else
$ B. j6 d+ I+ f) c# spUser->AddText("你还未达到重生条件!");/ g& }9 ^2 `. S( \- k2 g
#endif
' W. |& Z; |6 |* D5 Ireturn TRUE;
: p6 S0 M: {$ g4 c' o} - R1 w: g. l5 ~- r" b$ @
( F; e+ i+ I0 k7 P6 h; N
$ p# j2 J `9 f
; \' Y" |7 o" Y( D2 ]% V: x# v1 u, {5 n, m! t
|
|