mirror of
https://github.com/qbcore-fivem/qb-core.git
synced 2026-08-28 17:01:16 +00:00
Basic commands support
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
-- Handle Chat Input
|
||||
|
||||
AddEventHandler('chatMessage', function(_, _, message)
|
||||
if string.sub(message, 1, 1) == '/' then
|
||||
CancelEvent()
|
||||
return
|
||||
end
|
||||
end)
|
||||
|
||||
-- Add Aces
|
||||
|
||||
CreateThread(function()
|
||||
local permissions = QBCore.Config.Server.Permissions
|
||||
for i = 1, #permissions do
|
||||
local permission = permissions[i]
|
||||
ExecuteCommand(('add_ace qbcore.%s %s allow'):format(permission, permission))
|
||||
end
|
||||
end)
|
||||
|
||||
-- Register & Refresh Commands
|
||||
|
||||
function QBCore.Commands.Add(name, help, arguments, argsrequired, callback, permission, ...)
|
||||
local restricted = true
|
||||
if not permission then permission = 'user' end
|
||||
if permission == 'user' then restricted = false end
|
||||
|
||||
RegisterCommand(name, function(source, args, rawCommand)
|
||||
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
|
||||
extraPerms.n += 1
|
||||
permission = extraPerms
|
||||
for i = 1, permission.n do
|
||||
if not QBCore.Commands.IgnoreList[permission[i]] then
|
||||
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
|
||||
ExecuteCommand(('add_ace qbcore.%s command.%s allow'):format(permission, name))
|
||||
end
|
||||
end
|
||||
|
||||
QBCore.Commands.List[name:lower()] = {
|
||||
name = name:lower(),
|
||||
permission = permission,
|
||||
help = help,
|
||||
arguments = arguments,
|
||||
argsrequired = argsrequired,
|
||||
callback = callback
|
||||
}
|
||||
end
|
||||
|
||||
function QBCore.Commands.Refresh(source)
|
||||
local src = source
|
||||
local Player = QBCore.Functions.GetPlayer(src)
|
||||
local suggestions = {}
|
||||
if Player then
|
||||
for command, info in pairs(QBCore.Commands.List) do
|
||||
local hasPerm = IsPlayerAceAllowed(tostring(src), 'command.' .. command)
|
||||
if hasPerm then
|
||||
suggestions[#suggestions + 1] = {
|
||||
name = '/' .. command,
|
||||
help = info.help,
|
||||
params = info.arguments
|
||||
}
|
||||
else
|
||||
TriggerClientEvent('chat:removeSuggestion', src, '/' .. command)
|
||||
end
|
||||
end
|
||||
TriggerClientEvent('chat:addSuggestions', src, suggestions)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user