Recurso AntiFlood

master
BrunoMine 2018-07-19 21:00:03 -03:00
parent 2d57a4a988
commit fc5824d0b8
3 changed files with 64 additions and 0 deletions

View File

@ -37,5 +37,6 @@ dofile(modpath.."/recursos/moderadores.lua")
dofile(modpath.."/recursos/regras.lua")
dofile(modpath.."/recursos/penalidades.lua")
dofile(modpath.."/recursos/censura.lua")
dofile(modpath.."/recursos/antiflood.lua")
dofile(modpath.."/recursos/alerta_de_crash.lua")
notificar("OK")

50
recursos/antiflood.lua Normal file
View File

@ -0,0 +1,50 @@
--[[
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
]]
-- Variavel de controle
local antiflood = minetest.settings:get_bool("gestor_sistema_antflood", 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, "Proibido floddar o chat com muitas mensagens")
return true
else
acessos[name] = acessos[name] + 1
minetest.after(7.5, red_fala, name)
end
end)

View File

@ -280,6 +280,19 @@ local lista_configs = {
minetest.settings:set("basic_privs", value)
end,
},
-- AntiFlood
{
name = "AntiFlood",
format = "bool",
desc = "Sistema que evita que jogadores enviem mensagens em demasia no bate-papo",
checkbox_name = "AntiFlood",
get_value = function()
return minetest.settings:get("gestor_sistema_antflood") or "false"
end,
set_value = function(value)
minetest.settings:set("gestor_sistema_antflood", value)
end,
},
-- AntiCheat
{
name = "AntiCheat",