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)) 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; 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)) 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; 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)) 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]; char sWeaponClass[32];
GetEntityClassname(item.iWeapon, sWeaponClass, sizeof(sWeaponClass)); 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"); 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. * Checks if an entity is valid and exists.
* *