From 2e52c6c795704c12bebf3790e1ef70d7f0234801 Mon Sep 17 00:00:00 2001 From: ShadowNinja <noreply@gmail.com> Date: Wed, 25 Sep 2013 04:04:29 +0200 Subject: [PATCH] Disable the trash button outside of creative mode --- stargate/gate_defs.lua | 49 ++++++++++++++++++++++++++++++------------------- 1 files changed, 30 insertions(+), 19 deletions(-) diff --git a/stargate/gate_defs.lua b/stargate/gate_defs.lua index 47e45a1..8c3fa91 100644 --- a/stargate/gate_defs.lua +++ b/stargate/gate_defs.lua @@ -138,7 +138,7 @@ minetest.env:set_node(gateNodes[8].pos,{name="stargate:gatenode1_off", param1=0, param2=dir}) minetest.env:set_node(gateNodes[9].pos,{name="stargate:gatenode3_off", param1=0, param2=dir}) local meta = minetest.env:get_meta(gateNodes[1].pos) - meta:set_string("infotext", "Stargate inactive\nOwned by: "..player_name) + meta:set_string("infotext", "Stargate\nOwned by: "..player_name) meta:set_string("gateNodes",minetest.serialize(gateNodes)) meta:set_int("gateActive",0) meta:set_string("owner",player_name) @@ -158,13 +158,12 @@ stargate.unregisterGate(player_name,gateNodes[1].pos) end -function activateGate (player,pos) +function activateGate (pos) local node = minetest.env:get_node(pos) local dir=node.param2 local meta = minetest.env:get_meta(pos) local gateNodes=minetest.deserialize(meta:get_string("gateNodes")) meta:set_int("gateActive",1) - meta:set_string("infotext", "Stargate active") meta:set_string("dont_destroy","true") minetest.sound_play("gateOpen", {pos = pos, gain = 1.0,loop = false, max_hear_distance = 72,}) swap_gate_node(gateNodes[1].pos,"stargate:gatenode8",dir) @@ -179,14 +178,13 @@ meta:set_string("dont_destroy","false") end -function deactivateGate (player,pos) +function deactivateGate (pos) local node = minetest.env:get_node(pos) local dir=node.param2 local meta = minetest.env:get_meta(pos) local gateNodes=minetest.deserialize(meta:get_string("gateNodes")) meta:set_int("gateActive",0) meta:set_string("dont_destroy","true") - meta:set_string("infotext", "Stargate inactive") minetest.sound_play("gateClose", {pos = pos, gain = 1.0,loop = false, max_hear_distance = 72,}) swap_gate_node(gateNodes[1].pos,"stargate:gatenode8_off",dir) swap_gate_node(gateNodes[2].pos,"stargate:gatenode7_off",dir) @@ -486,26 +484,39 @@ for _,object in ipairs(minetest.env:get_objects_inside_radius(pos, 1)) do if object:is_player() then local player_name = object:get_player_name() - local gate=stargate.getCurrentGate (player_name,pos) + local owner=meta:get_string("owner") + local gate=stargate.findGate (pos) + if gate==nil then print("Gate is not registered!") return end local pos1={} pos1.x=gate["destination"].x pos1.y=gate["destination"].y pos1.z=gate["destination"].z - local dir1=gate["destination_dir"] - local dir=minetest.dir_to_facedir(object:get_look_dir()) - if dir1 == 0 then - pos1.z=pos1.z+2 - elseif dir1 == 1 then - pos1.x=pos1.x+2 - elseif dir1 == 2 then - pos1.z=pos1.z-2 - elseif dir1 == 3 then - pos1.x=pos1.x-2 + local dest_gate=stargate.findGate (pos1) + if dest_gate==nil then + gate["destination"]=nil + deactivateGate(pos) + stargate.save_data(owner) + return end - object:moveto(pos1,true) - print(dump(gate["dest"])) + if player_name~=owner and gate["type"]=="private" then return end + local dir1=gate["destination_dir"] + local dest_angle + if dir1 == 0 then + pos1.z = pos1.z-2 + dest_angle = 180 + elseif dir1 == 1 then + pos1.x = pos1.x-2 + dest_angle = 90 + elseif dir1 == 2 then + pos1.z=pos1.z+2 + dest_angle = 0 + elseif dir1 == 3 then + pos1.x = pos1.x+2 + dest_angle = -90 + end + object:moveto(pos1,false) + object:set_look_yaw(math.rad(dest_angle)) minetest.sound_play("enterEventHorizon", {pos = pos, gain = 1.0,loop = false, max_hear_distance = 72,}) - end end end -- Gitblit v1.8.0