From 3f1059f8d9d2b3f7d1cae59a05e0c3a4dec2f23c Mon Sep 17 00:00:00 2001 From: rnd Date: Wed, 6 May 2015 01:16:12 +0200 Subject: [PATCH] .. --- mover.lua | 78 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 40 insertions(+), 38 deletions(-) diff --git a/mover.lua b/mover.lua index c24d85e..9f917b9 100644 --- a/mover.lua +++ b/mover.lua @@ -265,43 +265,6 @@ minetest.register_node("basic_machines:mover", { }) -- KEYPAD - -minetest.register_node("basic_machines:keypad", { - description = "Keypad", - tiles = {"keypad.png"}, - groups = {oddly_breakable_by_hand=2}, - sounds = default.node_sound_wood_defaults(), - after_place_node = function(pos, placer) - local meta = minetest.env:get_meta(pos) - meta:set_string("infotext", "Keypad. Right click to set it up. Or punch it while sneaking (shift).") - meta:set_string("owner", placer:get_player_name()); meta:set_int("public",1); - meta:set_int("x0",0);meta:set_int("y0",0);meta:set_int("z0",0); -- target - meta:set_string("pass", ""); - meta:set_int("iter",1); - end, - - mesecons = {effector = { - action_on = function (pos, node) - local meta = minetest.get_meta(pos); - check_keypad(pos,""); - end - } - }, - on_rightclick = function(pos, node, player, itemstack, pointed_thing) - local meta = minetest.get_meta(pos); - if meta:get_string("owner")~= player:get_player_name() then return end -- only owner can setup keypad - local x0,y0,z0,pass,iter; - x0=meta:get_int("x0");y0=meta:get_int("y0");z0=meta:get_int("z0");iter=meta:get_int("iter") or 1; - - pass = meta:get_string("pass"); - local form = - "size[3,2.75]" .. -- width, height - "field[0.25,0.5;1,1;x0;target;"..x0.."] field[1.25,0.5;1,1;y0;;"..y0.."] field[2.25,0.5;1,1;z0;;"..z0.."]".. - "button_exit[0.,2.25;1,1;OK;OK] field[0.25,1.5;3,1;pass;Password: ;"..pass.."]" .. "field[1.25,2.5;2,1;iter;Repeat;".. iter .."]"; - minetest.show_formspec(player:get_player_name(), "basic_machines:keypad_"..minetest.pos_to_string(pos), form) - end -}) - local function use_keypad(pos,name) local meta = minetest.get_meta(pos); @@ -340,7 +303,6 @@ local function check_keypad(pos,name) if pass == "" then if meta:get_int("count")<=0 then -- only accept new operation requests if idle meta:set_int("count",meta:get_int("iter")); use_keypad(pos) - else meta:set_int("count",0); meta:set_string("infotext","operation aborted by user. punch to activate.") -- reset end return end @@ -353,6 +315,44 @@ local function check_keypad(pos,name) end +minetest.register_node("basic_machines:keypad", { + description = "Keypad", + tiles = {"keypad.png"}, + groups = {oddly_breakable_by_hand=2}, + sounds = default.node_sound_wood_defaults(), + after_place_node = function(pos, placer) + local meta = minetest.env:get_meta(pos) + meta:set_string("infotext", "Keypad. Right click to set it up. Or punch it while sneaking (shift).") + meta:set_string("owner", placer:get_player_name()); meta:set_int("public",1); + meta:set_int("x0",0);meta:set_int("y0",0);meta:set_int("z0",0); -- target + meta:set_string("pass", ""); + meta:set_int("iter",1); + end, + + mesecons = {effector = { + action_on = function (pos, node) + local meta = minetest.get_meta(pos); + check_keypad(pos,""); + end + } + }, + on_rightclick = function(pos, node, player, itemstack, pointed_thing) + local meta = minetest.get_meta(pos); + if meta:get_string("owner")~= player:get_player_name() then return end -- only owner can setup keypad + local x0,y0,z0,pass,iter; + x0=meta:get_int("x0");y0=meta:get_int("y0");z0=meta:get_int("z0");iter=meta:get_int("iter") or 1; + + pass = meta:get_string("pass"); + local form = + "size[3,2.75]" .. -- width, height + "field[0.25,0.5;1,1;x0;target;"..x0.."] field[1.25,0.5;1,1;y0;;"..y0.."] field[2.25,0.5;1,1;z0;;"..z0.."]".. + "button_exit[0.,2.25;1,1;OK;OK] field[0.25,1.5;3,1;pass;Password: ;"..pass.."]" .. "field[1.25,2.5;2,1;iter;Repeat;".. iter .."]"; + minetest.show_formspec(player:get_player_name(), "basic_machines:keypad_"..minetest.pos_to_string(pos), form) + end +}) + + + -- DETECTOR minetest.register_node("basic_machines:detector", { -- TO DO @@ -419,6 +419,8 @@ minetest.register_abm({ local effector=table.mesecons.effector; if not effector.action_on then return end effector.action_on({x=x1,y=y1,z=z1},node); -- run + meta:set_string("infotext", "detector: on"); + else meta:set_string("infotext", "detector: idle"); end end,