Lukkas2201 Posted January 12, 2020 Share Posted January 12, 2020 boa tarde, preciso de uma ajuda, seguinte, criei uma função de animação, ai até então tudo certo, porém eu queria que, ao usar o comando da animação uma vez, o player tenha que esperar 1 minuto para usar novamente, ja consegui a função para desabilitar o comando, porém estou tentando adicionar um settimer para poder bloquear o comando por apenas 1 minuto, e após 1 minuto a função desabilitar e poder usar novamente, e não estou conseguindo, da um erro: Erros que aparecem: SCRIPT ERROR: ped\Peds.Lua:19: ')' expected (to close '(' at line 13) near '<eof>' [2020-01-12 12:15:52] ERROR: Loading script failed: ped\Peds.Lua:19: ')' expected (to close '(' at line 13) near '<eof>' commands = { ["coco"] = true } addEventHandler("onPlayerCommand", getRootElement(), setTimer(function(cmd) if ( commands[cmd] ) then outputChatBox ( "comando foi desativado", source, 255, 0, 0) cancelEvent() end end,4000,0) Obs: já tentei remover a quantidade de end, ja aumentei, ja troquei a posição do tempo do settimer no end, mas mesmo assim não vai, se alguem puder me ajudar, agradeço Link to comment
main Posted January 12, 2020 Share Posted January 12, 2020 Seu código está bagunçado e não faz sentido você colocar o parâmetro do evento na função do setTimer. Comentei cada parte do código, espero que entenda. -- SERVER-SIDE local commands = { ["coco"] = true } local antiSpam = {} addEventHandler("onPlayerCommand", root, function(cmd) -- quando executar o comando if commands[cmd] then -- verifica se é o comando que está na tabela if isTimer(antiSpam[source]) then -- se existir o timer cancelEvent() -- cancela o evento fazendo com o que o comando não seja executado outputChatBox("Aguarde mais um pouco para utilizar o comando novamente!", source, 255, 0, 0) -- mostra a msg return end antiSpam[source] = setTimer(function(p) -- cria o timer if isElement(p) then -- verifica se existe o elemento, para evitar erros no debug if antiSpam[p] then -- verifica a tabela if isTimer(antiSpam[p]) then -- se existir o timer killTimer(antiSpam[p]) -- cancela o timer end antiSpam[p] = nil -- anula a tabela end end end, 10000, 1, source) end end) addEventHandler("onPlayerQuit", root, function() -- quando player sair, anular a tabela if antiSpam[source] then -- verifica a tabela if isTimer(antiSpam[source]) then -- se existir o timer killTimer(antiSpam[source]) -- cancela o timer end antiSpam[source] = nil -- anula a tabela end end) Link to comment
Other Languages Moderators Lord Henry Posted January 12, 2020 Other Languages Moderators Share Posted January 12, 2020 (edited) commands = { -- Lista de comandos. ["coco"] = {} -- Lista de timers que bloqueiam este comando em um jogador específico. } addEventHandler ("onPlayerCommand", root, function (cmd) if (commands[cmd]) then -- Se o comando executado existe na lista de bloqueios, então: if (isTimer (commands[cmd][source])) then -- Se o jogador que executou este comando está com ele bloqueado (existe o timer), então: outputChatBox ("Este comando está desativado para você.", source, 255, 0, 0) cancelEvent() else -- Se não existe o setTimer deste jogador neste comando, significa que o comando não está bloqueado, então: commands[cmd][source] = setTimer (function (theSource) -- Adiciona este timer na lista, depois de 1 minuto ele vai sumir da lista e o jogador poderá usar o comando novamente. commands[cmd][theSource] = nil -- source não existe dentro de uma função setTimer, por isso precisou ser passado via parâmetro. end, 60000, 1, source) outputChatBox ("Comando executado.", source, 0, 255, 0) end end end) addEventHandler ("onPlayerQuit", root, function () -- Ativa quando um jogador desconecta do servidor. for i, v in pairs (commands) do -- Para cada comando da lista, faça: if (isTimer (v[source])) then -- Se existe o timer do jogador que saiu neste comando, então: killTimer (v[source]) -- Cancela o timer. v[source] = nil -- Libera a variável do timer. end end end) Testado e funcionando. (server-side) Edited January 12, 2020 by Lord Henry 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