added saveable private messaging

This commit is contained in:
kaadmy 2015-10-04 15:08:37 -07:00
parent b1b0a0df0c
commit 2e7218cc0f
4 changed files with 94 additions and 0 deletions

View File

@ -57,6 +57,9 @@ hunger_step = 2
headbars_enable = true
headbars_scale = 1
# private messages
pm_enable_saving = true
# ambience noises
flowing_water_sounds = true

7
mods/pm/README.txt Normal file
View File

@ -0,0 +1,7 @@
Private message mod
===================
By Kaadmy, for Pixture
Send private messags that save until the player rejoins
Source license: WTFPL

1
mods/pm/depends.txt Normal file
View File

@ -0,0 +1 @@
default

83
mods/pm/init.lua Normal file
View File

@ -0,0 +1,83 @@
--
-- Private messages mod
-- By Kaadmy, for Pixture
--
local enable_saving = minetest.setting_getbool("pm_enable_saving")
if enable_saving == nil then enable_saving = true end
local messages = {}
minetest.register_chatcommand(
"pm",
{
params = "<player> <message>",
description = "Send somebody a private message",
privs = {shout=true},
func = function(name, param)
local sendto, message = param:match("^(%S+)%s(.+)$")
if not sendto then return false, "Invalid usage, see /help pm." end
if not minetest.get_player_by_name(sendto) then
if enable_saving then
if messages[sendto] == nil then messages[sendto] = {} end
table.insert(messages[sendto], name .. ": " .. message)
return false, "The player " .. sendto
.. " is not online, saving message instead."
else
return false, "The player " .. sendto
.. " is not online, and PM saving is disabled."
end
end
minetest.log("action", "PM from " .. name .. " to " .. sendto
.. ": " .. message)
minetest.chat_send_player(sendto, "PM from " .. name .. ": "
.. message)
return true, "PM sent."
end
})
minetest.register_chatcommand(
"pms",
{
description = "Show saved private messages",
func = function(name, param)
if not enable_saving then return false, "PM saving is disabled." end
if messages[name] == nil then return false, "No saved PMs." end
minetest.chat_send_player(name, "Saved PMs:")
local str = ""
local amt_pms = 0
for _, msg in pairs(messages[name]) do
amt_pms = amt_pms + 1
str = str .. " " .. msg .. "\n"
end
minetest.chat_send_player(name, str)
messages[name] = nil
return true, amt_pms .. " saved PMs"
end
})
if enable_saving then
minetest.register_on_joinplayer(
function(player)
local name = player:get_player_name()
if messages[name] == nil then
minetest.chat_send_player(name, "No saved PMs")
return false
end
minetest.chat_send_player(name, "You have " .. #messages[name] .. " saved PMs.")
return true
end)
end
default.log("mod:pm", "loaded")