From fa3ac9a34028d5cf547f4760b4f3917f2696955e Mon Sep 17 00:00:00 2001 From: rtldg <55846624+rtldg@users.noreply.github.com> Date: Sun, 18 Apr 2021 18:01:27 +0000 Subject: [PATCH] stop crashing on bhop_fps_max_sr & delete arraylists in OnClientDisconnect_Post so other plugins can grab events in OnClientDisconnect --- scripting/eventqueuefix.sp | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/scripting/eventqueuefix.sp b/scripting/eventqueuefix.sp index 1b8e72b..37170d2 100644 --- a/scripting/eventqueuefix.sp +++ b/scripting/eventqueuefix.sp @@ -135,18 +135,10 @@ public void OnClientPutInServer(int client) } } -public void OnClientDisconnect(int client) +public void OnClientDisconnect_Post(int client) { - if(g_aPlayerEvents[client] != null) - { - g_aPlayerEvents[client].Clear(); - } - - if(g_aOutputWait[client] != null) - { - g_aOutputWait[client].Clear(); - delete g_aOutputWait[client]; - } + delete g_aPlayerEvents[client]; + delete g_aOutputWait[client]; } public void OnEntityCreated(int entity, const char[] classname) @@ -224,26 +216,27 @@ int EntityToBCompatRef(Address player) public MRESReturn DHook_AddEventThree(Handle hParams) { event_t event; + event.activator = EntRefToEntIndex(EntityToBCompatRef(view_as
(DHookGetParam(hParams, 5)))); + + if (event.activator < 1 || event.activator > MaxClients) + { + return MRES_Ignored; + } + DHookGetParamString(hParams, 1, event.target, 64); DHookGetParamString(hParams, 2, event.targetInput, 64); DHookGetParamObjectPtrString(hParams, 3, 0, ObjectValueType_String, event.variantValue, sizeof(event.variantValue)); int ticks = RoundToCeil((view_as(DHookGetParam(hParams, 4)) - FLT_EPSILON) / GetTickInterval()); event.delay = float(ticks); - event.activator = EntRefToEntIndex(EntityToBCompatRef(view_as
(DHookGetParam(hParams, 5)))); event.caller = EntRefToEntIndex(EntityToBCompatRef(view_as
(DHookGetParam(hParams, 6)))); event.outputID = DHookGetParam(hParams, 7); #if defined DEBUG PrintToChatAll("AddEventThree: %s, %s, %s, %f, %i, %i, %i, time: %f", event.target, event.targetInput, event.variantValue, event.delay, event.activator, event.caller, event.outputID, GetGameTime()); #endif - - if((event.activator < 65 && event.activator > 0)) - { - g_aPlayerEvents[event.activator].PushArray(event); - return MRES_Supercede; - } - return MRES_Ignored; + g_aPlayerEvents[event.activator].PushArray(event); + return MRES_Supercede; } public Action OnTrigger(const char[] output, int caller, int activator, float delay)