From 2d57a4a988c13e68262c3b3644c7e2949da15383 Mon Sep 17 00:00:00 2001 From: BrunoMine Date: Thu, 19 Jul 2018 20:40:19 -0300 Subject: [PATCH] Recurso de regras --- README.md | 5 ++ init.lua | 1 + recursos/censura.lua | 4 +- recursos/moderadores.lua | 2 +- recursos/penalidades.lua | 2 +- recursos/regras.lua | 114 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 124 insertions(+), 4 deletions(-) create mode 100644 recursos/regras.lua diff --git a/README.md b/README.md index 59ebd7a..9507fe8 100644 --- a/README.md +++ b/README.md @@ -10,4 +10,9 @@ COMANDOS /gestor | Abre o painel do gestor administrativo DADOS + +Termos proibidos 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. + +Regras +O banco de regras fica armazenada no diretorio do mundo e subdiretorio ´gestor/regras´ portanto sendo possivel repassar as regras para outro servidor substituindo essa pasta. diff --git a/init.lua b/init.lua index 5894107..5a2672c 100644 --- a/init.lua +++ b/init.lua @@ -34,6 +34,7 @@ dofile(modpath.."/comandos.lua") dofile(modpath.."/recursos/desligar.lua") dofile(modpath.."/recursos/conf.lua") dofile(modpath.."/recursos/moderadores.lua") +dofile(modpath.."/recursos/regras.lua") dofile(modpath.."/recursos/penalidades.lua") dofile(modpath.."/recursos/censura.lua") dofile(modpath.."/recursos/alerta_de_crash.lua") diff --git a/recursos/censura.lua b/recursos/censura.lua index 8eae1aa..249c9fb 100644 --- a/recursos/censura.lua +++ b/recursos/censura.lua @@ -34,7 +34,7 @@ minetest.register_on_leaveplayer(function(player) acessos[player:get_player_name()] = nil end) --- Registrar aba 'desligar' +-- Registrar aba 'censura' gestor.registrar_aba("censura", { titulo = "Termos Proibidos", get_formspec = function(name) @@ -82,7 +82,7 @@ gestor.registrar_aba("censura", { update_tb_bad_words() gestor.menu_principal(name) - -- Interditar + -- Ativar censura elseif fields.bad_words_status then minetest.settings:set("gestor_censurar_termos_proibidos", fields.bad_words_status) minetest.settings:write() diff --git a/recursos/moderadores.lua b/recursos/moderadores.lua index e75a022..8975cc1 100644 --- a/recursos/moderadores.lua +++ b/recursos/moderadores.lua @@ -24,7 +24,7 @@ minetest.register_on_leaveplayer(function(player) acessos[player:get_player_name()] = nil end) --- Registrar aba 'desligar' +-- Registrar aba 'moderadores' gestor.registrar_aba("moderadores", { titulo = "Moderadores", get_formspec = function(name) diff --git a/recursos/penalidades.lua b/recursos/penalidades.lua index ca9148d..6faee08 100644 --- a/recursos/penalidades.lua +++ b/recursos/penalidades.lua @@ -70,7 +70,7 @@ end -- Termos proibidos --- Registrar aba 'diretrizes' +-- Registrar aba 'penalidades' gestor.registrar_aba("penalidades", { titulo = "Penalidades", get_formspec = function(name) diff --git a/recursos/regras.lua b/recursos/regras.lua new file mode 100644 index 0000000..f59936e --- /dev/null +++ b/recursos/regras.lua @@ -0,0 +1,114 @@ +--[[ + 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 exigir a aceitação das regras do servidor + ]] + +-- Variavel de controle +local exibir_regras = minetest.settings:get_bool("gestor_obrigar_aceitar_regras", false) or false + +-- Texto de Regras +local texto_regras = "Sem Regras" +if gestor.bd.verif("regras", "default") == false then + gestor.bd.salvar_texto("regras", "default", "Sem Regras") +end +texto_regras = gestor.bd.pegar_texto("regras", "default") + + +-- 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 'regras' +gestor.registrar_aba("regras", { + titulo = "Regras", + get_formspec = function(name) + + local formspec = "label[3.5,1;Regras do Servidor]" + .."textarea[3.9,1.8;9.8,8.5;texto_regras;;"..texto_regras.."]" + .."button[3.5,9.4;8,1;redefinir;Redefinir]" + .."button[11.5,9.4;2,1;verificar;Verificar]" + .."checkbox[3.5,10.1;exibir_regras;Obrigar jogadores a aceitar as regras do servidor;"..tostring(minetest.settings:get("gestor_obrigar_aceitar_regras", false)).."]" + + -- Aviso + if acessos[name].aviso then + formspec = formspec.."label[3.5,8.9;"..acessos[name].aviso.."]" + acessos[name].aviso = nil + end + + return formspec + end, + on_receive_fields = function(player, fields) + local name = player:get_player_name() + + -- Obrigar aceitar regras + if fields.exibir_regras then + minetest.settings:set("gestor_obrigar_aceitar_regras", fields.exibir_regras) + minetest.settings:write() + exibir_regras = minetest.settings:get_bool("gestor_obrigar_aceitar_regras", false) + + -- Redefinir regras + elseif fields.redefinir and fields.texto_regras ~= "" then + gestor.bd.salvar_texto("regras", "default", fields.texto_regras) + texto_regras = gestor.bd.pegar_texto("regras", "default") + acessos[name].aviso = "Regras redefinidas" + gestor.menu_principal(name) + + -- Verificar como ficou a formspec + elseif fields.verificar then + gestor.exibir_formspec_regras(player) + end + end, +}) + +-- Exibir formspec de regras +gestor.exibir_formspec_regras = function(player) + + -- Formspec + local formspec = "size[9,8]" + ..default.gui_bg + ..default.gui_bg_img + .."label[0,0;Regras do Servidor]" + .."textarea[0.5,0.5;8.8,6.8;;"..texto_regras..";;true]" + .."button_exit[0,7.4;3,1;recusar;Recusar]" + .."button_exit[6,7.4;3,1;aceitar;Aceitar]" + + -- Exibe regras + minetest.show_formspec(player:get_player_name(), "gestor:regras_obrigatorias", formspec) +end + +-- Ao conectar +minetest.register_on_joinplayer(function(player) + if exibir_regras == false then return end + + -- Verifica se ja aceitou + if player:get_attribute("gestor_aceitou_regras") == "true" then return end + + gestor.exibir_formspec_regras(player) +end) + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname == "gestor:regras_obrigatorias" then -- This is your form name + + -- Caso estava so verificando regras + if player:get_attribute("gestor_aceitou_regras") == "true" then return end + + if fields.aceitar then + player:set_attribute("gestor_aceitou_regras", "true") + + -- Qualquer outro retorno + else + minetest.kick_player(player:get_player_name()) + end + end +end)