summaryrefslogtreecommitdiff
path: root/macro.lua
diff options
context:
space:
mode:
authorGabriel Pérez-Cerezo <gabriel@gpcf.eu>2017-10-19 14:18:07 +0200
committerGabriel Pérez-Cerezo <gabriel@gpcf.eu>2017-10-19 14:18:07 +0200
commit43b7ce7fec111a8d9424c5def4ebe965a36eab31 (patch)
treeee627f2c75c8469318320f9b6bdde8900de3fd2f /macro.lua
parent6ae47a6dac7bd4698265eca815a30313105f6026 (diff)
parenta06627f23b052207d3fc23d786c525f2cd26096c (diff)
downloadsigns_lib-master.tar.gz
signs_lib-master.tar.bz2
signs_lib-master.zip
Merged macro functionsHEADmaster
Diffstat (limited to 'macro.lua')
-rw-r--r--macro.lua48
1 files changed, 48 insertions, 0 deletions
diff --git a/macro.lua b/macro.lua
new file mode 100644
index 0000000..1a6bfa3
--- /dev/null
+++ b/macro.lua
@@ -0,0 +1,48 @@
+-- signs_lib text macros
+-- by orwell96
+
+local mstore=minetest.get_mod_storage()
+
+local macros = minetest.deserialize(mstore:get_string("macros")) or {}
+
+local function save_macros()
+ mstore:set_string("macros", minetest.serialize(macros))
+end
+
+minetest.register_privilege("signs_macro", { description = "May edit sign macros", give_to_singleplayer = true, default = false })
+
+minetest.register_chatcommand("signs_macro", {
+ params = "list | set <macro> <string> | clear <macro>",
+ description = "List or edit sign macros",
+ privs = {signs_macros},
+ func = function(name, param)
+ if param=="list" then
+ local c=0
+ for k,v in pairs(macros) do
+ minetest.chat_send_player(name, "@"..k.." -> "..v)
+ c=c+1
+ end
+ return true, "Listed "..c.." sign macros."
+ end
+ local macro, strg = string.match(param, "^set%s@?([^@%s]+)%s?(.*)$")
+ if macro and strg then
+ macros[macro]=strg
+ save_macros()
+ return true, "Set macro '@"..macro.."'."
+ end
+ macro = string.match(param, "^clear%s@?(%S+)$")
+ if macro then
+ macros[macro]=nil
+ save_macros()
+ return true, "Cleared macro '@"..macro.."'."
+ end
+ return false, "Incorrect usage! Syntax: list | set <macro> <string> | clear <macro>"
+ end
+ })
+-- replace_macros(text)
+return function(text)
+ for k, v in pairs(macros) do
+ text=string.gsub(text, "@"..k, v)
+ end
+ return text
+end