• Scheduled Server Maintenance | Friday 6 November

    Our hardware provider has scheduled RAM maintenance to address the recent server instability. Work is expected by 17:00 Central European time.

    Brief downtime or interruptions may occur while the faulty memory modules are replaced. We apologise for the recent disruption and appreciate your patience.


    Special thanks to our sponsor, HyperFilter!

    We keep our community safe. They keep our servers safe. Running your own game servers? Keep them protected with HyperFilter.

Swap bug Quick fix

Joined
Jun 19, 2009
Messages
1,539
Reaction score
538
Hi I fixed the swap bug a long time ago it got tested on my server and it worked :thumbup1:
I posted this because someone kinda posted a youtube thingy about it :O.

Find this in DPSrv.cpp @ worldserver
Code:
void CDPSrvr::OnDoEquip( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )
{
	DWORD nId;
	int nPart;

	ar >> nId;
	ar >> nPart;		
	
	if( nPart >= MAX_HUMAN_PARTS )	
		return;

	CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
And put this under it

Code:
#ifdef __QUGET_SWAP_FIX

				if( pUser->GetHitPoint() >  pUser->GetMaxHitPoint() )
					 pUser->SetHitPoint( pUser->GetMaxHitPoint());

				if( pUser->GetManaPoint() >  pUser->GetMaxManaPoint() )
					 pUser->SetManaPoint( pUser->GetMaxManaPoint() );

				if( pUser->GetFatiguePoint() >  pUser->GetMaxFatiguePoint() )
					 pUser->SetFatiguePoint( pUser->GetMaxFatiguePoint() );

#endif
find this in function void CDPClient::OnDoEquip( OBJID objid, CAr & ar ) @ DPClient.cpp
and add under
Code:
if( g_WndMng.m_pWndBeautyShop && g_WndMng.m_pWndBeautyShop->m_pModel )
			{
				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 );
			}
this
Code:
#ifdef __QUGET_SWAP_FIX
				if( pPlayer->GetHitPoint() >  pPlayer->GetMaxHitPoint() )
					 pPlayer->SetHitPoint( pPlayer->GetMaxHitPoint());

				if( pPlayer->GetManaPoint() >  pPlayer->GetMaxManaPoint() )
					 pPlayer->SetManaPoint( pPlayer->GetMaxManaPoint() );

				if( pPlayer->GetFatiguePoint() >  pPlayer->GetMaxFatiguePoint() )
					 pPlayer->SetFatiguePoint( pPlayer->GetMaxFatiguePoint() );

#endif

and then define __QUGET_SWAP_FIX in versioncommon.h @neuz and worldserver
 
Last edited:
Idk at my server they said it got fixed.
I don't bug abuse lol so yea...
Let me explain...

if( pUser->GetHitPoint() > pUser->GetMaxHitPoint() )//If users HitPoint is higher then users max hitpoints..
pUser->SetHitPoint( pUser->GetMaxHitPoint());//Set users hitpoints to his max hitpoints
 
Why don't you make just a check in the dmg formula for Psycho Bomb & Asal?

something like that:

PHP:
int AsalFormula ()
{
	int nMana = pUser->GetManaPoint();

	if( nMana > pUser->GetMaxManaPoint() )
		 nMana = pUser->GetMaxManaPoint();

	return nStr*nMana*TheRest;
}
 
Why don't you make just a check in the dmg formula for Psycho Bomb & Asal?

something like that:

PHP:
int AsalFormula ()
{
	int nMana = pUser->GetManaPoint();

	if( nMana > pUser->GetMaxManaPoint() )
		 nMana = pUser->GetMaxManaPoint();

	return nStr*nMana*TheRest;
}
Nha i would rather check when you swap the **** (OnDoEquip)
So other skills wont be effected with the bug.

This should have fixed the swap bug since it didnt work on my server atleast gms/mod/players confirmed it didnt work anymore.
When my server was still running... :ott1:

nvm forgot a piece of code in the client let me update

/updated main post sorry
 
Last edited:
Back