|
|
Hi I fixed the swap bug a long time ago it got tested on my server and it worked % n; A x9 @' I6 x
I posted this because someone kinda posted a youtube thingy about it :O.
N; u' \; H/ O8 E9 o. U/ s8 t$ O" [
Find this in DPSrv.cpp @ worldserver
4 I3 C2 z7 _/ D& o# l1 n. _2 Z' I v2 s' X# k
Code:; O( e1 }) F% @
void CDPSrvr::OnDoEquip( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )
3 e% B! U H+ t9 q{
0 c. r) v) o) F" D/ W DWORD nId;; Y4 U6 K3 | I! y/ j( L
int nPart;0 {) ~ v- _3 q) _
! \/ U) ?5 v7 C6 @0 ~ ar >> nId; F- v1 U$ _' K f) e7 k
ar >> nPart;
! w/ K! D3 W1 J
5 P% y, r- t, u! @5 ]( C if( nPart >= MAX_HUMAN_PARTS ) % C" ^( ~) l) G
return;1 v) C) ]- M- g: p
6 Z1 {, z5 k+ k" `( W
CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );And put this under it
9 i& ~" p7 B2 t. P: S
( W/ M/ ]( T1 g* J# ?5 w! t$ ^
+ Y q2 j- H) t& yCode:
# ]/ I0 r, ?! b# ~. j#ifdef __QUGET_SWAP_FIX
1 a B: g' L& [) h) q6 F
2 | m2 }7 S+ w. p) N5 j& ~7 | if( pUser->GetHitPoint() > pUser->GetMaxHitPoint() )
/ V7 n( E) J) T. l1 r; B8 [' b pUser->SetHitPoint( pUser->GetMaxHitPoint());( ~. V& |3 U" f/ v5 _
0 E' ]3 H& }$ U+ G, K9 l1 W
if( pUser->GetManaPoint() > pUser->GetMaxManaPoint() )' s1 }' N( L: O: g" g7 `$ n+ [
pUser->SetManaPoint( pUser->GetMaxManaPoint() );& h, [7 O& Z A" x* q7 t
+ ?% n, v7 Y3 }3 n W if( pUser->GetFatiguePoint() > pUser->GetMaxFatiguePoint() )$ I/ p- s4 ~, K B
pUser->SetFatiguePoint( pUser->GetMaxFatiguePoint() );3 O i6 ?3 \4 S( g
3 S5 [4 K. l6 A
#endiffind this in function void CDPClient::OnDoEquip( OBJID objid, CAr & ar ) @ DPClient.cpp
7 I- W- A4 g) d1 k" T7 Sand add under
$ B0 \6 |2 O' g; l |' U7 `
- j2 b; e1 }6 F2 bCode:
2 F; z$ x( T( I! j- Z2 Xif( g_WndMng.m_pWndBeautyShop && g_WndMng.m_pWndBeautyShop->m_pModel )
' t" C' Q6 F+ F* ^ {/ d( y' A, J$ u8 z
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 );
+ _, W6 t7 }0 u. w1 i+ X- L }this
: f" `5 I8 {$ M* a2 i2 T7 C1 v3 E8 q6 O- O3 H) z/ A* m2 ^9 G k& A" o/ Q
Code:
. w2 G5 c% o" I- q# j#ifdef __QUGET_SWAP_FIX
" C0 s3 |+ n6 l" V- F* t' P$ r: a if( pPlayer->GetHitPoint() > pPlayer->GetMaxHitPoint() )+ P$ o7 H# u3 p: w
pPlayer->SetHitPoint( pPlayer->GetMaxHitPoint());% m/ J7 D& l5 {2 L% {& C2 M
: C0 w3 B& {6 K
if( pPlayer->GetManaPoint() > pPlayer->GetMaxManaPoint() )9 K& ~$ m8 A* D6 D
pPlayer->SetManaPoint( pPlayer->GetMaxManaPoint() );5 j r5 C/ Y% M1 d( o. V: C4 ?
4 `, h/ b, e: S! y+ W6 h2 {$ k
if( pPlayer->GetFatiguePoint() > pPlayer->GetMaxFatiguePoint() )
6 E/ g% Z; C! P+ I! [ pPlayer->SetFatiguePoint( pPlayer->GetMaxFatiguePoint() );* c, Y0 d7 [4 {8 `+ m" \
/ z. D9 @ @9 P: n; L9 k* O
#endifand then define __QUGET_SWAP_FIX in versioncommon.h @neuz and worldserver
+ B, Y8 {2 j3 {0 C. ~! N/ ~5 }; _6 Y1 @- @
4 g2 o% V$ [ O! w) m |
|