From e476736761613180635fc1f2377a87aaca01f088 Mon Sep 17 00:00:00 2001 From: Linden <65407488+thelindat@users.noreply.github.com> Date: Sat, 6 Apr 2024 20:00:33 +1100 Subject: [PATCH] feat(server): triggerClientEvent with multi-target support Since that once fivem PR is forever pending review. --- imports/triggerClientEvent/server.lua | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 imports/triggerClientEvent/server.lua diff --git a/imports/triggerClientEvent/server.lua b/imports/triggerClientEvent/server.lua new file mode 100644 index 0000000..3294339 --- /dev/null +++ b/imports/triggerClientEvent/server.lua @@ -0,0 +1,23 @@ +---Triggers an event for the given playerIds, sending additional parameters as arguments.\ +---Implements functionality from [this pending pull request](https://github.com/citizenfx/fivem/pull/1210) and may be deprecated. +--- +---Provides non-neglibible performance gains due to msgpacking all arguments _once_, instead of per-target. +---@param eventName string +---@param targetIds number | number[] +---@param ... any +function lib.triggerClientEvent(eventName, targetIds, ...) + local payload = msgpack.pack_args(...) + local payloadLen = #payload + + if type(targetIds) == 'table' and table.type(targetIds) == 'array' then + for i = 1, #targetIds do + TriggerClientEventInternal(eventName, targetIds[i] --[[@as string]], payload, payloadLen) + end + + return + end + + TriggerClientEventInternal(eventName, targetIds --[[@as string]], payload, payloadLen) +end + +return lib.triggerClientEvent