|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
& ~- B& n0 L) D: h7 Q; ]0 O6 V$ L
Mover.h
7 z5 F% u s" O代码:
5 H) Q- b& [; C找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
5 O5 g, L3 B% ~( y. V2 A
% y0 ]' a3 W4 m, P3 }7 t' I下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
5 \7 @ j+ |7 ~3 r1 J6 ^3 p1 E3 V. O; B
然后你去mover.cpp添加
4 V' c" I$ @+ S# ^9 b9 ?4 A% k8 o* @
代码:
' b# r, g5 Y& b- m2 L' G- G) _void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )4 q( S8 d4 N1 c: H! O( Q: s
{' @! j" D% t9 p( m
#ifdef __WORLDSERVER5 R1 e7 N1 ~8 @' V
// ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
+ ~) M" k$ e& P MoverProp* pProp = GetProp();# X8 a. t! x( K. f
if( pProp )2 n9 f0 y o! D2 C9 ]6 O5 N
{
" h% `$ `8 \8 @9 j$ S" | if( nJob > 0 && nJob < MAX_LEGEND_HERO )
1 C4 o% h; q* F$ v2 U {+ Y2 h) U) e9 i2 ]* J. J3 V' v
AddChangeJob( nJob );* Q; D$ f5 B0 A' a5 G' {" b
}else{
( |4 g8 R* q. ]! _2 r* G5 B; W, I return;
! S3 X( r% B* C, q' t }- }- U- _. y- h9 C
int nPoint = 0;7 f Z# Y! B$ t" y0 t9 x$ m
if( m_nJob == JOB_MERCENARY )
( H o5 |8 ?! `' h, X4 S7 s: G nPoint += 40;
& t8 S# t3 ?8 j1 g2 T7 j else if( m_nJob == JOB_ACROBAT )
3 P5 c1 v4 z$ i7 U T7 M nPoint += 50;
. a' A" D J& R else if( m_nJob == JOB_ASSIST )
( ^0 x/ o! d$ m' l1 M& P7 T8 D nPoint += 60;
6 t/ Q" i8 U; h: O; Z; C, P9 Y" z else if( m_nJob == JOB_MAGICIAN )
, t. N9 [ w7 ~8 `/ b# O$ { nPoint += 90;! o6 H! q' y9 h; h9 @/ t
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )- N$ c! y7 V- ]8 Z; s- Y
nPoint += 120;
7 x# P* q& |# H& { else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )
0 @' t* H* f' h, ]- t nPoint += 150;- C) D/ W! F: @9 G9 W3 R" |
else if( m_nJob == JOB_RINGMASTER )
/ Y; j- E8 J6 J4 s nPoint += 160;
+ Q; ~# N. s6 G else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )% a5 \$ L$ Z3 g c3 X1 M
nPoint += 180;( b8 c( q4 J" i( a" t
else if( m_nJob == JOB_ELEMENTOR )! \; X& E2 U2 W0 a
nPoint += 390;
5 w* p, ~) M' ~" V else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
# x* ^: Y& w2 ?% m8 M nPoint += 120;) a& _( t: o1 C# n- ?
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )6 r' F. i# j7 v" R9 ]: P
nPoint += 150;
* K* \0 C7 I# M6 g, _ else if( nJob == JOB_FLORIST_HERO )+ i( i: ?5 d# L _3 R) P
nPoint += 160;
+ {+ u0 n9 W0 R) c) s else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )8 J& _2 K5 [1 |$ h2 y4 F
nPoint += 180;
( K' L. ?/ R+ x( p& a/ P4 M! A else if( nJob == JOB_ELEMENTORLORD_HERO )
; L: s" z3 s6 [ nPoint += 390;- m. s. g [+ r4 b
& M- `- c$ i! v7 R& @4 u
AddSkillPoint( nPoint );
$ V' e9 ]. d g m_nLevel = nLevel;/ \$ x3 H6 w% Q1 c
! p" K. N/ `# Q" y8 f' O$ e
SetJobLevel( nLevel, nJob );! L$ x( f) _( \( _6 h6 {
m_nDeathLevel = nLevel;
. |. k( O" }% W/ F6 w5 n#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
/ y) K- }+ s" K: n if(IsMaster())
5 q8 z9 ]# b0 j$ L {2 \) W5 {- ]. z( x0 _# q- l- X
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
& K. W0 [0 N% g* L: B if( nLevel > 59 && nLevel < 72 )
9 p* `$ c4 z7 Y$ y/ D dwTmpSkLevel = 1;
( o- O, ]5 S$ `$ B4 t( i e else if( nLevel > 71 && nLevel < 84 )& p$ C3 a& A: J3 l
dwTmpSkLevel = 2;
7 |2 D3 O8 T2 t: Q; _& m$ Q# ? else if( nLevel > 83 && nLevel < 96 )
: M, P6 E3 f" R dwTmpSkLevel = 3;
7 |/ P. n' i8 @- y4 f) k) ` else if( nLevel > 95 && nLevel < 108 )7 g7 ` O" i' d5 z6 a. q
dwTmpSkLevel = 4;
( V- h. j' G8 R& @9 E else if( nLevel > 107 && nLevel < 120 )" @( f" o: Y8 d4 i) |
dwTmpSkLevel = 5;9 U$ h8 q+ J, `5 P: g2 {# m
for( int i = 0; i < MAX_SKILL_JOB; i++ ) ' u+ q; i W9 k$ G
{ ) z1 ^" J& V V+ ?/ N. [, p8 R: h$ `8 H
LPSKILL lpSkill = &(m_aJobSkill);
: W( t" n& }/ x$ I1 H0 Y3 h if( lpSkill && lpSkill->dwSkill != NULL_ID )
/ X* {* W" a( ^+ o( p* n) n0 U0 L {
) t8 I5 K, k, X1 W' ~; a/ u) y* H ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); & E, t' W% B1 |9 T0 _
if( pSkillProp == NULL )! ^3 |8 G6 x: ^( E! Z
continue;
% C. G# W0 Z7 Z+ _ x5 |9 C if( pSkillProp->dwItemKind1 != JTYPE_MASTER); m3 O8 \" t1 J3 t7 v
continue;
- z+ r, Y, d& }- n) z% M# Q lpSkill->dwLevel = dwTmpSkLevel;
4 B% f x! K* J8 o6 H$ R }/ ?; ]+ W% |4 o" j: L
}
, H- a- H- |7 B/ Q+ u" } }7 I2 E" I5 d. w, U. s
else if(IsHero())
$ g2 j8 l6 r v7 ? O {
- e5 y P( ~6 S. z# _: V8 E for( int i = 0; i < MAX_SKILL_JOB; i++ )
! _5 i) o, A* i9 T7 w { 2 L0 L4 v9 {& y9 F. R+ W
LPSKILL lpSkill = &(m_aJobSkill);& J1 h2 {7 e5 z# I3 }& ^
if( lpSkill && lpSkill->dwSkill != NULL_ID )5 U& i+ ]* _$ V/ e ~2 `
{
& B! D; L. W/ L4 u/ U ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); 0 P# O+ T7 g' d. E) {$ E
if( pSkillProp == NULL )
9 ~3 j G1 v" {- q continue;8 c; z' F7 q6 I5 B/ J
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
2 I6 D# O' w) F8 ~: G+ N4 s continue;% |: N0 p$ q v
lpSkill->dwLevel = 5;7 ~8 Q1 A: L! n# r
}
% I% i* _. N7 H0 a2 s/ f }! b. r) ^0 m& |. `1 o, T
}
; k3 ~0 c; g1 K/ i else if(IsLegendHero())& }: { K2 ~6 S! y3 ^
{
1 Z# A% [4 b7 m! N9 } for( int i = 0; i < MAX_SKILL_JOB; i++ ) ' T; r/ l! N# i! V6 S3 @
{
6 }' e& C/ A8 R9 M LPSKILL lpSkill = &(m_aJobSkill);
* w, p! w9 @) p* E+ b if( lpSkill && lpSkill->dwSkill != NULL_ID ), ^8 h' P5 g3 S& D* r
{
* _: q* ?$ Z" e- l4 K& f8 j3 g. g ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); : D/ Z% J) G- V, c# S: [/ s
if( pSkillProp == NULL )
& |1 t* ~7 _: m continue;
1 D9 d2 z; x! D7 W if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
3 I) v* o7 ]5 H, o3 z: b continue;
+ E; D( ^. g ~' {. | lpSkill->dwLevel = 5;+ i; q$ G- n+ B
}
) h1 ?. M$ s! I5 g" Z }2 r! D6 f& i7 y
} H& M( j, C2 r* J: K! _( m/ A: Y) z
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
# Y, T x2 s3 o$ c: V; I if( bGamma )# f1 A6 ^0 ^& a7 W8 o3 V
{
' @& h. f2 P* x m_nExp1 = 0;
: C1 h" p, j3 M8 A; g) | }6 X: Q1 v" H. n$ f" y2 N
3 m+ j8 k- w* c& [" Q
( (CUser*)this )->AddSetChangeJob( nJob );
4 V" H. q3 c/ _* `0 ? g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
/ {0 v: f: t5 y6 W7 t4 `1 z1 N, K- Z1 f D+ G
2 i+ b4 j8 n, D# o# I9 c( f& a#if __VER >= 11 // __SYS_PLAYER_DATA
2 _1 ]* X) o8 ~8 B+ P0 @9 v- _/ L g_dpDBClient.SendUpdatePlayerData( (CUser*)this );- {( K' y6 ^4 c. A5 Y) [
#else // __SYS_PLAYER_DATA' f# G7 s* G9 u j9 M0 ~2 ?
g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
7 x" r9 F. O4 I, @# e, G4 j0 Z7 X' ~$ \ g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
9 Z2 m; ]6 C7 M( n; l0 r6 k if( m_idGuild != 0 )9 [/ C0 x) h9 u2 D2 j- o
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );+ O, m0 m9 T- \$ ^$ m
#endif // __SYS_PLAYER_DATA& X9 Q. S' {5 |; F: Y7 }
SetHitPoint( GetMaxHitPoint() );4 i, r! K+ k; D& G/ k% H
SetManaPoint( GetMaxManaPoint() );
% a& O1 a, |' N% b% z SetFatiguePoint( GetMaxFatiguePoint() );
; a+ D/ I* I) N, t% s if( nJob >= 1 && nJob <= 4 )
2 K( a4 M! M4 P% p' }+ X2 c {8 I% G9 n3 G9 @* o. _
m_nStr = m_nSta = m_nDex = m_nInt = 15;' \' X! u. ?0 ] }. }
m_nRemainGP = 28;
0 v0 T, T% E6 V J) O }
, }7 Q* Z, S# ]; ?5 b$ s$ F if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
" ?1 o, M t# o' L6 q, G {
8 F+ q7 Z- F6 N0 h* Z# r/ ` m_nRemainGP = 118;
; T4 E: g% C6 I* V //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
8 T* Q! y; A: @% X: |$ r$ S m_nStr = m_nSta = m_nDex = m_nInt = 15;6 R# }5 ^2 x) ~) I" e
}
8 t8 n2 I+ j! a* ~: Z( ` if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
( {. e: M9 ^% t. j {) k* i0 A+ B0 Z
CItemElem itemelem;
% ?% ^) A; Z; Q. @; b" ^1 c0 j itemelem.m_nItemNum = 1;/ B( h+ R& N& z) ~
itemelem.m_bCharged = TRUE;
$ a9 p" ~$ m0 a' [+ x BYTE nID;- M h& M$ g1 [! w. q
) e4 Q( s0 S: q$ m9 c, c if( nJob == JOB_MENTALIST_HERO ), q: C# B2 o+ z
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
N6 H5 X. T% y: I if( nJob == JOB_FORCEMASTER_HERO )6 W! D$ N- B4 t, S* k- _( T
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
% K$ H( |# k% Y7 E5 x1 |8 t! E& _1 S( J
( ( CUser*)this)->CreateItem( &itemelem, &nID );% _& H8 @8 r0 P4 r9 K/ ~! m
}7 }- U, f+ H2 U* Y
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
7 q3 ?/ x0 e1 B- w0 B" j ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
% o" h; Z1 _1 V: U! P0 T3 d; U ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );# E* F5 ^! L/ K0 L8 w8 U- b
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );0 H c N/ f9 w& d b: I7 s) S
( (CUser*)this )->AddTaskBar();*/2 R, U6 @# I0 b+ a1 w5 X/ R
( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
9 E, @% J- _# `% G6 c9 y2 f#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
3 Y4 O0 t+ n \; ]8 T- x ((CUser*)this)->CheckHonorStat();
% I3 G* ^. c* G: m ((CUser*)this)->AddHonorListAck();% B: e, H. I& X. I; _9 {8 e
g_UserMng.AddHonorTitleChange( this, m_nHonor);
: Z9 d* `' X* J" e- J#endif // __HONORABLE_TITLE // ′Tà?5 |5 b7 T7 n2 z" I3 Z
}
# @+ y9 D* ^2 M' a% v" K- f#endif // __WORLDSERVER3 n( Q. [& y& B3 |9 A' h
} ) W# ~) O6 H7 g
3 r8 c6 o9 G4 Q$ W5 ~, v8 J" {然后你进入functextcmd.cpp并添加以下+ ?' [8 u6 ]4 t. v! k4 }# S
5 M* b' y0 K' c; z) G& L a; b代码:7 X; K: f( J0 ]' |
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
" g0 Q! m$ b7 g. E/ \ s下面插入& c" h' ^! g3 `: n4 n
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
( E8 e; x6 x4 T2 _# m7 h% p& M ^9 u, R9 t4 @3 Q6 m4 E- a
然后你去6 D$ C+ h& Y8 k1 |: P7 \3 P: L
4 C" Q0 T( m0 o' ^$ G9 e6 ~' U$ U; R代码:1 J' a; I+ o3 L
代码
3 P6 |. n0 n T5 Y2 mBOOL TextCmd_ClearPropose( CScanner & s )( ?, j1 A% C( H4 ?1 O
{
! `" u7 z- {5 R, R* N3 Q6 c#ifdef __WORLDSERVER& r) W7 @6 m: Z1 F
CUser* pUser = (CUser*)s.dwValue;2 ]6 d" U1 z* J+ Q
g_dpDBClient.SendClearPropose();
3 y' G9 ~5 e; k8 w% `) K#endif // __WORLDSERVER$ A- F9 @# H y
return TRUE;
$ U+ T/ Z1 e* U# P$ {, [0 I}, q" c5 T8 G4 ]# X
下面插入
' I X O. ^5 O7 d, D( LBOOL TextCmd_rebirth( CScanner& scanner )3 r Y0 ^6 V0 [! v; l8 |& c
{4 ~% o9 v: A3 _: G0 Q
#ifdef __WORLDSERVER
& ~4 q9 Z9 r% k$ x T9 u1 ECUser *pUser;
: U, \% A$ o3 [pUser = (CUser*)scanner.dwValue;) c, b( |6 ~) s" R. A
if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())1 m" \, ]$ e( c0 j
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);! Z' G/ l3 W/ }' k/ j% D6 p
else1 g% J( ~* n! E5 M: L+ f( G
pUser->AddText("你还未达到重生条件!");$ w; z3 z. L! d/ s* T+ X& l$ }2 n
#endif: e+ i6 b7 l) Z `& o: W
return TRUE;
8 ^! q5 { M2 \7 s}
& X1 K; c1 U: A$ v8 p. I8 p" ]5 S4 k$ |5 f; d$ O* ]- e8 c
! r* x: O/ P: b/ D* y
! K$ T0 S& g4 t* O* y- z: K, C! `2 P: k( W* Z% v$ B h
|
|