Model: thetoon and Zeg9 (CC BY-SA 3.0),
modified by PavelS(SokolovPavel) (CC BY-SA 3.0),
modified by sofar (CC BY-SA 3.0)
+
+Controls
+--------
+Right mouse button = Enter or exit boat when pointing at boat.
+Forward = Speed up.
+ Slow down when moving backwards.
+Forward + backward = Enable cruise mode: Boat will accelerate to maximum forward
+ speed and remain at that speed without needing to hold the
+ forward key.
+Backward = Slow down.
+ Speed up when moving backwards.
+ Disable cruise mode.
+Left = Turn to the left.
+ Turn to the right when moving backwards.
+Right = Turn to the right.
+ Turn to the left when moving backwards.
driver = nil,
v = 0,
last_v = 0,
- removed = false
+ removed = false,
+ auto = false
}
local name = clicker:get_player_name()
if self.driver and clicker == self.driver then
self.driver = nil
+ self.auto = false
clicker:set_detach()
player_api.player_attached[name] = false
player_api.set_animation(clicker, "stand" , 30)
function boat.on_step(self, dtime)
self.v = get_v(self.object:get_velocity()) * get_sign(self.v)
if self.driver then
+ local driver_name = self.driver:get_player_name()
local ctrl = self.driver:get_player_control()
- local yaw = self.object:get_yaw()
- if ctrl.up then
- self.v = self.v + 0.1
+ if ctrl.up and ctrl.down then
+ if not self.auto then
+ self.auto = true
+ minetest.chat_send_player(driver_name,
+ "[boats] Cruise on")
+ end
elseif ctrl.down then
self.v = self.v - 0.1
+ if self.auto then
+ self.auto = false
+ minetest.chat_send_player(driver_name,
+ "[boats] Cruise off")
+ end
+ elseif ctrl.up or self.auto then
+ self.v = self.v + 0.1
end
if ctrl.left then
if self.v < 0 then
- self.object:set_yaw(yaw - (1 + dtime) * 0.03)
+ self.object:set_yaw(self.object:get_yaw() - (1 + dtime) * 0.03)
else
- self.object:set_yaw(yaw + (1 + dtime) * 0.03)
+ self.object:set_yaw(self.object:get_yaw() + (1 + dtime) * 0.03)
end
elseif ctrl.right then
if self.v < 0 then
- self.object:set_yaw(yaw + (1 + dtime) * 0.03)
+ self.object:set_yaw(self.object:get_yaw() + (1 + dtime) * 0.03)
else
- self.object:set_yaw(yaw - (1 + dtime) * 0.03)
+ self.object:set_yaw(self.object:get_yaw() - (1 + dtime) * 0.03)
end
end
end