Jump to content

Bloquear comandos especificos de serem bindados


Recommended Posts

  • Other Languages Moderators
local comandos = {"login", "logout", "testando"} -- Lista de comandos que não podem ser bindados.

function playerPressedKey(button, press)
    if (press) then -- Se o jogador apertou a tecla, então:
        local bindados = getCommandsBoundToKey(button, "down") -- Obtém uma lista de comandos bindados a essa tecla que o jogador acabou de apertar. O comando é o índice e o argumento é o valor.
        if table.size(bindados) == 0 then return end -- Se não há nada bindado nesta tecla (a função acima retornou uma tabela vazia), então nada acontece.
        for cmd,v in pairs(bindados) do -- Para cada comando bindado nesta tecla, faça:
            for _,cmds in pairs(comandos) do -- Para cada comando que não pode ser bindado, faça:
                if cmd == cmds then -- Se o comando bindado nesta tecla está na lista de comandos proibidos, então:
                    outputChatBox("O comando '"..cmd.."' não pode ser bindado.")
                    cancelEvent()
                    return
                end
            end
        end
    end
end
addEventHandler("onClientKey", root, playerPressedKey)

addCommandHandler("testando", function(cmd) -- Comando genérico só para saber se ele está sendo executado ou não.
    outputChatBox("Você está testando.")
end)

function table.size(theTable) -- Função útil que conta quantos elementos tem uma tabela. Quando usar #tabela não funcionaria.
    local size = 0
    for _, v in pairs(theTable) do
        size = size + 1
    end
    return size
end

 

Os comandos continuam funcionando fora da bind (digitados manualmente).

Edited by Lord Henry
  • Thanks 1
Link to comment
18 hours ago, Lord Henry said:
local comandos = {"login", "logout", "testando"} -- Lista de comandos que não podem ser bindados.

function playerPressedKey(button, press)
    if (press) then -- Se o jogador apertou a tecla, então:
        local bindados = getCommandsBoundToKey(button, "down") -- Obtém uma lista de comandos bindados a essa tecla que o jogador acabou de apertar. O comando é o índice e o argumento é o valor.
        if table.size(bindados) == 0 then return end -- Se não há nada bindado nesta tecla (a função acima retornou uma tabela vazia), então nada acontece.
        for cmd,v in pairs(bindados) do -- Para cada comando bindado nesta tecla, faça:
            for _,cmds in pairs(comandos) do -- Para cada comando que não pode ser bindado, faça:
                if cmd == cmds then -- Se o comando bindado nesta tecla está na lista de comandos proibidos, então:
                    outputChatBox("O comando '"..cmd.."' não pode ser bindado.")
                    cancelEvent()
                    return
                end
            end
        end
    end
end
addEventHandler("onClientKey", root, playerPressedKey)

addCommandHandler("testando", function(cmd) -- Comando genérico só para saber se ele está sendo executado ou não.
    outputChatBox("Você está testando.")
end)

function table.size(theTable) -- Função útil que conta quantos elementos tem uma tabela. Quando usar #tabela não funcionaria.
    local size = 0
    for _, v in pairs(theTable) do
        size = size + 1
    end
    return size
end

 

Os comandos continuam funcionando fora da bind (digitados manualmente).

Valeeu, era isso mesmo que tava precisando, ainda não conhecia o getCommandBoundToKey.

Edited by Maaster
Link to comment
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...