|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
+ V; D$ E% t" e
, e$ z% d/ y( H# v$ k) wMover.h
. B: s6 P: B: u2 _2 Q! a4 H3 f代码:
6 \4 w0 Z5 {' Q: t+ Y8 U找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü
) k- [$ Q! |3 O3 i
6 d1 W% S Q- S0 V下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
# y8 F# k; v/ m4 T8 G+ q& X8 r4 G. L" N C% V
然后你去mover.cpp添加& b/ F& q; c& g$ Y+ j
! O/ W k: s! a5 E) [' f代码:
& m% d( Z( _$ q) Kvoid CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )5 W$ h$ F- k; r! F; O7 S
{- F5 |9 @. E8 v- I Y
#ifdef __WORLDSERVER
7 T' s+ P, [" o // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó+ h' t; p3 W8 d
MoverProp* pProp = GetProp();
& K2 ^/ c# @8 _" y if( pProp )) U/ x j X; J0 `" Z
{* P1 C7 x5 \) a- A
if( nJob > 0 && nJob < MAX_LEGEND_HERO )
8 B: q& b% y! m/ w. W2 |0 q* ? {
+ K( X8 N% R) X2 d- e AddChangeJob( nJob );
1 y7 Z' w K1 L# y% O" W% p }else{, m I, Q/ Z* z! C. V) L/ d0 m+ U
return;; P9 u# _8 V* q( W$ j# G' M- D
}2 f% E$ H. d2 O; [. P+ h
int nPoint = 0;
. d7 h' W5 ]) G$ J if( m_nJob == JOB_MERCENARY )/ }7 B8 r6 n; [7 h' ~0 j. S
nPoint += 40;9 u* V7 M; y$ O( w
else if( m_nJob == JOB_ACROBAT )" x; W5 ~- F+ r M. ~( a( z+ }
nPoint += 50;
. K9 x7 W0 H. W1 D) g else if( m_nJob == JOB_ASSIST )- M2 J" l( s0 H$ a
nPoint += 60;6 M1 ]" V. M3 H
else if( m_nJob == JOB_MAGICIAN )
4 K1 b0 z- o& a" X5 F0 n& X' k5 G4 z nPoint += 90;4 x9 k9 p/ i o t: P
else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )
$ D$ H# h( w3 Q3 w; X# x) {9 v nPoint += 120;! N \6 |5 L' M5 F0 t
else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )% p; E3 I: f8 m& J7 z# H# c4 \/ v
nPoint += 150;
7 ~9 A+ n; B, w# Y& x else if( m_nJob == JOB_RINGMASTER )' Z1 K6 b! ^( i* s0 E% U9 H
nPoint += 160;0 G, [5 C( A) P6 s0 m* T/ E
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )
3 [. X1 m( z' I2 F7 N nPoint += 180;! b+ U* S+ D v9 l; o$ `' a& e
else if( m_nJob == JOB_ELEMENTOR )4 J$ [1 e$ |1 M
nPoint += 390;
/ P: G: l5 R4 q x$ g# c) k4 c6 S else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )
: c4 O" z2 e* v: p% U* @ nPoint += 120;
% V! j, ?. A: Z else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
; ^$ J; s6 V Q7 `: C7 R nPoint += 150;
2 w' a7 |8 f7 N' A$ |2 [! \1 W else if( nJob == JOB_FLORIST_HERO ); N* d1 d s8 Z
nPoint += 160;% g" C, @. \, J& @ H: K
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )- l& F& Q. ~: h) P1 b6 Y+ M
nPoint += 180;/ j( P% W' @9 w, j
else if( nJob == JOB_ELEMENTORLORD_HERO )% M/ H* x0 W; J' }5 ]
nPoint += 390;
, F* b) \8 T6 H2 ?9 ~9 _/ l f2 G% Y Z0 _
AddSkillPoint( nPoint );- i- f) ^6 o- I" ?
m_nLevel = nLevel;& B* @) G I2 ]5 z& v+ n
* v. e5 P) |. e/ X& w SetJobLevel( nLevel, nJob );
3 f1 Y6 w) b6 } S! W7 S1 J m_nDeathLevel = nLevel;
, p2 ]: ^" q6 b4 V% E; e5 E; c#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans: e) v1 s% D9 ^ ~9 z& n
if(IsMaster())$ g2 X7 j8 X' v( {0 h2 q1 g* P8 a
{
9 H2 V) V+ A9 l3 B& Z int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
% N' I+ _* c! r if( nLevel > 59 && nLevel < 72 )
( _2 S& q1 l7 ~7 K; m, Y @7 U1 X: S dwTmpSkLevel = 1;8 E4 K. ~$ ?) O2 P
else if( nLevel > 71 && nLevel < 84 )2 }$ T( z* C# w6 _' H; H* [* O, ?- J- G
dwTmpSkLevel = 2;) `2 S( b( \, N% Z( I/ `1 z
else if( nLevel > 83 && nLevel < 96 )9 C4 j6 |) n( d9 I% Y. [" I; Y
dwTmpSkLevel = 3;: s7 ]1 T& R% \! G3 P7 K7 _* h
else if( nLevel > 95 && nLevel < 108 ): B. m* g4 A" D" F' N2 T5 s
dwTmpSkLevel = 4;# b9 V( l3 y3 _- R" M2 ~( u
else if( nLevel > 107 && nLevel < 120 )9 i- ?, P2 z( {
dwTmpSkLevel = 5;
0 ?. H6 v& H _ for( int i = 0; i < MAX_SKILL_JOB; i++ )
- M' Z" l& n% J3 c/ b M { 8 ?, t( |, k* H- z8 }
LPSKILL lpSkill = &(m_aJobSkill);; O" Y- `, f1 N7 f0 C q, `4 `
if( lpSkill && lpSkill->dwSkill != NULL_ID )0 ]# i! L- v- k( t# x
{' a A$ c" L$ Q/ F4 G1 I
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
, t x& X/ ^6 n @) } if( pSkillProp == NULL )
6 M/ ^# I) F) |; A) M continue;3 X# r$ @0 X) k4 `
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)6 k) Z2 ~) K3 V) f e4 o N' P
continue;+ h2 H" W' Q' ~8 U
lpSkill->dwLevel = dwTmpSkLevel;1 G0 _+ h2 `. \4 d p4 z0 j
}- [+ o$ h9 i% j- X
}
$ ^6 B: J7 e$ v' n& c1 C }
, \0 u ]$ ]( C# K# x0 J$ e+ g else if(IsHero())+ K: r& U" e. ~: l0 `+ x$ W
{
, F8 `0 F: A9 e: `* w for( int i = 0; i < MAX_SKILL_JOB; i++ )
; v" h7 Z! g- ?( V% ^5 T3 a {
1 W: V5 ]' w3 E- }( _) A LPSKILL lpSkill = &(m_aJobSkill);
( R" |" D& k3 V& a5 n6 ^6 | if( lpSkill && lpSkill->dwSkill != NULL_ID )
3 L4 L3 `6 P k {
. }1 N0 i% h3 g8 o, N, e ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
3 X3 i6 O$ p% L0 \& ?3 Y9 {# n if( pSkillProp == NULL )
$ J& B" E5 K( S continue;5 ]8 ^/ V1 X4 r0 h L- [
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
* v+ g! f+ r2 r% j& o2 M9 R- J; A continue;* G7 \) q( L( Q( @) a8 j5 \/ P% ?+ p. z
lpSkill->dwLevel = 5;
9 G- Y. D5 V5 s! k, f9 ]9 J& } }
1 A ]9 u! n5 D3 |5 p; U }; k& \- {, N/ U+ p
}6 j. G" Q2 b I; O1 C
else if(IsLegendHero())
% c2 @& t) Z8 w% z# d! f {
% ^* T3 u4 q% D' B3 F) ?/ [- P for( int i = 0; i < MAX_SKILL_JOB; i++ ) ! T! B7 P& O0 Z1 v: d" p2 \
{
9 D$ H- Z" I# w" h, L, [; D: S LPSKILL lpSkill = &(m_aJobSkill);- _$ S; M Q* m6 T
if( lpSkill && lpSkill->dwSkill != NULL_ID )
" e( ~+ D' q7 R+ Y& P* @+ c {* A0 S# E5 x6 h" \" j! @+ r/ i8 h
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill ); - K3 J2 a. \, Z" T" e& |
if( pSkillProp == NULL )
( M7 C) M; @2 [0 D continue;
& P" G/ n5 U# t9 S# W if( pSkillProp->dwItemKind1 != JTYPE_MASTER) S; Y4 j3 l3 [8 C7 Z
continue;
; h" v3 E4 \9 L: e! k lpSkill->dwLevel = 5;# Y, [5 S/ \- C8 M+ U# L4 w4 M
}
% e* K9 b' A2 G$ b, O }3 j5 _ V2 \* m0 o+ z" q
}
; D3 S! E5 P; N0 p$ D#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans; U5 v# ?" W2 h: r# q
if( bGamma )1 [! }2 G6 j( y' ~$ e7 q5 P% G" t
{
5 L) L) t# _( K* l' f, P m_nExp1 = 0;
& |( n" Q) a; z' p& _) A1 z }
4 A0 _ @- P2 E8 F, U
% @- t9 E( f$ d ( (CUser*)this )->AddSetChangeJob( nJob );
0 e/ `- H; y8 Q1 W g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );) i4 P: z$ v& [
1 \+ J. B( H d5 V6 t
C+ b. a/ V3 j0 {7 p6 M#if __VER >= 11 // __SYS_PLAYER_DATA
6 t- \* r* [9 W+ T9 z) @) w g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
* m! L+ W% C# V! N( k7 H2 ^/ N: G#else // __SYS_PLAYER_DATA
+ P6 J) d* N$ f" c9 d g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
J( V9 }$ c R/ X' X5 ~ g_DPCoreClient.SendFriendChangeJob( (CUser*)this );! i5 }6 @( o$ S% L
if( m_idGuild != 0 )* {; C2 }- u# d5 S6 \' t7 e" D h6 ?
g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
7 N3 r! _' n# j6 ~) w#endif // __SYS_PLAYER_DATA
1 R* V! G3 r8 m2 T( C; S O/ ~& \ SetHitPoint( GetMaxHitPoint() );
, s" B' B2 ^5 X& j; P SetManaPoint( GetMaxManaPoint() );; N+ A6 b! T( P6 y7 E
SetFatiguePoint( GetMaxFatiguePoint() );
8 r" F i8 Y7 x' k6 t7 P$ A if( nJob >= 1 && nJob <= 4 )
( B6 G6 q0 e9 w- L: n {
, Q7 g. |, Q7 M m_nStr = m_nSta = m_nDex = m_nInt = 15;* @/ g8 p- Q1 U9 G
m_nRemainGP = 28;
; K: k. L8 V% l7 Y$ _ }
/ g% B, Z3 `8 c( ?, h* J! I/ H z if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )8 t; ^8 y* `) I6 E
{' G; p {. I' X9 A9 f
m_nRemainGP = 118;
, V) y7 ^& t1 K* y& W) ? //m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
, l- E0 b% ], S4 g( L m_nStr = m_nSta = m_nDex = m_nInt = 15;- w2 E: w$ B& \+ f4 Q5 M
}
' ^. `1 Q; y! M# y" c% P if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )' e: R; W8 u: S R6 {& O' b9 Y# R
{7 G0 N a) P0 U' r4 A. ~
CItemElem itemelem;
) M3 X2 h0 x, p! r8 f itemelem.m_nItemNum = 1;3 K# j( T Q) H# \
itemelem.m_bCharged = TRUE;1 o) u+ L$ h, E2 f4 ~
BYTE nID;
6 H" H( w3 m5 I- B( P* p; B2 W% O
G. x$ K$ w+ k if( nJob == JOB_MENTALIST_HERO )' A) ` j( z6 j1 ^
itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;! D! Z4 r0 @ D/ Z1 h* p1 t3 G
if( nJob == JOB_FORCEMASTER_HERO )' N! _$ f* h) s, {
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
: o+ m0 Y% s5 u P& H
# a( i& k% i9 M1 d5 D ( ( CUser*)this)->CreateItem( &itemelem, &nID );6 d" z% y5 `+ v" P2 R( L5 \/ c
}6 g5 r0 P; m1 e9 m }8 ~' G0 u! v+ U
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
- v. {& h& u& F) t ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
% s( \7 M8 A! ?* y ( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
' T* u% t( C0 ^) k- t /*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
* h" n3 A0 S2 P: n1 V) R ( (CUser*)this )->AddTaskBar();*/
$ G8 R( k5 D( t g ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );( R* G) L8 n2 O; H
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
- @* p0 F7 C) r" o$ O ((CUser*)this)->CheckHonorStat();
8 R4 g4 w8 w) N& Y ((CUser*)this)->AddHonorListAck();
3 C: ~- J) W8 y, Y8 w g_UserMng.AddHonorTitleChange( this, m_nHonor);. a: Q( w* a3 Q4 l4 c
#endif // __HONORABLE_TITLE // ′Tà?6 [) q& {0 N! ?+ c) r! L, C
}4 d% I w5 d8 n' t. N0 Z
#endif // __WORLDSERVER
! a! Z! A7 P0 i0 ^} 4 \! Q2 F. O/ w7 u" }
" ^$ Y" e \/ ?+ p
然后你进入functextcmd.cpp并添加以下. ?3 Q% n2 [) G" b6 D
, A! j/ Z0 [' u( {# g, ?代码:$ O! n* B4 E7 d( K. D
ON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )1 X; c- Q# O, L
下面插入8 [- c0 s; }1 F9 }! p1 T! [4 W
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) 3 @/ F7 L% R' q: ]* i1 w% S
9 K3 d/ y0 M+ C! Z6 j6 ]4 u然后你去
3 G+ H: w( U g. U4 R3 U9 X. H0 z/ f o$ e" G) u5 ?
代码:% O+ g5 O! E$ y( v
代码
; F( Q- }% k$ V. t4 d0 LBOOL TextCmd_ClearPropose( CScanner & s )
2 g# K6 u1 t, r! e2 H{/ V4 ?- @ P5 i; Y$ l
#ifdef __WORLDSERVER2 r Q4 r0 H5 U
CUser* pUser = (CUser*)s.dwValue;# D0 K9 J" s1 R. d
g_dpDBClient.SendClearPropose();
% Z% V$ i; L2 u2 j; M" U#endif // __WORLDSERVER R5 C* A7 _( a1 t/ R( S W
return TRUE;
& M) A8 o- c* ]9 M0 u. \ q/ Z7 l# t}
2 A$ C8 v! O9 G' K" N下面插入
* J' L8 a6 Q+ e9 @BOOL TextCmd_rebirth( CScanner& scanner )
+ S/ _0 F9 v# [8 I1 K! b6 O{% p, g( b- Y* Z/ Y/ Z# R5 Y
#ifdef __WORLDSERVER
5 j4 a7 E# k$ |+ q$ z$ PCUser *pUser;
1 ]1 s4 N7 \; b7 YpUser = (CUser*)scanner.dwValue;
" W# p4 n) f1 @. n- w* Lif(pUser->m_nLevel >= 150 && pUser->IsLegendHero()), [9 i/ O7 a$ r6 @
pUser->InitLevelPumbaaa( pUser->m_nJob-16,60);
8 T" l- s0 T1 w5 {1 a3 x' @else% C1 K# M6 l3 }2 g5 \# Z8 L
pUser->AddText("你还未达到重生条件!");
5 m* C4 o- ?& u* t4 F" h) f- s# s#endif
6 a. M3 Z' B9 ^. D- A0 V. o7 Kreturn TRUE;( L( S& a& L+ V" h8 V; k
}
, n1 z% W3 y$ ?, r6 \3 c
, w$ T7 _, W w" l% P0 W6 h
3 J' o- o- s0 @: U8 {8 n8 x6 p# j; l+ L. m- c3 R0 B( p
0 c% {# i) N& r$ \4 Z8 |
|
|