|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
. U1 M1 P! Z+ x, e2 y9 H- a2 R$ u6 T. F# s) d/ e0 c( _
Mover.h4 A% C. v+ A( w) T5 P. u
代码:
4 x; _0 b9 _9 f& h找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
! |. Q+ O R, o/ s, X5 n3 b) x* f0 R" [/ n6 i9 p
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 6 E: M5 w1 u, L( [4 C
7 t$ ~) {0 Z4 q: B- F然后你去mover.cpp添加) W5 G5 h0 C2 A$ ^0 Q( {9 i$ A
- J; C1 Q6 M% ^ F8 J# m) ?代码:
2 d# ^4 R8 X$ z9 m0 Uvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ) U/ ^9 N6 b, r. A
{( [- K/ ~9 i+ w1 e3 y5 K* A. f
#ifdef __WORLDSERVER( P. x- g& S) R6 I9 \& }
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
9 k* A. B& W3 I- E: q MoverProp* pProp = GetProp();
: v+ C% `8 l7 ]0 s8 i if( pProp ): e! l6 x0 R( w6 o2 e
{
9 [5 Q( \2 D/ `. K2 N if( nJob > 0 && nJob < MAX_LEGEND_HERO )
- x! |% H8 O1 p( P- ? {* O, {8 [, m5 C* M! I; a
AddChangeJob( nJob );) E. U+ @0 s+ \+ A* |; O
}else{
) K; u K- Y/ h% u- V" f return;' R+ E B" {+ E ~) l. x
}
, l! V3 Y/ d+ B, ] int nPoint = 0;# `; S M* ~/ z/ c
if( m_nJob == JOB_MERCENARY )3 P6 G5 b- v, O, j s
nPoint += 40;
; a0 P% @5 n( Y4 m. ~ else if( m_nJob == JOB_ACROBAT )
9 F" k* l2 n) a0 T8 a0 ? nPoint += 50;+ T. b# q: [5 j$ g3 n4 ]
else if( m_nJob == JOB_ASSIST )3 T, _$ c& X$ `3 \% E: \4 l
nPoint += 60;& d9 v0 \6 B. n% I
else if( m_nJob == JOB_MAGICIAN )
2 u- |9 P7 L+ n1 q* v7 J8 y, Y( s nPoint += 90;( L6 J& p& I& b0 V* Z
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
1 C! r. b6 T0 Z nPoint += 120;
) G8 V! b9 k6 n2 w2 k$ z/ Y( ~ else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
/ T) y8 E! ^6 ?% n c nPoint += 150;
' ^* n8 y3 V1 W# j0 D! l else if( m_nJob == JOB_RINGMASTER )
. G$ ?* P# ~9 m: B9 }9 l nPoint += 160;
; P) F ?. S1 ~4 Z7 t6 | else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER ); q2 n5 g4 R0 R g5 S3 B
nPoint += 180;2 ^, I+ p, j" p2 Z7 [4 H
else if( m_nJob == JOB_ELEMENTOR )
, r, u: ]; C( ]& q nPoint += 390;
6 D4 z: c# f( G w. i3 Z( z else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
! n. \: Q$ q1 ~- o% p9 e7 Q nPoint += 120;
1 `8 ?7 d1 _- k" O: { else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
. p* N8 i$ Z0 [5 Z/ C% n nPoint += 150;0 E1 f3 _, N2 g J
else if( nJob == JOB_FLORIST_HERO )7 e* ~5 x8 f" y, B
nPoint += 160;) z, h" a& {7 |& W& g4 K: z" ?+ W, R
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )! o2 y- S( U ?5 L9 u
nPoint += 180;/ X2 y! }: l! h' W: f# ^& ~
else if( nJob == JOB_ELEMENTORLORD_HERO )
. R- w0 N0 C) n" W nPoint += 390;
8 G4 V8 Q: E" A/ S! M5 r- ~5 z0 B8 \% Q8 l* Y
AddSkillPoint( nPoint );( c+ {( `% s6 D0 B, @6 o
m_nLevel = nLevel;
; C+ d6 o# j/ k3 p: a9 U5 l: m U" T' F5 d9 {/ V' y ~
SetJobLevel( nLevel, nJob );
+ g e9 b+ Z$ c+ G/ E) s m_nDeathLevel = nLevel;
% ~3 Z, F8 t l c% s I#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
% Z2 ?/ c M% a" x- v0 D if(IsMaster())6 \! I$ O' Y: W% t, B" L( @
{
- e1 {. |. Z! D* P int dwTmpSkLevel = 1;//60, 72, 84, 96, 108& r% _6 c8 \8 H) E& a
if( nLevel > 59 && nLevel < 72 )
) [( U' y: v# _ dwTmpSkLevel = 1;
* i0 [* M4 {6 L. W3 F else if( nLevel > 71 && nLevel < 84 )7 c0 W5 n6 p' h( ~. ^
dwTmpSkLevel = 2;
$ f3 y. J+ _3 B& c2 O else if( nLevel > 83 && nLevel < 96 )! U0 Z2 Y* y0 {- g7 d
dwTmpSkLevel = 3;$ v4 P4 u: |% a! F/ m8 G
else if( nLevel > 95 && nLevel < 108 ). y+ j) D' q# v1 T% b, Y0 }
dwTmpSkLevel = 4;
7 Z$ }; R; h8 b/ T, W! a1 X w else if( nLevel > 107 && nLevel < 120 )
( m' i* A( q8 D4 r3 ? dwTmpSkLevel = 5;
- x) B/ F; g7 ^ for( int i = 0; i < MAX_SKILL_JOB; i++ )
# x7 t B. f6 J# X0 `; n' w { 2 e$ i5 M" P- B! z7 P: P
LPSKILL lpSkill = &(m_aJobSkill);
& x9 o# c+ I3 n4 h if( lpSkill && lpSkill->dwSkill != NULL_ID )1 h' ?5 [# b1 S' e6 p+ V
{4 [2 z# x1 g( K: B! T/ A
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
0 |# f8 A( s8 c0 w- W( u7 l if( pSkillProp == NULL )
b* O9 k& `- H) t( }/ n4 L continue;5 i4 ]0 {5 p; \; n
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)/ g" U# I I- B) R* I! k) J
continue;" N0 g' o, x) l) O! l5 \
lpSkill->dwLevel = dwTmpSkLevel;
) U/ r4 m+ E7 b: C* K& f } {: h5 Y' [, x1 r. ?6 o
}: U5 U& a1 c3 B' l, ]& [
}' N. b4 }4 a! e9 c4 k. C- N
else if(IsHero())
+ N: @: @0 j( x/ |' K6 {# e {
: R! r Z( R9 `, d0 q- m for( int i = 0; i < MAX_SKILL_JOB; i++ )
1 j7 ?+ a, W# }( h { 8 Z! m, e p! @! B
LPSKILL lpSkill = &(m_aJobSkill);* ?+ L+ } A. `3 g
if( lpSkill && lpSkill->dwSkill != NULL_ID )
% E8 _' J, {4 b3 Q {
8 J; Q0 t. l/ h4 a0 B% T ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
t8 p! E8 d O) e0 j5 S if( pSkillProp == NULL )
$ L, D7 u4 M+ N/ T! _9 M0 Y1 R continue;* _ U3 n+ q* w' i S' d
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
, B0 B' f! g/ R0 p" S continue;
" d4 u, H7 H: d6 @+ N lpSkill->dwLevel = 5;
5 s6 s$ I$ r& o; j0 O. V }
! p: w4 `& g/ n2 q8 }& R* j }6 Z( Z( K4 ] u6 T; `/ q
}
5 d; X. [- f' C+ Z1 q. j# r; c else if(IsLegendHero()): Z* F( T- {' L# ]) J' h/ q
{
- P3 D0 U9 x* t9 N) d! q6 }" P for( int i = 0; i < MAX_SKILL_JOB; i++ )
2 r- n& W* ]4 O {
& ~# D, j$ z+ _9 { LPSKILL lpSkill = &(m_aJobSkill);
8 N) Y/ y) G1 ~ if( lpSkill && lpSkill->dwSkill != NULL_ID )
; B v5 K/ W; L4 U0 j {
# J+ G) _/ x5 o) _ ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 3 |& q+ W! U4 s
if( pSkillProp == NULL )
8 \8 K4 U( }3 U continue;
5 |) q% y; |/ U$ L if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
6 X" [) g/ K. D' f+ j* M" R4 T1 M continue;+ M e3 L R. j+ J; b4 J
lpSkill->dwLevel = 5;' I% Q) B! r6 e- E
}
" a9 A* k8 \' k& K }
% `3 L) M, A9 h0 R1 J/ [1 m1 J }- K( P+ Y2 X. q) A0 [& w+ m
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
: T- v) r- I- A- ?* ?6 s3 A if( bGamma )
- T2 E# Y1 G( s* c& | {) G* C3 q3 d4 M8 {: R
m_nExp1 = 0;9 Q) x; [1 _) A3 p( l" J+ t* R' `1 b
}5 Q6 j) N) D3 F5 j
2 {+ z4 x3 z z1 g/ Q
( (CUser*)this )->AddSetChangeJob( nJob );
0 }1 Q M$ {! |& |3 d g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
7 B# c# }8 f9 B6 m+ A F- H* ], Z: s% c3 j
3 G& o9 y+ e( }$ t6 ?: \8 a#if __VER >= 11 // __SYS_PLAYER_DATA) h0 i4 h5 ]9 N3 N
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
' e* [6 H- O F& A* K3 _* H#else // __SYS_PLAYER_DATA
' r# U5 z8 c5 @! f7 Q8 E g_DPCoreClient.SendPartyMemberJob( (CUser*)this );% X F; @ P+ \, E, B
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );+ B* F6 v8 v. o# c3 Y7 \: L
if( m_idGuild != 0 ); e0 ?& L. s7 U4 a
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this ); F8 F( ^( o) R7 G* r, C
#endif // __SYS_PLAYER_DATA( F( @! ?" ^* ~8 F$ v
SetHitPoint( GetMaxHitPoint() );. f5 o% V' Q& d$ p4 l5 d) b* W
SetManaPoint( GetMaxManaPoint() );
# \: ^ A$ J, Z+ c2 c, |0 W- l SetFatiguePoint( GetMaxFatiguePoint() );
. u" G, ^) T0 O) g9 s if( nJob >= 1 && nJob <= 4 )
6 K0 i% U8 t" Z, z- z% J0 { {
. V3 o( ^# T1 A* m2 G U2 t m_nStr = m_nSta = m_nDex = m_nInt = 15;
5 x8 |( \* s0 |6 i w/ ~ m_nRemainGP = 28;
9 I- Z0 o# f* W$ `. q }
/ }% |! N3 U8 Y% d8 q) |/ ?: ` if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
; s& G' T. U6 B9 T& U* g- c {1 f( E8 z7 |) N, j- H, C
m_nRemainGP = 118;
( i. ~$ a" B/ T6 Y' d3 A4 v //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;8 n3 l! J3 H0 B5 D
m_nStr = m_nSta = m_nDex = m_nInt = 15;
- d! T# E: c8 T- x- p }: s' H" P3 u' N! w% k
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
, Z; e+ k2 M/ o, l; O2 p {) Z) Y* D4 P$ a) ?5 F) D: m. ]( f
CItemElem itemelem;
" y" Z# Q$ S2 I itemelem.m_nItemNum = 1;
& V$ [! H" h" [+ P2 p" ] itemelem.m_bCharged = TRUE;# A3 V) g4 s8 \8 j6 w6 f3 A
BYTE nID;
- S( P+ O9 e: l, Q
% e6 \8 r$ o3 c" V4 @* C8 Z if( nJob == JOB_MENTALIST_HERO )
+ A- H+ }+ {% ~: f- S- B itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;* v& E+ A; Q+ N( d+ ~$ Y9 C5 {
if( nJob == JOB_FORCEMASTER_HERO )
0 F/ n8 p/ O8 Y3 R0 w itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
4 F0 F! Q, t; c% k
# f1 j& ?3 o+ u4 h9 T ( ( CUser*)this)->CreateItem( &itemelem, &nID );
: z* m: ]- D; }( R' l5 ?3 I* r }
k+ I( @- M3 T g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
% C& A* l" d# `2 Q+ B2 R ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
* I! Z0 B7 o! \. ]! V ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );7 t$ F: M" Y7 |# U' t1 i. H3 j+ c
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
3 w( ~ L: L, f" u ( (CUser*)this )->AddTaskBar();*/& Y5 V4 | a; _7 E2 M4 e# }
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );3 D0 d9 ^: [7 C. v
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?6 T2 W! h9 R# i$ [2 i
((CUser*)this)->CheckHonorStat();0 ], P) o) M- d, `
((CUser*)this)->AddHonorListAck();) O" @. i4 d& g8 T* {* ^8 ]
g_UserMng.AddHonorTitleChange( this, m_nHonor);( P8 o0 Z! {: s+ A4 q# e1 E1 r
#endif // __HONORABLE_TITLE // ′Tà?! N1 q2 `0 U" V9 _4 E
}
1 N- }. ~- {. E4 W+ p9 w& L#endif // __WORLDSERVER- X! \6 \! I: S6 d- ?
}
+ ~8 c8 m% K# J: l
( W" S* w, @9 y7 \% t然后你进入functextcmd.cpp并添加以下
7 M/ Q4 w7 U6 |/ F9 j% v8 c- e0 ?
" E2 E6 o7 P5 Y: ?0 {代码:
/ X; t$ I- X. g4 Z1 FON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
# q8 {6 D8 V% d5 a& j0 Z4 f" G" m下面插入
6 J7 I! }! `& N5 tON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
9 @2 q5 t. {+ R, p2 r* n' h3 S. P7 U" L
然后你去
K6 S/ T3 y4 W0 r( t
2 @. c4 \3 f# t' b5 M代码:
. D- K3 j0 [8 J# x代码
6 y8 }6 {+ `3 D E G) A1 uBOOL TextCmd_ClearPropose( CScanner & s )
& V; R* j- F, r+ y$ v6 D{, L* o3 Z" z8 B7 x* i8 S% z, b0 y2 |
#ifdef __WORLDSERVER
W4 s5 t% P2 E5 R" O9 f8 W# ^1 | CUser* pUser = (CUser*)s.dwValue;# v' j8 N. |9 e$ k
g_dpDBClient.SendClearPropose();; Q! y, O+ x& b+ s
#endif // __WORLDSERVER
! v' O. X; |- q% g return TRUE;
o2 k7 l b4 U( ~$ ]' x# g( H) d}
: @1 V9 q) q$ {/ T' M" @下面插入
1 A( t' {8 f2 A% `; P4 ~BOOL TextCmd_rebirth( CScanner& scanner )
3 c' D) G3 q5 [/ G{
6 d& e" x7 I l, d#ifdef __WORLDSERVER
/ ?9 S8 p4 g( q, x$ \5 GCUser *pUser;; k& \! Y; J" |8 l
pUser = (CUser*)scanner.dwValue;
( l" d; s; ]1 k( A5 R: ^) B5 Dif(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
3 e3 Y7 U. Q- p* H7 h- a' d8 N% `pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
% u, K$ w3 V8 x1 J' zelse: P! j9 J; d7 v8 v* V/ h
pUser->AddText("你还未达到重生条件!");8 y' z6 ~* I) M5 y! S
#endif
- ^+ o. Q* A5 w1 b7 b4 W& j; Z! ereturn TRUE;
6 N" h/ z: j' q, j O) G% t4 S} . y+ s- d9 m( ^5 q$ _
# x0 X b3 q/ S
" I" c( r: ^ A3 B" Z6 O/ A; M: j' k# e& g' j* Y( o8 C+ M7 C
' f0 C% S6 M7 E* t1 m |
|