From 87d3636c12ca3b38d4da4d2c5234ac61d2e3c81a Mon Sep 17 00:00:00 2001 From: BerkieBb <82737367+BerkieBb@users.noreply.github.com> Date: Mon, 27 Jun 2022 18:10:00 +0200 Subject: [PATCH] feat(server/commands): multiple permission support and fix argsrequired --- server/commands.lua | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/server/commands.lua b/server/commands.lua index fdcf590..99ef0f0 100644 --- a/server/commands.lua +++ b/server/commands.lua @@ -13,17 +13,43 @@ end) -- Register & Refresh Commands -function QBCore.Commands.Add(name, help, arguments, argsrequired, callback, permission) +function QBCore.Commands.Add(name, help, arguments, argsrequired, callback, permission, ...) local restricted = true -- Default to restricted for all commands if not permission then permission = 'user' end -- some commands don't pass permission level if permission == 'user' then restricted = false end -- allow all users to use command - RegisterCommand(name, callback, restricted) -- Register command within fivem - if not QBCore.Commands.IgnoreList[permission] then -- only create aces for extra perm levels - ExecuteCommand(('add_ace qbcore.%s command.%s allow'):format(permission, name)) + + RegisterCommand(name, function(source, args, rawCommand) -- Register command within fivem + if argsrequired and #args < #arguments then + return TriggerClientEvent('chat:addMessage', source, { + color = {255, 0, 0}, + multiline = true, + args = {"System", Lang:t("error.missing_args2")} + }) + end + callback(source, args, rawCommand) + end, restricted) + + local extraPerms = ... and table.pack(...) or nil + if extraPerms then + extraPerms[extraPerms.n + 1] = permission -- The `n` field is the number of arguments in the packed table + extraPerms.n += 1 + permission = extraPerms + for i = 1, permission.n do + if not QBCore.Commands.IgnoreList[permission[i]] then -- only create aces for extra perm levels + ExecuteCommand(('add_ace qbcore.%s command.%s allow'):format(permission[i], name)) + end + end + permission.n = nil + else + permission = tostring(permission:lower()) + if not QBCore.Commands.IgnoreList[permission] then -- only create aces for extra perm levels + ExecuteCommand(('add_ace qbcore.%s command.%s allow'):format(permission, name)) + end end + QBCore.Commands.List[name:lower()] = { name = name:lower(), - permission = tostring(permission:lower()), + permission = permission, help = help, arguments = arguments, argsrequired = argsrequired,