飞飞世界论坛

标题: 修复交换错误 [打印本页]

作者: 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
3 z5 Z' v9 d2 U) yI posted this because someone kinda posted a youtube thingy about it :O.
, h$ f. i- H  p9 U) g. k; M) c1 {6 t/ l7 g$ e* j6 F  P
Find this in DPSrv.cpp @ worldserver: f/ Z9 w2 {3 d' v
: j. w; |1 l! F4 X  K/ W8 }# A
Code:; t5 M: @4 [1 E
void CDPSrvr::OnDoEquip( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )/ n5 R& ~/ W& v/ y( E* `* x  b  i
{
6 r' }9 W$ `( J6 |2 C+ R4 }        DWORD nId;
8 n# t7 p/ }% `2 L: R: X        int nPart;
0 G% X0 J6 `/ Q( [$ ?1 Y% o7 K( r: ]# v: I1 R3 y9 ]; O5 p  {, s4 a. q
        ar >> nId;! w/ T. L) m8 c8 K
        ar >> nPart;                . a' T* t0 b7 v! b% S8 f' t) P7 |
       
, P5 n7 q- O7 K- k5 ^$ z" m        if( nPart >= MAX_HUMAN_PARTS )       
0 k' h4 w5 I5 Y, q* U0 ~) ?2 n                return;
, @6 v; F2 o+ V1 h& S2 F, m; G6 ~* ?! e8 H* S/ x8 i
        CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );And put this under it; D- y0 @0 D/ S' y4 u( P2 s+ R

- U: b) X; a8 z0 p7 @" A+ F
: B3 L, X$ w$ n+ G7 o1 p, J/ hCode:9 F) v) A* I6 v. {' w
#ifdef __QUGET_SWAP_FIX
% f! A, }7 P; U# \3 e1 u; i5 K5 I/ u& [6 \! v% p
                                if( pUser->GetHitPoint() >  pUser->GetMaxHitPoint() )* i$ o1 H6 w) f4 O( n  _) H
                                         pUser->SetHitPoint( pUser->GetMaxHitPoint());( _0 q; n4 s" m  L

6 u+ k3 f- W) ?* \: x7 ^                                if( pUser->GetManaPoint() >  pUser->GetMaxManaPoint() )
  T! U! D8 S1 a                                         pUser->SetManaPoint( pUser->GetMaxManaPoint() );' e+ F8 i+ t$ ]6 B# a$ I3 ]( d
! W" j* S8 S1 N: V( K) p% u
                                if( pUser->GetFatiguePoint() >  pUser->GetMaxFatiguePoint() )
/ H$ C, B+ |0 R. m, F9 ]$ B; A. Z, m                                         pUser->SetFatiguePoint( pUser->GetMaxFatiguePoint() );
9 m+ y) o7 p+ t+ j1 I! _4 ]
8 f! F) P6 L* C7 K+ q#endiffind this in function void CDPClient::OnDoEquip( OBJID objid, CAr & ar ) @ DPClient.cpp3 `2 d% Y" X. f8 g6 n/ K( a' D5 |
and add under) ~( F! ?! O% c  Q' ~. B- z2 X
! _4 h7 c! i, b# ?. S1 t
Code:
$ q, [* U# `1 }4 M( G* k# H( N! lif( g_WndMng.m_pWndBeautyShop && g_WndMng.m_pWndBeautyShop->m_pModel )% u1 }3 `, E# p& T& {
                        {
! h& R9 t  `9 I0 L0 }4 X                                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 );- `! b' @3 N# a
                        }this
& B* s7 d5 t/ E% F6 b! {8 m
6 Z! ~: S0 @' _5 ?. ?Code:
. Y3 k3 q6 W) a5 E* P#ifdef __QUGET_SWAP_FIX
5 n! h+ S7 p& R' {; e( s. t                                if( pPlayer->GetHitPoint() >  pPlayer->GetMaxHitPoint() )
; G; v4 V/ d( I, P0 h' }7 g                                         pPlayer->SetHitPoint( pPlayer->GetMaxHitPoint());0 o. C; k$ k" e/ w

" b7 y  K# n. D6 y1 E( @. l                                if( pPlayer->GetManaPoint() >  pPlayer->GetMaxManaPoint() )- Z3 f( W7 f# ?" y8 {+ d
                                         pPlayer->SetManaPoint( pPlayer->GetMaxManaPoint() );2 ]. h2 x( E, o) [3 S' O

/ O" m  B* f! M2 l( I" i& Q2 q                                if( pPlayer->GetFatiguePoint() >  pPlayer->GetMaxFatiguePoint() )
+ Y: b9 w5 n3 j; t$ }# p' S/ D  g                                         pPlayer->SetFatiguePoint( pPlayer->GetMaxFatiguePoint() );
9 O) R$ U; d3 p; F! ]+ s# ~% U" u$ Z
#endifand then define __QUGET_SWAP_FIX in versioncommon.h @neuz and worldserver
% ?" L$ V+ v% o7 s  P& w3 _3 O# |; r) v' C4 D
6 x9 R  M8 Z( S2 ^





欢迎光临 飞飞世界论坛 (http://www.ffwold.com/) Powered by Discuz! X3.2