|
|
Hi I fixed the swap bug a long time ago it got tested on my server and it worked
7 V; Q* j; G3 \I posted this because someone kinda posted a youtube thingy about it :O.
" q0 P+ y0 |: Z! @' k; b& A+ X8 T7 r% @8 h2 N
Find this in DPSrv.cpp @ worldserver) e1 K; V# P5 K/ [/ i. G
* z% q: y9 \* z9 FCode:
+ k: C- P2 T' f0 ]5 E! X3 Wvoid CDPSrvr::OnDoEquip( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )
6 D% F/ z( r' w" s- n* q. x- E3 [{( L& w+ t( j7 j! S8 d5 g
DWORD nId;& `9 K4 z: Z9 M+ s& }
int nPart;
/ i& h, n% T1 J5 s0 h" J# [7 T$ ^5 v8 P3 l# y" ]
ar >> nId;+ u' C3 s5 z5 m7 V* A3 C9 ]
ar >> nPart;
5 G5 M& @* k# Q: {4 q0 [ i
_7 A! u9 H4 g3 y9 h# c if( nPart >= MAX_HUMAN_PARTS )
4 t# a% _% @, A, O% o% h. C7 f return;
0 G6 g1 l% a' x/ M# c, M' {$ w" H$ Q
CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );And put this under it
! A& @% I, Z2 y6 t8 V m4 Q+ x9 n7 g6 n4 T) Y
5 v+ ]4 K6 v! LCode:
; L! R1 ^. _2 L- L* P( x#ifdef __QUGET_SWAP_FIX
, H) g( O0 x) O3 j/ r0 c$ C
8 e) {: m+ R4 D if( pUser->GetHitPoint() > pUser->GetMaxHitPoint() )7 z& k% K% ?& {3 m
pUser->SetHitPoint( pUser->GetMaxHitPoint());
$ j# F6 q& P2 M+ f' @ R
3 s4 m! _( z4 r& F ], U% ? if( pUser->GetManaPoint() > pUser->GetMaxManaPoint() )
3 M! m `; u% R' p$ m pUser->SetManaPoint( pUser->GetMaxManaPoint() );5 q( Z. S# y- Y. h( |
: u$ \$ l( S, L1 v0 {$ B if( pUser->GetFatiguePoint() > pUser->GetMaxFatiguePoint() )
W2 U# U: b* b; { pUser->SetFatiguePoint( pUser->GetMaxFatiguePoint() );2 {: q) M- r! Q; O @
" u. l6 {- T8 \& C" b
#endiffind this in function void CDPClient::OnDoEquip( OBJID objid, CAr & ar ) @ DPClient.cpp
* n$ s1 E" P' H0 s7 land add under' v7 t! x9 A; N4 N2 u
$ b. Z3 ~6 Q! Z) L' l! J+ U8 J) g
Code:
$ y2 T1 ?$ J, {# gif( g_WndMng.m_pWndBeautyShop && g_WndMng.m_pWndBeautyShop->m_pModel )3 g0 [) G; c0 h5 `/ {4 @# w
{& U9 `! H& I* q
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 );! u9 }# z* C% q
}this
2 B8 r- Z# x! G( q7 Z! q2 ~& E8 i" A
Code:$ z% c _; `7 I4 N
#ifdef __QUGET_SWAP_FIX
9 O3 g4 z: V9 X6 l# Q- p if( pPlayer->GetHitPoint() > pPlayer->GetMaxHitPoint() )' G' R5 Q7 t* O# ]
pPlayer->SetHitPoint( pPlayer->GetMaxHitPoint());4 e& X% s4 x0 K# U/ |; a
% K6 }, s$ W* V ?5 }
if( pPlayer->GetManaPoint() > pPlayer->GetMaxManaPoint() ) L/ d" u$ B* K7 E) J6 k
pPlayer->SetManaPoint( pPlayer->GetMaxManaPoint() );. m0 Y1 W1 F- I a
9 \3 r! y* S1 b' v if( pPlayer->GetFatiguePoint() > pPlayer->GetMaxFatiguePoint() )
/ S+ D9 H8 M) X4 w pPlayer->SetFatiguePoint( pPlayer->GetMaxFatiguePoint() );5 m2 z9 A: v3 s$ u8 U+ D6 y: p! g
" J9 B* p( l4 K' J
#endifand then define __QUGET_SWAP_FIX in versioncommon.h @neuz and worldserver
1 e% t$ H" C6 K+ {2 G r6 Q3 H5 k: p% |1 }4 Z; T
9 @5 \& w" A$ E' j5 R/ { |
|