implement channel and shout

This commit is contained in:
Tai @ Flex 2017-02-28 20:03:44 +00:00
parent 44d36c6801
commit aa1cd34cc0
2 changed files with 42 additions and 0 deletions

32
channel_mode.lua Normal file
View File

@ -0,0 +1,32 @@
-- Channel mode
local allchannels = {} -- channel_name --> list of players
local playerschannel = {} -- playername --> channel_name
chat_modes.register("channel", {
help = "Send messages to a specific channel only.",
register = function(playername, params)
local channelname = params[1]
local channelplayers = allchannels[ channelname ]
channelplayers[playername] = minetest.get_player_by_name(playername)
playerschannel[playername] = channelname
end,
deregister = function(playername)
local channelplayers = allchannels[playername]
channelplayers[playername] = nil
playerschannel[playername] = nil
end,
getPlayers = function(playername, message)
local targetplayers = {}
for _,player in pairs(allchannels[ playerschannel[playername] ]) do
targetplayers[#targetplayers] = player
end
end
})

10
shout_mode.lua Normal file
View File

@ -0,0 +1,10 @@
-- The default-default mode - just get all connected players
chat_modes.register("shout", {
help = "Send all messages to all players",
register = function() end,
deregister() = function() end,
getPlayers = function()
return minetest.get_connected_players()
end
})