标题: 修复交换错误 [打印本页] 作者: admin 时间: 2016-1-10 03:43 标题: 修复交换错误 Hi I fixed the swap bug a long time ago it got tested on my server and it worked % C9 Y0 X8 Z" q7 X
I posted this because someone kinda posted a youtube thingy about it :O. 2 ^8 W" l2 R& q, d% S; G# E. Q) x& y5 c% Y. h8 p; D
Find this in DPSrv.cpp @ worldserver* V ~5 V0 l% j `- ~5 T
6 C$ e7 F1 G2 P/ F" Y% T
Code:' s! r. L2 v! T9 C! }% D x
void CDPSrvr::OnDoEquip( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )! |" \ c1 t* o% \8 @- X8 f m9 g
{ " a' `% f3 |& q! U DWORD nId; / X3 \! E3 w& d. L4 ]2 c int nPart;- L) J- E" H/ P( S/ d/ O& b
$ l5 X# ]2 m, |$ s) L ar >> nId; I0 R2 \& C9 ]" D2 b' G! ?
ar >> nPart; 2 E: G# { d2 [8 j$ b7 `8 [3 r+ {
5 {& {7 m6 C* }$ B3 D8 O if( nPart >= MAX_HUMAN_PARTS ) 6 ?6 t2 U/ e9 P9 u
return; 3 S( Q- [* X+ Q0 m9 _- Z) o) X: G
CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );And put this under it& Z* F% A! \1 I4 {$ v
- s3 [3 Y4 c$ o! d 3 N; J+ F: v9 x0 n* A# j/ iCode:9 A6 c! k$ N) w* ]( c
#ifdef __QUGET_SWAP_FIX( \+ S$ W7 v& K+ S3 G, X0 |
* U% d$ }9 @3 W$ a+ g2 o5 a
if( pUser->GetHitPoint() > pUser->GetMaxHitPoint() ) ; X: m; l! X4 M) K5 F$ M) a- i6 X pUser->SetHitPoint( pUser->GetMaxHitPoint()); 5 i& t6 `; V2 D& K9 ~" u/ i1 d+ ~3 ?' O+ a
if( pUser->GetManaPoint() > pUser->GetMaxManaPoint() ) _% O7 V2 s1 o0 E0 ]2 p% A7 z pUser->SetManaPoint( pUser->GetMaxManaPoint() ); 4 T) |0 L4 {3 r! B0 V4 t$ _3 j3 A( B, ]& p# ^! T P) W$ V4 p
if( pUser->GetFatiguePoint() > pUser->GetMaxFatiguePoint() ) : k) m- a0 C8 f1 K& M: A pUser->SetFatiguePoint( pUser->GetMaxFatiguePoint() ); ! `" j0 F) ] B. ?: J. W# F' D+ n+ \8 M$ ^, p/ Q/ B
#endiffind this in function void CDPClient::OnDoEquip( OBJID objid, CAr & ar ) @ DPClient.cpp* ~( S( J' @0 f- m" h0 m$ C9 R9 J \
and add under 9 w$ {" p/ J' T$ Z. {* {, W- Y" q3 s- h" Y+ P& z7 F
Code:! {& J- f) d3 ]* h0 S
if( g_WndMng.m_pWndBeautyShop && g_WndMng.m_pWndBeautyShop->m_pModel )! b1 ?5 @: r2 T' R( g: R+ `
{ 0 m4 ~' O5 h9 s1 x) l- j CMover::UpdateParts( pPlayer->GetSex(), pPlayer->m_dwSkinSet, pPlayer->m_dwFace, pPlayer->m_dwHairMesh, pPlayer->m_dwHeadMesh, pPlayer->m_aEquipInfo, g_WndMng.m_pWndBeautyShop->m_pModel, &pPlayer->m_Inventory ); ; R6 z' S. p# k% Q) b7 w p0 a }this 7 b; M3 x- F3 T: n) B) g& @/ j' I S% _
Code:" \8 a% c9 b5 O0 G+ G4 ]( R, N
#ifdef __QUGET_SWAP_FIX( A2 A/ n& Q2 d# w5 C8 X
if( pPlayer->GetHitPoint() > pPlayer->GetMaxHitPoint() ) 8 j1 _6 m$ A8 g2 y- k pPlayer->SetHitPoint( pPlayer->GetMaxHitPoint()); 4 t; _% k1 S9 O) f0 C , _5 l! t* \3 ` if( pPlayer->GetManaPoint() > pPlayer->GetMaxManaPoint() )7 U- k' e% v8 [9 V" e* l
pPlayer->SetManaPoint( pPlayer->GetMaxManaPoint() );: Z$ t( v$ }/ Z- Z1 G- h. {
0 l4 e0 N. t( \ i( ?
if( pPlayer->GetFatiguePoint() > pPlayer->GetMaxFatiguePoint() )5 m1 Z& Z$ p5 K5 X E8 S
pPlayer->SetFatiguePoint( pPlayer->GetMaxFatiguePoint() ); ( p8 R; E0 ]: o. G! W' F E& v: Y- j" p( S* T1 L! ]% z) B
#endifand then define __QUGET_SWAP_FIX in versioncommon.h @neuz and worldserver . d8 b: b3 m5 N1 w6 G+ O ]% k8 n: ]! d: i5 G" L, {& a- R( W# _9 A/ \, U( ?3 v