Fixed some typos in variables and strings. Added ability to switch

channels using #channel_name without a message. After switching
channels one can type a normal message without the hash prefix
in order for it to appear in that channel
This commit is contained in:
evrooije 2017-07-24 00:56:57 +02:00
parent f302244a6d
commit 68bee29514

View File

@ -5,7 +5,7 @@ local channels = {}
-- Mod settings -- Change these to your liking
--
local main_channel_name = "main" -- The main channel is the one you send messages to when no channel is specified
local main_channel_owner = "ADMIN" -- The owner of the main channel, usually ADMIN
local main_channel_owner = "Beerholder" -- The owner of the main channel, usually ADMIN
local main_channel_color = "#ffffff" -- The color in hex of the main channel
local default_channel_color = "#ffffff" -- The default color of channels when no color is specified
@ -44,7 +44,7 @@ local channel_created_string = "|#${channel_name}| Channel created"
local channel_deleted_string = "|#${channel_name}| Channel deleted"
local channel_joined_string = "|#${channel_name}| Joined channel"
local channel_left_string = "|#${channel_name}| Left channel"
local channel_already_delete_string = "|#${channel_name}| Channel seems to have already been deleted, will unregister channel from your list of channels"
local channel_already_deleted_string = "|#${channel_name}| Channel seems to have already been deleted, will unregister channel from your list of channels"
local private_message_string = "[PM] from (${from_player}) ${message}"
local self_message_string = "(${from_player} utters to him/ herself) ${message}"
local private_message_sent_string = "[PM] sent to @(${to_player}) ${message}"
@ -93,6 +93,7 @@ end
channels = minetest.parse_json(mod_storage:get_string("channels"))
playersChannels = {}
local currentPlayerChannel = {}
minetest.register_on_joinplayer(function(player)
local str = player:get_attribute("beerchat:channels")
@ -104,11 +105,20 @@ minetest.register_on_joinplayer(function(player)
playersChannels[player:get_player_name()][main_channel_name] = "joined"
player:set_attribute("beerchat:channels", minetest.write_json(playersChannels[player:get_player_name()]))
end
local current_channel = player:get_attribute("beerchat:current_channel")
if current_channel and current_channel ~= "" then
currentPlayerChannel[player:get_player_name()] = current_channel
else
currentPlayerChannel[player:get_player_name()] = main_channel_name
end
end)
minetest.register_on_leaveplayer(function(player)
playersChannels[player:get_player_name()] = nil
atchat_lastrecv[player:get_player_name()] = nil
currentPlayerChannel[player:get_player_name()] = nil
end)
local create_channel = {
@ -254,7 +264,7 @@ local join_channel = {
return false, "ERROR: You already joined "..channel_name..", no need to rejoin"
end
if channels[channel_name].password then
if channels[channel_name].password and channels[channel_name].password ~= "" then
if #str == 1 then
return false, "ERROR: This channel requires that you supply a password. Supply it in the following format: /jc my channel,password01"
end
@ -277,7 +287,7 @@ local join_channel = {
local leave_channel = {
params = "<Channel Name>",
description = "Leave channel named <Channel Name>. When you leave the channel you can no longer send/ receive messages from that channel. NOTE: You can also the main channel",
description = "Leave channel named <Channel Name>. 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 not param or param == "" then
return false, "ERROR: Invalid number of arguments. Please supply the channel name"
@ -520,7 +530,7 @@ minetest.register_chatcommand("msg", msg_override)
local me_override = {
params = "<Message>",
description = "Send message in the \"* player message\" format, e.g. /me eats pizza becomes |#main| * Player01 eats pizza",
description = "Send message in the \"* player message\" format, e.g. /me eats pizza becomes |#"..main_channel_name.."| * Player01 eats pizza",
func = function(name, param)
local msg = param
local channel_name = main_channel_name
@ -582,13 +592,13 @@ minetest.register_on_chat_message(function(name, message)
minetest.chat_send_player(target, format_message(main_channel_message_string, { channel_name = channel_name, from_player = name, message = msg }))
else
minetest.chat_send_player(target, format_message(channel_message_string, { channel_name = channel_name, from_player = name, message = msg }))
end
if enable_sounds then
minetest.sound_play(channel_message_sound, { to_player = target, gain = 1.0 } )
end
end
end
end
end
-- Register the chat in the target persons last spoken to table
hashchat_lastrecv[name] = channel_name
else
@ -596,6 +606,29 @@ minetest.register_on_chat_message(function(name, message)
end
end
return true
else
channel_name = string.match(message, "^#(.*)")
if channel_name then
if not channels[channel_name] then
minetest.chat_send_player(name, "Channel "..channel_name.." does not exist")
elseif not playersChannels[name][channel_name] then
minetest.chat_send_player(name, "You need to join this channel in order to be able to switch to it")
else
currentPlayerChannel[name] = channel_name
minetest.get_player_by_name(name):set_attribute("beerchat:current_channel", channel_name)
if channel_name == main_channel_name then
minetest.chat_send_player(name, "Switched to channel "..channel_name..", messages will now be sent to this channel")
else
minetest.chat_send_player(name, "Switched to channel "..channel_name..", messages will now be sent to this channel. To switch back "..
"to the main channel, type #"..main_channel_name)
end
if enable_sounds then
minetest.sound_play(channel_management_sound, { to_player = name, gain = 1.0 } )
end
end
return true
end
end
end)
@ -636,7 +669,15 @@ end)
minetest.register_on_chat_message(function(name, message)
local msg = message
local channel_name = main_channel_name
local channel_name = currentPlayerChannel[name]
if not channels[channel_name] then
minetest.chat_send_player(name, "Channel "..channel_name.." does not exist, switching back to "..main_channel_name..". Please resend your message")
currentPlayerChannel[name] = main_channel_name
minetest.get_player_by_name(name):set_attribute("beerchat:current_channel", main_channel_name)
return true
end
if not channels[channel_name] then
minetest.chat_send_player(name, "Channel "..channel_name.." does not exist")
elseif msg == "" then
@ -650,6 +691,9 @@ minetest.register_on_chat_message(function(name, message)
if playersChannels[target][channel_name] then
if not minetest.get_player_by_name(target):get_attribute("beerchat:muted:"..name) then
minetest.chat_send_player(target, format_message(main_channel_message_string, { channel_name = channel_name, from_player = name, message = message }))
if channel_name ~= main_channel_name and enable_sounds then
minetest.sound_play(channel_message_sound, { to_player = target, gain = 1.0 } )
end
end
end
end