commit
5aab51676c
|
@ -43,6 +43,3 @@ Desconhecido (CC0)
|
||||||
|
|
||||||
UnderlinedDesigns (CC0)
|
UnderlinedDesigns (CC0)
|
||||||
multichat_chamada.ogg
|
multichat_chamada.ogg
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
45
chat.lua
45
chat.lua
|
@ -96,9 +96,12 @@ local enviar_msg = function(name, msg, falante)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Chamada para envio de mensagens de jogadores
|
-- 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
|
-- 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 player = minetest.get_player_by_name(name)
|
||||||
local status = player:get_attribute("multichat_status")
|
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)
|
enviar_msg(player:get_player_name(), msg, name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if minetest.get_modpath("irc") then
|
||||||
|
irc.say("<" .. name.. "> " .. msg)
|
||||||
|
end
|
||||||
|
|
||||||
-- Verificar se está desativado
|
-- Verificar se está desativado
|
||||||
elseif status == "off" then
|
elseif status == "off" then
|
||||||
minetest.chat_send_player(name, "Bate-papo desativado")
|
minetest.chat_send_player(name, "Bate-papo desativado")
|
||||||
|
@ -119,14 +126,14 @@ minetest.register_on_chat_message(function(name, msg)
|
||||||
elseif status == "guilda" then
|
elseif status == "guilda" then
|
||||||
|
|
||||||
-- Verifica se o recurso esta ativo
|
-- Verifica se o recurso esta ativo
|
||||||
if multichat.guild == false then return true end
|
if not multichat.guild then return true end
|
||||||
|
|
||||||
-- Mod manipulus
|
-- Mod manipulus
|
||||||
if multichat.mod_guild == "manipulus" then
|
if multichat.mod_guild == "manipulus" then
|
||||||
-- Guilda do ouvinte
|
-- Guilda do ouvinte
|
||||||
local mg = manipulus.get_player_grupo(name)
|
local mg = manipulus.get_player_grupo(name)
|
||||||
-- Verifica se guilda ainda existe
|
-- 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
|
-- Envia a mensagem para todos os jogadores
|
||||||
for _,player in ipairs(minetest.get_connected_players()) do
|
for _,player in ipairs(minetest.get_connected_players()) do
|
||||||
local n = player:get_player_name()
|
local n = player:get_player_name()
|
||||||
|
@ -150,25 +157,19 @@ minetest.register_on_chat_message(function(name, msg)
|
||||||
som_avisar(name)
|
som_avisar(name)
|
||||||
end
|
end
|
||||||
return true
|
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
|
-- Verificador de jogadores offline para remover grupos
|
||||||
local timer = 0
|
minetest.register_on_leaveplayer(function(player)
|
||||||
local tlim = tonumber(minetest.setting_get("multichat_tempo_verif_grupo") or 3600)
|
multichat.grupos[player:get_player_name()] = nil
|
||||||
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
|
|
||||||
end)
|
end)
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
default
|
default
|
||||||
|
irc?
|
||||||
sfinv?
|
sfinv?
|
||||||
mymenu?
|
mymenu?
|
||||||
manipulus?
|
manipulus?
|
||||||
sfinv_menu?
|
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;som;"..S("Som")..";"..st_som.."]"
|
||||||
.."checkbox[0,1.5;chamada;"..S("Chamada")..";"..st_chamada.."]"
|
.."checkbox[0,1.5;chamada;"..S("Chamada")..";"..st_chamada.."]"
|
||||||
.."button_exit[3,1.2;1,1;sair;"..S("Sair").."]"
|
.."button_exit[3,1.2;1,1;sair;"..S("Sair").."]"
|
||||||
.."button_exit[0,2.2;4,1;desativar;"..S("Desativar").."]"
|
.."button[0,2.2;4,1;desativar;"..S("Desativar").."]"
|
||||||
.."button_exit[0,3.2;4,1;publico;"..S("Publico").."]"
|
.."button[0,3.2;4,1;publico;"..S("Publico").."]"
|
||||||
.."button_exit[0,4.2;3.3,1;privado;"..S("Privado").."]"
|
.."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;]"
|
.."image_button[3.15,4.3;0.825,0.825;default_book_written.png;grupo;]"
|
||||||
|
|
||||||
-- Botão de grupo
|
-- Botão de grupo
|
||||||
|
@ -135,33 +135,37 @@ end
|
||||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||||
|
|
||||||
if formname == "multichat:menu" then
|
if formname == "multichat:menu" then
|
||||||
|
local name = player:get_player_name()
|
||||||
|
|
||||||
-- Botao de desativar bate-papo
|
-- Botao de desativar bate-papo
|
||||||
if fields.desativar then
|
if fields.desativar then
|
||||||
player:set_attribute("multichat_status", "off")
|
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
|
elseif fields.publico then
|
||||||
player:set_attribute("multichat_status", "pub")
|
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
|
elseif fields.privado then
|
||||||
player:set_attribute("multichat_status", "grupo")
|
player:set_attribute("multichat_status", "grupo")
|
||||||
minetest.chat_send_player(player:get_player_name(), S("Foste para o bate-papo privado"))
|
minetest.chat_send_player(player:get_player_name(), S("Foste para o bate-papo privado"))
|
||||||
|
multichat.acessar_menu(name)
|
||||||
|
|
||||||
elseif fields.grupo then
|
elseif fields.grupo then
|
||||||
acessar_menu_grupo(player:get_player_name())
|
acessar_menu_grupo(name)
|
||||||
|
|
||||||
-- Guilda
|
-- Guilda
|
||||||
elseif fields.guild then
|
elseif fields.guild then
|
||||||
-- Manipulus
|
-- Manipulus
|
||||||
if multichat.mod_guild == "manipulus" then
|
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
|
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
|
else
|
||||||
player:set_attribute("multichat_status", "guilda")
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -259,7 +263,7 @@ if mymenu then
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if sfinv_menu then
|
if minetest.global_exists("sfinv_menu") then
|
||||||
sfinv_menu.register_button("multichat:menu", {
|
sfinv_menu.register_button("multichat:menu", {
|
||||||
title = S("Bate-Papo"),
|
title = S("Bate-Papo"),
|
||||||
icon = "multichat_botao.png",
|
icon = "multichat_botao.png",
|
||||||
|
@ -268,3 +272,14 @@ if sfinv_menu then
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
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
|
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.
|
# Aparece para jogadores com o provilegio chat_staff.
|
||||||
multichat_staff_prefix (Prefixo usado para moderadores no chat) string MODERADOR
|
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