diff --git a/scripting/eventqueuefix.sp b/scripting/eventqueuefix.sp index 8a7de72..756ba82 100644 --- a/scripting/eventqueuefix.sp +++ b/scripting/eventqueuefix.sp @@ -228,7 +228,8 @@ public MRESReturn DHook_AddEventThree(Handle hParams) DHookGetParamString(hParams, 1, event.target, 64); DHookGetParamString(hParams, 2, event.targetInput, 64); - DHookGetParamObjectPtrString(hParams, 3, 0, ObjectValueType_String, event.variantValue, sizeof(event.variantValue)); + ResolveVariantValue(hParams, event); + int ticks = RoundToCeil((view_as(DHookGetParam(hParams, 4)) - FLT_EPSILON) / GetTickInterval()); event.delay = float(ticks); event.caller = EntityToBCompatRef(view_as
(DHookGetParam(hParams, 6))); @@ -242,6 +243,31 @@ public MRESReturn DHook_AddEventThree(Handle hParams) return MRES_Supercede; } +public void ResolveVariantValue(Handle ¶ms, event_t event) +{ + int type = DHookGetParamObjectPtrVar(params, 3, 16, ObjectValueType_Int); + + switch(type) + { + case 1: + { + float fVar = DHookGetParamObjectPtrVar(params, 3, 0, ObjectValueType_Float); + FloatToString(fVar, event.variantValue, sizeof(event.variantValue)); + } + + case 5: + { + int iVar = DHookGetParamObjectPtrVar(params, 3, 0, ObjectValueType_Int); + IntToString(iVar, event.variantValue, sizeof(event.variantValue)); + } + + default: + { + DHookGetParamObjectPtrString(params, 3, 0, ObjectValueType_String, event.variantValue, sizeof(event.variantValue)); + } + } +} + public Action OnTrigger(const char[] output, int caller, int activator, float delay) { if(activator <= MAXPLAYERS && activator > 0)