Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ------------------
- -- Palm scanner --
- ------------------
- -----------------------------------------------
- -- /!\ When "overriding" a callback function --
- -- re-use all the parameters in same order ! --
- -----------------------------------------------
- local function toggle_palm_scanner(pos)
- local node = minetest.get_node(pos)
- local name = node.name
- if name == "scifi_nodes:palm_scanner_off" then
- minetest.swap_node(pos, {name = "scifi_nodes:palm_scanner_on", param2 = node.param2})
- mesecon.receptor_on(pos, get_switch_rules(node.param2))
- minetest.get_node_timer(pos):start(3)
- elseif name == "scifi_nodes:palm_scanner_on" then
- minetest.swap_node(pos, {name="scifi_nodes:palm_scanner_off", param2=node.param2})
- mesecon.receptor_off(pos, get_switch_rules(node.param2))
- end
- end
- -- after_place_node
- -- placer is a player object
- local function set_owner(pos, placer, itemstack, pointed_thing)
- local meta = minetest.get_meta(pos)
- meta:set_string("owner", placer:get_player_name())
- end
- -- on_rightclick
- -- player is a player object
- local function check_owner(pos, node, player, itemstack, pointed_thing)
- local meta = minetest.get_meta(pos)
- local owner = meta:get_string("owner")
- local player = player:get_player_name()
- minetest.swap_node(pos, {name = "scifi_nodes:palm_scanner_checking", param2 = node.param2})
- minetest.sound_play("scifi_nodes_palm_scanner", {max_hear_distance = 8, pos = pos, gain = 1.0})
- -- wait a minute please !
- local clock = os.clock
- local t0 = clock()
- while clock() - t0 <= 1.5 do end
- minetest.swap_node(pos, {name = "scifi_nodes:palm_scanner_off", param2 = node.param2})
- if owner == player then
- minetest.sound_play("scifi_nodes_access_granted", {max_hear_distance = 8, pos = pos, gain = 1.0})
- minetest.chat_send_player(player, "Access granted !")
- toggle_palm_scanner(pos)
- else
- minetest.chat_send_player(player, "Access refused !")
- minetest.sound_play("scifi_nodes_access_refused", {max_hear_distance = 8, pos = pos, gain = 1.0})
- end
- end
- minetest.register_node("scifi_nodes:palm_scanner_on", {
- description = "Palm scanner",
- sunlight_propagates = true,
- buildable_to = false,
- tiles = {"scifi_nodes_palm_scanner_on.png",},
- inventory_image = "scifi_nodes_palm_scanner_on.png",
- wield_image = "scifi_nodes_palm_scanner_on.png",
- drawtype = "signlike",
- node_box = {type = "wallmounted",},
- selection_box = {type = "wallmounted",},
- paramtype = "light",
- paramtype2 = "wallmounted",
- light_source = 5,
- groups = {cracky=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1, mesecon_needs_receiver = 1},
- mesecons = {receptor = {state = mesecon.state.on,}},
- on_timer = toggle_palm_scanner,
- sounds = default.node_sound_glass_defaults(),
- })
- minetest.register_node("scifi_nodes:palm_scanner_off", {
- description = "Palm scanner",
- tiles = {"scifi_nodes_palm_scanner_off.png",},
- inventory_image = "scifi_nodes_palm_scanner_on.png",
- wield_image = "scifi_nodes_palm_scanner_on.png",
- drawtype = "signlike",
- sunlight_propagates = true,
- buildable_to = false,
- node_box = {type = "wallmounted",},
- selection_box = {type = "wallmounted",},
- paramtype = "light",
- paramtype2 = "wallmounted",
- groups = {cracky=1, oddly_breakable_by_hand=1, mesecon_needs_receiver = 1},
- mesecons = {receptor = {state = mesecon.state.off,}},
- after_place_node = set_owner,
- on_rightclick = check_owner,
- sounds = default.node_sound_glass_defaults(),
- })
- minetest.register_node("scifi_nodes:palm_scanner_checking", {
- description = "Palm scanner",
- tiles = {{name = "scifi_nodes_palm_scanner_checking.png", animation = {type = "vertical_frames",aspect_w = 16,aspect_h = 16,length = 1.5}}},
- wield_image = "scifi_nodes_palm_scanner_on.png",
- inventory_image = "scifi_nodes_palm_scanner_on.png",
- drawtype = "signlike",
- sunlight_propagates = true,
- buildable_to = false,
- node_box = {type = "wallmounted",},
- selection_box = {type = "wallmounted",},
- paramtype = "light",
- paramtype2 = "wallmounted",
- groups = {cracky=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1, mesecon_needs_receiver = 1},
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement