Jump to content

setTimer


Recommended Posts

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

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
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 by Lord Henry
Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

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