diff options
author | orwell96 <mono96.mml@gmail.com> | 2016-11-24 21:52:17 +0100 |
---|---|---|
committer | orwell96 <mono96.mml@gmail.com> | 2016-11-24 21:52:51 +0100 |
commit | 6f444cd10e6d43404c1f12a8eaf092805724268b (patch) | |
tree | 6e885e80a13358080e5353a10a4f9585c80dc1a9 | |
parent | 8c43f4d02693cddde0eb136ad9fe5d2f2bf210a4 (diff) | |
download | advtrains-6f444cd10e6d43404c1f12a8eaf092805724268b.tar.gz advtrains-6f444cd10e6d43404c1f12a8eaf092805724268b.tar.bz2 advtrains-6f444cd10e6d43404c1f12a8eaf092805724268b.zip |
drop player on the platform if there is one
-rw-r--r-- | advtrains.zip | bin | 1576125 -> 1576313 bytes | |||
-rw-r--r-- | misc_nodes.lua | 4 | ||||
-rw-r--r-- | wagons.lua | 10 |
3 files changed, 12 insertions, 2 deletions
diff --git a/advtrains.zip b/advtrains.zip Binary files differindex 8e7cfc1..d703fbe 100644 --- a/advtrains.zip +++ b/advtrains.zip 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 = { @@ -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
|