|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel7 D. ?3 u, o4 W4 {% g
7 f0 q; ]4 f5 s U6 ~8 Q+ q
Mover.h
( y/ q# o3 N1 j4 Y+ D代码:
, t M7 a5 a- K( R, u! D找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
5 v7 O" ~: P$ G ^: Q! T
9 ^, @% c, a/ i7 z+ E! L; J下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ; 3 V; x& l' P8 I! |- R: o
; ]) N9 _5 v7 i( Z7 Z然后你去mover.cpp添加# t/ \/ i, }. l5 X& M( J( }7 L
I- m( I+ d, f( K/ [, V
代码:
+ R6 A+ z4 ?' F V& Z9 c+ o7 G8 Ivoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
( |6 H( Z1 ?+ r) g) E- T) c4 Q. ^# b- P. @$ z{
% t0 P) m6 q8 N9 t#ifdef __WORLDSERVER
8 O& I# ?, P N7 _* F // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
; o* V6 L4 d7 W, R; v8 V- | MoverProp* pProp = GetProp();7 c) ?& ~1 U6 ~0 Y
if( pProp ); K( B- P& p6 p, `0 m3 X
{' @! Q8 }/ D) v7 }5 ]
if( nJob > 0 && nJob < MAX_LEGEND_HERO )9 \0 ?; {$ g4 W3 h
{3 f* ?9 e7 b4 G0 K
AddChangeJob( nJob );
, l; T+ z7 v6 J- ]( I/ D$ T& G- X }else{
8 t; Z& y5 [; ?5 K return;" n y; Z& |6 j& M: m) J) L8 I* b: Q
}& L( Z; D4 e) x6 E. U9 U
int nPoint = 0;
( ?& ?* o2 F6 q8 x' p# S if( m_nJob == JOB_MERCENARY )- O/ Q# \5 V$ \# s: ^
nPoint += 40;; \3 a! `" P3 U6 k5 L
else if( m_nJob == JOB_ACROBAT )
/ j6 I5 D! V2 B1 E+ m; {9 x$ ^ nPoint += 50;; p( H9 P9 `( f O7 ?$ K
else if( m_nJob == JOB_ASSIST ) K" Q% T6 d3 c2 ~, ~* {5 Q
nPoint += 60;
+ V. @! C/ S) U# G" \ else if( m_nJob == JOB_MAGICIAN )+ C- E& l7 y; \& h2 r0 j
nPoint += 90;
: {+ v) n: {! L2 p' u else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
, G9 k. \5 T/ x/ d2 j/ E# q nPoint += 120;* h: G. e/ A+ j0 v
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )2 V; U7 m$ z; J" ]
nPoint += 150;; y" w; c Y6 d# a- f( h4 M
else if( m_nJob == JOB_RINGMASTER )3 f5 X* P t: ^! H; v9 u" X% {
nPoint += 160;" i* C* J- C v& n$ `, Y9 F" K
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
: A! O$ M; ]! V nPoint += 180;( p9 C6 A0 C: i7 |+ x. w& @( g
else if( m_nJob == JOB_ELEMENTOR )5 V. n: h7 x2 W" e8 c- S0 @
nPoint += 390;
S' [$ f5 _3 M% p( z/ M+ f else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )! X$ p4 C6 Q6 g0 c* G7 i/ {
nPoint += 120;# V: ^6 ]3 y2 s0 S8 t( [9 W& ^
else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
# k& B: G$ W$ F; L$ G nPoint += 150;
2 I. Z9 ]3 h8 i6 B! n else if( nJob == JOB_FLORIST_HERO )$ B" F& p! Y0 [8 l
nPoint += 160;
, b- A* a- r( j2 x5 l# W else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )# R- U% c S( d0 |
nPoint += 180;4 F; v" Z1 H) a% v2 M0 l
else if( nJob == JOB_ELEMENTORLORD_HERO )& [% P# F9 j' u' l% T
nPoint += 390;
& ]! j& n% ?) @" M! n$ K9 Y& c* Y! z9 \0 _; X: U! T* ?3 s
AddSkillPoint( nPoint );. j+ ~& {0 [- U% G% ^5 V
m_nLevel = nLevel;
; {* p; x7 ~' b% w) n
- l. c6 r+ F) a6 j" Y/ C6 i SetJobLevel( nLevel, nJob );6 H* _; X/ [) n
m_nDeathLevel = nLevel; N4 ^" M5 G& K$ D
#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans& S d" x8 ^- k2 z5 n3 A4 J
if(IsMaster())
- v2 D) Z7 ~5 b {
) ]5 [/ V2 A* J' a int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
1 i5 ]' d! C; {- a, ~+ s if( nLevel > 59 && nLevel < 72 ). [; r9 O) P. ^
dwTmpSkLevel = 1;, M" N' A, d; `3 O
else if( nLevel > 71 && nLevel < 84 )- a1 V! c0 {9 v7 U# A$ @1 D- Z, _
dwTmpSkLevel = 2;/ w( R. C: v. j$ V! j
else if( nLevel > 83 && nLevel < 96 )
# m! i+ b) C- _" E dwTmpSkLevel = 3;
" D7 O# |- t% r; l+ d else if( nLevel > 95 && nLevel < 108 )1 }3 b# ]$ z2 K
dwTmpSkLevel = 4;, Q! t% T+ B; Z! t1 b
else if( nLevel > 107 && nLevel < 120 )
: U }+ ~, @( [& X! d$ |9 b# K: T dwTmpSkLevel = 5;
& W7 K0 s9 y6 u' |* G6 f# L; f for( int i = 0; i < MAX_SKILL_JOB; i++ ) % Y1 S! }: y( a( ?" S# Q
{ ( _$ ^ y0 t( a) ?; g
LPSKILL lpSkill = &(m_aJobSkill);
1 c& F; O3 J# O8 \) S' v7 ]9 N if( lpSkill && lpSkill->dwSkill != NULL_ID )
* \ E; t( {1 u1 A! F0 C, R {7 @5 r6 u( c( c0 {, @' \$ B! O
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); . I$ J: u, u8 \. |4 C, ~; j3 `
if( pSkillProp == NULL )
5 p" x" H4 w0 K, L7 t6 O- D continue;! ~% B* J; B; Z/ @4 x9 H/ M
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)* p$ B! F3 q8 F x/ {- q+ z
continue;5 T; J% v; J, g6 y7 j% f/ {
lpSkill->dwLevel = dwTmpSkLevel;3 d3 ~, r- A7 W1 c
}
- Q: V! Y6 h2 m5 Z3 d* A. \" q }
$ f) i1 f$ j" a0 [0 ~ }
5 ?+ R' T+ K9 ~" p: M* c) T& k else if(IsHero())
0 P; R1 D2 w& m5 @2 U* [ {
* `# z& l' ` ?: H& } for( int i = 0; i < MAX_SKILL_JOB; i++ ) ' S+ I8 ~6 y' R5 f' b& k! j
{
# K& S2 H) |0 \; }6 |: Q1 I LPSKILL lpSkill = &(m_aJobSkill);
# K/ v/ D# _2 w1 q if( lpSkill && lpSkill->dwSkill != NULL_ID )7 Q- s4 D! k# }, _. }
{
: ]- B. X6 c$ o$ L8 r% _1 U" b' j ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); * U- N$ p3 U0 W, y
if( pSkillProp == NULL )) J/ m$ F, H6 y2 A- m7 C" I
continue;
3 d1 b9 `- L. n- |3 b if( pSkillProp->dwItemKind1 != JTYPE_MASTER)3 H- n( H5 k$ {0 u9 R
continue;
0 U9 c$ C/ I. P4 Y$ b5 E. n& Q6 d lpSkill->dwLevel = 5;
; G0 H" r3 C( _. C* d0 A; b }
+ ^8 l! h: O+ X1 ]; n$ p6 r }
4 K- `2 x' W+ v# x5 g' z& _ }
; T4 Y; U/ Y% u( Q else if(IsLegendHero())7 x+ {/ ^. |, x1 G7 R7 s
{
3 g9 W" _ z" n$ @ for( int i = 0; i < MAX_SKILL_JOB; i++ ) 4 H( }6 E- T* h! }5 o& I5 I
{
9 a6 E# {2 S* T LPSKILL lpSkill = &(m_aJobSkill);3 g4 l e; b2 N0 b: p( H: [
if( lpSkill && lpSkill->dwSkill != NULL_ID )
6 W% R) L# }- I( T {4 Y; T( s4 z' g7 b
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); # u! a9 w& ^7 \3 u8 D2 n% k
if( pSkillProp == NULL )3 ?1 i- g8 T0 E
continue;
3 h1 ^6 H$ `5 f b. }/ y if( pSkillProp->dwItemKind1 != JTYPE_MASTER)& O- I$ y$ E; l' r
continue;
$ Z. R0 @$ G5 p5 A: Z! T lpSkill->dwLevel = 5;/ D) J9 H- {& w' |% q) l
}: }1 }3 Y/ W& U2 v
} `0 m& P6 p; S1 D2 B
}
5 y/ _% o( w: Q& Y. X3 A' A2 K#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans [' P. r9 O$ G) ^6 y% l
if( bGamma )
$ c4 c2 L' ~7 {8 p' X {1 W( K! H% y$ ?$ F9 M& f
m_nExp1 = 0;
5 @& q6 `$ E3 {& {, E1 _ }
5 j) C U( k N, E; n- H. y
5 ]$ g5 p' ~& L8 K ( (CUser*)this )->AddSetChangeJob( nJob );
6 h1 E4 f/ D8 k/ J' G( u' O3 U g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );+ `) H% d, ?2 n. V
{8 B% f+ I+ X3 ]" m% e: P+ `9 ]; T
' `# |+ U6 D4 F
#if __VER >= 11 // __SYS_PLAYER_DATA
+ M* k+ S+ X2 \( N% V g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
; ^# a, P: _' [9 E#else // __SYS_PLAYER_DATA
7 @, W' |# D1 y( s g_DPCoreClient.SendPartyMemberJob( (CUser*)this );; s: F* C8 M2 }' P( G: N5 A; f
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );0 f, Q, e) B1 C% c' \5 T: y
if( m_idGuild != 0 )
3 W2 Z3 J( I; `$ U% A9 d g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
/ Y% `* g2 o+ k" o3 s! B#endif // __SYS_PLAYER_DATA
" O/ Y' e. \! A) C" ^) S0 E) r1 V+ e SetHitPoint( GetMaxHitPoint() );
7 e. S# B* X1 Q5 F SetManaPoint( GetMaxManaPoint() );
Y/ B& I3 L3 U/ F/ W8 Z& W SetFatiguePoint( GetMaxFatiguePoint() );$ T" r; Z, V" z% c- K9 X5 L
if( nJob >= 1 && nJob <= 4 )/ [! ]; c3 o8 |" {
{
3 K ^) J4 r; l. y* @! g: P m_nStr = m_nSta = m_nDex = m_nInt = 15;! A, o# \8 `% r) h# |# Y) h3 Z8 M% f" E
m_nRemainGP = 28;
+ X w- T" M# {+ ]% y$ N }' j$ H; Z% F: G4 H0 k C
if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
; D A5 q4 T5 u# ~, @/ Y {% P2 j+ m4 l4 P2 e
m_nRemainGP = 118;
2 n, n- a3 R, l5 |* X //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;; C# D! Y! p( l! |* a- ~6 `7 z
m_nStr = m_nSta = m_nDex = m_nInt = 15;
& V: h: D4 j( P6 l2 G: y) Q! t# s0 l }' X$ S! g9 A; G: Y" L4 _
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )* Q5 s& A+ T) F
{3 J0 F, T6 t0 `$ ]6 U. \
CItemElem itemelem;0 q$ {6 G4 C: x- A( L
itemelem.m_nItemNum = 1;
3 j: F" F) L9 x( w% Q: N itemelem.m_bCharged = TRUE;
* e0 x/ e4 ^* ?2 c BYTE nID;9 N. g6 `# ?0 ?$ d% J: E
( r$ z7 h' V, f% q if( nJob == JOB_MENTALIST_HERO )
' E* m2 I/ P# O/ [1 g% K% j itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;% ]8 l! h+ W/ g( S: ?
if( nJob == JOB_FORCEMASTER_HERO )9 q8 G3 Y& g: s% S% Q I
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;, G- F* N: x5 e9 z
. A2 [, E. _9 c
( ( CUser*)this)->CreateItem( &itemelem, &nID );4 B8 m: k" G0 z8 P6 v
}
/ z6 w& s1 u& f g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
0 X6 |) I% g6 A: G n ?% U0 n ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );) P+ R. u* K$ ]/ z3 H- _, K E+ D, m
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
' y5 h7 S5 Q: u9 Q /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );( W& r" n- |1 Q7 T5 S) h
( (CUser*)this )->AddTaskBar();*/
\, K- H8 O" T- I! g9 m W* b ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
3 W1 G" t+ p$ K- J$ E#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
& L: o* Y5 h" y( m. C. m: f ((CUser*)this)->CheckHonorStat();( t/ d' F( i) D4 w* g) A' F' @
((CUser*)this)->AddHonorListAck();$ L" W8 M! S/ J+ F- G' h% D) i
g_UserMng.AddHonorTitleChange( this, m_nHonor);
, X, {. x. m9 b5 M3 Q# x% |#endif // __HONORABLE_TITLE // ′Tà?
. _# c7 t0 Q7 [! t$ ~- P/ W } n% l: {& f5 r
#endif // __WORLDSERVER0 Y3 V9 F( H" y# T) g
} $ _% p$ c6 p9 L" \$ m1 q* }
7 Q6 d' A: `+ _8 T然后你进入functextcmd.cpp并添加以下
5 Z1 B2 ?9 q4 \9 I @
8 P5 v! i8 O& o2 t V7 ?代码:
- K2 w% a' N0 `! M* ] EON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
) i# c4 u8 a) S( ^下面插入
0 `- Q! _( r6 B" Y3 d0 g# R2 nON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" )
- O( X' O1 C. ]1 d5 S1 S" M( E
8 j' L6 }& ~6 U( g, M然后你去
. _+ j* }. a: d. n& t3 X4 |) l# V' p, Y* a8 @
代码:$ a; _; E$ K' a- r
代码
% V3 [1 ~/ q( \4 R5 d- z4 k: KBOOL TextCmd_ClearPropose( CScanner & s )
, a2 t4 I' i8 g{
, t- z: a% W9 S" n( v& C#ifdef __WORLDSERVER8 M" ~! ?5 S/ W
CUser* pUser = (CUser*)s.dwValue;
1 C) V: e4 |4 ?2 G g_dpDBClient.SendClearPropose();
5 Y+ ~( \) t" L9 Z#endif // __WORLDSERVER0 j; @4 t; q6 N2 D
return TRUE;
1 W) o0 m# Q& i$ Q3 @}# n" P5 n7 y+ P' D- B8 @3 h
下面插入1 B# R( P( R6 w
BOOL TextCmd_rebirth( CScanner& scanner )
: t+ O; O0 ]2 \9 G$ `; T{8 N7 b3 e) R% e1 o1 _- z
#ifdef __WORLDSERVER
" {/ \+ c3 C) |CUser *pUser;: }1 T" ?' R- k& ]
pUser = (CUser*)scanner.dwValue;
! _$ x9 q+ E% W# oif(pUser->m_nLevel >= 150 && pUser->IsLegendHero()); g9 R8 o5 E, |- a1 N! l) r
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
, c" c2 M3 T* d3 T; X$ ]else
4 s' x8 A# ^/ Q6 i3 \4 [2 ~+ apUser->AddText("你还未达到重生条件!");/ |6 [# K! u; g0 k+ i: f+ V3 h
#endif( N3 G8 Z' y6 ?
return TRUE;
1 F5 V" Z5 l2 `: |; a0 m9 f8 ]3 K9 s} . s& N( M; L I% m/ P" V5 R
& D* G- v; ]2 j \
) H: A) d/ x" P! n9 `" |% s+ |7 b! G, `2 w! v0 Z! h$ X
3 I; w3 |* ]) V; d2 Y- t |
|