mirror of
https://github.com/SmallJoker/boost_cart.git
synced 2024-09-27 20:10:19 +02:00
Make player reattach to cart after reentering the game.
This commit is contained in:
parent
d486143f42
commit
c221e2d678
|
@ -27,6 +27,7 @@ local cart_entity = {
|
||||||
textures = {"cart.png"},
|
textures = {"cart.png"},
|
||||||
|
|
||||||
driver = nil,
|
driver = nil,
|
||||||
|
driver_connected = false,
|
||||||
punched = false, -- used to re-send velocity and position
|
punched = false, -- used to re-send velocity and position
|
||||||
velocity = {x=0, y=0, z=0}, -- only used on punch
|
velocity = {x=0, y=0, z=0}, -- only used on punch
|
||||||
old_dir = {x=1, y=0, z=0}, -- random value to start the cart on punch
|
old_dir = {x=1, y=0, z=0}, -- random value to start the cart on punch
|
||||||
|
@ -51,7 +52,8 @@ function cart_entity:on_rightclick(clicker)
|
||||||
if self.driver and player_name == self.driver then
|
if self.driver and player_name == self.driver then
|
||||||
self.driver = nil
|
self.driver = nil
|
||||||
boost_cart:manage_attachment(clicker, nil)
|
boost_cart:manage_attachment(clicker, nil)
|
||||||
elseif not self.driver then
|
self.driver_connected = true
|
||||||
|
elseif self.driver and self.driver_connected == false then
|
||||||
self.driver = player_name
|
self.driver = player_name
|
||||||
boost_cart:manage_attachment(clicker, self.object)
|
boost_cart:manage_attachment(clicker, self.object)
|
||||||
|
|
||||||
|
@ -60,10 +62,23 @@ function cart_entity:on_rightclick(clicker)
|
||||||
-- when the player is attached, reset to default animation
|
-- when the player is attached, reset to default animation
|
||||||
default.player_set_animation(clicker, "stand")
|
default.player_set_animation(clicker, "stand")
|
||||||
end
|
end
|
||||||
|
elseif not self.driver then
|
||||||
|
self.driver = player_name
|
||||||
|
boost_cart:manage_attachment(clicker, self.object)
|
||||||
|
|
||||||
|
if default.player_set_animation then
|
||||||
|
default.player_set_animation(clicker, "stand")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function cart_entity:on_activate(staticdata, dtime_s)
|
function cart_entity:on_activate(staticdata, dtime_s)
|
||||||
|
if staticdata and minetest.deserialize(staticdata) and minetest.deserialize(staticdata)["driver"] then
|
||||||
|
local driver = minetest.deserialize(staticdata)["driver"]
|
||||||
|
self.driver = driver
|
||||||
|
boost_cart:manage_attachment(minetest.get_player_by_name(self.driver), self.object)
|
||||||
|
end
|
||||||
|
|
||||||
self.object:set_armor_groups({immortal=1})
|
self.object:set_armor_groups({immortal=1})
|
||||||
self.sound_counter = math.random(4, 15)
|
self.sound_counter = math.random(4, 15)
|
||||||
|
|
||||||
|
@ -82,18 +97,12 @@ end
|
||||||
|
|
||||||
function cart_entity:get_staticdata()
|
function cart_entity:get_staticdata()
|
||||||
return minetest.serialize({
|
return minetest.serialize({
|
||||||
|
driver = self.driver,
|
||||||
railtype = self.railtype,
|
railtype = self.railtype,
|
||||||
old_dir = self.old_dir
|
old_dir = self.old_dir
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
-- 0.5.x and later: When the driver leaves
|
|
||||||
function cart_entity:on_detach_child(child)
|
|
||||||
if child and child:get_player_name() == self.driver then
|
|
||||||
self.driver = nil
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function cart_entity:on_punch(puncher, time_from_last_punch, tool_capabilities, direction)
|
function cart_entity:on_punch(puncher, time_from_last_punch, tool_capabilities, direction)
|
||||||
local pos = self.object:get_pos()
|
local pos = self.object:get_pos()
|
||||||
local vel = self.object:get_velocity()
|
local vel = self.object:get_velocity()
|
||||||
|
@ -195,6 +204,10 @@ function cart_entity:on_step(dtime)
|
||||||
player = minetest.get_player_by_name(self.driver)
|
player = minetest.get_player_by_name(self.driver)
|
||||||
if player then
|
if player then
|
||||||
ctrl = player:get_player_control()
|
ctrl = player:get_player_control()
|
||||||
|
boost_cart:manage_attachment(player, self.object)
|
||||||
|
self.driver_connected = true
|
||||||
|
else
|
||||||
|
self.driver_connected = false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user