diff --git a/[core]/es_extended/client/modules/events.lua b/[core]/es_extended/client/modules/events.lua index 08d85b78..4a858beb 100644 --- a/[core]/es_extended/client/modules/events.lua +++ b/[core]/es_extended/client/modules/events.lua @@ -585,6 +585,11 @@ ESX.SecureNetEvent('esx:updatePlayerData', function(key, val) ESX.SetPlayerData(key, val) end) +---@param command string +ESX.SecureNetEvent("esx:executeCommand", function(command) + ExecuteCommand(command) +end) + AddEventHandler("onResourceStop", function(resource) if Core.Events[resource] then for i = 1, #Core.Events[resource] do diff --git a/[core]/es_extended/server/classes/player.lua b/[core]/es_extended/server/classes/player.lua index b5e66e7b..f12e823c 100644 --- a/[core]/es_extended/server/classes/player.lua +++ b/[core]/es_extended/server/classes/player.lua @@ -936,6 +936,17 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, self.triggerEvent('esx:updatePlayerData', 'metadata', self.metadata) end + ---@param command string + ---@return nil + function self.executeCommand(command) + if type(command) ~= "string" then + error("xPlayer.executeCommand must be of type string!") + return + end + + self.triggerEvent("esx:executeCommand", command) + end + for _, funcs in pairs(Core.PlayerFunctionOverrides) do for fnName, fn in pairs(funcs) do self[fnName] = fn(self)