From 21553a54b3f93d0024467f259cb6c71aed5380c5 Mon Sep 17 00:00:00 2001 From: "Maksym H." Date: Sun, 21 Jul 2024 14:55:15 +0200 Subject: [PATCH] Fix lib_plane `do_attach` --- lib_planes/utilities.lua | 62 ++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/lib_planes/utilities.lua b/lib_planes/utilities.lua index bceb2a5..f0bb5f3 100644 --- a/lib_planes/utilities.lua +++ b/lib_planes/utilities.lua @@ -53,6 +53,23 @@ local function sit_player(player, name) end) end +local function do_attach(self, player, slot) + if slot == 0 then return end + if self._passengers[slot] == nil then + local name = player:get_player_name() + --minetest.chat_send_all(self.driver_name) + self._passengers[slot] = name + player:set_attach(self._passengers_base[slot], "", {x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0}) + + local eye_y = -4 + if airutils.detect_player_api(player) == 1 then + eye_y = 2.5 + end + player:set_eye_offset({x = 0, y = eye_y, z = 2}, {x = 0, y = 3, z = -30}) + sit_player(player, name) + end +end + -- attach player function airutils.attach(self, player, instructor_mode) if self._needed_licence then @@ -82,7 +99,7 @@ function airutils.attach(self, player, instructor_mode) if airutils.detect_player_api(player) == 2 then eye_y = -4 end - + player:set_eye_offset({x = 0, y = eye_y, z = 2}, {x = 0, y = 1, z = -30}) sit_player(player, name) end @@ -121,8 +138,8 @@ function airutils.check_passenger_is_attached(self, name) if self._passenger == name then is_attached = true end if is_attached == false then local max_occupants = table.getn(self._seats) - for i = max_occupants,1,-1 - do + for i = max_occupants,1,-1 + do if self._passengers[i] == name then is_attached = true break @@ -206,7 +223,7 @@ function airutils.dettach_pax(self, player, is_flying) else local max_seats = table.getn(self._seats) for i = max_seats,1,-1 - do + do if self._passengers[i] == name then self._passengers[i] = nil break @@ -269,10 +286,10 @@ function airutils.destroy(self, by_name) self.sound_handle = nil end - --remove the passengers first + --remove the passengers first local max_seats = table.getn(self._seats) for i = max_seats,2,-1 - do + do if self._passengers[i] then local passenger = minetest.get_player_by_name(self._passengers[i]) if passenger then airutils.dettach_pax(self, passenger) end @@ -454,7 +471,7 @@ function airutils.testImpact(self, velocity, position) self._power_lever = 0 self._engine_running = false end - + airutils.setText(self, self._vehicle_name) if self.driver_name then @@ -545,7 +562,7 @@ function airutils.set_param_paint(self, puncher, itmstck, mode) mode = mode or 1 local item_name = "" if itmstck then item_name = itmstck:get_name() end - + if item_name == "automobiles_lib:painter" or item_name == "bike:painter" then self._skin = "" --painting with bike painter @@ -595,7 +612,7 @@ end local function _paint(self, l_textures, colstr, paint_list, mask_associations) paint_list = paint_list or self._painting_texture mask_associations = mask_associations or self._mask_painting_associations - + for _, texture in ipairs(l_textures) do for i, texture_name in ipairs(paint_list) do --textures list local indx = texture:find(texture_name) @@ -807,7 +824,7 @@ function airutils.add_blast_damage(pos, radius, damage_cal) local obj_pos = obj:get_pos() local dist = math.max(1, vector.distance(pos, obj_pos)) local damage = (damage_cal / dist) * radius - + if obj:is_player() then obj:set_hp(obj:get_hp() - damage) else @@ -904,7 +921,7 @@ function airutils.camera_reposition(player, pitch, roll) --minetest.chat_send_all("2") eye_y = -5 end - + local z, y = airutils.get_xz_from_hipotenuse(0, eye_y, pitch, player_properties.eye_height) new_eye_offset.z = z*7 new_eye_offset.y = y*1.5 @@ -918,7 +935,7 @@ function airutils.seats_create(self) if self.object then local pos = self.object:get_pos() self._passengers_base = {} - if self._seats then + if self._seats then local max_seats = table.getn(self._seats) for i=1, max_seats do self._passengers_base[i] = minetest.add_entity(pos,'airutils:seat_base') @@ -1023,23 +1040,6 @@ function airutils.flap_operate(self, player) end end -local function do_attach(self, player, slot) - if slot == 0 then return end - if self._passengers[slot] == nil then - local name = player:get_player_name() - --minetest.chat_send_all(self.driver_name) - self._passengers[slot] = name - player:set_attach(self._passengers_base[slot], "", {x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0}) - - local eye_y = -4 - if airutils.detect_player_api(player) == 1 then - eye_y = 2.5 - end - player:set_eye_offset({x = 0, y = eye_y, z = 2}, {x = 0, y = 3, z = -30}) - sit_player(player, name) - end -end - --this method checks for a disconected player who comes back function airutils.rescueConnectionFailedPassengers(self) if self._disconnection_check_time == nil then self._disconnection_check_time = 1 end @@ -1049,8 +1049,8 @@ function airutils.rescueConnectionFailedPassengers(self) if self._disconnection_check_time > 1 then --minetest.chat_send_all(dump(self._passengers)) self._disconnection_check_time = 0 - for i = max_seats,1,-1 - do + for i = max_seats,1,-1 + do if self._passengers[i] then local player = minetest.get_player_by_name(self._passengers[i]) if player then --we have a player!