From a82a983b52f409a550e0765611effa026e77b1dd Mon Sep 17 00:00:00 2001 From: shavit Date: Wed, 2 May 2018 10:51:40 +0300 Subject: [PATCH] Fixed weapon cleanup when dropped by disconnected players. --- addons/sourcemod/scripting/shavit-misc.sp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/addons/sourcemod/scripting/shavit-misc.sp b/addons/sourcemod/scripting/shavit-misc.sp index fd11879a..42300612 100644 --- a/addons/sourcemod/scripting/shavit-misc.sp +++ b/addons/sourcemod/scripting/shavit-misc.sp @@ -1061,9 +1061,30 @@ public void OnClientPutInServer(int client) public void OnClientDisconnect(int client) { + if(gB_NoWeaponDrops) + { + int entity = -1; + + while((entity = FindEntityByClassname(entity, "weapon_*")) != -1) + { + if(GetEntPropEnt(entity, Prop_Send, "m_hOwnerEntity") == client) + { + RequestFrame(RemoveWeapon, EntIndexToEntRef(entity)); + } + } + } + ResetCheckpoints(client); } +void RemoveWeapon(any data) +{ + if(IsValidEntity(data)) + { + RemoveEntity(data); + } +} + void ResetCheckpoints(int client) { int serial = GetClientSerial(client); @@ -1143,7 +1164,7 @@ public void OnWeaponDrop(int client, int entity) { if(gB_NoWeaponDrops && IsValidEntity(entity)) { - AcceptEntityInput(entity, "Kill"); + RemoveEntity(entity); } }