Jump to content

[AJUDA] CreateMarker


Recommended Posts

local timers = {}

function verifyACL (edit1, edit2) -- Parâmetros passados no trigger.
    local players = getElementsByType ("player")
    for _, thePlayer in ipairs (players) do
		local account = getAccountName (getPlayerAccount(thePlayer))
		if isObjectInACLGroup ("user."..account, aclGetGroup ("ComandosPolicia")) then -- Para cada jogador que está na ACL Group "ComandosPolicia", faça:
			local pTimer = timers[thePlayer]
			if not (pTimer) then
				outputChatBox ("Denúncia de furto em: "..edit1..". ID: "..edit2, thePlayer)
				timers[thePlayer] = setTimer (function () timers[thePlayer] = nil end, 600000, 1)
			elseif pTimer and isTimer(pTimer) then
				outputChatBox ("Aguarde 10 minutos antes de fazer outra denúncia.", thePlayer, 255, 50, 50)
			end
		end
	end
end
addEvent ("DeltaSCR:ACL", true)
addEventHandler ("DeltaSCR:ACL", getRootElement(), verifyACL)

addEventHandler( "onPlayerQuit", root,
	function()
		if timers[source] then
			if isTimer(timers[source]) then 
				killTimer(timers[source]) 
			end
			timers[source] = nil
		end
	end	
)

 

Edited by Jonas^
Correção
  • Thanks 1
Link to comment
46 minutes ago, MaligNos said:

@Jonas^, ele quer bloquear o usuário de fazer repetidas denúncias em tal tempo, e não o policial de recebê-las.

Hm entendi, é que eu vi os dois ultimos post's, uma era do Lord e outro dele mostrando a parte server, dai pensei que era no server que ele queria rsrs.

Link to comment
1 minute ago, #DeltaSCR said:

@Jonas^ e @MaligNos então eu vou as funções enviadas pelos dois?

Usa a do malignos, é melhor, de qualquer forma pelo que vi os 2 iram servir do mesmo jeito, até porque você quer limitar o cara de floodar a função de denunciar, então os 2 servem.

Link to comment
2 hours ago, MaligNos said:

Substitua a seguinte função no lado cliente:


local tempo = falsefunction DeltaSCR_Abrir ()	if tempo then		return outputChatBox("*Aguarde para poder fazer outra denúncia!",255,0,0)	end	if DeltaSCR_Painel == false then		DeltaSCR_Painel = true		addEventHandler ("onClientRender", getRootElement(), DeltaSCR_DX)		guiSetVisible (editDenuncia, true)		guiSetVisible (editID, true)		showCursor (true)		tempo = true		setTimer(function()			tempo = false		end,600000,1)	endendaddEvent ("DeltaSCR:Abrir", true)addEventHandler ("DeltaSCR:Abrir", getRootElement(), DeltaSCR_Abrir)

 

@Jonas^ no caso essa?

Link to comment
46 minutes ago, Jonas^ said:

Usa a do malignos, é melhor, de qualquer forma pelo que vi os 2 iram servir do mesmo jeito, até porque você quer limitar o cara de floodar a função de denunciar, então os 2 servem.

Observe que você colocou o timer dentro do loop (para os policiais), dessa forma você está definindo que o policial só possa receber uma denúncia a cada 10min, e não bloqueando um usuário de fazer consecutivas denúncias.

  • Thanks 2
Link to comment

Verdade xD

-- 

Código corrigido:

local timers = {}

function verifyACL (edit1, edit2) -- Parâmetros passados no trigger.
	local pTimer = timers[client] -- Tabela aonde ira armazenar os timers...
	if not (pTimer) then -- Se não tiver um timer então:
		timers[client] = setTimer (function () -- Cria um.
			timers[client] = nil -- Após o tempo acabar seta o timer como nil ( anulado )
		end, 600000, 1) -- 10 minutos em milisegundos.
	elseif pTimer and isTimer(pTimer) then -- Se já tiver um timer em andamento
		return outputChatBox ("Aguarde 10 minutos antes de fazer outra denúncia.", client, 255, 50, 50) -- Retorna a output informando o jogador.
	end
	local players = getElementsByType ("player")
	for _, thePlayer in ipairs (players) do	
	local account = getAccountName (getPlayerAccount(thePlayer))
		if isObjectInACLGroup ("user."..account, aclGetGroup ("ComandosPolicia")) then -- Para cada jogador que está na ACL Group "ComandosPolicia", faça:
			outputChatBox ("Denúncia de furto em: "..edit1..". ID: "..edit2, thePlayer)
		end
	end
end
addEvent ("DeltaSCR:ACL", true)
addEventHandler ("DeltaSCR:ACL", getRootElement(), verifyACL)

addEventHandler( "onPlayerQuit", root,
	function()
		if timers[source] then -- Checa a tabela aonde esta armazenado os timers.
			if isTimer(timers[source]) then -- Se tiver um timer em andamento.
				killTimer(timers[source]) -- Da kill no timer 
			end
			timers[source] = nil -- Anula o timer do cara.
		end
	end	
)

 

Edited by Jonas^
Correção.
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...