Merge pull request #2 from luk3yx/master

Bugfixes
master
BrunoMine 2019-04-02 11:42:18 -03:00 committed by GitHub
commit 5aab51676c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 743 additions and 735 deletions

View File

@ -43,6 +43,3 @@ Desconhecido (CC0)
UnderlinedDesigns (CC0)
multichat_chamada.ogg

View File

@ -96,9 +96,12 @@ local enviar_msg = function(name, msg, falante)
end
-- Chamada para envio de mensagens de jogadores
minetest.register_on_chat_message(function(name, msg)
local function on_chat_message(name, msg)
-- Verifica se tem privilegio para falar
if minetest.check_player_privs(name, {shout=true}) ~= true then return true end
if msg:sub(1, 1) == "/" or not minetest.get_player_by_name(name) then
return
end
if not minetest.check_player_privs(name, {shout=true}) then return true end
local player = minetest.get_player_by_name(name)
local status = player:get_attribute("multichat_status")
@ -111,6 +114,10 @@ minetest.register_on_chat_message(function(name, msg)
enviar_msg(player:get_player_name(), msg, name)
end
if minetest.get_modpath("irc") then
irc.say("<" .. name.. "> " .. msg)
end
-- Verificar se está desativado
elseif status == "off" then
minetest.chat_send_player(name, "Bate-papo desativado")
@ -119,14 +126,14 @@ minetest.register_on_chat_message(function(name, msg)
elseif status == "guilda" then
-- Verifica se o recurso esta ativo
if multichat.guild == false then return true end
if not multichat.guild then return true end
-- Mod manipulus
if multichat.mod_guild == "manipulus" then
-- Guilda do ouvinte
local mg = manipulus.get_player_grupo(name)
-- Verifica se guilda ainda existe
if mg == nil or manipulus.existe_grupo(mg) == false then return true end
if mg == nil or not manipulus.existe_grupo(mg) then return true end
-- Envia a mensagem para todos os jogadores
for _,player in ipairs(minetest.get_connected_players()) do
local n = player:get_player_name()
@ -150,25 +157,19 @@ minetest.register_on_chat_message(function(name, msg)
som_avisar(name)
end
return true
end)
end
if minetest.get_modpath("irc") then
table.insert(minetest.registered_on_chat_messages, 2, on_chat_message)
minetest.callback_origins[on_chat_message] = {
mod = "multichat",
name = "on_chat_message"
}
else
minetest.register_on_chat_message(on_chat_message)
end
-- Verificador de jogadores offline para remover grupos
local timer = 0
local tlim = tonumber(minetest.setting_get("multichat_tempo_verif_grupo") or 3600)
minetest.register_globalstep(function(dtime)
timer = timer + dtime;
if timer >= 3600 then
-- Mantar apenas grupos de jogadores online
local onlines = {}
-- Mudar tabela
for _,player in ipairs(minetest.get_connected_players()) do
onlines[player:get_player_name()] = true
end
for name,i in pairs(multichat.grupos) do
if not onlines[name] then
multichat.grupos[name] = nil
end
end
end
minetest.register_on_leaveplayer(function(player)
multichat.grupos[player:get_player_name()] = nil
end)

View File

@ -1,5 +1,7 @@
default
irc?
sfinv?
mymenu?
manipulus?
sfinv_menu?
unified_inventory?

View File

@ -65,9 +65,9 @@ multichat.acessar_menu = function(name)
.."checkbox[0,1;som;"..S("Som")..";"..st_som.."]"
.."checkbox[0,1.5;chamada;"..S("Chamada")..";"..st_chamada.."]"
.."button_exit[3,1.2;1,1;sair;"..S("Sair").."]"
.."button_exit[0,2.2;4,1;desativar;"..S("Desativar").."]"
.."button_exit[0,3.2;4,1;publico;"..S("Publico").."]"
.."button_exit[0,4.2;3.3,1;privado;"..S("Privado").."]"
.."button[0,2.2;4,1;desativar;"..S("Desativar").."]"
.."button[0,3.2;4,1;publico;"..S("Publico").."]"
.."button[0,4.2;3.3,1;privado;"..S("Privado").."]"
.."image_button[3.15,4.3;0.825,0.825;default_book_written.png;grupo;]"
-- Botão de grupo
@ -135,33 +135,37 @@ end
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname == "multichat:menu" then
local name = player:get_player_name()
-- Botao de desativar bate-papo
if fields.desativar then
player:set_attribute("multichat_status", "off")
minetest.chat_send_player(player:get_player_name(), S("Bate-papo desativado"))
minetest.chat_send_player(name, S("Bate-papo desativado"))
multichat.acessar_menu(name)
elseif fields.publico then
player:set_attribute("multichat_status", "pub")
minetest.chat_send_player(player:get_player_name(), S("Foste para o bate-papo publico"))
minetest.chat_send_player(name, S("Foste para o bate-papo publico"))
multichat.acessar_menu(name)
elseif fields.privado then
player:set_attribute("multichat_status", "grupo")
minetest.chat_send_player(player:get_player_name(), S("Foste para o bate-papo privado"))
multichat.acessar_menu(name)
elseif fields.grupo then
acessar_menu_grupo(player:get_player_name())
acessar_menu_grupo(name)
-- Guilda
elseif fields.guild then
-- Manipulus
if multichat.mod_guild == "manipulus" then
local grupo = manipulus.get_player_grupo(player:get_player_name())
local grupo = manipulus.get_player_grupo(name)
if grupo == nil or manipulus.existe_grupo(grupo) == false then
minetest.chat_send_player(player:get_player_name(), S("Precisa entrar em um grupo"))
minetest.chat_send_player(name, S("Precisa entrar em um grupo"))
else
player:set_attribute("multichat_status", "guilda")
minetest.chat_send_player(player:get_player_name(), S("Foste para o bate-papo do grupo @1", "'"..grupo.."'"))
minetest.chat_send_player(name, S("Foste para o bate-papo do grupo @1", "'"..grupo.."'"))
end
end
@ -259,7 +263,7 @@ if mymenu then
end
if sfinv_menu then
if minetest.global_exists("sfinv_menu") then
sfinv_menu.register_button("multichat:menu", {
title = S("Bate-Papo"),
icon = "multichat_botao.png",
@ -268,3 +272,14 @@ if sfinv_menu then
end,
})
end
if minetest.global_exists("unified_inventory") then
unified_inventory.register_button("multichat:menu", {
type = "image",
image = "multichat_botao.png",
tooltip = S("Bate-Papo"),
action = function(player)
multichat.acessar_menu(player:get_player_name())
end,
})
end

View File

@ -1 +1,3 @@
name = multichat
depends = default
optional_depends = irc,sfinv,mymenu,manipulus,sfinv_menu,unified_inventory

View File

@ -5,12 +5,3 @@ multichat_admin_prefix (Prefixo usado para administradores no chat) string ADMIN
# Aparece para jogadores com o provilegio chat_staff.
multichat_staff_prefix (Prefixo usado para moderadores no chat) string MODERADOR
# A cada certo tempo todos os dados de bate-papo privado
# de jogadores que estejam offline sao removidos para manter a memoria
# limpa.
# Tempo dado em segundos.
multichat_tempo_verif_grupo (Tempo para verificar grupos) int 3600