From f39c6f9dc5570c561bd85d43d06a61621d00d3e1 Mon Sep 17 00:00:00 2001 From: ShadowNinja Date: Tue, 28 Jan 2014 19:55:47 -0500 Subject: [PATCH] Initial commit --- init.lua | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 init.lua diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..0489e10 --- /dev/null +++ b/init.lua @@ -0,0 +1,112 @@ +--[[ +-- Memo by ShadowNinja +-- License: WTFPL +--]] + + +local worldpath = minetest.get_worldpath() +local memo = {} +memo.filename = worldpath.."/memos.txt" +memo.memos = {} + +function memo:save() + file, err = io.open(self.filename, "w") + if err then + return err + end + file:write(minetest.serialize(self.memos)) + file:close() +end + +function memo:load() + file, err = io.open(self.filename, "r") + if err then + self.memos = self.memos or {} + return err + end + self.memos = minetest.deserialize(file:read("*a")) + if type(self.memos) ~= "table" then self.memos = {} end + file:close() +end + +memo:load() + +minetest.register_on_joinplayer(function(player) + minetest.after(10, memo.player_print, memo, player:get_player_name()) +end) + +function memo:player_print(name) + if not self.memos[name] then + return + end + if #self.memos[name] > 0 then + minetest.chat_send_player(name, "You have memos!") + minetest.chat_send_player(name, "Use /memodel to delete them.") + end + for i, t in pairs(self.memos[name]) do + minetest.chat_send_player(name, + ("Memo %s from %s: %s"):format(i, t.from, t.message)) + end +end + +minetest.register_chatcommand("memosend", { + params = " ", + description = "Send a memo to another player", + privs = {shout=true}, + func = function(name, params) + local found, _, toname, msg = params:find("([^%s]+)%s(.+)") + if not found then + minetest.chat_send_player(name, "Invalid usage, see /help memosend.") + return + end + if not minetest.auth_table[toname] then + minetest.chat_send_player(name, "Player does not exist.") + return + end + memo.memos[toname] = memo.memos[toname] or {} + table.insert(memo.memos[toname], {from=name, message=msg}) + memo:save() + minetest.chat_send_player(name, "Memo sent!") + end, +}) + +minetest.register_chatcommand("memodel", { + params = "|all", + description = "Delete your memos", + privs = {shout=true}, + func = function(name, params) + local index = tonumber(params) + if not memo.memos[name] then + minetest.chat_send_player(name, "You have no memos.") + return + end + if params == "all" then + memo.memos[name] = nil + minetest.chat_send_player(name, "All memos deleted.") + memo:save() + elseif index then + if memo.memos[name][index] then + memo.memos[name][index] = nil + table.sort(memo.memos[name]) + memo:save() + minetest.chat_send_player(name, "Memo "..tostring(index).." deleted.") + else + minetest.chat_send_player(name, + "Memo "..tostring(index).." does not exist. (max " + ..tostring(#memo.memos[name])..")") + end + else + minetest.chat_send_player(name, "Invalid usage, see /help memodel.") + end + end, +}) + +minetest.register_chatcommand("memolist", { + params = "", + description = "List your memos", + privs = {shout=true}, + func = function(name, params) + memo:player_print(name) + end, +}) +