Other Languages Moderators Lord Henry Posted August 19, 2018 Other Languages Moderators Share Posted August 19, 2018 Vc está fazendo isso client-side? Link to comment
Jonas^ Posted August 19, 2018 Share Posted August 19, 2018 1 minute ago, Lord Henry said: Vc está fazendo isso client-side? CLIENT-SIDE disallowedCmds = { "say", "teamsay", "me", "Chat" } addEventHandler ("onClientKey", getRootElement(), function (button, state) -- Executa essa função quando o jogador pressionar ou soltar qualquer tecla. if not state then return end -- Não verifica ao soltar a tecla, somente ao pressionar. if not getElementData (localPlayer, "bindPermission") then -- Se o jogador não tem permissão para usar binds de texto, então: local keys = {} -- Obtém uma lista com todas as teclas com binds de texto. for i, cmd in ipairs (disallowedCmds) do -- Para cada comando da lista, faça: for ii, key in pairs (getBoundKeys (cmd)) do -- Para cada tecla com este comando da lista, faça: table.insert (keys, ii) -- Insere na lista keys, cada tecla bindada a cada comando da lista disallowedCmds. end end if keys then -- Se existe alguma tecla com bind de texto, então: for keyName, keyState in pairs (keys) do -- Para cada tecla com bind de texto, faça: if button == keyName then -- Se a tecla pressionada está com bind de texto, então: outputChatBox ("Tecla bloqueada, contém bind de texto tecla: "..keyName, 255, 0, 0) -- Avisa o jogador que essa tecla foi bloqueada. cancelEvent () -- Cancela o efeito dessa tecla como se ela nem tivesse sido usada. break -- Sai do loop do FOR para não precisar verificar as demais teclas com bind de texto. end end end end end) SERVER-SIDE addEventHandler ("onResourceStart", getResourceRootElement(getThisResource()), function () -- Executa essa função ao iniciar este resource. local everybody = getElementsByType ("player") -- everybody é uma lista com todos os players conectados no servidor, incluindo os deslogados. for i, thePlayer in ipairs (everybody) do -- Para cada jogador que já está no servidor, faça: if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(thePlayer)), aclGetGroup("Console")) then -- Se este jogador está na ACL Group Console, então: setElementData (thePlayer, "bindPermission", true) -- Permite que este player use teclas com binds de texto. else -- Se ele não está na ACL Group Console, então: setElementData (thePlayer, "bindPermission", false) -- Proíbe que este player use teclas com binds de texto. end end end) addEventHandler ("onPlayerLogin", getRootElement(), function (prev, curr) -- Quando alguém fizer login, executa essa função. if isObjectInACLGroup ("user."..getAccountName(curr), aclGetGroup("Console")) then -- Se o jogador que fez login está na ACL Group Console, então: setElementData (source, "bindPermission", true) -- Permite que este player use teclas com binds de texto. end end) addEventHandler ("onPlayerLogout", getRootElement(), function (prev, curr) -- Quando alguém deslogar, executa essa função. setElementData (source, "bindPermission", false) -- Proíbe que o player deslogado use teclas com binds de texto. end) Link to comment
Other Languages Moderators Lord Henry Posted August 20, 2018 Other Languages Moderators Share Posted August 20, 2018 O comando /Chat é com C maiúsculo mesmo? Bom, de qualquer forma descobri que ele gera erro sempre que o comando não está bindado em tecla nenhuma, então coloquei uma condição de verificação antes. Fiz uma série de outras correções também. disallowedCmds = { "say", "teamsay", "me", "Chat" -- Prefira comandos com letra minúscula, para evitar que o jogador use Shift. } addEventHandler ("onClientKey", getRootElement(), function (button, state) -- Executa essa função quando o jogador pressionar ou soltar qualquer tecla. if not state then return end -- Não verifica ao soltar a tecla, somente ao pressionar. if not getElementData (localPlayer, "bindPermission") then -- Se o jogador não tem permissão para usar binds de texto, então: local keys = {} -- Obtém uma lista com todas as teclas com binds de texto. for i, cmd in ipairs (disallowedCmds) do -- Para cada comando da lista, faça: if getBoundKeys (cmd) then -- Se existe alguma tecla com este comando bindado, então: for ii, key in pairs (getBoundKeys (cmd)) do -- Para cada tecla com este comando da lista, faça: table.insert (keys, ii) -- Insere na lista keys, cada tecla bindada a cada comando da lista disallowedCmds. end end end if keys then -- Se existe alguma tecla com bind de texto, então: for _, keyName in pairs (keys) do -- Para cada tecla com bind de texto, faça: if button == tostring (keyName) then -- Se a tecla pressionada está com bind de texto, então: outputChatBox ("Tecla bloqueada, contém bind de texto tecla: "..keyName, 255, 0, 0) -- Avisa o jogador que essa tecla foi bloqueada. cancelEvent () -- Cancela o efeito dessa tecla como se ela nem tivesse sido usada. break -- Sai do loop do FOR para não precisar verificar as demais teclas com bind de texto. end end end end end) 1 Link to comment
Jonas^ Posted August 21, 2018 Share Posted August 21, 2018 17 hours ago, Lord Henry said: O comando /Chat é com C maiúsculo mesmo? Bom, de qualquer forma descobri que ele gera erro sempre que o comando não está bindado em tecla nenhuma, então coloquei uma condição de verificação antes. Fiz uma série de outras correções também. disallowedCmds = { "say", "teamsay", "me", "Chat" -- Prefira comandos com letra minúscula, para evitar que o jogador use Shift. } addEventHandler ("onClientKey", getRootElement(), function (button, state) -- Executa essa função quando o jogador pressionar ou soltar qualquer tecla. if not state then return end -- Não verifica ao soltar a tecla, somente ao pressionar. if not getElementData (localPlayer, "bindPermission") then -- Se o jogador não tem permissão para usar binds de texto, então: local keys = {} -- Obtém uma lista com todas as teclas com binds de texto. for i, cmd in ipairs (disallowedCmds) do -- Para cada comando da lista, faça: if getBoundKeys (cmd) then -- Se existe alguma tecla com este comando bindado, então: for ii, key in pairs (getBoundKeys (cmd)) do -- Para cada tecla com este comando da lista, faça: table.insert (keys, ii) -- Insere na lista keys, cada tecla bindada a cada comando da lista disallowedCmds. end end end if keys then -- Se existe alguma tecla com bind de texto, então: for _, keyName in pairs (keys) do -- Para cada tecla com bind de texto, faça: if button == tostring (keyName) then -- Se a tecla pressionada está com bind de texto, então: outputChatBox ("Tecla bloqueada, contém bind de texto tecla: "..keyName, 255, 0, 0) -- Avisa o jogador que essa tecla foi bloqueada. cancelEvent () -- Cancela o efeito dessa tecla como se ela nem tivesse sido usada. break -- Sai do loop do FOR para não precisar verificar as demais teclas com bind de texto. end end end end end) Entendi, testei aqui e funcionou, sim eu uso com letra maiúscula pois eu uso uma tecla para acionar o comando do lado client-side, então não necessariamente o jogador vai usar o /Chat Ola mundo por exemplo. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now