drop player on the platform if there is one
authororwell96 <mono96.mml@gmail.com>
Thu, 24 Nov 2016 20:52:17 +0000 (21:52 +0100)
committerorwell96 <mono96.mml@gmail.com>
Thu, 24 Nov 2016 20:52:51 +0000 (21:52 +0100)
advtrains.zip
misc_nodes.lua
wagons.lua

index 8e7cfc1..d703fbe 100644 (file)
Binary files a/advtrains.zip and b/advtrains.zip differ
index f792664..93829f0 100644 (file)
@@ -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 = {
index a5734d6..a82bde2 100644 (file)
@@ -438,6 +438,16 @@ function wagon:get_off(seatno)
        if clicker then\r
                clicker:set_detach()\r
                clicker:set_eye_offset({x=0,y=0,z=0}, {x=0,y=0,z=0})\r
+               local objpos=advtrains.round_vector_floor_y(self.object:getpos())\r
+               local yaw=self.object:getyaw()\r
+               local isx=(yaw < math.pi/4) or (yaw > 3*math.pi/4 and yaw < 5*math.pi/4) or (yaw > 7*math.pi/4)\r
+               --abuse helper function\r
+               for _,r in ipairs({-1, 1}) do\r
+                       local p=vector.add({x=isx and r or 0, y=0, z=not isx and r or 0}, objpos)\r
+                       if minetest.get_item_group(minetest.get_node(p).name, "platform")>0 then\r
+                               minetest.after(0.2, function() clicker:setpos({x=p.x, y=p.y+1, z=p.z}) end)\r
+                       end\r
+               end\r
        end\r
        self.seatp[seatno]=nil\r
 end\r