|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
( j" V( h2 }4 p% q) V9 e
$ |3 |( \4 m. [; e# U3 d% Y5 RMover.h( V5 w& _4 ?7 a
代码:/ h6 e" a' P+ U3 @
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
: c# t8 n/ h1 y
' t" |! S9 W+ Q下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 6 _& E9 v9 `& }6 Q
6 ~- ~! G7 v9 `
然后你去mover.cpp添加1 F8 l4 ?1 \5 j0 w9 x
8 t2 {* k* Q7 p$ j
代码:0 ]/ c; w/ _/ j: U8 I- r
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
) N# C- f5 R' y0 c! M& O{$ Q3 A- x1 a: X: t+ @3 ?& L& b! r
#ifdef __WORLDSERVER, A+ t2 P2 y5 P6 ]& P
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó( r% E. r; J8 |3 p& q3 Z( Z7 |
MoverProp* pProp = GetProp();* c0 u; B1 a. X" t' ^. `
if( pProp )+ |/ [6 D9 W* P* f1 d( S' I
{2 |3 G- R/ h: A; i/ O
if( nJob > 0 && nJob < MAX_LEGEND_HERO )5 [! M9 T* [" y: }- `- |6 r
{
$ c7 `! @' q. D2 @5 d. g AddChangeJob( nJob );2 Z9 ~( W" R* B1 X
}else{+ t8 U- Y! P0 ?' P5 Z4 h+ l4 Q( r
return;
% D7 W" e) m# a2 J' [2 s }
/ O0 r0 W# T2 I' C, Y int nPoint = 0;8 l8 W# K; V& j9 n' L
if( m_nJob == JOB_MERCENARY )
! \. Q" j! w9 t ^ nPoint += 40;
8 b3 p2 s1 I# f& I' b. L5 _ else if( m_nJob == JOB_ACROBAT )) F# u/ \8 a) m- b
nPoint += 50;
' H9 u' A8 H' ^! |+ o else if( m_nJob == JOB_ASSIST )9 ^8 b: x G4 k& h/ J& X
nPoint += 60;6 t- D8 i- @) \: S
else if( m_nJob == JOB_MAGICIAN )
7 f1 `8 r* Z" c9 d# I nPoint += 90;
& Y: I- I7 J6 q0 ]8 C0 d else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
7 {9 `0 v1 ?8 H! U4 x) | nPoint += 120;+ ^. c) O0 b; G2 T; w
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
' t8 B2 b; `2 B7 [ nPoint += 150;
9 q" F! t2 I! `2 g" G0 `7 u; h else if( m_nJob == JOB_RINGMASTER )- e. l6 j+ d0 u
nPoint += 160;
7 W& w2 z$ D0 I" G- \2 I/ |4 ?& s7 } else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ). L" |7 P+ F* w1 j* @ L# f: }
nPoint += 180;
. `8 M, N% z5 I# S else if( m_nJob == JOB_ELEMENTOR )
9 j) W4 m: ~3 ~# [ nPoint += 390;
, c# l' j" D+ w; x else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )8 U1 L+ {3 Z) B; I/ |- Q
nPoint += 120;( Y' [9 O" H! h# V: {- l
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )- f* Z9 G* C! k2 `
nPoint += 150;
, C/ G5 F$ E5 h) g else if( nJob == JOB_FLORIST_HERO )
) X* f/ s7 B+ i8 @ nPoint += 160;$ Z0 E5 l$ O9 g* [. l3 S
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
0 H" `& j/ [8 H$ s' X$ d0 R nPoint += 180;
& i7 `3 o' O$ N- [5 m8 J else if( nJob == JOB_ELEMENTORLORD_HERO )0 c6 f5 A0 O2 F- f H3 l9 d2 c
nPoint += 390;+ I& j; q# b& ^: |
8 } g) k) r2 ~- h7 D, o8 C( o
AddSkillPoint( nPoint );4 O* R2 x, M0 l/ T: \: f" Y9 d
m_nLevel = nLevel;/ W- B9 H% U- J6 v, V/ d8 d! Z9 E
: v* d) @& C4 i5 `
SetJobLevel( nLevel, nJob );) ]% m0 ~0 N. C& C
m_nDeathLevel = nLevel;
0 n3 m `0 s4 y# ?/ O0 H0 R$ A#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans% {+ c. H! A$ p9 _& i8 X9 K6 c; ~
if(IsMaster())& Y% t9 L+ w) L
{7 M3 a5 o8 C0 H2 a! P, ~0 m
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
( Z: @5 x: @% ?% L( X if( nLevel > 59 && nLevel < 72 )
+ ^; ^1 H# b1 N" O2 q dwTmpSkLevel = 1;+ y8 q, a- @1 t9 f" X5 L1 ~4 _: ]
else if( nLevel > 71 && nLevel < 84 )
- L# H4 ]$ ^1 [1 I* p dwTmpSkLevel = 2;
/ a5 E, \' { H2 o( i, v else if( nLevel > 83 && nLevel < 96 )
; l) g4 m# d% x2 l* d dwTmpSkLevel = 3;, v9 _3 j. l9 I5 r+ y, Z( R
else if( nLevel > 95 && nLevel < 108 )0 v8 V3 g+ R, {) m' M4 I
dwTmpSkLevel = 4;& Z' i" ]3 Z" ?( ]7 n" H( n, C
else if( nLevel > 107 && nLevel < 120 )
. Q( {& ]. _5 P' t dwTmpSkLevel = 5;0 s' V% v4 w7 u* g: w
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 5 T( i2 }+ d. P1 Z
{ 4 @4 t* P3 m8 N/ V7 h$ [" ]( {* M
LPSKILL lpSkill = &(m_aJobSkill);' c# v# `$ @! W- P: v, G
if( lpSkill && lpSkill->dwSkill != NULL_ID )
2 ~+ B; v- h0 ^+ Z {
" n o& M1 E" s ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
% X! P5 w0 V6 B( E$ I if( pSkillProp == NULL )
' ?1 o- s" b6 Y' g8 A# H- } continue;8 o, d L2 u' U* n
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
2 b$ S, H7 l1 z continue;
; E2 b+ j8 f9 i1 m6 i lpSkill->dwLevel = dwTmpSkLevel;! A3 @4 |4 T3 b7 p& `
}% e3 h9 _. c1 f h6 c6 a% C( v
}. F5 _! S- |/ K+ f
}" d9 P& e$ y1 L
else if(IsHero())
" G' n6 S) E# R5 ` {
$ J* @" D$ r; u6 i4 H/ p. _$ C0 F, P for( int i = 0; i < MAX_SKILL_JOB; i++ ) / Z% n2 c) f, x; L% r$ }
{
, U, R! {* r! }! \: o LPSKILL lpSkill = &(m_aJobSkill);/ s: B, h1 N. I, z
if( lpSkill && lpSkill->dwSkill != NULL_ID )
" M/ x. f. s0 s0 @, M {
Z" x; J9 @3 {1 s6 T ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
( \: l- X \5 j& i if( pSkillProp == NULL )) P/ u( D2 [9 V Y# ?, v# d3 J
continue;+ H( t9 u: C* f3 n, M' x
if( pSkillProp->dwItemKind1 != JTYPE_MASTER): W x) ]) b2 v8 H% L6 N- U m
continue;
~! ]* Y7 h* g* w lpSkill->dwLevel = 5;5 E0 L: U6 V$ E+ O
}
' X7 Z6 L# {. q" L4 B7 L3 \ }
% ^5 |; v# Q" c$ J+ O }7 K- A' ~7 J1 D2 c# l
else if(IsLegendHero())
W. o! R5 ]$ L& \ Q {
0 N2 L0 r$ A) {& k& f' Y for( int i = 0; i < MAX_SKILL_JOB; i++ ) # h' k' c# _" v; t7 P$ d. U
{ # s5 N( g! K# l- r4 C* h2 J
LPSKILL lpSkill = &(m_aJobSkill);9 n/ q/ l% A, ]! h3 m6 q% U
if( lpSkill && lpSkill->dwSkill != NULL_ID )
9 `" T! w( _$ ?$ }" ]8 l {
+ P) e( u4 b3 ~ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
# `# i$ T8 ]5 P& F6 a( D if( pSkillProp == NULL )( a! T: z3 U0 N( h
continue;( a/ H& v9 \1 ~: d+ p6 W$ ?5 W
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
- r6 G+ V9 s2 q3 {! n# u6 Q8 r continue;! R2 D: n; k3 U0 e; L) x2 l
lpSkill->dwLevel = 5; ~' {6 f7 C& n+ G( _6 B
}
, i6 o+ F' e- n K }( a7 {' R8 k" R2 H
}4 t, S) J8 k- @/ V" A- a7 A1 r( U
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
2 [9 E' W1 _+ i. R3 | if( bGamma )
/ U4 F1 b/ x% I) M {9 l# ^, f3 H D
m_nExp1 = 0;
* U9 O$ _* n E) E7 C* W# w }
, S* Z- Z: J# E' V# Z% [* K2 i0 A, K- O" G1 e+ E Z8 ~: W
( (CUser*)this )->AddSetChangeJob( nJob );5 o$ {/ K3 G) X& S( ~; ]
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
+ ], b7 W8 G. ^( E* i9 I* a
. r$ T, ]$ s2 _' n0 d# a# j* U* x4 l# ^
: S) {& r" a* N/ c3 U4 F4 x#if __VER >= 11 // __SYS_PLAYER_DATA
/ v$ b$ L: B7 {( V g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
J4 F. u3 x6 I& D( l6 V#else // __SYS_PLAYER_DATA' b; x7 u( A% j7 M; S; G2 b
g_DPCoreClient.SendPartyMemberJob( (CUser*)this ); T+ O; {9 s% f+ [6 L( @9 e6 Q
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );- z" Z; P# d$ ~" U' X) p& V
if( m_idGuild != 0 )
8 R0 i" l* m4 Q0 _ b- ^ g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );; Z% ~. J/ C+ m* h/ B; s: G9 K: V
#endif // __SYS_PLAYER_DATA4 U9 t! @% g1 ~6 e
SetHitPoint( GetMaxHitPoint() );
/ |$ p- ]( C5 T1 o: A/ P8 B SetManaPoint( GetMaxManaPoint() );" u) l8 {$ f& N7 o, s9 b. l
SetFatiguePoint( GetMaxFatiguePoint() );
/ h8 r" h3 H0 u4 o3 B: `$ ~ if( nJob >= 1 && nJob <= 4 )7 C$ h9 N% i8 I# R8 t r4 P
{2 b6 w8 h$ }* M. j# S; T" i7 z8 G
m_nStr = m_nSta = m_nDex = m_nInt = 15;& k4 q W3 G6 Z$ _
m_nRemainGP = 28;( X" r4 w6 A* V
}
1 n! \( S* p& w$ g+ C# k if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )& m2 t6 V8 S. r) p, t
{4 W4 Y& P! T- \( S
m_nRemainGP = 118;
, N2 w9 w1 G6 [7 p M //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
& L7 `" G6 N1 t% D: |. o m_nStr = m_nSta = m_nDex = m_nInt = 15;" l5 g' j2 E+ o p% n& V) ~7 T" L6 \
}
; _' v/ z$ D; s* h/ y. A6 k if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
6 F$ j, C! v: h1 O- W. a! A8 A {" X* x2 C g8 `( V) E7 B
CItemElem itemelem;
- \3 h& l1 e1 q3 H$ @" o) q itemelem.m_nItemNum = 1;; H' j& O- E& O6 U* r1 v
itemelem.m_bCharged = TRUE;
- O- t- E3 U1 h' m$ z BYTE nID;. J' K* M* u) q
! ?$ l! e8 E: }* J; d
if( nJob == JOB_MENTALIST_HERO )8 ]) T* r( c; b: N
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
: n/ f9 p$ w% Z1 c; g4 N if( nJob == JOB_FORCEMASTER_HERO )8 @( V& P8 W+ N$ l2 ^, f/ B! c
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;& ]# A; P2 c; a* J8 S _, B: h
* W5 L( s$ C/ M" ?, u9 C* Y- S5 s
( ( CUser*)this)->CreateItem( &itemelem, &nID );
+ Q' J _1 {# W# @. ^, ~$ Q/ ^+ j+ L }! J; y$ N) E: c5 X: U3 {4 [8 x
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );; s$ r! n2 K- ]8 h: ]. [
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );- D5 r: t# k3 A, j' X: @: L
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
8 {6 k0 Q" e( [+ b; \! a /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
* X; H4 [ b4 F ( (CUser*)this )->AddTaskBar();*/
, H; l" ^: X7 s( ?! C ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );& i4 f- p! R3 C R, U' T# z& ?" N+ L5 m
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?- G+ P8 a4 U) I s$ {! B- u: ]6 h
((CUser*)this)->CheckHonorStat();
7 S0 L1 W j& Q% Z ((CUser*)this)->AddHonorListAck();
8 `! s, ~8 \4 h/ t3 d g_UserMng.AddHonorTitleChange( this, m_nHonor);
# Q1 D8 N5 A+ P( p5 c#endif // __HONORABLE_TITLE // ′Tà?6 l; g7 \% J8 i
}
/ w: m4 |7 }$ ^4 X4 F$ E; E#endif // __WORLDSERVER
: v; R d O( }# l% N1 E7 J}
" q# c- V7 v1 c. h) { o
1 ?/ f6 y) X+ K0 f然后你进入functextcmd.cpp并添加以下
( O {5 _' C& }! l# q! j# Y2 l# N
. u" S: x% S. S) R4 ^* N! ~代码:
6 o3 _/ @( `9 \0 h7 b, V) N3 n5 \ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )0 N' S5 P7 z2 N' I& O( F8 h
下面插入
$ p% _1 i+ h8 [0 B* DON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
- M- o8 Z9 k( o3 P6 E. X/ o9 ^; P7 m3 F- F6 [
然后你去
3 m( c/ p4 q. J B2 W1 V4 P) o8 S9 a' s! q5 b* F1 B9 m
代码:& Y- w. F. _/ x3 H! w
代码9 ~! z- Q) I- j- ?
BOOL TextCmd_ClearPropose( CScanner & s )
$ O3 d$ S* y/ s3 w, Q1 k# b{! s5 `5 U$ l' D& U' Z
#ifdef __WORLDSERVER
9 I6 m; w: K& T: p$ T7 Q; k) D CUser* pUser = (CUser*)s.dwValue;& n7 M& b' k# n# H1 K! @8 @
g_dpDBClient.SendClearPropose();
% ?% Z7 n7 v/ T* W+ P9 h#endif // __WORLDSERVER# J; l0 j7 ], s" ~1 X! r$ P# a
return TRUE;
# @2 W% E7 {6 h2 ^: L}
1 }3 _8 ~+ [, |$ u0 M$ E9 x) X2 p( l下面插入
+ D/ H( ]: M5 Z. v1 VBOOL TextCmd_rebirth( CScanner& scanner )
1 R5 u H3 N! ~ k$ s{
8 s w2 [: T6 u7 |7 c {$ y. G \#ifdef __WORLDSERVER0 I; ^& d# I( X* x8 s& Z
CUser *pUser;" l7 E- a' j( z; B5 W# Q: n
pUser = (CUser*)scanner.dwValue;
' c. E* ?# ?3 Hif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())- }! f, j$ P. }7 q J# R6 H
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
& T! e% p# Y: ^$ t3 yelse
$ Z* @' i" Y' x1 \ l0 j, BpUser->AddText("你还未达到重生条件!");
6 o7 E! X' N; Q7 I; D#endif* E% j" h U/ u+ \( L
return TRUE;# I: \) B" {5 F, @1 Q* c" x
}
: @$ J2 t0 ]: t9 ?6 i
- R/ K( r/ V+ q1 B* Y9 j& W" o; B8 w j4 {2 j0 C% M) E
! R9 J9 E2 x3 K9 M
9 s; ^ T4 B- h; o |
|