From 2e7218cc0f5c5d5051edca91ed83050ee2a1d10b Mon Sep 17 00:00:00 2001 From: kaadmy Date: Sun, 4 Oct 2015 15:08:37 -0700 Subject: [PATCH] added saveable private messaging --- minetest.conf | 3 ++ mods/pm/README.txt | 7 ++++ mods/pm/depends.txt | 1 + mods/pm/init.lua | 83 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 94 insertions(+) create mode 100644 mods/pm/README.txt create mode 100644 mods/pm/depends.txt create mode 100644 mods/pm/init.lua diff --git a/minetest.conf b/minetest.conf index ea82a37..ad02e83 100644 --- a/minetest.conf +++ b/minetest.conf @@ -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 diff --git a/mods/pm/README.txt b/mods/pm/README.txt new file mode 100644 index 0000000..63f30dd --- /dev/null +++ b/mods/pm/README.txt @@ -0,0 +1,7 @@ +Private message mod +=================== +By Kaadmy, for Pixture + +Send private messags that save until the player rejoins + +Source license: WTFPL diff --git a/mods/pm/depends.txt b/mods/pm/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/mods/pm/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/pm/init.lua b/mods/pm/init.lua new file mode 100644 index 0000000..21c4965 --- /dev/null +++ b/mods/pm/init.lua @@ -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 = " ", + 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") \ No newline at end of file