118 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
-- DO NOT USE! Old syntax for addCommand (prior to v3.0)
 | 
						|
---@todo convert input and call standard function?
 | 
						|
 | 
						|
--[[
 | 
						|
    https://github.com/overextended/ox_lib
 | 
						|
 | 
						|
    This file is licensed under LGPL-3.0 or higher <https://www.gnu.org/licenses/lgpl-3.0.en.html>
 | 
						|
 | 
						|
    Copyright © 2025 Linden <https://github.com/thelindat>
 | 
						|
]]
 | 
						|
 | 
						|
local commands = {}
 | 
						|
 | 
						|
SetTimeout(1000, function()
 | 
						|
    TriggerClientEvent('chat:addSuggestions', -1, commands)
 | 
						|
end)
 | 
						|
 | 
						|
AddEventHandler('playerJoining', function()
 | 
						|
    TriggerClientEvent('chat:addSuggestions', source, commands)
 | 
						|
end)
 | 
						|
 | 
						|
local function chatSuggestion(name, parameters, help)
 | 
						|
    local params = {}
 | 
						|
 | 
						|
    if parameters then
 | 
						|
        for i = 1, #parameters do
 | 
						|
            local arg, argType = string.strsplit(':', parameters[i])
 | 
						|
 | 
						|
            if argType and argType:sub(0, 1) == '?' then
 | 
						|
                argType = argType:sub(2, #argType)
 | 
						|
            end
 | 
						|
 | 
						|
            params[i] = {
 | 
						|
                name = arg,
 | 
						|
                help = argType
 | 
						|
            }
 | 
						|
        end
 | 
						|
    end
 | 
						|
 | 
						|
    commands[#commands + 1] = {
 | 
						|
        name = '/' .. name,
 | 
						|
        help = help,
 | 
						|
        params = params
 | 
						|
    }
 | 
						|
end
 | 
						|
 | 
						|
---@deprecated
 | 
						|
---@param group string | string[] | false
 | 
						|
---@param name string | string[]
 | 
						|
---@param callback function
 | 
						|
---@param parameters table
 | 
						|
function lib.__addCommand(group, name, callback, parameters, help)
 | 
						|
    if not group then group = 'builtin.everyone' end
 | 
						|
 | 
						|
    if type(name) == 'table' then
 | 
						|
        for i = 1, #name do
 | 
						|
            ---@diagnostic disable-next-line: deprecated
 | 
						|
            lib.__addCommand(group, name[i], callback, parameters, help)
 | 
						|
        end
 | 
						|
    else
 | 
						|
        chatSuggestion(name, parameters, help)
 | 
						|
 | 
						|
        RegisterCommand(name, function(source, args, raw)
 | 
						|
            source = tonumber(source) --[[@as number]]
 | 
						|
 | 
						|
            if parameters then
 | 
						|
                for i = 1, #parameters do
 | 
						|
                    local arg, argType = string.strsplit(':', parameters[i])
 | 
						|
                    local value = args[i]
 | 
						|
 | 
						|
                    if arg == 'target' and value == 'me' then value = source end
 | 
						|
 | 
						|
                    if argType then
 | 
						|
                        local optional
 | 
						|
 | 
						|
                        if argType:sub(0, 1) == '?' then
 | 
						|
                            argType = argType:sub(2, #argType)
 | 
						|
                            optional = true
 | 
						|
                        end
 | 
						|
 | 
						|
                        if argType == 'number' then
 | 
						|
                            value = tonumber(value) or value
 | 
						|
                        end
 | 
						|
 | 
						|
                        local type = type(value)
 | 
						|
 | 
						|
                        if type ~= argType and (not optional or type ~= 'nil') then
 | 
						|
                            local invalid = ('^1%s expected <%s> for argument %s (%s), received %s^0'):format(name,
 | 
						|
                                argType, i, arg, type)
 | 
						|
                            if source < 1 then
 | 
						|
                                return print(invalid)
 | 
						|
                            else
 | 
						|
                                return TriggerClientEvent('chat:addMessage', source, invalid)
 | 
						|
                            end
 | 
						|
                        end
 | 
						|
                    end
 | 
						|
 | 
						|
                    args[arg] = value
 | 
						|
                    args[i] = nil
 | 
						|
                end
 | 
						|
            end
 | 
						|
 | 
						|
            callback(source, args, raw)
 | 
						|
        end, group and true)
 | 
						|
 | 
						|
        name = ('command.%s'):format(name)
 | 
						|
        if type(group) == 'table' then
 | 
						|
            for _, v in ipairs(group) do
 | 
						|
                if not IsPrincipalAceAllowed(v, name) then lib.addAce(v, name) end
 | 
						|
            end
 | 
						|
        else
 | 
						|
            if not IsPrincipalAceAllowed(group, name) then lib.addAce(group, name) end
 | 
						|
        end
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
---@diagnostic disable-next-line: deprecated
 | 
						|
return lib.__addCommand
 |