|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel8 f$ i `2 { F9 I
9 r* Q: ?8 W" ?# {& [Mover.h/ J8 l( F) p v4 ]2 ]( J
代码:
; ~8 X7 R; Z! f找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü V7 Y+ E5 n6 O' I
3 @- @! V2 I& P* p. u* Q下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 7 G$ K9 N% N7 W7 d+ X; G
! X# `2 o) M$ j1 \4 `8 s$ N然后你去mover.cpp添加+ t) t& E* q+ ?! n2 t) Y' \' q
9 N8 v/ L" H! u" P% P$ l1 l代码:5 w" y- Y# \ X/ C" K/ ~, _' t; m# w
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
5 P- U& n! ?8 _( a{) i: `1 q; K. j$ l- R V* g
#ifdef __WORLDSERVER
" e. [1 x% }% X8 V/ _' R) N- l- T: F: Z // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó4 J1 V- c8 H9 E2 {' {
MoverProp* pProp = GetProp();& l6 c! n( i& m
if( pProp )4 L$ h/ M" ?' Q( t( n& N
{
# P2 j* \9 R1 ~* v; H if( nJob > 0 && nJob < MAX_LEGEND_HERO )
. d% A# R8 r$ l {
' v p3 v! Y9 e! W AddChangeJob( nJob );
( |+ e; @/ e' W7 V0 e% Y2 P }else{8 b' C8 Z" p; l9 d3 R! }
return;
9 d6 J2 g$ `( C$ O6 N: q }& I* k( P. `3 k$ E* f
int nPoint = 0;$ W9 s2 s1 Y: I
if( m_nJob == JOB_MERCENARY )
1 }) k3 Z( F! g: O; m; O# ^) r nPoint += 40;
' ]4 @( [. D6 e; P' E" Q' y5 W/ F else if( m_nJob == JOB_ACROBAT )
- Y1 u* o1 M v' v M, H nPoint += 50;
" r% h) R. Y, R' } L+ F* W; ^ else if( m_nJob == JOB_ASSIST )
% U2 ^! U& \9 M2 ~# Q nPoint += 60;
1 I5 P+ G' X. S else if( m_nJob == JOB_MAGICIAN )
& P2 K6 f+ ?5 T; r5 t" l nPoint += 90;& x8 s3 n2 S9 S
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
! V j# E9 k. K# B1 [+ I3 ]% T nPoint += 120;
. @6 w$ ` O4 z. A% G& @ else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )* ~0 x. _. W8 ~6 d
nPoint += 150;
% {5 X1 X0 C @6 V/ j! P else if( m_nJob == JOB_RINGMASTER )8 X. | a5 ~, w0 q( I
nPoint += 160;1 S3 U0 m# D4 ]9 L0 v
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
. m* D: V$ a" `2 y nPoint += 180;6 E' {# T# `. d
else if( m_nJob == JOB_ELEMENTOR )0 B$ D8 E6 m6 a% F
nPoint += 390;" o9 }: `/ X5 i& \: N
else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )7 n% z F; l; T% n) a/ s0 _6 {
nPoint += 120;
! Y3 K: z6 I1 V( q5 i else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )9 [4 r7 @, K1 Z. K3 R! p2 g
nPoint += 150;
, w/ l; s, I. A; L5 Q5 W: i else if( nJob == JOB_FLORIST_HERO )
! k/ ^. C! h- ` P( ^7 ?. \7 ~) P& U nPoint += 160;2 |9 z3 [; {, b. H m/ b7 w" @
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
% u/ Q9 k" k: j1 \* e! e- g% _ nPoint += 180;
7 u0 h% ^8 l9 E& p; \, b g else if( nJob == JOB_ELEMENTORLORD_HERO )
+ B- r! w, {: h6 e$ Y! c0 T nPoint += 390;
% _, L! t# c7 m& T6 ~4 i* D8 @. s% |/ I! y9 t1 D; C, p8 a
AddSkillPoint( nPoint );
, U7 D* j) |4 `/ k m_nLevel = nLevel;' V: W4 k9 ~- t5 i. G0 g9 J
. q7 g+ T& L2 q* z& |5 S' c% j" ]
SetJobLevel( nLevel, nJob );2 j) [% }& d* P1 }! i( d0 _& H
m_nDeathLevel = nLevel;# o8 ?$ t a5 c, o, {0 d- w$ b/ p
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
, I8 H" u; d Z; Q: \, f if(IsMaster())& A3 y, V5 @/ F4 J
{
9 Q/ C% K; g! ?) O5 M int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
$ d8 [- |) Q. i% d9 i/ ?* y Y if( nLevel > 59 && nLevel < 72 )* \, E4 u# g) i1 E% z; {4 L
dwTmpSkLevel = 1;" S5 n4 T; M3 a6 Q- I# k
else if( nLevel > 71 && nLevel < 84 )
5 x- f( ^3 E! ~$ l0 v dwTmpSkLevel = 2;
- A' @& u; p' W' ?; Z {7 s else if( nLevel > 83 && nLevel < 96 )" v7 h" m! g* z i" q6 x6 Z# z
dwTmpSkLevel = 3;
3 @5 t: I1 e- `6 X( v6 m1 O, m! f else if( nLevel > 95 && nLevel < 108 )6 ?* Y3 |. e) u: n% b. U" a9 ?
dwTmpSkLevel = 4;
3 [$ l' ~5 P" g5 f( h3 S2 u else if( nLevel > 107 && nLevel < 120 )
$ X; v- a7 z! a$ v# x dwTmpSkLevel = 5;
4 F0 R) j* W6 B% D" u$ u for( int i = 0; i < MAX_SKILL_JOB; i++ ) ' v6 d' C" {8 h% d9 O
{ + `& y. [' N# k5 y4 L. u' h- s
LPSKILL lpSkill = &(m_aJobSkill);/ Y- d$ j' J/ V' e5 l0 S
if( lpSkill && lpSkill->dwSkill != NULL_ID ); J3 O! ~) V; T# p6 ~' n( T
{" q& f% X# D' Z% c1 |. x- L( z+ k
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); ! M$ \1 { L1 A
if( pSkillProp == NULL )3 F8 m: z/ Y, A5 J" p+ Q; a
continue;
' {1 V9 j$ S6 R) S# M* j( ~; `8 V if( pSkillProp->dwItemKind1 != JTYPE_MASTER)0 C7 o/ J& k+ W/ j! s h
continue;
1 B" j( U6 C m3 r1 u% I lpSkill->dwLevel = dwTmpSkLevel;7 w) g0 a; c# g8 `$ \& o
}& j8 y9 z* @9 g2 w8 y) J' Z. k
}6 W# O; p! z! A+ r7 W
}
" Q1 |# {8 j$ u& g V1 X else if(IsHero())
) k1 c6 D% _! f) G {
9 X9 R+ i+ Q. ^5 y9 F7 ?" z for( int i = 0; i < MAX_SKILL_JOB; i++ )
* W9 C$ p6 U6 A* ^( A O- s {
$ m8 X8 X4 e; }. A, A6 m LPSKILL lpSkill = &(m_aJobSkill);5 v9 z0 h0 l, c+ \# R
if( lpSkill && lpSkill->dwSkill != NULL_ID )2 [( `9 d& G* D8 \( u# H
{$ g, U4 P" {9 ?2 k
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 8 A a+ A% n( A( Z! S9 {* |
if( pSkillProp == NULL )
/ X/ c; h- f! e1 C! u7 i continue;
# I- W! }8 J- g if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
5 {7 W0 G/ Q* j( Y1 \ continue;
& O. A* l. f! A/ |" p& A Q" N: F lpSkill->dwLevel = 5;
H. Y- V' w/ ?5 O$ L E" v }! c6 ]9 m% X; ]
}
/ ^4 _5 o' o5 o, u/ K- n! R: H, e4 R }. W4 g- N6 z. ] B/ ?
else if(IsLegendHero()). Y4 E' u: o9 q2 `$ e( I6 m! G
{
9 ?/ W( v+ j2 i0 L% _7 ?8 F# _% | for( int i = 0; i < MAX_SKILL_JOB; i++ ) 6 c/ `6 P1 H, _5 M w: C5 x7 E
{ - V& f" u; r/ n
LPSKILL lpSkill = &(m_aJobSkill);+ V5 H- D/ O( l! Z- T4 p+ F
if( lpSkill && lpSkill->dwSkill != NULL_ID )
- H* e4 b5 D" @. o4 Z' \( v {
7 K. W% ?2 e x, {& l ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
; |& a9 `. j$ Q$ q7 P4 r" l if( pSkillProp == NULL ): X: ~' f6 C+ U+ `: ^1 F8 f3 Y
continue;
. p8 v- R# d+ B- b2 L6 T$ ] if( pSkillProp->dwItemKind1 != JTYPE_MASTER)* S1 ]# j, c4 g9 Y
continue;
3 O! ^- K! ~3 E9 [& P, y lpSkill->dwLevel = 5;% @' A9 ~% H/ H1 P# B
}. Z; n$ Z( C3 ~* t9 V
}
; Y c7 ~# u. T0 J1 ?9 l) N }
H' l) ]9 j) F( H#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans# Y. V1 q$ _# P0 A5 j" p3 d
if( bGamma )2 ^1 b4 z* P# [6 B
{
0 X2 s6 _4 g5 B6 P( r# R5 U m_nExp1 = 0;
: c2 p$ L8 ^+ }! n. W }
' P+ j% V4 G6 u7 R1 d8 ~+ B0 L2 y* `2 R" y! f3 Y2 y
( (CUser*)this )->AddSetChangeJob( nJob );
' W# }3 n+ Y |3 p8 m; k2 l g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );/ N& P( Z4 j- F4 U& ~( ?, q
4 Q$ N: K" K- v/ E+ i8 P
! |, R7 | n2 @1 W4 J7 D
#if __VER >= 11 // __SYS_PLAYER_DATA1 B: h9 C. E+ w& ]* L+ `* o
g_dpDBClient.SendUpdatePlayerData( (CUser*)this );& |. A( v" r. W8 _7 e
#else // __SYS_PLAYER_DATA0 ^/ i% Q$ K+ f R( T0 m- M6 I8 H/ p
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );, |, G% s6 Y) _* N# s- J2 ]! Q5 o
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
, }, t) f ~4 t if( m_idGuild != 0 )
6 T5 x# Z5 I' F& P! S0 ^3 ` I g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
% `; ^5 r' u! P9 ^#endif // __SYS_PLAYER_DATA# M$ E0 x( ~% ` n
SetHitPoint( GetMaxHitPoint() );
0 _2 ?0 B- s7 _- A SetManaPoint( GetMaxManaPoint() );+ t- G9 h, A0 L2 B$ }3 ?
SetFatiguePoint( GetMaxFatiguePoint() );5 v0 ^, q- l0 ]. ]. K
if( nJob >= 1 && nJob <= 4 )
* r' M I7 X J; q a/ k8 G, f {
8 T8 V5 d+ h. p q T- ?1 y m_nStr = m_nSta = m_nDex = m_nInt = 15;
$ d$ \+ u% C/ i6 C1 `. `# p; F m_nRemainGP = 28;4 n; F; N7 Y" N. b9 r
}/ P# N* D0 a2 b0 _4 x6 l8 g( K5 c
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
* _6 h D. G1 @7 g {5 v8 s ^0 C! z1 A9 q
m_nRemainGP = 118;& J% j" O! k @9 w. X$ o
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
w/ r% f6 P3 n% p6 {8 A6 T m_nStr = m_nSta = m_nDex = m_nInt = 15;3 B( j8 {' |$ U' C$ e
}8 f5 v0 W; m0 V8 E1 T+ R$ h
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO ) V( R# Q# U' P; O% Q4 U2 H
{
; T* ~$ a" j$ F CItemElem itemelem;6 d1 @% G2 a4 T
itemelem.m_nItemNum = 1;
x& }: r' {, Y1 l! I& T itemelem.m_bCharged = TRUE;5 a' x0 b, x2 e$ t# M5 @
BYTE nID;" {( ^& Z7 h. T& B8 H# K6 v
0 Z: @+ n' T4 _ if( nJob == JOB_MENTALIST_HERO ), P0 I8 f* W. ~$ L
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
6 h% `( ]# x" t if( nJob == JOB_FORCEMASTER_HERO )8 |3 U8 w! p9 k, d+ u
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
; o9 D6 j) J5 X
1 \6 F( K* H" z- C: S# g# @ ( ( CUser*)this)->CreateItem( &itemelem, &nID );
% ^9 F( t0 L0 ]4 C3 \& M! ^, c; } }
! |/ B' ~% J8 j5 T& A g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
& N. U, q5 z! d8 x# |. | ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
4 ]7 g# P& e$ y" U: o8 b% L ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );4 |/ d: r7 n9 j5 @4 ?
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );. Q% V* g; N) i) ?$ v
( (CUser*)this )->AddTaskBar();*/
* f# \/ Y/ H F ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );" s( A+ y- k$ ^6 @+ y
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?9 F( o$ J3 d( M0 [$ O
((CUser*)this)->CheckHonorStat();
$ G' d9 e, G/ [3 N/ k6 m; I, e& U7 \ ((CUser*)this)->AddHonorListAck();! T! |2 B; n+ q; l
g_UserMng.AddHonorTitleChange( this, m_nHonor);, H( d& `( [" X1 [
#endif // __HONORABLE_TITLE // ′Tà?/ E5 _: R+ E. d$ A. X
}
4 T- i j/ I# N7 c% S#endif // __WORLDSERVER1 x" A9 D* {$ V2 S Q
} 3 E! x1 J5 G: t* x: F
- V4 w+ Q p; ~4 I
然后你进入functextcmd.cpp并添加以下
8 ~' B5 F: d Z8 A
8 Q. b% D5 B5 _% U$ z W) j代码:+ f; p; y" B3 G; k
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )& w' C& ]/ ]6 n0 ~* O9 _% u2 E
下面插入
. c& M* V1 J) Y0 O( NON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
* y8 ]1 A0 R% Z* s9 _+ v' a
. a3 |- n: m$ }1 a ?+ o5 O然后你去9 i. b+ F2 }8 G/ R
0 s8 V S& [. e* ~, O" V代码:
5 H) [( l0 x0 f) E2 r& p: x代码9 w3 N$ h T3 c H8 z/ d5 x; X
BOOL TextCmd_ClearPropose( CScanner & s ) H7 K/ k# Y' e( |
{: h9 p; K' Q4 W
#ifdef __WORLDSERVER, q# R r5 d8 l9 t" \( K. O! b
CUser* pUser = (CUser*)s.dwValue;* U/ |! o/ F* A& S
g_dpDBClient.SendClearPropose();
4 h& g4 |8 L. |- s/ o; U5 w#endif // __WORLDSERVER
7 s4 R7 p( D8 O7 | return TRUE;
! J" @1 K/ u9 d) u6 V5 T}
: S/ M( V8 R( D4 {$ U下面插入, A$ u' Z3 b# L) U3 g& S' I
BOOL TextCmd_rebirth( CScanner& scanner )
. y1 U+ o, W; L2 g{
* i% r# ?! A6 ?8 u. }8 _2 @/ O- `#ifdef __WORLDSERVER
3 o! q0 N6 R4 C4 qCUser *pUser;9 G" \) w9 ?" B, b9 Q
pUser = (CUser*)scanner.dwValue; X2 j8 b g& ?5 X6 G( |
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
+ D0 F' C4 o4 N) apUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
6 Y* R+ F S9 `) b* N' Qelse4 a2 ?$ o U0 j Q, m1 a
pUser->AddText("你还未达到重生条件!");! h! k( @' i2 E- g3 V, l
#endif! n7 O: u @5 S. G
return TRUE;
& f) W2 _- v; `$ G/ j}
6 T' N' m& O% X) u3 e4 q
3 X; X5 u. P) k: A" @* |. t* s5 V0 m
$ n7 I8 Z6 r T% h& p3 m% C% ?% j
$ m% ^2 l6 K. s i; `( s |
|