Jonas^ Posted March 14, 2019 Share Posted March 14, 2019 (edited) 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 March 14, 2019 by Jonas^ Correção 1 Link to comment
[M]ister Posted March 14, 2019 Share Posted March 14, 2019 @Jonas^, ele quer bloquear o usuário de fazer repetidas denúncias em tal tempo, e não o policial de recebê-las. 1 Link to comment
Other Languages Moderators Lord Henry Posted March 14, 2019 Other Languages Moderators Share Posted March 14, 2019 Bloquear no cliente já serve. Dai não precisa usar table. Link to comment
Jonas^ Posted March 14, 2019 Share Posted March 14, 2019 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
#DeltaSCR Posted March 14, 2019 Author Share Posted March 14, 2019 (edited) @Jonas^ e @MaligNos então eu vou usar as funções enviadas pelos dois? Edited March 14, 2019 by #DeltaSCR Link to comment
Jonas^ Posted March 14, 2019 Share Posted March 14, 2019 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
#DeltaSCR Posted March 14, 2019 Author Share Posted March 14, 2019 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
Jonas^ Posted March 14, 2019 Share Posted March 14, 2019 1 minute ago, #DeltaSCR said: @Jonas^ no caso essa? Isso. Link to comment
#DeltaSCR Posted March 14, 2019 Author Share Posted March 14, 2019 Ah sim, vlw Ai então ... Vou dar Thanks em todos, pois ambos me ajudaram muito Qualquer dúvida eu passo aqui. Link to comment
[M]ister Posted March 15, 2019 Share Posted March 15, 2019 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. 2 Link to comment
Jonas^ Posted March 15, 2019 Share Posted March 15, 2019 (edited) Verdade -- 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 March 15, 2019 by Jonas^ Correção. 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