From 0a4942b5f20370403d11419ce1d064e9849051ab Mon Sep 17 00:00:00 2001 From: BrunoMine Date: Thu, 19 Jul 2018 17:28:44 -0300 Subject: [PATCH] Sistema de censura de termos proibidos --- README.md | 15 +---- init.lua | 1 + recursos/censura.lua | 117 +++++++++++++++++++++++++++++++++++++++ recursos/moderadores.lua | 3 +- recursos/penalidades.lua | 2 + 5 files changed, 124 insertions(+), 14 deletions(-) create mode 100644 recursos/censura.lua diff --git a/README.md b/README.md index 8d76dd7..59ebd7a 100644 --- a/README.md +++ b/README.md @@ -9,16 +9,5 @@ COMANDOS /gestor | Abre o painel do gestor administrativo -/serializar | Salva uma estrutura no diretorio de estruturas -(toma a posicao do jogador como a menos em x, y e z) - -/deserializar | Cria uma estrutura do diretorio de estruturas -(toma a posicao do jogador como a menos em x, y e z) - -ESTRUTURAS - -Estruturas ficam salvas na pasta `diretório_do_mundo/gestor/estruturas` e são compostas por dois arquivos `.mts` e `.meta` - -ALERTA DE CRASH - -Configurar funcionamento a partir do painel em jogo +DADOS +O banco de termos proibidos fica armazenada no diretorio do mundo e subdiretorio ´gestor/censura/bad_words_list´ portanto sendo possivel repassar a lista de termos para outro servidor substituindo esse arquivo. diff --git a/init.lua b/init.lua index 67f587d..5894107 100644 --- a/init.lua +++ b/init.lua @@ -35,5 +35,6 @@ dofile(modpath.."/recursos/desligar.lua") dofile(modpath.."/recursos/conf.lua") dofile(modpath.."/recursos/moderadores.lua") dofile(modpath.."/recursos/penalidades.lua") +dofile(modpath.."/recursos/censura.lua") dofile(modpath.."/recursos/alerta_de_crash.lua") notificar("OK") diff --git a/recursos/censura.lua b/recursos/censura.lua new file mode 100644 index 0000000..8eae1aa --- /dev/null +++ b/recursos/censura.lua @@ -0,0 +1,117 @@ +--[[ + 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 . + + Recurso para censurar palavras no chat publico + ]] + + +-- Lista de termos proibidos +if gestor.bd.verif("censura", "bad_words_list") == false then + gestor.bd.salvar("censura", "bad_words_list", {}) +end + +-- Variavel de controle +local censurar = minetest.settings:get_bool("gestor_censurar_termos_proibidos", false) or false + +-- Tabelas de uso +local bad_words = {} +local update_tb_bad_words = function() + bad_words = gestor.bd.pegar("censura", "bad_words_list") +end +update_tb_bad_words() + +-- Controle de acessos +local acessos = {} +minetest.register_on_joinplayer(function(player) + acessos[player:get_player_name()] = {} +end) +minetest.register_on_leaveplayer(function(player) + acessos[player:get_player_name()] = nil +end) + +-- Registrar aba 'desligar' +gestor.registrar_aba("censura", { + titulo = "Termos Proibidos", + get_formspec = function(name) + + -- Gera string dos moderadores listados + local bad_words_string = "" + for _,bad_word in pairs(gestor.bd.pegar("censura", "bad_words_list")) do + if bad_words_string ~= "" then bad_words_string = bad_words_string .. "," end + bad_words_string = bad_words_string .. bad_word + end + + local formspec = "label[3.5,1;Termos Proibidos]" + .."label[9,1;Lista de Termos Proibidos]" + .."textlist[9,1.5;4.5,3;bad_words_list;"..bad_words_string.."]" + .."field[3.8,2.3;5,1;new_word;Termo;]" + .."button[3.5,2.9;5,1;add_word;Adicionar Termo]" + .."button[3.5,3.8;5,1;rem_word;Remover Termo]" + + .."checkbox[3.5,4.6;bad_words_status;Censurar Termos Proibidos;"..tostring(minetest.settings:get("gestor_censurar_termos_proibidos", false)).."]" + + return formspec + end, + on_receive_fields = function(player, fields) + local name = player:get_player_name() + + -- Selecionar item + if fields.bad_words_list and table.maxn(gestor.bd.pegar("censura", "bad_words_list")) > 0 then + local n = string.split(fields.bad_words_list, ":") + acessos[name].escolha = tonumber(n[2]) or 1 + gestor.menu_principal(name) + + -- Adicionar moderador + elseif fields.add_word and string.lower(fields.new_word) ~= "" then + local bad_words_list = gestor.bd.pegar("censura", "bad_words_list") + table.insert(bad_words_list, string.lower(fields.new_word)) + gestor.bd.salvar("censura", "bad_words_list", bad_words_list) + update_tb_bad_words() + gestor.menu_principal(name) + + -- Remover moderador + elseif fields.rem_word and acessos[name].escolha then + local bad_words_list = gestor.bd.pegar("censura", "bad_words_list") + table.remove(bad_words_list, acessos[name].escolha) + gestor.bd.salvar("censura", "bad_words_list", bad_words_list) + update_tb_bad_words() + gestor.menu_principal(name) + + -- Interditar + elseif fields.bad_words_status then + minetest.settings:set("gestor_censurar_termos_proibidos", fields.bad_words_status) + minetest.settings:write() + censurar = minetest.settings:get_bool("gestor_censurar_termos_proibidos", false) + + -- Sair + elseif fields.exit then + acessos[name].escolha = nil + end + 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 censurar == false then return end + + -- Deixa todas as palavras no minusculo + local m = string.lower(message) + + -- Tenta encontrar cada um dos termos os termos + for _,w in ipairs(bad_words) do + -- Varre a mensagem em busca do termo + if string.match(m, w) then + -- Caso encontrar, notifica o jogador + minetest.chat_send_player(name, "Proibido usar o termo "..minetest.colorize("#FF0000", m)) + return true + end + end +end) + + diff --git a/recursos/moderadores.lua b/recursos/moderadores.lua index 2759b44..e75a022 100644 --- a/recursos/moderadores.lua +++ b/recursos/moderadores.lua @@ -77,6 +77,7 @@ gestor.registrar_aba("moderadores", { -- Interditar elseif fields.interditar then minetest.settings:set("gestor_interditado", fields.interditar) + minetest.settings:write() gestor.interditar_servidor() -- Redefir mensagem de interdição @@ -91,7 +92,7 @@ gestor.registrar_aba("moderadores", { -- Interditar_servidor -gestor.interditado = minetest.settings:get_bool("gestor_interditado", false) +gestor.interditado = minetest.settings:get_bool("gestor_interditado", false) or false gestor.interditar_servidor = function() -- Altera variavel global de controle gestor.interditado = true diff --git a/recursos/penalidades.lua b/recursos/penalidades.lua index 8f9db7b..ca9148d 100644 --- a/recursos/penalidades.lua +++ b/recursos/penalidades.lua @@ -67,6 +67,8 @@ for _,name in ipairs(tempos_penas) do tempos_penas_list_string = tempos_penas_list_string .. name end +-- Termos proibidos + -- Registrar aba 'diretrizes' gestor.registrar_aba("penalidades", {