commit
5aab51676c
|
@ -43,6 +43,3 @@ Desconhecido (CC0)
|
|||
|
||||
UnderlinedDesigns (CC0)
|
||||
multichat_chamada.ogg
|
||||
|
||||
|
||||
|
||||
|
|
45
chat.lua
45
chat.lua
|
@ -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)
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
default
|
||||
irc?
|
||||
sfinv?
|
||||
mymenu?
|
||||
manipulus?
|
||||
sfinv_menu?
|
||||
unified_inventory?
|
||||
|
|
35
menu.lua
35
menu.lua
|
@ -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
|
||||
|
|
2
mod.conf
2
mod.conf
|
@ -1 +1,3 @@
|
|||
name = multichat
|
||||
depends = default
|
||||
optional_depends = irc,sfinv,mymenu,manipulus,sfinv_menu,unified_inventory
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue