|
|
Hi I fixed the swap bug a long time ago it got tested on my server and it worked 7 O- X5 L1 o0 }& Q2 p' g5 a
I posted this because someone kinda posted a youtube thingy about it :O.
. Y5 n" L Q4 G/ v o
& v( ?. b* ^% }9 H( P5 X+ q9 nFind this in DPSrv.cpp @ worldserver
9 `2 j& F7 l* i6 f$ }; \. } q& x7 b; m* D
Code:
& [ O( d7 b. X, bvoid CDPSrvr::OnDoEquip( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )& a) m' a; e0 U! }) F8 k
{: ]! V% L$ }2 a' }4 } o
DWORD nId;
$ L& z( x4 m0 ]" B/ `8 B/ r! d int nPart;, R2 W7 \7 e$ {, o6 u. b- ]
9 \( a4 P9 E& Z* b- u ar >> nId;
. B% D- j( n# Q9 [ ar >> nPart;
1 ?' B- C( j$ j R& n8 D
& I1 G: L: Q- @% J% [% s if( nPart >= MAX_HUMAN_PARTS )
# [; k! j+ _, C# e F! ]4 f return;
g9 }* m* } H8 n5 `" ~; q* c
* q$ i6 W7 i* r8 p CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );And put this under it
9 n$ e' }+ D& \7 Z7 H8 l
% D5 N% `: O% O& T5 x
4 Y& u, X2 U) V" kCode:
3 d% M; G- x. I% \6 j#ifdef __QUGET_SWAP_FIX; d1 I0 f3 n# }
* I5 \# R6 A0 a* u* x
if( pUser->GetHitPoint() > pUser->GetMaxHitPoint() )) G8 O) E" G `$ |( @% P5 n
pUser->SetHitPoint( pUser->GetMaxHitPoint());6 A( h" ` V5 @# i @
) f7 B( l4 L# r/ A if( pUser->GetManaPoint() > pUser->GetMaxManaPoint() )3 f6 O3 A8 B7 l" _
pUser->SetManaPoint( pUser->GetMaxManaPoint() );
1 e) u3 x. A* y9 A1 f, Y6 ?0 @# S) t+ q5 W& R* W: T
if( pUser->GetFatiguePoint() > pUser->GetMaxFatiguePoint() )
3 ^$ }, ~5 \( W pUser->SetFatiguePoint( pUser->GetMaxFatiguePoint() );1 N- B; c; e( C4 i: j8 v
" R# f, ?$ } w# _#endiffind this in function void CDPClient::OnDoEquip( OBJID objid, CAr & ar ) @ DPClient.cpp
) l+ ]% O1 z8 o" G; D* V3 u gand add under1 O$ @0 k$ K' }7 Y
: D6 o9 \( q3 q+ x- K5 }Code:, ^8 ]( |2 u/ e+ {) N
if( g_WndMng.m_pWndBeautyShop && g_WndMng.m_pWndBeautyShop->m_pModel )
# [) @6 S4 O8 U: |) Z4 Z/ o7 s {
4 I& z1 r. f' 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 );2 N+ H$ V/ M$ z: V! W/ G
}this
2 q z' O& b, [/ d9 w8 z/ J7 q7 P, h! F6 A7 A
Code:
$ b5 l3 z& u* K# \5 X& q! Q( j#ifdef __QUGET_SWAP_FIX
( ?7 [% ^; w, A7 O, {, O r if( pPlayer->GetHitPoint() > pPlayer->GetMaxHitPoint() )
( H5 k$ v O5 M/ |/ W% j) _ pPlayer->SetHitPoint( pPlayer->GetMaxHitPoint());
( e/ V$ q& W9 D: E. P& C9 K4 p* Q8 C) }* q' i& X5 b; J& V8 n( }
if( pPlayer->GetManaPoint() > pPlayer->GetMaxManaPoint() )$ ~" z J" Y" _* {; f9 ?0 p5 ?
pPlayer->SetManaPoint( pPlayer->GetMaxManaPoint() );
# Z/ f" L0 k* v3 `6 D3 A/ V X+ @: M' U5 _6 T% L9 q4 B ~$ R9 U# f
if( pPlayer->GetFatiguePoint() > pPlayer->GetMaxFatiguePoint() )" C& \2 ^- [* s: |
pPlayer->SetFatiguePoint( pPlayer->GetMaxFatiguePoint() );
8 v3 M2 E% s3 Z5 U6 S
+ q: _% g* M z8 ~#endifand then define __QUGET_SWAP_FIX in versioncommon.h @neuz and worldserver
& u/ ^& u5 m) Q4 L
( M. v: r1 G2 g+ L' u( D6 |* z3 V5 Q9 Z/ v# Y- L8 M
|
|