Jump to content

Temporizador para comando, me ajuda :)


Recommended Posts

Quero criar um temporizador para poder funcionar o comando novamente,

 

Tenho esse codigo, alguem poderia me ajudar? Ja tenho a marca feita

 

temporizador = false
function EscolherAssassino()
    if temporizador == true then
        outputChatBox ( "#B22222[#B22222ERROR#B22222] O Assassino já foi escolhido! ", source, 100,255,100,true )
        else
        local temporizador = true
            if temporizador == false then
                local randomPlayer = getRandomPlayer ( )
                setElementPosition(randomPlayer, -2405.6630859375, -2171.0009765625, 33.2890625)
                    setTimer( function(escolhidoassassino)
                    temporizador = false
                    end, 45000, 1)
            end
    end
end
addEventHandler("onMarkerHit", mrk, EscolherAssassino)

Link to comment
local temporizador = getTickCount()
local tempo = 5000 --Selecione aqui o intervalo em milisegundos
function EscolherAssassino()
	if temporizador + tempo <= getTickCount() then
		local randomPlayer = getRandomPlayer ( )
		temporizador = getTickCount()
		setElementPosition(randomPlayer, -2405.6630859375, -2171.0009765625, 33.2890625)
		setTimer( function(escolhidoassassino)
			temporizador = false
		end, 45000, 1)
	else
		outputChatBox ( "#B22222[#B22222ERROR#B22222] O Assassino já foi escolhido! ", source, 100,255,100,true )
	end
end
addEventHandler("onMarkerHit", mrk, EscolherAssassino)

Veja se funciona, qualquer dúvida fique a vontade pra perguntar

  • Confused 1
Link to comment
mrkvipAP = createMarker ( -2295.298828125, -2641.6328125, 59.416213989258 -1, "cylinder", 45, 0, 0, 0, 0, root)

cdr = true -- variavel para setar o time no futuro
function itensvip(thePlayer)
local coletevip = getPedArmor(thePlayer)
local vidavip = getElementHealth(thePlayer)
	if isObjectInACLGroup ( "user." ..getAccountName(getPlayerAccount(thePlayer)), aclGetGroup ("VIP")) then
		if cdr == true then -- checando a variavel se é verdadeira
			giveWeapon(thePlayer, 24, 5, true)  
			giveWeapon(thePlayer, 25, 5, true) 
			giveWeapon(thePlayer, 33, 10, true) 
			giveWeapon(thePlayer, 4, 1, true)
			setElementHealth (thePlayer, vidavip + 100)
			setPedArmor(thePlayer, coletevip + 100)
			outputChatBox("[SEXTA-FEIRA 13]Você pegou com sucesso seu KitVip!", thePlayer, 255, 215, 0, true)
			outputChatBox("[SEXTA-FEIRA 13]Armas, Colete e Vida recebidos, obrigado por nos apoiar ^^", thePlayer, 255, 215, 0, true)
			cdr = false -- setando a variavel para falsa
				local recarga = setTimer (function (NoAbuse)
								cdr = true -- depois de 10 segundos a variavel se torna verdadeira e ele pode usar comando denovo
								end, 10000, 1) -- timer de 10 segundos para usar o comando novamente
		end
	else
	outputChatBox("[SEXTA-FEIRA 13]Confira nosso discord para adquirir #FFD700VIP, #64FF64aperte F2!", thePlayer, 100, 255, 100, true) -- se o player nao for vip e digitar o comando
	end
end
addEventHandler("onMarkerHit", mrkvipAP, itensvip)
addCommandHandler("kitvip", itensvip, thePlayer)

Eu consegui com esse script, bom tenho alguma duvida em algo, queria por uma mensagem mandando ele esperar caso ele use o comando enquanto a variavel está falsa é so eu colocar no script...

if cdr == false then
	outputChatBox("[ERRO] Espere alguns segundos até usar isso novamente", thePlayer, 200, 35, 35, true)
end

poderia me tirar essa duvida? e muito obrigado pela ajuda ❤️

Fiz o teste e foi isso mesmo, muito obrigado amigo ^^ com seu exemplo consegui ter ideia para fazer isso

Link to comment
local tempo_bloqueado = 5 --/> 5 Segundos

local marker_vip = createMarker ( -2295.298828125, -2641.6328125, 59.416213989258 -1, "cylinder", 45, 0, 0, 0, 0)

local bloquear_comando = false

function itensvip ( thePlayer )
   if isElement(thePlayer) and getElementType(thePlayer) == "player" then --/> Adicionado
      if isObjectInACLGroup ( "user." ..getAccountName (getPlayerAccount (thePlayer) ), aclGetGroup ("VIP")) then
         if bloquear_comando == true then --/> AQUI, Você irá Verificar Sua Várivel, então se ela for IGUAL a true, então :
            return outputChatBox("Este Comando Esta Bloqueado, AGUARDE!", thePlayer, 255, 255, 255, true) --/> Retorna e informa.
         end
      
         bloquear_comando = true
         setTimer ( function ( ) bloquear_comando = false end, tempo_bloqueado*1000, 1)
    
         giveWeapon(thePlayer, 24, 5, true)  
         giveWeapon(thePlayer, 25, 5, true) 
         giveWeapon(thePlayer, 33, 10, true) 
         giveWeapon(thePlayer, 4, 1, true)
         setElementHealth (thePlayer, 100)
         setPedArmor(thePlayer, 100)
         outputChatBox("[SEXTA-FEIRA 13] Você pegou com sucesso seu KitVip!", thePlayer, 255, 215, 0, true)
         outputChatBox("[SEXTA-FEIRA 13] Armas, Colete e Vida recebidos, obrigado por nos apoiar ^^", thePlayer, 255, 215, 0, true)
      else
         outputChatBox("[SEXTA-FEIRA 13] Confira nosso discord para adquirir #FFD700VIP, #64FF64aperte F2!", thePlayer, 100, 255, 100, true)
      end
   end
end
addEventHandler("onMarkerHit", marker_vip, itensvip)
addCommandHandler("kitvip", itensvip)

Linha 4, e 5 te ajudará a entender.

Retirando o return, o script apenas irá informar, e continua lendo o código, utilizando o return, ele vai praticamente pausar onde você o utilizou.

Link to comment

Use um simples setTimer para isso, exemplo:

tempo = {}

function teste(playerSource)
  if not isTimer(tempo[playerSource]) then
    tempo[playerSource] = setTimer(function() end, 1000, 1)
    outputChatBox("ok", playerSource)
  else
  	outputChatBox("aguarde para usar o comando novamente", playerSource)
  end
end
addCommandHandler("teste", teste)

 

  • Like 1
Link to comment
On 07/12/2020 at 09:30, Boechat said:

local temporizador = getTickCount()
local tempo = 5000 --Selecione aqui o intervalo em milisegundos
function EscolherAssassino()
	if temporizador + tempo <= getTickCount() then
		local randomPlayer = getRandomPlayer ( )
		temporizador = getTickCount()
		setElementPosition(randomPlayer, -2405.6630859375, -2171.0009765625, 33.2890625)
		setTimer( function(escolhidoassassino)
			temporizador = false
		end, 45000, 1)
	else
		outputChatBox ( "#B22222[#B22222ERROR#B22222] O Assassino já foi escolhido! ", source, 100,255,100,true )
	end
end
addEventHandler("onMarkerHit", mrk, EscolherAssassino)

Veja se funciona, qualquer dúvida fique a vontade pra perguntar

Na verdade pode tirar o setTimer que eu havia colocado, ele é desnecessário. Eu prefiro fazer "timer" utilizando o getTickCount pois eu acredito que muitos setTimer no servidor puxa muito processamento.

local temporizador = getTickCount()
local tempo = 5000 --Selecione aqui o intervalo em milisegundos
function EscolherAssassino()
	if temporizador + tempo <= getTickCount() then
		local randomPlayer = getRandomPlayer ( )
		temporizador = getTickCount()
		setElementPosition(randomPlayer, -2405.6630859375, -2171.0009765625, 33.2890625)
	else
		outputChatBox ( "#B22222[#B22222ERROR#B22222] O Assassino já foi escolhido! ", source, 100,255,100,true )
	end
end
addEventHandler("onMarkerHit", mrk, EscolherAssassino)
Link to comment
  • Other Languages Moderators
On 16/12/2020 at 10:31, Boechat said:

eu acredito que muitos setTimer no servidor puxa muito processamento

Sim, eles pesam mais no processamento. Além de dependerem do framerate. O getTickCount é mais leve.

Edited by Lord Henry
  • Thanks 1
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...