@@ -44,7 +44,8 @@ local boat = {
4444 driver = nil ,
4545 v = 0 ,
4646 last_v = 0 ,
47- removed = false
47+ removed = false ,
48+ auto = false
4849}
4950
5051
@@ -55,6 +56,7 @@ function boat.on_rightclick(self, clicker)
5556 local name = clicker :get_player_name ()
5657 if self .driver and clicker == self .driver then
5758 self .driver = nil
59+ self .auto = false
5860 clicker :set_detach ()
5961 player_api .player_attached [name ] = false
6062 player_api .set_animation (clicker , " stand" , 30 )
@@ -130,24 +132,35 @@ end
130132function boat .on_step (self , dtime )
131133 self .v = get_v (self .object :get_velocity ()) * get_sign (self .v )
132134 if self .driver then
135+ local driver_name = self .driver :get_player_name ()
133136 local ctrl = self .driver :get_player_control ()
134- local yaw = self .object :get_yaw ()
135- if ctrl .up then
136- self .v = self .v + 0.1
137+ if ctrl .up and ctrl .down then
138+ if not self .auto then
139+ self .auto = true
140+ minetest .chat_send_player (driver_name ,
141+ " [boats] Cruise on" )
142+ end
137143 elseif ctrl .down then
138144 self .v = self .v - 0.1
145+ if self .auto then
146+ self .auto = false
147+ minetest .chat_send_player (driver_name ,
148+ " [boats] Cruise off" )
149+ end
150+ elseif ctrl .up or self .auto then
151+ self .v = self .v + 0.1
139152 end
140153 if ctrl .left then
141154 if self .v < 0 then
142- self .object :set_yaw (yaw - (1 + dtime ) * 0.03 )
155+ self .object :set_yaw (self . object : get_yaw () - (1 + dtime ) * 0.03 )
143156 else
144- self .object :set_yaw (yaw + (1 + dtime ) * 0.03 )
157+ self .object :set_yaw (self . object : get_yaw () + (1 + dtime ) * 0.03 )
145158 end
146159 elseif ctrl .right then
147160 if self .v < 0 then
148- self .object :set_yaw (yaw + (1 + dtime ) * 0.03 )
161+ self .object :set_yaw (self . object : get_yaw () + (1 + dtime ) * 0.03 )
149162 else
150- self .object :set_yaw (yaw - (1 + dtime ) * 0.03 )
163+ self .object :set_yaw (self . object : get_yaw () - (1 + dtime ) * 0.03 )
151164 end
152165 end
153166 end
0 commit comments