From 80d173631c039c7c3a0d1aab08732ff936aa1ad7 Mon Sep 17 00:00:00 2001 From: HybridDog Date: Wed, 23 Dec 2015 18:32:43 +0100 Subject: [PATCH] better fitting texture and save the templates of players to the worldpath --- moremesecons_luacontroller_tool/init.lua | 55 +++++++++++++++++- .../moremesecons_luacontroller_tool.png | Bin 170 -> 290 bytes 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/moremesecons_luacontroller_tool/init.lua b/moremesecons_luacontroller_tool/init.lua index b8548bb..5a1c090 100644 --- a/moremesecons_luacontroller_tool/init.lua +++ b/moremesecons_luacontroller_tool/init.lua @@ -1,7 +1,56 @@ +--[[ +vector_extras there: https://github.com/HybridDog/vector_extras +]] + local templates = { singleplayer = {fir = "daw", mak = "delay()"}, - ["MoreMesecons"] = {mag = "dawasd", mak = "delrq"}, + MoreMesecons = {mag = "dawasd", mak = "delrq"}, } +--local compression_level = + +local file_path = minetest.get_worldpath().."/MoreMesecons_lctt" + +-- load templates from a compressed file +local templates_file = io.open(file_path, "rb") +if templates_file then + local templates_raw = templates_file:read("*all") + io.close(templates_file) + if templates_raw + and templates_raw ~= "" then + for name,t in pairs(minetest.deserialize(minetest.decompress(templates_raw))) do + templates[name] = t + end + end +end + +-- the save function +local function save_to_file() + local templates_file = io.open(file_path, "w") + if not templates_file then + minetest.log("error", "[MoreMesecons] Could not open file for saving!") + return + end + local player_templates = table.copy(templates) + player_templates.MoreMesecons = nil + templates_file:write(minetest.compress(minetest.serialize(player_templates))) + io.close(templates_file) +end + +-- save doesn't save more than every 10s to disallow spamming +local saving +local function save() + if saving then + return + end + saving = true + minetest.after(16, function() + save_to_file() + saving = false + end) +end + +minetest.register_on_shutdown(save_to_file) + -- when adding templates minetest.formspec_escape(string) should be used, even for the names -- this way it doesn't work for multiplayer (missing tests at receiving) @@ -69,7 +118,7 @@ local function set_luacontroller_code(pos, code) luac_def.on_receive_fields(pos, nil, {code=code, program=""}) end -minetest.register_tool("moremesecons_luacontroller_tool:luacontroller_template_tool", { +minetest.register_tool("moremesecons_luacontroller_tool:lctt", { description = "luacontroller template tool", inventory_image = "moremesecons_luacontroller_tool.png", @@ -174,8 +223,10 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) minetest.chat_send_player(pname, "you can't save if you didn't change the code") return end--]] + code = minetest.formspec_escape(code) local template_name = savename templates[pname][template_name] = code + save() minetest.chat_send_player(pname, "template "..pname.."/"..template_name.." saved") return end diff --git a/moremesecons_luacontroller_tool/textures/moremesecons_luacontroller_tool.png b/moremesecons_luacontroller_tool/textures/moremesecons_luacontroller_tool.png index 2791ed514ad2f566d7fb04a4068859ae63a700de..a1b5d85d5c2f11b13dbbd83c9e286a25d117f4d9 100644 GIT binary patch delta 274 zcmV+t0qy>(0ipts8Gi-<001BJ|6u?C0O?6YK~y-)V_+C6;6D_T4t}w7qig<8qSY+_ z#WETHOJ_3uC)p+cnc4sUXJGj+o{3u%6Hd*HjQ<%Je=;yI{9#D_8^lnb7D}4as}p_y ze`8_zUzZm2zdkhxr)Cyh63i?t4E^ch41d0TWoVnfg^?r!Qh%LQ|185s|Hkmt; zam#nj@-^ZIGp>21A28v0BW-Pda!5TBZ-wa41u;Vc)I$ztaD0e F0szz*IQRen