|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel1 B( q% |8 }$ o2 b8 U# Z
. {+ r5 p6 ]5 B- C9 [
Mover.h
7 l- G" R/ k; P/ Q" j代码: V; O1 u: p; f: h2 |5 V
找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
0 `) B9 x" a) j/ H3 r/ ~' X9 }# o. E7 M4 V4 \: G$ \
下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; ( r" O# o! g: r: ]
- g1 S. c" g. M9 x! ^( d3 N9 K
然后你去mover.cpp添加2 ]6 z, t9 T$ S6 Z
* U- P7 N7 B5 a3 U! ~) J1 Y. h代码: L: G% S" |1 D; K4 x5 Q
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
4 ~1 J" z0 j- ?" c{& k8 u4 }3 N9 q4 h. c- _$ P0 o% Y
#ifdef __WORLDSERVER
3 a) V) f2 N0 X" t // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó9 L4 O* v0 O( p8 J9 Q6 w
MoverProp* pProp = GetProp();* P2 P" }) C# E. c' ~
if( pProp )
, b$ c u1 o8 {+ B0 Z6 o {
7 `! |, \0 E, Q if( nJob > 0 && nJob < MAX_LEGEND_HERO )% z2 m3 s# }8 O2 k
{
& f/ `. K) Z |4 Z" Y5 b AddChangeJob( nJob );
, Z! ~/ ]2 p1 F' g( J) [ }else{( i$ y: |1 Q& d
return;
2 g# x. Z9 G, y0 o2 ~ }
$ }: v4 \7 ~; S1 e5 S7 r6 {6 x int nPoint = 0;3 Q' n, o" g% V' ` N
if( m_nJob == JOB_MERCENARY )( X4 T# ^- q/ |* U7 y
nPoint += 40;! u! V, |# ^1 X' I
else if( m_nJob == JOB_ACROBAT )7 ?! }& m4 p- P! I3 Y/ |
nPoint += 50;
! ^! j: }- U( M9 }- H, s4 W& z$ P; \ else if( m_nJob == JOB_ASSIST )
1 C7 D' f4 U; R2 S6 k nPoint += 60;4 q" \% R, F0 z7 S: ~, W! C3 {
else if( m_nJob == JOB_MAGICIAN )
B% ~0 y% D* k7 n$ Y nPoint += 90;
; s; m/ C) U6 l/ L7 Z else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
* @) Q( R! |6 V% S nPoint += 120;+ A. W# M) ^, Q9 R- `' s
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
5 ^$ s3 q; A$ e2 ]5 m' W( S9 C nPoint += 150;% R z5 ^/ v" ?
else if( m_nJob == JOB_RINGMASTER )9 D! Z8 O2 w: S h- k' S
nPoint += 160;
7 O9 Y% M/ z7 M7 X6 @( h8 L) @- Q else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )2 `6 o9 w) H& `6 [
nPoint += 180;" s6 M$ a# J8 [7 s7 [ n4 Z
else if( m_nJob == JOB_ELEMENTOR )+ ^, U5 A e, j. v
nPoint += 390;1 U* L. w7 z2 k, _% t+ {' |
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
' L1 U s4 E. `" C2 j4 ?; f nPoint += 120;
. y! h; P) b$ {/ n, \* d! O y else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
2 N( {& Y; d8 S* y( ]4 C4 T nPoint += 150;* u& t; A8 v, n3 d
else if( nJob == JOB_FLORIST_HERO )& e7 n0 k! o. j: n
nPoint += 160;; e: C& `, I" y: |& W
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
' ^ I+ x% |$ c& G8 J$ b nPoint += 180;
: C5 P- v: n7 [0 V- @$ M! ? else if( nJob == JOB_ELEMENTORLORD_HERO )' _) O/ d4 o* T4 r5 A$ d# _+ K7 G' {
nPoint += 390;) H) ]- y; G/ A4 \$ E( M
# a# W" Y! c! q* w
AddSkillPoint( nPoint );
6 b0 J! Y- a. Y. W( l6 V5 x m_nLevel = nLevel;. j$ u5 U! @$ s3 _2 w
/ `! ?% i0 w1 @% e! ~! {
SetJobLevel( nLevel, nJob );
' K7 v4 N6 p! ^# d/ Z7 ] m_nDeathLevel = nLevel;
6 ^2 J1 g# I: }; o0 z1 a4 ]#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
) \. j2 T9 n {; Z/ q! G if(IsMaster())
( ^) O+ v$ R) f3 V/ N1 y K {1 F$ A. m% V1 N+ T
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108 i8 G" G8 g: Q
if( nLevel > 59 && nLevel < 72 )
: l; w4 z+ M! k( G/ Q dwTmpSkLevel = 1;
k+ J* I( ^) b5 n; R else if( nLevel > 71 && nLevel < 84 ) W" T* o$ U5 Q" E, L/ ?3 a
dwTmpSkLevel = 2;- p, C+ z' ^4 f& `' r+ N2 _
else if( nLevel > 83 && nLevel < 96 )
2 w7 f9 n+ d9 v& M5 { dwTmpSkLevel = 3;
v0 b, x% b* P d& k else if( nLevel > 95 && nLevel < 108 )
5 N" S- ?2 t& |( \) K* m7 V: i0 C dwTmpSkLevel = 4;. d+ B+ Y$ Y- y1 M; B" o/ d
else if( nLevel > 107 && nLevel < 120 )' U1 H' m: o7 q) u: P( Z# i
dwTmpSkLevel = 5;$ ^2 ?/ T" V/ s( `
for( int i = 0; i < MAX_SKILL_JOB; i++ )
4 ?1 ~8 V6 A6 N# _3 [ { ) V1 ]1 E! l. ?+ Z3 D) U
LPSKILL lpSkill = &(m_aJobSkill);
$ H+ D( x, C1 D3 Z1 Z" v" U if( lpSkill && lpSkill->dwSkill != NULL_ID )9 P+ z4 n, V, ?' D( X: k' S3 h7 L
{8 R5 P( D+ s; P5 e
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); / Q# J% g0 o/ M y* m: c
if( pSkillProp == NULL ), X9 @' H8 J8 q+ ~4 ], H% ^* ~
continue;
& K& q0 d9 a$ h7 q- N if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
! C6 y: D' u7 I continue;; e- m, t* s- x0 ?. S
lpSkill->dwLevel = dwTmpSkLevel;! Q/ a* W* O3 U$ t
}
; `6 z4 x) z6 S- _6 M0 h }7 e: G6 ]+ _$ ?* x
}# c9 P) X) s" ?+ w
else if(IsHero())
8 W8 q* ]5 }0 P- ?* _ {
, O q- Y9 @: ]: P) w for( int i = 0; i < MAX_SKILL_JOB; i++ )
3 _# c' ]. a$ [; j5 C) ` {
2 O4 p0 v8 B3 m! e+ e. X# ~+ `1 Y LPSKILL lpSkill = &(m_aJobSkill);
) }/ q' m) i+ l) \1 M: j* T3 O if( lpSkill && lpSkill->dwSkill != NULL_ID )0 X' n/ x; L0 d( j% v0 T; k
{
* I4 ^8 k( X$ y8 G$ n ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ! m1 y5 }1 \$ v
if( pSkillProp == NULL )
" ], W! M& u) B8 K' o* G continue;
/ r- H0 J4 D6 ] if( pSkillProp->dwItemKind1 != JTYPE_MASTER) C7 b0 U2 f1 z. Q
continue;
- r! G$ v; L" H0 k0 _ O" k" I lpSkill->dwLevel = 5;
$ ]. X5 `0 f; `& A) l0 o! w }
) U. `% e1 {1 r& o, D }
+ d* R4 A# ~6 S3 N+ C" d" v }
. r1 h7 F: t Q. e0 b. u else if(IsLegendHero())
' B. c4 p! b* r2 K( F8 y' ]; P: ~ {$ W4 w# P# |$ W* Y0 J
for( int i = 0; i < MAX_SKILL_JOB; i++ )
2 ^3 O/ J. e! d1 U { / T6 S) [* o y. k4 h, ]7 B
LPSKILL lpSkill = &(m_aJobSkill);; ~ [: A* W6 U! X' S( x
if( lpSkill && lpSkill->dwSkill != NULL_ID )
K4 p* V! ]1 F' v8 B {
% q8 ?5 R3 z0 J1 ~" l* V ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); # I' v1 K; U& D4 j
if( pSkillProp == NULL )5 {& W7 o( z Z7 |- W* |5 v1 l
continue;
9 J8 P1 V9 q7 I/ v9 w% e if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
: m* T' N0 t0 U+ S0 l- Q$ d( F continue;
8 z7 `* y7 G6 n% X$ K lpSkill->dwLevel = 5;
6 m6 c1 X" ^: [: n }
( I. z2 e8 g" G9 ^: U1 _3 V3 N# E }
9 X4 N2 | i M$ l+ U }
* n) p0 }: n2 S* ]* Q6 r#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
9 P1 W% D, i+ p4 D! _ if( bGamma )+ g7 e/ b9 N' G1 g! U% M% q
{
. u- W0 G- ?* k) E; |2 h5 c m_nExp1 = 0;
; G8 U3 p" N' h8 p) `+ U% U- }3 m% { }( s2 s9 I, C- }; n h! B# K0 Q9 F3 `
( e7 {2 ~+ v( ^" O# ~, y: v ( (CUser*)this )->AddSetChangeJob( nJob );. e* j- F. T0 f+ k
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
& a1 b7 M7 j* l
9 c- f4 I+ d U& L2 }8 }- |4 L% Y7 h1 M6 W
#if __VER >= 11 // __SYS_PLAYER_DATA+ v( w6 E3 _% M/ |5 S
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );2 E& Y2 A& n5 Q, B, P
#else // __SYS_PLAYER_DATA* ^( _- ?: }0 X; S) Y' s' s, X9 \- X1 n
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );: a3 l7 S5 d$ q+ E9 i2 c$ F
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );, W* X) a7 O- v9 [
if( m_idGuild != 0 )
. Y$ X! b, s3 W7 F4 V g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );; T0 Q- ^. ]3 t( B6 Q+ `
#endif // __SYS_PLAYER_DATA
7 H3 U. p# x9 I! \7 ` ` SetHitPoint( GetMaxHitPoint() );0 l5 @9 C! Z& ]" s$ `* V% ~
SetManaPoint( GetMaxManaPoint() );7 a8 V/ D2 u9 C9 g* Q0 i ~* U2 j
SetFatiguePoint( GetMaxFatiguePoint() );
5 u! {; G; E# o) u [6 W9 S. D$ Y if( nJob >= 1 && nJob <= 4 )
) y5 k: P. i% D: S' z9 h {
$ K/ X: z. y0 I* r1 L( D! R- D m_nStr = m_nSta = m_nDex = m_nInt = 15;
6 g( ~! S8 d3 y& @ m_nRemainGP = 28;
& X% x. C/ K* [) m( { }
3 d. M8 F2 h9 v# I# U. ~ if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
* R4 `7 e- \8 u* C {
+ h4 ?' }7 i8 w( C9 o! p% i m_nRemainGP = 118;0 T7 T0 S6 u+ D, a" v. J1 I
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;8 X0 [3 V7 M+ I$ C
m_nStr = m_nSta = m_nDex = m_nInt = 15;
. w: `( L! a, Q7 @- G/ o7 Y9 P" Z }
+ G3 {( Z( `- b if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ) b; ^9 O% m' g: \" p& N7 e
{
6 n4 h( H) P/ \1 q9 D/ j CItemElem itemelem;! v) s- k w* [5 R5 ]
itemelem.m_nItemNum = 1;
: |$ _8 @$ r& s f6 ]; } itemelem.m_bCharged = TRUE;. e0 R) E" E* x
BYTE nID;
6 W' @7 W+ b& ?$ Y) _5 S7 h
8 @; \9 n# c+ w- I5 a* ~7 T3 Y if( nJob == JOB_MENTALIST_HERO )
1 n9 p/ W' o7 T0 i, d1 t itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;7 k5 ?$ v1 n1 L5 M- m+ \5 S
if( nJob == JOB_FORCEMASTER_HERO )
5 |& ~, P/ ~* |( j- I3 {, k5 i itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
2 G- m6 D/ r( ^/ ]: _/ Q
+ T0 s$ u9 y \9 R/ j ( ( CUser*)this)->CreateItem( &itemelem, &nID );
* k% }" [- }( G: r$ A K$ x }
8 Q8 T9 o4 O/ l" ~( A: j g_UserMng.AddSetLevel( this, (WORD)m_nLevel );- v V1 l$ a/ c9 F
( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
8 E5 h7 F3 @( v) p ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );# D5 D$ k7 K$ s' B2 c
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );$ D# C, p$ J' a# m+ r8 [8 `
( (CUser*)this )->AddTaskBar();*/% R: l+ a! g+ k
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
3 ^) S/ l6 F( @& L2 E#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?" B7 q; v! B6 v6 l
((CUser*)this)->CheckHonorStat();
0 I, s. ]2 _ \9 b j; H7 v5 [ ((CUser*)this)->AddHonorListAck();; r; |# `5 T. e+ g
g_UserMng.AddHonorTitleChange( this, m_nHonor);# r# ]. N; n$ O8 e1 z0 z
#endif // __HONORABLE_TITLE // ′Tà?
9 a4 s, k' a3 C, ~1 t8 A! l p9 s }
* ^- j# `, c( Q7 G#endif // __WORLDSERVER
# R1 l+ E. \ \9 f}
/ y9 z% M6 T4 p; @: F$ k# E- R" S% B n, O0 v7 F% }1 ?2 B
然后你进入functextcmd.cpp并添加以下3 N& E, L8 {8 Z4 R) A2 a# |
/ M- i$ l8 a5 g( V
代码:( c7 @1 N# n; E. p2 x
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )) Y) d5 R5 B5 C, p: s
下面插入, |7 Z4 f+ t; I$ L0 x9 x
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
) Y) X% P% p& }* A/ ] N) x( H: U+ O2 k
w; T+ n( ~# J" @) b" t7 Z2 b然后你去
/ F0 f) Y% ]& ~
0 A8 [+ a4 W! L代码:
. v& J M E* n9 W+ u7 N' A代码
" |& V$ A+ z& ]& G3 P. E' m9 N& ABOOL TextCmd_ClearPropose( CScanner & s )* \; c% V8 K, ]9 r0 c: C
{& j: {0 I0 {- N! I
#ifdef __WORLDSERVER
; G, L5 O, u1 W' i+ L. F2 J CUser* pUser = (CUser*)s.dwValue;
3 G+ X$ q6 P& X, s$ h. L& W g_dpDBClient.SendClearPropose();
' m5 w" |. i- e! h* ^% V#endif // __WORLDSERVER1 M) z: U1 z7 s+ x
return TRUE;
- v& f1 @: e" L0 o3 E/ W}
& n4 }' n4 h" C7 E, x下面插入$ m" J6 w) w5 e Y* u- D$ W( n
BOOL TextCmd_rebirth( CScanner& scanner )
1 h# z2 w7 t1 C+ v2 g{5 q$ e8 o7 L& Y: f
#ifdef __WORLDSERVER3 }" u+ \! K. i0 `- ]0 r
CUser *pUser;
- l' P/ z4 w1 X; t$ v: y. ?. B3 rpUser = (CUser*)scanner.dwValue;" X. A1 F5 A( m3 T
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())( I% A: a Q" U5 x+ G% W6 L
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);* c" i! ~ m, n( z# Y
else8 R; L" O' x- _1 F
pUser->AddText("你还未达到重生条件!");
1 H/ q9 Q& [ z1 `6 a% S#endif4 g) Y: X$ i6 h; Y7 }, T
return TRUE;0 m, q7 ^( J$ q' D
} % p8 U0 w/ q3 X9 U! V; R
8 `4 l- o( n2 E: _% _ @
t8 r2 h( Q3 O) S
6 f0 ^) D, [! t6 k- f N; `2 ]2 j" {3 z; U* r6 I. q
|
|