adding chat-jail support
This commit is contained in:
parent
21e8e9609e
commit
cc77c3290c
@ -153,6 +153,9 @@ local join_channel = {
|
||||
description = "Join channel named <Channel Name>. " ..
|
||||
"After joining you will see messages sent to that channel (in addition to the other channels you have joined)",
|
||||
func = function(name, param)
|
||||
if beerchat.is_player_jailed(name) then
|
||||
return false, "You are in chat-jail, no joining channels for you."
|
||||
end
|
||||
if not param or param == "" then
|
||||
return false, "ERROR: Invalid number of arguments. Please supply the channel name as a minimum"
|
||||
end
|
||||
@ -201,6 +204,9 @@ local leave_channel = {
|
||||
"When you leave the channel you can no longer send/ receive messages from that channel. " ..
|
||||
"NOTE: You can also leave the main channel",
|
||||
func = function(name, param)
|
||||
if beerchat.is_player_jailed(name) then
|
||||
return false, "You are in chat-jail, no leaving for you."
|
||||
end
|
||||
if not param or param == "" then
|
||||
return false, "ERROR: Invalid number of arguments. Please supply the channel name"
|
||||
end
|
||||
@ -267,6 +273,9 @@ local invite_channel = {
|
||||
if not minetest.get_player_by_name(player_name) then
|
||||
return false, "ERROR: "..player_name.." does not exist or is not online"
|
||||
else
|
||||
if beerchat.is_player_jailed(player_name) then
|
||||
return false, player_name .. " is in chat-jail, no inviting."
|
||||
end
|
||||
if not beerchat.has_player_muted_player(player_name, name) then
|
||||
if beerchat.enable_sounds then
|
||||
minetest.sound_play(channel_invite_sound, { to_player = player_name, gain = beerchat.sounds_default_gain } )
|
||||
@ -295,6 +304,9 @@ local mute_player = {
|
||||
description = "Mute a player. After muting a player, you will no longer see chat messages of this user, " ..
|
||||
"regardless of what channel his user sends messages to",
|
||||
func = function(name, param)
|
||||
if beerchat.is_player_jailed(name) then
|
||||
return false, "You are in chat-jail, no muting for you."
|
||||
end
|
||||
if not param or param == "" then
|
||||
return false, "ERROR: Invalid number of arguments. Please supply the name of the user to mute"
|
||||
end
|
||||
@ -396,6 +408,15 @@ beerchat.force_player_to_channel = function(name, param)
|
||||
-- force default channel
|
||||
beerchat.currentPlayerChannel[player_name] = channel_name
|
||||
meta:set_string("beerchat:current_channel", channel_name)
|
||||
|
||||
-- going to/from jail?
|
||||
if channel_name == beerchat.jail_channel_name then
|
||||
meta:set_int("beerchat:jailed", 1)
|
||||
beerchat.jail_list[name] = true
|
||||
elseif beerchat.is_player_jailed(player_name) then
|
||||
meta:set_int("beerchat:jailed", 0)
|
||||
beerchat.jail_list[name] = nil
|
||||
end
|
||||
|
||||
-- inform user
|
||||
minetest.chat_send_player(player_name, name .. " has set your default channel to "
|
||||
|
6
hash.lua
6
hash.lua
@ -13,6 +13,9 @@ minetest.register_on_chat_message(function(name, message)
|
||||
end
|
||||
|
||||
if channel_name and msg then
|
||||
if beerchat.is_player_jailed(name) then
|
||||
return false, "You are in chat-jail, no channels for you."
|
||||
end
|
||||
if not beerchat.channels[channel_name] then
|
||||
minetest.chat_send_player(name, "Channel "..channel_name.." does not exist. Make sure the channel still "..
|
||||
"exists and you format its name properly, e.g. #channel message or #my channel: message")
|
||||
@ -36,6 +39,9 @@ minetest.register_on_chat_message(function(name, message)
|
||||
else
|
||||
channel_name = string.match(message, "^#(.*)")
|
||||
if channel_name then
|
||||
if beerchat.is_player_jailed(name) then
|
||||
return false, "You are in chat-jail, no switching channels for you."
|
||||
end
|
||||
if not beerchat.channels[channel_name] then
|
||||
minetest.chat_send_player(name, "Channel "..channel_name.." does not exist")
|
||||
elseif not beerchat.is_player_subscribed_to_channel(name, channel_name) then
|
||||
|
3
init.lua
3
init.lua
@ -9,6 +9,8 @@ beerchat = {
|
||||
-- The main channel is the one you send messages to when no channel is specified
|
||||
main_channel_name = "main",
|
||||
|
||||
jail_channel_name = "wail",
|
||||
|
||||
-- The default color of channels when no color is specified
|
||||
default_channel_color = "#ffffff",
|
||||
|
||||
@ -43,6 +45,7 @@ dofile(MP.."/common.lua")
|
||||
dofile(MP.."/format_message.lua")
|
||||
dofile(MP.."/hooks.lua")
|
||||
dofile(MP.."/storage.lua")
|
||||
dofile(MP.."/jail.lua")
|
||||
dofile(MP.."/session.lua")
|
||||
dofile(MP.."/pm.lua")
|
||||
dofile(MP.."/hash.lua")
|
||||
|
5
jail.lua
Normal file
5
jail.lua
Normal file
@ -0,0 +1,5 @@
|
||||
beerchat.jail_list = {}
|
||||
|
||||
beerchat.is_player_jailed = function(name)
|
||||
return true == beerchat.jail_list[name]
|
||||
end
|
3
me.lua
3
me.lua
@ -6,6 +6,9 @@ local me_override = {
|
||||
description = "Send message in the \"* player message\" format, e.g. /me eats pizza becomes |#"..
|
||||
beerchat.main_channel_name.."| * Player01 eats pizza",
|
||||
func = function(name, param)
|
||||
if beerchat.is_player_jailed(name) then
|
||||
return false, "You are in chat-jail, you may not use /me command."
|
||||
end
|
||||
local msg = param
|
||||
local channel_name = beerchat.main_channel_name
|
||||
if not beerchat.channels[channel_name] then
|
||||
|
9
pm.lua
9
pm.lua
@ -12,6 +12,9 @@ minetest.register_on_chat_message(function(name, message)
|
||||
minetest.log("action", "CHAT " .. name .. ": " .. message)
|
||||
local players, msg = string.match(message, "^@([^%s:]*)[%s:](.*)")
|
||||
if players and msg then
|
||||
if beerchat.is_player_jailed(name) then
|
||||
return false, "You are in chat-jail, no @ messages for you."
|
||||
end
|
||||
if msg == "" then
|
||||
minetest.chat_send_player(name, "Please enter the private message you would like to send")
|
||||
else
|
||||
@ -68,6 +71,9 @@ minetest.register_on_chat_message(function(name, message)
|
||||
-- Register the chat in the target persons last spoken to table
|
||||
atchat_lastrecv[name] = players
|
||||
if atleastonesent then
|
||||
if beerchat.is_player_jailed(name) then
|
||||
return false, "You are in chat-jail, no @ messages for you."
|
||||
end
|
||||
successplayers = successplayers:sub(1, -2)
|
||||
if (successplayers ~= name) then
|
||||
minetest.chat_send_player(
|
||||
@ -153,6 +159,9 @@ local msg_override = {
|
||||
"for compatibility with the old chat command but with new style chat muting support "..
|
||||
"(players will not receive your message if they muted you) and multiple (comma separated) player support",
|
||||
func = function(name, param)
|
||||
if beerchat.is_player_jailed(name) then
|
||||
return false, "You are in chat-jail, no PMs for you."
|
||||
end
|
||||
minetest.log("action", "PM " .. name .. ": " .. param)
|
||||
local players, msg = string.match(param, "^(.-) (.*)")
|
||||
if players and msg then
|
||||
|
10
session.lua
10
session.lua
@ -20,6 +20,15 @@ minetest.register_on_joinplayer(function(player)
|
||||
else
|
||||
beerchat.currentPlayerChannel[name] = beerchat.main_channel_name
|
||||
end
|
||||
|
||||
local jailed = meta:get_int("beerchat:jailed")
|
||||
if jailed then
|
||||
beerchat.jail_list[name] = true
|
||||
beerchat.currentPlayerChannel[name] = beerchat.jail_channel_name
|
||||
beerchat.playersChannels[name][beerchat.jail_channel_name] = "joined"
|
||||
else
|
||||
beerchat.jail_list[name] = nil
|
||||
end
|
||||
|
||||
end)
|
||||
|
||||
@ -28,5 +37,6 @@ minetest.register_on_leaveplayer(function(player)
|
||||
beerchat.playersChannels[name] = nil
|
||||
atchat_lastrecv[name] = nil
|
||||
beerchat.currentPlayerChannel[name] = nil
|
||||
beerchat.jail_list[name] = nil
|
||||
end)
|
||||
|
||||
|
17
storage.lua
17
storage.lua
@ -5,8 +5,23 @@ local main_channel_color = "#ffffff" -- The color in hex of the main channel
|
||||
|
||||
if beerchat.mod_storage:get_string("channels") == "" then
|
||||
minetest.log("action", "[beerchat] One off initializing mod storage")
|
||||
beerchat.channels[beerchat.main_channel_name] = { owner = main_channel_owner, color = main_channel_color }
|
||||
beerchat.channels[beerchat.main_channel_name] = {
|
||||
owner = main_channel_owner,
|
||||
color = main_channel_color
|
||||
}
|
||||
beerchat.channels[beerchat.jail_channel_name] = {
|
||||
owner = main_channel_owner,
|
||||
color = main_channel_color
|
||||
}
|
||||
beerchat.mod_storage:set_string("channels", minetest.write_json(beerchat.channels))
|
||||
end
|
||||
|
||||
beerchat.channels = minetest.parse_json(beerchat.mod_storage:get_string("channels"))
|
||||
beerchat.channels[beerchat.main_channel_name] = {
|
||||
owner = main_channel_owner,
|
||||
color = main_channel_color
|
||||
}
|
||||
beerchat.channels[beerchat.jail_channel_name] = {
|
||||
owner = main_channel_owner,
|
||||
color = main_channel_color
|
||||
}
|
||||
|
@ -12,6 +12,9 @@ beerchat.whisper = function(name, message)
|
||||
if dollar ~= "$" then
|
||||
return false
|
||||
end
|
||||
if beerchat.is_player_jailed(name) then
|
||||
return false, "You are in chat-jail, no whispering for you."
|
||||
end
|
||||
local radius = tonumber(sradius)
|
||||
if not radius then
|
||||
radius = whisper_default_range
|
||||
|
Loading…
x
Reference in New Issue
Block a user