Jump to content

Bloquear comandos especificos de serem bindados


Recommended Posts

Posted

Qual função poderia estar utilizando pra bloquear um comando especifico de ser bindado? não quero bloquear todas as binds ou bloquear a tecla, quero bloquear apenas binds com comandos especificos que eu definir

  • Other Languages Moderators
Posted (edited)
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
Posted (edited)
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
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

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