|
|
至于V15和源文件发布重生不再使用通过HP它不再去我会告诉你如何可以通过与它聊天源befehel
/ W; K; C9 M: B9 m' Y, d) l6 T+ |: Y2 T) U) {* {
Mover.h s8 I2 J& z: _, l$ y4 \3 Y
代码:
- l9 G. T- c/ r3 t0 u+ N+ Q( e找到: void InitLevel( int nJob, LONG nLevel, BOOL bGamma = TRUE ); // °′???| nLevel·? 1ù2?áü _# A8 |7 ]* I' g) C+ i+ n+ J! ^* l
) c- @+ q2 A4 h( z4 u Y" s+ C下面插入: void InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma = TRUE ) ;
- c* \1 b4 }$ R. c
2 A8 e; o' ^/ {( H, x* B然后你去mover.cpp添加
# h8 x, c9 u' b1 v: v: K" n8 M: {7 {, i, \9 E
代码:: T3 j2 Q' n! D) ~4 ?! D/ o
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma ). f: f4 `0 y* c; p0 _
{
% q2 k8 l6 U5 |#ifdef __WORLDSERVER
# F ? b6 r$ w5 U, d0 v+ u- ?# T // ???μàú ?í·éà?·? ·1o§?÷ ??′?°÷àó
- _3 |, K& { ` MoverProp* pProp = GetProp();! `. T0 K' A' D0 Q* r0 R5 _( J
if( pProp )! W$ r6 O) y2 f8 Z
{
" P; P& K- g' m4 u: Z E if( nJob > 0 && nJob < MAX_LEGEND_HERO )
$ q: [- T. @1 J7 r {4 ?6 h0 G$ i- W
AddChangeJob( nJob );! ]2 \8 @1 S) V( a# u" S2 m/ k
}else{6 S0 s H: U$ G- n. R( g3 L) Q
return;
* O, C3 V9 q, K6 d/ F }
" J" l3 N2 ?( X5 Z7 D int nPoint = 0;
0 I7 L# }. G C# B4 I1 H if( m_nJob == JOB_MERCENARY )
! N# }) h8 [4 p! E nPoint += 40;$ ~( \& `: {7 e6 O
else if( m_nJob == JOB_ACROBAT )2 m: l, u9 ]6 x R R, d
nPoint += 50;9 R- w% n7 Z2 h
else if( m_nJob == JOB_ASSIST )
; e! K; ~ Q0 r! M3 E nPoint += 60;
9 Y( ^" I1 T9 _ else if( m_nJob == JOB_MAGICIAN )
$ W" U/ X0 w7 l, L nPoint += 90;
; l, u& z& s$ N2 I7 W else if( m_nJob == JOB_KNIGHT || m_nJob == JOB_BLADE )- P% F9 H. {% I( l
nPoint += 120;
+ X1 n. _+ |9 x3 @" d' f" N else if( m_nJob == JOB_JESTER || m_nJob == JOB_RANGER )9 f5 L7 X) k, l6 w9 l3 r6 ~5 A* g4 h: c
nPoint += 150;
: c( ~! v" _0 P3 S5 j. { else if( m_nJob == JOB_RINGMASTER )
1 U6 B9 @6 r4 i nPoint += 160;! s' J# c. w: o! y
else if( m_nJob == JOB_BILLPOSTER || m_nJob == JOB_PSYCHIKEEPER )) j$ h, L v! ~
nPoint += 180;5 T' a7 _2 }: l4 F7 f/ R \
else if( m_nJob == JOB_ELEMENTOR )
3 M* }; D' T% a9 i# e' L0 i nPoint += 390;
! p/ j x Z5 D4 J/ }( @! c. Y. R5 ` else if( nJob == JOB_LORDTEMPLER_HERO || nJob == JOB_STORMBLADE_HERO )( Q2 a! v; L. E$ L
nPoint += 120;
. e {* l7 S& g- G; F else if( nJob == JOB_WINDLURKER_HERO || nJob == JOB_CRACKSHOOTER_HERO )
# [- _% p" l/ Y9 e$ o" T nPoint += 150;! B( x+ G A; {
else if( nJob == JOB_FLORIST_HERO )
& o, v. L2 X) O1 u8 A, ^ nPoint += 160;! d3 T) w) y. A! _9 Y2 T
else if( nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )2 X" E$ q, V1 V+ f# l
nPoint += 180;
$ r! h3 w( c7 X& I- W else if( nJob == JOB_ELEMENTORLORD_HERO )
, R4 [/ w1 t( N* E2 [8 l0 } nPoint += 390;0 i3 t# Q& q% s( [* ~4 g0 T& ~
% e, F7 p; j. w7 g+ s
AddSkillPoint( nPoint );
; L! v4 W& Y4 U' D m_nLevel = nLevel;
6 {4 v/ V* H) s1 T
$ ^8 O6 G7 O0 [3 o( f8 W* T SetJobLevel( nLevel, nJob );
; l" `: w7 E6 X4 r m_nDeathLevel = nLevel;
8 {2 _+ G' Y1 F8 v# ?6 N#if __VER >= 10 // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans
+ _1 r5 U% K: |( ]) V I if(IsMaster())( X6 Z! I/ b' [# N
{, z; w7 v) h+ e' L" x# d" C
int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
- i" A, _4 c1 U if( nLevel > 59 && nLevel < 72 )4 _* X" O# Q( X
dwTmpSkLevel = 1;& l6 h$ ^% M+ S f# ^# R
else if( nLevel > 71 && nLevel < 84 )
3 [) S2 F* S2 u2 u! K dwTmpSkLevel = 2;- O, ?3 Z0 w+ P+ \
else if( nLevel > 83 && nLevel < 96 )
- X& L& _9 _6 w. W) W8 u5 t R dwTmpSkLevel = 3; s% v; T) _( x
else if( nLevel > 95 && nLevel < 108 )
8 |$ n; k3 O( z5 \ dwTmpSkLevel = 4;1 F1 u/ U- p1 X) k) h! v4 k
else if( nLevel > 107 && nLevel < 120 )
3 s3 X9 J5 z0 u9 h: q dwTmpSkLevel = 5;
3 @) S6 \# H: L$ x5 L for( int i = 0; i < MAX_SKILL_JOB; i++ ) & D7 B$ }8 U% F5 e% n
{ 3 M2 X5 M# i) l1 X' n% k) K
LPSKILL lpSkill = &(m_aJobSkill);/ J& l# D/ Y, K5 R5 b z% B1 Y
if( lpSkill && lpSkill->dwSkill != NULL_ID )
) ~7 V0 {; ]; f. N8 L {9 L- w, | u; p C& J( f
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
* y* E4 A6 [3 t4 _$ v [ if( pSkillProp == NULL )
: q2 q8 B! R$ E continue;4 r) I J3 @5 e7 n' s# }
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
, {/ k; E0 c# V6 L: i continue;0 T7 G w3 q" ?2 |/ z' W5 c
lpSkill->dwLevel = dwTmpSkLevel;
8 X( Y! j" w8 l( o }
5 G7 |% c+ Q5 T h% C+ H l7 D7 G }
2 ]4 ~( D, t; c, L8 ?( F, ^ }& ]: j* Q! p; Y5 G& ?# l0 j
else if(IsHero())
4 R! V- {: V0 Q& h; |3 e+ ~ {- x7 r: {6 c% F) H8 l% }
for( int i = 0; i < MAX_SKILL_JOB; i++ ) * u# {; Z1 T- o9 ?
{ " o* _+ A" `2 s
LPSKILL lpSkill = &(m_aJobSkill);% m# Z* W7 P7 B
if( lpSkill && lpSkill->dwSkill != NULL_ID )
0 v* }1 M/ J: m( X0 Y: j) N) A {4 x' i+ V" E3 J. u% g9 |
ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
* ?. C7 |& H2 i5 e if( pSkillProp == NULL )3 u! L M) q7 B2 x
continue;
* {% M% d/ L0 m$ ?8 t if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
4 i0 g. `& g% j \7 ]. E continue;
* d+ t0 c- o9 i, j lpSkill->dwLevel = 5;4 p4 w, I( P q
}
( Y0 F2 `: B) }/ p }* j" D% A( p/ Q) P( c8 W1 S' d x
}3 ?2 q3 k5 H$ v- q, n2 o: x' [
else if(IsLegendHero())6 ?" v& m _2 u8 U* K( q( Y3 Q
{
% w j- N; U" b5 g$ M/ {5 ^& `; o. t for( int i = 0; i < MAX_SKILL_JOB; i++ )
* t0 N. n+ s5 A$ M. y- l { 9 \7 S6 e& N" e2 }) ]9 x
LPSKILL lpSkill = &(m_aJobSkill);
; O( w: Q/ M* P) \; w; e( ? if( lpSkill && lpSkill->dwSkill != NULL_ID ): {% c. K1 r0 j' K* g
{
' q& |0 f) b' t8 S ItemProp* pSkillProp = prj.GetSkillProp( lpSkill->dwSkill );
9 f5 ^- S/ c' p7 {. ]0 _5 P+ E/ R if( pSkillProp == NULL )7 j& U0 ?8 f3 y- W/ A$ m' P
continue;1 Y1 u2 ] T! C$ F6 N: u% t
if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
/ ]% F9 ]" K. j! g9 P. x* V# \ continue;& m* X; C1 d8 x5 _; `
lpSkill->dwLevel = 5;" x# h9 L! ~: r/ h0 x7 S4 \
}5 i% D' R# G$ U6 p6 ?7 v- N
}
1 N0 f! @* ?; H5 F }: \- ^4 ]3 z3 ^) ~: A2 k$ e
#endif // __LEGEND // 10?÷ àü?????o?? Neuz, World, Trans+ P; Z: r& }( d J
if( bGamma ). N: l: Y/ U+ } k4 K
{( l/ w u& A' w; ^# `' D3 c" k9 X
m_nExp1 = 0;
6 o! q) T& L. Y5 m }/ q, w7 L. O% o0 y! T
. G% V* H5 U7 V' v ( (CUser*)this )->AddSetChangeJob( nJob );% x$ l7 X5 i0 |4 v" S! S
g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
0 U/ C, H5 _5 I8 v3 p7 t; a
6 b' _* E, j4 ?! w6 ]8 R
% g( N4 Q2 X! A. e1 e. C#if __VER >= 11 // __SYS_PLAYER_DATA
3 e% U+ Y" b3 C7 t4 x4 E g_dpDBClient.SendUpdatePlayerData( (CUser*)this );& O; Y6 T3 ? b0 W
#else // __SYS_PLAYER_DATA
: q) x, q" ?% H- ~8 L# L2 ` g_DPCoreClient.SendPartyMemberJob( (CUser*)this );0 b! z; O' R, y$ j. Y9 O
g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
7 j' p& q `! E' v2 U! l if( m_idGuild != 0 )
1 q# J+ ^/ ~1 {4 r g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
* Y, Q4 N! M7 i: b% K2 h#endif // __SYS_PLAYER_DATA8 \8 P1 o. y4 W$ b. L& N
SetHitPoint( GetMaxHitPoint() );
3 {4 ^- X: w* H( `' l$ |% S SetManaPoint( GetMaxManaPoint() );9 w1 f# |8 J1 _( i0 {9 j6 B
SetFatiguePoint( GetMaxFatiguePoint() );
, [# ?6 b# B& K& v5 h$ f8 K, I& u if( nJob >= 1 && nJob <= 4 ). A! Q7 C' E+ V9 L# l' k! u
{
0 V9 X: v$ W/ u m_nStr = m_nSta = m_nDex = m_nInt = 15;% o2 S9 K9 E. w7 ^8 R7 i
m_nRemainGP = 28;
8 P' V: @/ H5 v$ Y& B$ S/ S }
5 ? W* o5 r% K( y5 {7 a- s if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
/ S, |, t* |9 {$ k5 S {
! u) W* g) e, C6 A) x' [ m_nRemainGP = 118;5 `% W8 n# j& @& O: k
//m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;6 v4 t6 T$ k @8 O" [
m_nStr = m_nSta = m_nDex = m_nInt = 15;
$ Q7 P. `6 |- c% w7 l5 j! F }& `1 z+ ?3 v! K u2 d$ n
if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )- @& ], e/ i3 C" h3 g. o
{
5 }4 C7 r+ P8 r4 m% J4 E- } CItemElem itemelem;7 |/ l8 r5 g/ a Z1 X' U+ p
itemelem.m_nItemNum = 1;
6 m8 b3 F7 k+ L1 E itemelem.m_bCharged = TRUE;
5 A) y: a; f" R, I, p# h BYTE nID;
# ?% U9 q/ @; y: U
6 O( g; K% i1 t8 Z if( nJob == JOB_MENTALIST_HERO )
- ?3 W, h: ^* f# p* V# a* b itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
, f- r0 C: j$ e3 q* [ if( nJob == JOB_FORCEMASTER_HERO )6 s q/ k! M2 i3 P4 _
itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;5 [$ ^- X9 m {, \
$ C: |6 g9 ]( F" S6 W. ] ( ( CUser*)this)->CreateItem( &itemelem, &nID );
% T0 Z& o* F/ E; ^. G }" X& P+ }8 M' L) j
g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
) T8 \6 `- Q, o ( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );( V4 ^3 v9 P$ I: a9 s3 A1 W- \
( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );6 X+ R& |+ x* r$ B
/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
( r5 y x- j, Q0 {# \' D ( (CUser*)this )->AddTaskBar();*/
5 c, G" i) ^* U, m) k+ ?% O ( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );+ {! T! w5 ?7 d3 h. }* Q- P
#if __VER >= 13 // __HONORABLE_TITLE // ′Tà?
. l; G3 H( e. N# G5 _! M/ ~' ^ ((CUser*)this)->CheckHonorStat();
( S7 _/ `, `- w) n* F ((CUser*)this)->AddHonorListAck();8 J3 V; P# U! X$ N; c {
g_UserMng.AddHonorTitleChange( this, m_nHonor);. z/ K$ D, H+ u( F1 ^ B* p
#endif // __HONORABLE_TITLE // ′Tà?, p& @, d2 H+ ?# f
}: W0 v: u7 Q( V% U4 E% t
#endif // __WORLDSERVER
6 x/ V- {$ q0 c9 j} ( [8 R( }$ h6 o" V; y9 s4 v
/ E8 Z/ s! ~4 a$ x2 R; ] e然后你进入functextcmd.cpp并添加以下3 ?4 e E7 ]! z1 L$ v: K: c
4 o: W& ~" Y* r0 E4 N6 M9 X/ j代码:
* U3 T# R7 p% V# ~3 z/ O! u2 sON_TEXTCMDFUNC( TextCmd_say, "say", "say", "??", "??", TCM_SERVER, AUTH_GENERAL , "?ó?èàó [/?í·é ??àìμe 3???]" )
' X6 \3 x: M0 S/ L下面插入/ S) n, ]% t6 F; l; H9 u9 n
ON_TEXTCMDFUNC( TextCmd_rebirth, "rebirth", "rebirth", "?ú·1?÷??", "?ú·1", TCM_SERVER, AUTH_GENERAL , "?ú·1?÷??" ) " b# g5 V: m; B" F6 n4 b" _
( R1 c( f0 Z1 D, D3 S7 G2 q) ]/ S
然后你去
$ O7 |6 J4 t, t- |8 z! \- J( m* }/ W
代码:+ q' n7 p$ L8 W1 C
代码
- T' h$ _; z, r& B6 ZBOOL TextCmd_ClearPropose( CScanner & s )
" U3 T$ f. t6 E+ E# J0 y{
, t a3 O9 o1 o1 u8 ^3 I( s2 m#ifdef __WORLDSERVER# a* d7 @; m8 ~7 e# m! D+ _
CUser* pUser = (CUser*)s.dwValue;% Z! {" @$ N2 O: S0 r) D
g_dpDBClient.SendClearPropose();3 Z! I6 N$ k" C( h
#endif // __WORLDSERVER
. S2 d R5 y0 b7 ~7 ]6 X5 @) U7 o" t/ } return TRUE;- [& }; L; O) |8 D" v
}
! c5 L1 I/ f# G H: a- M下面插入
" D' ]5 F% q/ t: M5 b# SBOOL TextCmd_rebirth( CScanner& scanner )* r: D o% V7 c6 m3 M
{
. J. c+ q! Y( c4 o+ R& Z' A#ifdef __WORLDSERVER0 Z) K* D1 g; n, u1 l+ f4 ~5 n
CUser *pUser;1 \1 X7 K. p9 n; z k6 ^9 n
pUser = (CUser*)scanner.dwValue;
X% J% G k r' k; P" R, {if(pUser->m_nLevel >= 150 && pUser->IsLegendHero())
9 V9 |* d* S+ C( C5 DpUser->InitLevelPumbaaa( pUser->m_nJob-16,60);1 `7 z4 s. F6 l3 G; z% L
else
+ U; j% |0 Z9 }# y$ |pUser->AddText("你还未达到重生条件!");( n' |- Y. w% H. O
#endif# W! O; C) h% S% B+ s
return TRUE;' p' ?# x; i" {0 z! H5 `
} 4 t+ Q! P7 h7 l2 l. s: i) `6 T- P
" d* e3 M3 E: o6 H* d( r' w) p" c; x0 ]
! m0 X5 u, J1 x# W3 c6 J
9 }: A/ D# R* ]) v O$ z7 S |
|