|
|
Hi I fixed the swap bug a long time ago it got tested on my server and it worked
7 o+ i1 G& b! v$ TI posted this because someone kinda posted a youtube thingy about it :O.
/ y, C6 j" w: ]2 f1 u" q6 Q: D7 p1 N& H% I( Z% l" r3 e
Find this in DPSrv.cpp @ worldserver/ X% \0 u) a4 ?! M' I% a- t1 T
; q1 h* v( z6 b2 UCode:
; w! V, w$ Y+ r U. Hvoid CDPSrvr::OnDoEquip( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize ): f# e1 \4 e* J- @
{0 W* k4 K: u* X6 \
DWORD nId;8 M+ g$ x- s* W! k
int nPart;
* t+ e: C6 ]/ M ]. { J
$ Q6 B9 `; u! e4 `. t" T% [ ar >> nId;
6 ~" R: T- C3 q. `8 c2 K; K" F( u! U ar >> nPart; . n6 N! d+ O: r3 P) Z2 ]
. r5 z% H7 G, B4 z! |: y+ c if( nPart >= MAX_HUMAN_PARTS )
! j+ N# i4 w' X) Y3 p return;
8 V. c0 [5 E: d; {; [
0 O4 a8 w+ i, u CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );And put this under it
, a, K+ H% A. P. n6 i% ]0 \1 ~* N0 C; b
' G$ n! f. t3 d' D8 t/ x
Code:
* K6 W. ` P! _& n#ifdef __QUGET_SWAP_FIX
$ g o9 V$ a8 _3 E. P N) N9 c! {- ]8 _
if( pUser->GetHitPoint() > pUser->GetMaxHitPoint() )* l. {4 \9 l& o3 U
pUser->SetHitPoint( pUser->GetMaxHitPoint());
- w: e4 _5 m3 X- J5 `2 Z
# D/ H! B3 I9 {& c: T( @+ O if( pUser->GetManaPoint() > pUser->GetMaxManaPoint() )2 I# s; \4 o/ V; ^
pUser->SetManaPoint( pUser->GetMaxManaPoint() );6 A$ ]5 h( c$ ]" b
5 c+ h" l$ \8 B$ J; q2 | if( pUser->GetFatiguePoint() > pUser->GetMaxFatiguePoint() )
# v: {/ C' ?3 r! {! d) \8 L pUser->SetFatiguePoint( pUser->GetMaxFatiguePoint() );
( F* B+ Q- q8 E5 |
$ S1 Y2 U6 ^( T3 [& u0 J#endiffind this in function void CDPClient::OnDoEquip( OBJID objid, CAr & ar ) @ DPClient.cpp- u, K9 i% q1 }2 \! t
and add under; q* {, G. }3 N
' m! T3 ?' R. ]6 r/ @* XCode:; L. u( s" ?8 Z, ~# u, |3 q* z
if( g_WndMng.m_pWndBeautyShop && g_WndMng.m_pWndBeautyShop->m_pModel )
6 v7 a- Q) v; x9 g, r {
; @0 A2 b; ~; I7 e( e9 n 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 );
* d& o$ P4 g D+ _1 d4 O; l3 G }this
/ ?; E+ h: u Y# u- r( H+ I/ I5 c5 }6 Z2 [2 ` d
Code:" g& `. {9 ]% e+ ]% d7 ?( A2 f
#ifdef __QUGET_SWAP_FIX
" k: W! k2 t% j3 _ if( pPlayer->GetHitPoint() > pPlayer->GetMaxHitPoint() ) u7 Q" d& m, I- V2 H' s( L9 p* o
pPlayer->SetHitPoint( pPlayer->GetMaxHitPoint());
, R5 R8 I X- K* }, ~7 b% e, z( s8 |. k+ f. m9 u8 y
if( pPlayer->GetManaPoint() > pPlayer->GetMaxManaPoint() )
( \9 ^5 z6 A- ^ pPlayer->SetManaPoint( pPlayer->GetMaxManaPoint() );* X _$ x1 N" Q- O: c. J
" Z7 i2 ~% o+ |4 r6 x& H+ j if( pPlayer->GetFatiguePoint() > pPlayer->GetMaxFatiguePoint() )
8 l- R3 E. p# A0 k$ N pPlayer->SetFatiguePoint( pPlayer->GetMaxFatiguePoint() );
$ v I @2 f$ M+ O- \$ j% q* ~2 M9 E& j! m& @# i- W
#endifand then define __QUGET_SWAP_FIX in versioncommon.h @neuz and worldserver ( U+ ~; S v- `- \- j/ V
7 j' r: w- X8 O" j! W( _6 N
6 x( z6 _7 u3 G |
|