entWatch4: Drop Ammo aswell, when force drops happen.

This commit is contained in:
zaCade 2019-04-25 17:44:51 +02:00
parent 249fb0460e
commit b09777159a
3 changed files with 27 additions and 3 deletions

View File

@ -420,7 +420,7 @@ public void OnClientDisconnect(int client)
{
if (item.bWeapon && !(item.dConfig.iSlot == SLOT_NONE || item.dConfig.iSlot == SLOT_KNIFE))
{
SDKHooks_DropWeapon(item.iClient, item.iWeapon, NULL_VECTOR, NULL_VECTOR);
Client_DropWeapon(item.iClient, item.iWeapon);
}
item.iClient = INVALID_ENT_REFERENCE;
@ -451,7 +451,7 @@ public void OnClientDeath(Event hEvent, const char[] sEvent, bool bDontBroadcast
{
if (item.bWeapon && !(item.dConfig.iSlot == SLOT_NONE || item.dConfig.iSlot == SLOT_KNIFE))
{
SDKHooks_DropWeapon(item.iClient, item.iWeapon, NULL_VECTOR, NULL_VECTOR);
Client_DropWeapon(item.iClient, item.iWeapon);
}
item.iClient = INVALID_ENT_REFERENCE;

View File

@ -76,7 +76,7 @@ public Action Command_TransferItem(int client, int args)
{
if (item.bWeapon && !(item.dConfig.iSlot == SLOT_NONE || item.dConfig.iSlot == SLOT_KNIFE))
{
SDKHooks_DropWeapon(item.iClient, item.iWeapon, NULL_VECTOR, NULL_VECTOR);
Client_DropWeapon(item.iClient, item.iWeapon);
char sWeaponClass[32];
GetEntityClassname(item.iWeapon, sWeaponClass, sizeof(sWeaponClass));

View File

@ -69,6 +69,30 @@ stock int Client_GetObserverTarget(int client)
return GetEntPropEnt(client, Prop_Send, "m_hObserverTarget");
}
/**
* Drops a client's weapon.
*
* @param client Client Index.
* @param weapon Weapon Index.
* @noreturn
*/
stock void Client_DropWeapon(int client, int weapon)
{
int iPrimaryAmmoType = GetEntProp(weapon, Prop_Data, "m_iPrimaryAmmoType");
int iSecondaryAmmoType = GetEntProp(weapon, Prop_Data, "m_iSecondaryAmmoType");
int iAmmoPrimary = GetEntProp(client, Prop_Send, "m_iAmmo", _, iPrimaryAmmoType);
int iAmmoSecondary = GetEntProp(client, Prop_Send, "m_iAmmo", _, iSecondaryAmmoType);
SetEntProp(client, Prop_Send, "m_iAmmo", 0, _, iPrimaryAmmoType);
SetEntProp(client, Prop_Send, "m_iAmmo", 0, _, iSecondaryAmmoType);
SDKHooks_DropWeapon(client, weapon, NULL_VECTOR, NULL_VECTOR);
SetEntProp(weapon, Prop_Data, "m_iPrimaryAmmoCount", iAmmoPrimary);
SetEntProp(weapon, Prop_Data, "m_iSecondaryAmmoCount", iAmmoSecondary);
}
/*
* Checks if an entity is valid and exists.
*