gestor/recursos/antiflood.lua

54 lines
1.4 KiB
Lua

--[[
Mod Gestor para Minetest
Gestor v2.0 Copyright (C) 2018 BrunoMine (https://github.com/BrunoMine)
Recebeste uma cópia da GNU Lesser General
Public License junto com esse software,
se não, veja em <http://www.gnu.org/licenses/>.
Recurso para sistema Anti Flood para o chat
]]
-- Tradutor de texto
local S = gestor.S
-- Variavel de controle
local antiflood = minetest.settings:get_bool("gestor_sistema_antflood_chat", false) or false
-- Controle de acessos
local acessos = {}
minetest.register_on_joinplayer(function(player)
acessos[player:get_player_name()] = 0
end)
minetest.register_on_leaveplayer(function(player)
acessos[player:get_player_name()] = nil
end)
-- reduzir limitador de falas
local red_fala = function(name)
if acessos[name] == nil then return end
-- Verifica se ja está zerado
if acessos[name] == 0 then return end
-- Reduz 1
acessos[name] = acessos[name] - 1
end
-- Impedir jogadores silenciados de falaram no chat e restaura o priv de fala se estiver acabado o periodo de penalidade
minetest.register_on_chat_message(function(name, message)
if antiflood == false then return end
if acessos[name] == nil then return end
if acessos[name] >= 3 then
minetest.chat_send_player(name, S("Proibido floddar o chat com muitas mensagens"))
return true
else
acessos[name] = acessos[name] + 1
minetest.after(7.5, red_fala, name)
end
end)