|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel9 B! e' @9 s1 q7 R* w; d
# g' B& h' r0 A. l# GMover.h
! h% E2 G$ G) h代码:
" `. p. H4 v- O3 {1 m" O( r& g找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü! W- C% q* p! }7 ~+ x
" a; w7 i1 `; i6 F6 L* U# j
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
$ S# _2 K6 v w1 H1 y# w
: p7 Q6 C" ~% M) W2 o$ h* m* Z1 M然后你去mover.cpp添加( _9 \3 R* H: Y8 V; N& F9 r& o+ A
8 Q7 V3 y; x8 J$ U; i2 u4 y8 N, U
代码:3 i8 ]3 y+ p- f
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
! ^% l) g5 J, o4 \! G' U, `{
% s' U$ l, W& h# E/ X! G# e: W) R#ifdef __WORLDSERVER b; w# }# n+ S; [7 `
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó0 C. H. d& D% E) c3 V; L
MoverProp* pProp = GetProp();, r) {: c3 p7 P! g, i% W
if( pProp )( @! _" m h4 P' F* e
{9 [1 ]* D7 ?3 X# a- c1 L f5 s4 {
if( nJob > 0 && nJob < MAX_LEGEND_HERO )9 w7 L* s6 ^) |0 |' N
{
& a- p2 b7 ^" _2 [* W% W: D! ` AddChangeJob( nJob );) n! ], B6 A' B: ?# [
}else{" B. c/ t1 P; k6 t1 K" x- i& t
return;4 c3 j% A! k. n. e
}
5 e# c6 i U3 K v/ K0 }5 e& o4 _ int nPoint = 0;
( A) T! h8 z$ a$ q0 q* i if( m_nJob == JOB_MERCENARY )
t! |7 `* B3 {- G nPoint += 40;
# |: a; ?5 g) d" O7 }# E else if( m_nJob == JOB_ACROBAT )
6 _, H4 g* l m( m0 w nPoint += 50;' i' F/ L& m2 M) b h ]
else if( m_nJob == JOB_ASSIST )
1 [% K& n j7 @* j nPoint += 60;
' J% J; R0 |! W2 N p7 z else if( m_nJob == JOB_MAGICIAN )
$ ^# X- u$ c, m# `0 g nPoint += 90;
; u5 o0 m A( x$ T else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )9 h( ?& `' t4 F5 S8 _
nPoint += 120;6 [ N8 v. c3 D
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
( D/ H. P/ }0 P2 U nPoint += 150;
; t$ A' O6 c* U' r( J1 @6 h6 x: ? else if( m_nJob == JOB_RINGMASTER )
! [. X. H8 S; o, K4 [ nPoint += 160;
; [( B7 `2 \, U3 d else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )6 @3 O1 f0 ?: e
nPoint += 180;& R9 R9 Y0 q5 q: `4 l/ I: @9 X
else if( m_nJob == JOB_ELEMENTOR )
) b# H* Q4 z7 K. _ nPoint += 390;: F! l! d0 i' e1 J2 ?- r
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )2 f: {; @- B+ F/ T
nPoint += 120;
! L! O" M0 [! t2 m9 L else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )" L6 F% a; R1 m* T$ o' c
nPoint += 150;( z+ } Q% ^5 b4 ~0 x0 ]' B
else if( nJob == JOB_FLORIST_HERO ): ?- ?- h' e7 y4 P+ V% k
nPoint += 160;
, v' D8 a# ]- I6 m5 F2 s else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
" R- x" Y* z/ x* c0 h nPoint += 180;- `4 W, X- T2 }& R6 N4 l3 l+ O
else if( nJob == JOB_ELEMENTORLORD_HERO )
0 ?9 p! z, @) m' s: s8 \4 P; A- K nPoint += 390;1 N+ _! ]0 o9 @
' `) |: { O2 e7 D
AddSkillPoint( nPoint );
( [4 Y, Y6 u8 a5 b/ l/ } m_nLevel = nLevel;/ {0 R) ^' I9 `
, \* {' R3 s# u3 b SetJobLevel( nLevel, nJob ); _6 d9 B) i% D
m_nDeathLevel = nLevel;
( l/ z. o* `3 L6 v0 i#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
/ j. S( i8 [$ }+ | s- F9 U6 u( _ if(IsMaster()), e( Z9 s# A+ w4 |5 F B
{
- [3 ]+ U+ x* _; C7 X int dwTmpSkLevel = 1;//60, 72, 84, 96, 108" ~/ u& c8 {. P2 p
if( nLevel > 59 && nLevel < 72 )8 [- o# D E- o3 W* A
dwTmpSkLevel = 1;7 V6 Y0 K+ p* A& N v
else if( nLevel > 71 && nLevel < 84 )
/ j4 ~5 e: ^( b" o) l dwTmpSkLevel = 2;
* n8 X, @/ b+ s7 c else if( nLevel > 83 && nLevel < 96 )
! k! \* D B5 P7 ^5 X- \ e dwTmpSkLevel = 3;
* c0 k% F% L# _1 U. e" E4 |/ p8 D else if( nLevel > 95 && nLevel < 108 )6 a' R& ]8 ~( Z, ^" Q
dwTmpSkLevel = 4;& q! M; L& t+ v) a$ G4 I6 t' z
else if( nLevel > 107 && nLevel < 120 )
" f) j" o2 Y; K8 A dwTmpSkLevel = 5;( g0 a- |% P' N1 }5 j" j/ d
for( int i = 0; i < MAX_SKILL_JOB; i++ ) 5 n( D! ]$ x; d$ a# C! r, V
{ . M# S* W$ \% U- e9 R% |
LPSKILL lpSkill = &(m_aJobSkill);
2 n3 r$ W/ {( W/ b if( lpSkill && lpSkill->dwSkill != NULL_ID )
% l! v5 l1 ?7 a {7 o5 W8 U! @+ j6 w
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
& P, v3 a x* G% N* v if( pSkillProp == NULL )% M6 ^! o M9 W; ?
continue;
# q I( E, u' v# S! c4 i2 l/ g if( pSkillProp->dwItemKind1 != JTYPE_MASTER)8 ?1 h; n, U/ P. q2 |
continue;
- d0 O$ ]( U( |4 X Q0 | lpSkill->dwLevel = dwTmpSkLevel;% q+ Z, m, W: \8 `
}
. r: j2 c7 T& N. m }
. O% r: S: u3 E }
/ X" d; @) O" A- n; k( H1 P ]4 p else if(IsHero())
k1 p2 K0 E3 U i1 A* a+ c7 l {/ ~ g' ~% k6 ^- m9 I5 x
for( int i = 0; i < MAX_SKILL_JOB; i++ )
7 J/ q& U( B Q1 x" j% q {
! g7 `# [7 B! G" R1 q2 F* l+ I LPSKILL lpSkill = &(m_aJobSkill);* K& F1 ]7 I8 _7 _6 @
if( lpSkill && lpSkill->dwSkill != NULL_ID )6 B3 b/ H. v3 ], [3 C' D
{
# T2 r+ c5 `5 r+ L6 [8 L0 V ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
k1 F( M! F% Q* f, b3 S; { if( pSkillProp == NULL )
7 D! z: v& F/ l9 E+ W0 U continue;
3 \( C/ j1 I3 c2 M7 ?2 ~ if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
3 W7 ^( i0 X0 Y$ R" o& ` continue;( Y: c5 }) w- N' X
lpSkill->dwLevel = 5;/ _& f9 {! O$ n0 v4 l0 H0 s# p
}
+ w _& l2 ^5 `) I: C }
' S; f7 Q+ h- J) q0 M; x. G2 h }7 m* L& x b( E( L U9 D8 u+ I5 Q
else if(IsLegendHero()) _. ?; L! ?3 k* ?9 Q7 u1 U( {
{( S9 n3 O% k" [" E) G
for( int i = 0; i < MAX_SKILL_JOB; i++ ) : u: [- S% n5 T, u) j2 s
{
. I, f4 f" r; R# P2 ?, R( k5 N LPSKILL lpSkill = &(m_aJobSkill);
; I7 I6 j% E) J: P if( lpSkill && lpSkill->dwSkill != NULL_ID )
y+ h+ B) ~0 [0 {* e1 f {9 O& c2 A B4 Q" ]+ w) L
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
4 X G9 ]9 ^) c Y% F% P2 r- z if( pSkillProp == NULL )* ?- h2 Z3 {, m+ y+ p
continue;9 R4 ?* g: K9 f5 |3 ~% C
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)' W0 [ k4 o, Y; k* b
continue;
" c4 H6 f d7 @5 Z6 `+ r lpSkill->dwLevel = 5;
( m* u6 t! f4 y' X! o5 o3 T }9 ?% V* x7 ~ p# Z* ^. h a
}
" W- J& }4 _$ [* ~" Q+ s1 o9 _8 Z% P }! t8 O' c/ D: P2 G/ Z
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
0 r W: M k, D; e if( bGamma )% w, ^, s1 v2 }+ Q/ k, c+ m
{6 \, Z$ u0 T4 R6 Z+ F9 P9 C) [) C
m_nExp1 = 0;' r( x- z3 `& o U
}
; F2 }1 w# d" J! J# `+ f, @3 N5 x; ]) E K+ f" G. R
( (CUser*)this )->AddSetChangeJob( nJob );! L( l: `; u6 o
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );1 H( [$ [8 ^, Z
1 [' t: E- J0 d% `; w: p
- O4 E5 ~0 Z4 U0 P6 x2 g#if __VER >= 11 // __SYS_PLAYER_DATA; Q% e! S( R; W' \+ T8 Z
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
1 M" {5 f% a3 E& N. A3 r' {' t#else // __SYS_PLAYER_DATA4 Q$ o: y" M; I' R5 I8 ^6 L
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );1 N* O) L5 ]6 `- G/ Y1 G# ~
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );5 t& ?5 G" ]/ J/ f' e# B7 V7 K
if( m_idGuild != 0 ) [3 K1 g5 D c2 r. y V
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
6 t$ N: ]' Z0 ?' B: ]#endif // __SYS_PLAYER_DATA" [2 h; |5 ^! O' Y1 q* C
SetHitPoint( GetMaxHitPoint() );- d) `) a! K/ y- B5 z3 Y1 Q/ Y
SetManaPoint( GetMaxManaPoint() );
+ ~" u$ A9 T' J1 k6 i2 [4 c SetFatiguePoint( GetMaxFatiguePoint() );: s3 O2 W) v! J8 Q1 a' x
if( nJob >= 1 && nJob <= 4 )
R) v* T6 r, _; ]: E* M# p7 ]6 o- E' t {
' A* G Z/ k( E# Y; G$ k. |. D* p m_nStr = m_nSta = m_nDex = m_nInt = 15;! c3 q$ Q! v) M
m_nRemainGP = 28;( F2 _: G* ?: {1 c
}; u# E6 G8 i" \4 s( o2 r/ q9 `
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )) J- X8 ]5 i, y% X% A" [" C' |
{ r; Q0 q7 l K0 l0 G8 c
m_nRemainGP = 118;; E1 C$ [( V Q* S0 [
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
" c( e6 k8 a! _) B: P. D1 p2 q1 |5 ^ m_nStr = m_nSta = m_nDex = m_nInt = 15;5 u9 X! r3 { O5 P% h! b
}
8 A& R, J0 p( ?! h8 s8 U4 J! S, B2 A if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
. e4 c' n+ a6 K- p, c. d {
4 v! |* j2 i: D# G& {8 C- {" ` CItemElem itemelem;5 ?1 B: a2 s v3 ^/ {+ _
itemelem.m_nItemNum = 1;& P: _" L! K! \
itemelem.m_bCharged = TRUE;
* b1 p$ v1 u3 O& v1 i BYTE nID;
& g+ I# a& x& c5 X, D
$ I4 Z4 O: k: B$ s if( nJob == JOB_MENTALIST_HERO )3 x: r! K" J# B- Z
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
: t7 Q; E( k( G, c if( nJob == JOB_FORCEMASTER_HERO )& L. S9 h3 D8 V( J1 F v
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
: x# V6 K6 \3 F8 }
1 ]: W# {5 L0 C% b7 [) f1 g: \# E$ {$ t ( ( CUser*)this)->CreateItem( &itemelem, &nID );
: y; c& {0 x* ` }4 f% a- g3 i" ~% E3 `# Y y
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );( z% _+ w9 ]. F
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
* G! ~7 g. U3 ? ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );' U8 d8 U6 K) X0 e7 Z) H& s9 j3 j
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );+ l" |# z3 H5 _5 M$ y/ f: ~9 Y5 Y
( (CUser*)this )->AddTaskBar();*/" n$ L+ d# [7 u' K# ^
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );( _, \8 _% |0 f# h0 e! n+ m
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
6 x% j5 x0 {" M+ X ] ((CUser*)this)->CheckHonorStat();
3 ~& ~6 E9 J; S) J9 m) V, y ((CUser*)this)->AddHonorListAck();
+ |( `) T/ D! H9 \( ] g_UserMng.AddHonorTitleChange( this, m_nHonor);
* B! v/ y" g1 ]& d" ^#endif // __HONORABLE_TITLE // ′Tà?
% u! _/ C8 B' B: ^8 D @; _3 } }1 D3 n3 `6 u" }# F( B
#endif // __WORLDSERVER
6 g/ d3 H2 R$ E$ g$ ]1 x0 _. h# C}
. {7 ^* D2 L0 `5 S9 V3 j
, O& x0 D; M! ~- u* D然后你进入functextcmd.cpp并添加以下
3 B2 K. l3 n7 }7 z: G) c5 H( ?3 d; }
代码:
# e# A2 ?9 z6 i: @4 A/ o+ x6 pON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" ), Q/ ~, g( u6 O2 H J
下面插入
6 M7 r( x# X0 ?( d, ?7 { K# hON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
; I- ~/ e. D/ o4 X& _2 R X7 Q: S2 z, a3 i8 g
然后你去+ W, |/ x( c: ?/ T6 L
7 s* ~& M- v7 [; j2 H$ z代码: \# ^9 F& n- X8 M- S
代码
5 @$ T+ U$ i+ X/ y0 s7 pBOOL TextCmd_ClearPropose( CScanner & s )7 i$ q. R* q- c2 e
{
" D$ M$ U% R; n7 ?#ifdef __WORLDSERVER2 V0 M5 W/ r+ \) a
CUser* pUser = (CUser*)s.dwValue;: z5 m' l5 c/ {4 O
g_dpDBClient.SendClearPropose();. a7 p' _+ b$ r& U. _4 C: D( X; ^6 ^
#endif // __WORLDSERVER
3 r1 I) I7 i% C4 g+ I# C return TRUE;" R$ A* R) }' o# x! E2 A- @$ D
}, G' ^4 D4 V3 E+ `: T# E
下面插入6 Y/ p) h+ r3 o" m% P7 U
BOOL TextCmd_rebirth( CScanner& scanner )
7 F3 x& e1 g" z$ X% H{
0 o# _& }. x1 e0 F7 j5 d#ifdef __WORLDSERVER# n4 e7 L- b' C9 x2 G" u3 U
CUser *pUser;% Y; |7 m& L" ]) G' k6 S# V
pUser = (CUser*)scanner.dwValue;' a+ G3 _* |3 q/ |! |! X" i
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
4 }$ H M6 r# T M$ n: j0 gpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
: r7 |. F4 y0 \3 x( C' V Relse( N, t R; t+ _/ d }: z
pUser->AddText("你还未达到重生条件!");, E7 D2 B9 z' s4 @3 W
#endif
; H; C, W( l2 d! ^return TRUE;
% n7 i' j- s/ v& W. f- Q} $ X& c( y6 C8 i: n4 {
9 Y6 Z7 x$ p) L, Y5 a5 D
9 c A" H. d7 t$ \. Q1 |/ z: _
- Y7 _! z0 d2 d% X* F8 d
9 }- s* s4 ` ?3 `- @ v+ n |
|