From 6f444cd10e6d43404c1f12a8eaf092805724268b Mon Sep 17 00:00:00 2001 From: orwell96 Date: Thu, 24 Nov 2016 21:52:17 +0100 Subject: drop player on the platform if there is one --- advtrains.zip | Bin 1576125 -> 1576313 bytes misc_nodes.lua | 4 ++-- wagons.lua | 10 ++++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/advtrains.zip b/advtrains.zip index 8e7cfc1..d703fbe 100644 Binary files a/advtrains.zip and b/advtrains.zip differ diff --git a/misc_nodes.lua b/misc_nodes.lua index f792664..93829f0 100644 --- a/misc_nodes.lua +++ b/misc_nodes.lua @@ -15,7 +15,7 @@ function advtrains.register_platform(preset) minetest.register_node("advtrains:platform_low_"..nodename, { description = desc.." Platform (low)", tiles = {btex.."^advtrains_platform.png", btex, btex, btex, btex, btex}, - groups = {cracky = 1, not_blocking_trains = 1}, + groups = {cracky = 1, not_blocking_trains = 1, platform=1}, sounds = default.node_sound_stone_defaults(), drawtype = "nodebox", node_box = { @@ -32,7 +32,7 @@ function advtrains.register_platform(preset) minetest.register_node("advtrains:platform_high_"..nodename, { description = desc.." Platform (high)", tiles = {btex.."^advtrains_platform.png", btex, btex, btex, btex, btex}, - groups = {cracky = 1, not_blocking_trains = 1}, + groups = {cracky = 1, not_blocking_trains = 1, platform=2}, sounds = default.node_sound_stone_defaults(), drawtype = "nodebox", node_box = { diff --git a/wagons.lua b/wagons.lua index a5734d6..a82bde2 100644 --- a/wagons.lua +++ b/wagons.lua @@ -438,6 +438,16 @@ function wagon:get_off(seatno) if clicker then clicker:set_detach() clicker:set_eye_offset({x=0,y=0,z=0}, {x=0,y=0,z=0}) + local objpos=advtrains.round_vector_floor_y(self.object:getpos()) + local yaw=self.object:getyaw() + local isx=(yaw < math.pi/4) or (yaw > 3*math.pi/4 and yaw < 5*math.pi/4) or (yaw > 7*math.pi/4) + --abuse helper function + for _,r in ipairs({-1, 1}) do + local p=vector.add({x=isx and r or 0, y=0, z=not isx and r or 0}, objpos) + if minetest.get_item_group(minetest.get_node(p).name, "platform")>0 then + minetest.after(0.2, function() clicker:setpos({x=p.x, y=p.y+1, z=p.z}) end) + end + end end self.seatp[seatno]=nil end -- cgit v1.2.3