Try to fix most warnings reported by luacheck
This commit is contained in:
parent
0f729daf5e
commit
3040a5c890
46
.luacheckrc
Normal file
46
.luacheckrc
Normal file
@ -0,0 +1,46 @@
|
||||
-- Disable some (non critical) warnings
|
||||
-- unused = false
|
||||
unused_args = false
|
||||
redefined = false
|
||||
|
||||
globals = {
|
||||
"airutils",
|
||||
}
|
||||
|
||||
read_globals = {
|
||||
"DIR_DELIM",
|
||||
"ItemStack",
|
||||
"PseudoRandom",
|
||||
"basic_machines",
|
||||
"biomass",
|
||||
"climate_api",
|
||||
"core",
|
||||
"creative",
|
||||
"default",
|
||||
"dump",
|
||||
"emote",
|
||||
"math",
|
||||
"mcl_formspec",
|
||||
"mcl_player",
|
||||
"minetest",
|
||||
"player_api",
|
||||
"signs_lib",
|
||||
"skins",
|
||||
"string",
|
||||
"technic",
|
||||
"vector",
|
||||
"wardrobe",
|
||||
}
|
||||
|
||||
-- Per file options
|
||||
files["airutils_biofuel.lua"] = {
|
||||
globals = {"basic_machines.grinder_recipes"},
|
||||
}
|
||||
|
||||
files["lib_planes/utilities.lua"] = {
|
||||
globals = {"player_api.player_attached.?", "mcl_player.player_attached.?"}
|
||||
}
|
||||
|
||||
files["pilot_skin_manager.lua"] = {
|
||||
globals = {"skins.skin_class.apply_skin_to_player"}
|
||||
}
|
@ -75,7 +75,7 @@ local ferment_groups = {'flora', 'leaves', 'flower', 'sapling', 'tree', 'wood',
|
||||
local biofueldistiller_formspec = "size[8,9]"
|
||||
.. "list[current_name;src;2,1;1,1;]" .. airutils.get_itemslot_bg(2, 1, 1, 1)
|
||||
.. "list[current_name;dst;5,1;1,1;]" .. airutils.get_itemslot_bg(5, 1, 1, 1)
|
||||
.. "list[current_player;main;0,5;8,4;]" .. airutils.get_itemslot_bg(0, 5, 8, 4)
|
||||
.. "list[current_player;main;0,5;8,4;]" .. airutils.get_itemslot_bg(0, 5, 8, 4)
|
||||
.. "listring[current_name;dst]"
|
||||
.. "listring[current_player;main]"
|
||||
.. "listring[current_name;src]"
|
||||
@ -138,9 +138,6 @@ minetest.register_node( module_name .. ":biofuel_distiller", {
|
||||
return 0
|
||||
end
|
||||
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
|
||||
if listname == "src" then
|
||||
return stack:get_count()
|
||||
elseif listname == "dst" then
|
||||
@ -154,10 +151,6 @@ minetest.register_node( module_name .. ":biofuel_distiller", {
|
||||
return 0
|
||||
end
|
||||
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
local stack = inv:get_stack(from_list, from_index)
|
||||
|
||||
if to_list == "src" then
|
||||
return count
|
||||
elseif to_list == "dst" then
|
||||
|
@ -19,7 +19,6 @@ function airutils.PAPIplace(player,pos)
|
||||
end
|
||||
|
||||
local dir = minetest.dir_to_facedir(player:get_look_dir())
|
||||
local pos1 = vector.new(pos)
|
||||
|
||||
local player_name = player:get_player_name()
|
||||
if check_protection(pos, player_name) then
|
||||
@ -45,7 +44,7 @@ function airutils.togglePapiSide(pos, node, clicker, itemstack)
|
||||
local dir=node.param2
|
||||
if node.name == "airutils:papi_right" then
|
||||
core.set_node(pos, {name="airutils:papi", param2=dir})
|
||||
meta:set_string("infotext", S("PAPI") .. " - " .. S("left side") .. "\r" .. S("Owned by: @1",player_name))
|
||||
meta:set_string("infotext", S("PAPI") .. " - " .. S("left side") .. "\r" .. S("Owned by: @1",player_name))
|
||||
elseif node.name == "airutils:papi" then
|
||||
core.set_node(pos, {name="airutils:papi_right", param2=dir})
|
||||
meta:set_string("infotext", S("PAPI") .. " - " .. S("right side") .. "\r" .. S("Owned by: @1",player_name))
|
||||
@ -107,11 +106,6 @@ minetest.register_node("airutils:papi",{
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
local itmstck=puncher:get_wielded_item()
|
||||
local item_name = ""
|
||||
if itmstck then item_name = itmstck:get_name() end
|
||||
|
||||
end,
|
||||
})
|
||||
|
||||
@ -123,7 +117,7 @@ function airutils.remove_papi(pos)
|
||||
local dir=node.param2
|
||||
if node.name == "airutils:papi_right" then
|
||||
core.set_node(pos, {name="airutils:papi", param2=dir})
|
||||
meta:set_string("infotext", "PAPI - left side\rOwned by: "..player_name)
|
||||
meta:set_string("infotext", "PAPI - left side\rOwned by: "..player_name)
|
||||
end
|
||||
|
||||
meta:set_string("owner", player_name)
|
||||
@ -161,11 +155,6 @@ minetest.register_node("airutils:papi_right",{
|
||||
if player_name ~= meta:get_string("owner") then
|
||||
return
|
||||
end
|
||||
|
||||
local itmstck=puncher:get_wielded_item()
|
||||
local item_name = ""
|
||||
if itmstck then item_name = itmstck:get_name() end
|
||||
|
||||
end,
|
||||
})
|
||||
|
||||
|
@ -50,9 +50,8 @@ minetest.register_tool("airutils:tug", {
|
||||
return
|
||||
end
|
||||
|
||||
local is_admin = false
|
||||
is_admin = minetest.check_player_privs(player, {server=true})
|
||||
|
||||
local is_admin = minetest.check_player_privs(player, {server=true})
|
||||
|
||||
local pos = player:get_pos()
|
||||
local pname = player:get_player_name()
|
||||
|
||||
|
@ -47,7 +47,7 @@ airutils.wind_selection_box = {
|
||||
local function get_smooth(angle_initial, reference, last_ref, value)
|
||||
local range = reference-last_ref
|
||||
local retVal = (value*angle_initial)/range
|
||||
retval = angle_initial - retVal
|
||||
local retval = angle_initial - retVal
|
||||
if retval < 0 then retval = 0 end
|
||||
return retval
|
||||
end
|
||||
@ -55,7 +55,7 @@ end
|
||||
minetest.register_entity("airutils:wind_indicator",{
|
||||
-- common props
|
||||
physical = true,
|
||||
stepheight = 0.5,
|
||||
stepheight = 0.5,
|
||||
collide_with_objects = true,
|
||||
collisionbox = {-0.5, 0, -0.5, 0.5, 5.0, 0.5},
|
||||
visual = "mesh",
|
||||
@ -113,14 +113,13 @@ minetest.register_entity("airutils:wind_indicator",{
|
||||
on_punch=function(self, puncher)
|
||||
return
|
||||
end,
|
||||
|
||||
|
||||
on_rightclick = function(self, clicker)
|
||||
local wind = airutils.get_wind(pos, 2.0)
|
||||
local wind = airutils.get_wind(self.object:get_pos(), 2.0)
|
||||
local wind_yaw = minetest.dir_to_yaw(wind)
|
||||
minetest.chat_send_player(clicker:get_player_name(),core.colorize('#00ff00', S(" >>> The wind direction now is @1", math.deg(wind_yaw))))
|
||||
return
|
||||
end,
|
||||
|
||||
})
|
||||
|
||||
|
||||
@ -141,13 +140,13 @@ minetest.register_node("airutils:wind",{
|
||||
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
|
||||
{-0.1, 0.5, -0.1, 0.1, 2.0, 0.1}
|
||||
}
|
||||
},
|
||||
|
||||
},
|
||||
|
||||
node_dig_prediction = "default:dirt",
|
||||
node_placement_prediction = "airutils:wind",
|
||||
|
||||
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
|
||||
|
||||
local pos = pointed_thing.above
|
||||
|
||||
local player_name = placer:get_player_name()
|
||||
@ -156,7 +155,6 @@ minetest.register_node("airutils:wind",{
|
||||
if not minetest.is_protected(pos, player_name) and not minetest.is_protected(pos, player_name) then
|
||||
minetest.set_node(pos, {name = "airutils:wind",param2 = 1 })
|
||||
minetest.add_entity({x=pos.x, y=pos.y, z=pos.z},"airutils:wind_indicator")
|
||||
local meta = minetest.get_meta(pos)
|
||||
if not (creative and creative.is_enabled_for and creative.is_enabled_for(player_name)) then
|
||||
itemstack:take_item()
|
||||
end
|
||||
@ -168,7 +166,7 @@ minetest.register_node("airutils:wind",{
|
||||
|
||||
return itemstack
|
||||
end,
|
||||
|
||||
|
||||
on_destruct = function(pos)
|
||||
local meta=minetest.get_meta(pos)
|
||||
if meta then
|
||||
|
@ -29,12 +29,11 @@ function airutils.get_attached_entity(self)
|
||||
if not self._vehicle_custom_data then return nil, nil end
|
||||
if not self._vehicle_custom_data.simple_external_attach_entity then return nil, nil end
|
||||
|
||||
local entity_name = self._vehicle_custom_data.simple_external_attach_entity
|
||||
local inv_id = self._vehicle_custom_data.simple_external_attach_invid
|
||||
|
||||
local pos = self.object:get_pos()
|
||||
local nearby_objects = minetest.get_objects_inside_radius(pos, 32)
|
||||
for i,obj in ipairs(nearby_objects) do
|
||||
for i,obj in ipairs(nearby_objects) do
|
||||
local ent = obj:get_luaentity()
|
||||
if ent then
|
||||
if ent._inv_id then
|
||||
@ -85,12 +84,12 @@ function airutils.simple_external_attach(self, relative_pos, entity_name, radius
|
||||
attach_up = attach_up or false
|
||||
radius = radius or 12
|
||||
if self.object then
|
||||
local curr_ent, curr_obj = airutils.get_attached_entity(self)
|
||||
local curr_ent, _ = airutils.get_attached_entity(self)
|
||||
if curr_ent then return end
|
||||
|
||||
local pos = self.object:get_pos()
|
||||
local nearby_objects = minetest.get_objects_inside_radius(pos, radius)
|
||||
for i,obj in ipairs(nearby_objects) do
|
||||
for i,obj in ipairs(nearby_objects) do
|
||||
if obj == self.object then
|
||||
table.remove(nearby_objects,i)
|
||||
end
|
||||
@ -98,7 +97,7 @@ function airutils.simple_external_attach(self, relative_pos, entity_name, radius
|
||||
if ent then
|
||||
if ent.name == entity_name then
|
||||
airutils.attach_external_object(self, nearby_objects[i], ent, pos, relative_pos, attach_up)
|
||||
return
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -109,10 +108,9 @@ end
|
||||
function airutils.restore_external_attach(self)
|
||||
if not self._vehicle_custom_data then return end
|
||||
if not self._vehicle_custom_data.simple_external_attach_invid then return end
|
||||
|
||||
|
||||
local pos = self.object:get_pos()
|
||||
local dest_pos = vector.new(pos)
|
||||
local entity_name = self._vehicle_custom_data.simple_external_attach_entity
|
||||
local relative_pos = self._vehicle_custom_data.simple_external_attach_pos
|
||||
local inv_id = self._vehicle_custom_data.simple_external_attach_invid
|
||||
dest_pos = vector.add(dest_pos, relative_pos)
|
||||
@ -126,7 +124,7 @@ function airutils.restore_external_attach(self)
|
||||
--minetest.chat_send_all(dump(ent.name))
|
||||
if ent._inv_id then
|
||||
--minetest.chat_send_all(">> "..dump(ent._inv_id).." >> "..dump(inv_id))
|
||||
if ent._inv_id == inv_id and (not (ent._inv_id == self._inv_id)) then
|
||||
if ent._inv_id == inv_id and ent._inv_id ~= self._inv_id then
|
||||
--minetest.chat_send_all("++ "..dump(ent._inv_id).." ++ "..dump(inv_id))
|
||||
local target_obj = nearby_objects[i]
|
||||
target_obj:set_pos(dest_pos)
|
||||
@ -173,7 +171,7 @@ minetest.register_chatcommand("remove_hook", {
|
||||
local velocity = rem_ent.object:get_velocity()
|
||||
|
||||
local move = 0
|
||||
if rem_ent._vehicle_custom_data.simple_external_attach_pos then
|
||||
if rem_ent._vehicle_custom_data.simple_external_attach_pos then
|
||||
move = -1*rem_ent._vehicle_custom_data.simple_external_attach_pos.z/10
|
||||
end
|
||||
pos.x = pos.x + move * math.sin(direction)
|
||||
|
@ -10,15 +10,15 @@ initial_properties = {
|
||||
mesh = "airutils_seat_base.b3d",
|
||||
textures = {"airutils_alpha.png",},
|
||||
},
|
||||
|
||||
|
||||
on_activate = function(self,std)
|
||||
self.sdata = minetest.deserialize(std) or {}
|
||||
if self.sdata.remove then self.object:remove() end
|
||||
end,
|
||||
|
||||
|
||||
get_staticdata=function(self)
|
||||
self.sdata.remove=true
|
||||
return minetest.serialize(self.sdata)
|
||||
end,
|
||||
|
||||
|
||||
})
|
||||
|
17
init.lua
17
init.lua
@ -300,15 +300,6 @@ end
|
||||
-- max_height: the max ceilling for the airplane
|
||||
-- wingspan: for ground effect calculation
|
||||
function airutils.getLiftAccel(self, velocity, accel, longit_speed, roll, curr_pos, in_lift, max_height, wingspan)
|
||||
local new_velocity = vector.new(velocity)
|
||||
if not self._min_collective then --ignore if it is an helicopter
|
||||
--add wind to the lift calcs
|
||||
local wind = airutils.get_wind(curr_pos, 5)
|
||||
local accel_wind = vector.subtract(accel, wind) --why? because I need to fake more speed when against the wind to gain lift
|
||||
local vel_wind = vector.multiply(accel_wind, self.dtime)
|
||||
new_velocity = vector.add(new_velocity, vel_wind)
|
||||
end
|
||||
|
||||
if longit_speed == nil then longit_speed = 0 end
|
||||
wingspan = wingspan or 10
|
||||
local lift = in_lift
|
||||
@ -374,7 +365,7 @@ function airutils.getLiftAccel(self, velocity, accel, longit_speed, roll, curr_p
|
||||
retval = vector.add(retval,lift_acc)
|
||||
-----------------------------------------------------------
|
||||
-- end lift
|
||||
|
||||
|
||||
return retval
|
||||
end
|
||||
|
||||
@ -439,7 +430,7 @@ function airutils.set_paint(self, puncher, itmstck, texture_name)
|
||||
else
|
||||
--painting with dyes
|
||||
local split = string.split(item_name, ":")
|
||||
local color, indx, _
|
||||
local indx, _
|
||||
if split[1] then _,indx = split[1]:find('dye') end
|
||||
if indx then
|
||||
--[[for clr,_ in pairs(airutils.colors) do
|
||||
@ -469,7 +460,7 @@ function airutils._set_name(self)
|
||||
if not airutils._use_signs_api then return end
|
||||
local l_textures = self.object:get_properties().textures --self.initial_properties.textures
|
||||
for _, texture in ipairs(l_textures) do
|
||||
indx = texture:find('airutils_name_canvas.png')
|
||||
local indx = texture:find('airutils_name_canvas.png')
|
||||
if indx then
|
||||
l_textures[_] = "airutils_name_canvas.png^"..airutils.convert_text_to_texture(self._ship_name, self._name_color or 0, self._name_hor_aligment or 0.8)
|
||||
end
|
||||
@ -606,7 +597,6 @@ minetest.register_chatcommand("ground_effect", {
|
||||
description = S("Enables/disables the ground effect (for debug purposes)"),
|
||||
privs = {server=true},
|
||||
func = function(name, param)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if minetest.check_player_privs(name, {server=true}) then
|
||||
if param == "on" or param == "" then
|
||||
airutils.ground_effect_is_disabled = nil
|
||||
@ -626,7 +616,6 @@ minetest.register_chatcommand("show_lift", {
|
||||
description = S("Enables/disables the lift printing (for debug purposes)"),
|
||||
privs = {server=true},
|
||||
func = function(name, param)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if minetest.check_player_privs(name, {server=true}) then
|
||||
if param == "on" or param == "" then
|
||||
airutils.show_lift = name
|
||||
|
@ -4,33 +4,10 @@ local S = airutils.S
|
||||
|
||||
dofile(minetest.get_modpath("airutils") .. DIR_DELIM .. "lib_planes" .. DIR_DELIM .. "utilities.lua")
|
||||
|
||||
local function floating_auto_correction(self, dtime)
|
||||
local factor = 1
|
||||
local range = 0.03 --above and bellow
|
||||
|
||||
if self._wing_configuration > self._stable_collective + range or
|
||||
self._wing_configuration < self._stable_collective - range then
|
||||
return
|
||||
end
|
||||
|
||||
--minetest.chat_send_player(self.driver_name, "antes: " .. self._air_float)
|
||||
if self._wing_configuration > self._stable_collective then factor = -1 end
|
||||
local time_correction = (dtime/airutils.ideal_step)
|
||||
if time_correction < 1 then time_correction = 1 end
|
||||
local intensity = 1
|
||||
local correction = (intensity*factor) * time_correction
|
||||
|
||||
local new_wing_configuration = self._wing_configuration + correction
|
||||
|
||||
self._wing_configuration = new_wing_configuration
|
||||
|
||||
--minetest.chat_send_all(dump(self._wing_configuration))
|
||||
end
|
||||
|
||||
local function set_yaw_by_mouse(self, dir)
|
||||
local rotation = self.object:get_rotation()
|
||||
local rot_y = math.deg(rotation.y)
|
||||
|
||||
|
||||
local total = math.abs(math.floor(rot_y/360))
|
||||
|
||||
if rot_y < 0 then rot_y = rot_y + (360*total) end
|
||||
@ -40,7 +17,7 @@ local function set_yaw_by_mouse(self, dir)
|
||||
|
||||
local intensity = self._yaw_intensity / 10
|
||||
local command = (rot_y - dir) * intensity
|
||||
if command < -90 then command = -90
|
||||
if command < -90 then command = -90
|
||||
elseif command > 90 then command = 90 end
|
||||
--minetest.chat_send_all("rotation y: "..rot_y.." - dir: "..dir.." - command: "..command)
|
||||
|
||||
@ -62,7 +39,7 @@ function airutils.heli_control(self, dtime, hull_direction, longit_speed, longit
|
||||
local retval_accel = accel
|
||||
|
||||
local stop = false
|
||||
local ctrl = nil
|
||||
local ctrl
|
||||
|
||||
local time_correction = (dtime/airutils.ideal_step)
|
||||
if time_correction < 1 then time_correction = 1 end
|
||||
@ -78,12 +55,8 @@ function airutils.heli_control(self, dtime, hull_direction, longit_speed, longit
|
||||
|
||||
if not self._acceleration then self._acceleration = 0 end
|
||||
if not self._lat_acceleration then self._lat_acceleration = 0 end
|
||||
|
||||
|
||||
if self._engine_running then
|
||||
--engine acceleration calc
|
||||
|
||||
local factor = 1
|
||||
|
||||
--control lift
|
||||
local collective_up_max = 1.2
|
||||
local min_angle = self._min_collective
|
||||
@ -137,7 +110,7 @@ function airutils.heli_control(self, dtime, hull_direction, longit_speed, longit
|
||||
end
|
||||
elseif ctrl.left then
|
||||
yaw_cmd = -1
|
||||
if later_speed > -self._max_speed and self._yaw_by_mouse then
|
||||
if later_speed > -self._max_speed and self._yaw_by_mouse then
|
||||
self._lat_acceleration = self._lat_acceleration + (-acc_fraction)
|
||||
else
|
||||
self._lat_acceleration = 0
|
||||
@ -187,7 +160,7 @@ function airutils.heli_control(self, dtime, hull_direction, longit_speed, longit
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
return retval_accel, stop
|
||||
end
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
dofile(minetest.get_modpath("airutils") .. DIR_DELIM .. "lib_planes" .. DIR_DELIM .. "global_definitions.lua")
|
||||
|
||||
function engineSoundPlay(self, increment, base)
|
||||
local function engineSoundPlay(self, increment, base)
|
||||
increment = increment or 0.0
|
||||
--sound
|
||||
if self.sound_handle then minetest.sound_stop(self.sound_handle) end
|
||||
@ -17,14 +17,14 @@ end
|
||||
|
||||
local function engine_set_sound_and_animation(self, is_flying, newpitch, newroll)
|
||||
is_flying = is_flying or false
|
||||
|
||||
|
||||
if self._engine_running then --engine running
|
||||
if not self.sound_handle then
|
||||
engineSoundPlay(self, 0.0, 0.9)
|
||||
end
|
||||
--self._cmd_snd
|
||||
if self._snd_last_cmd ~= self._cmd_snd then
|
||||
local increment = 0.0
|
||||
local increment
|
||||
self._snd_last_cmd = self._cmd_snd
|
||||
if self._cmd_snd then increment = 0.1 else increment = 0.0 end
|
||||
engineSoundPlay(self, increment, 0.9)
|
||||
@ -34,7 +34,7 @@ local function engine_set_sound_and_animation(self, is_flying, newpitch, newroll
|
||||
else
|
||||
if is_flying then --autorotation here
|
||||
if self._snd_last_cmd ~= self._cmd_snd then
|
||||
local increment = 0.0
|
||||
local increment
|
||||
self._snd_last_cmd = self._cmd_snd
|
||||
if self._cmd_snd then increment = 0.1 else increment = 0.0 end
|
||||
engineSoundPlay(self, increment, 0.6)
|
||||
@ -100,7 +100,6 @@ function airutils.logic_heli(self)
|
||||
local rotation = self.object:get_rotation()
|
||||
local yaw = rotation.y
|
||||
local newyaw=yaw
|
||||
local pitch = rotation.x
|
||||
local roll = rotation.z
|
||||
|
||||
local hull_direction = airutils.rot_to_dir(rotation) --minetest.yaw_to_dir(yaw)
|
||||
@ -118,7 +117,6 @@ function airutils.logic_heli(self)
|
||||
local accel = vector.add(longit_drag,later_drag)
|
||||
local stop = false
|
||||
|
||||
local node_bellow = airutils.nodeatpos(airutils.pos_shift(curr_pos,{y=-1.3}))
|
||||
local is_flying = true
|
||||
if self.colinfo then
|
||||
is_flying = (not self.colinfo.touching_ground)
|
||||
@ -290,7 +288,7 @@ function airutils.logic_heli(self)
|
||||
self._last_accell = new_accel
|
||||
self.object:move_to(curr_pos)
|
||||
--airutils.set_acceleration(self.object, new_accel)
|
||||
local limit = self._climb_speed
|
||||
--local limit = self._climb_speed
|
||||
--if new_accel.y > limit then new_accel.y = limit end --it isn't a rocket :/
|
||||
|
||||
else
|
||||
|
@ -11,7 +11,6 @@ function airutils.powerAdjust(self,dtime,factor,dir,max_power)
|
||||
local max = max_power or 100
|
||||
local add_factor = factor/2
|
||||
add_factor = add_factor * (dtime/airutils.ideal_step) --adjusting the command speed by dtime
|
||||
local power_index = self._power_lever
|
||||
|
||||
if dir == 1 then
|
||||
if self._power_lever < max then
|
||||
@ -46,7 +45,7 @@ function airutils.control(self, dtime, hull_direction, longit_speed, longit_drag
|
||||
|
||||
if ctrl.aux1 and self._last_time_command > 0.5 then
|
||||
self._last_time_command = 0
|
||||
|
||||
|
||||
end
|
||||
----------------------------------
|
||||
-- flap operation
|
||||
@ -150,8 +149,7 @@ function airutils.control(self, dtime, hull_direction, longit_speed, longit_drag
|
||||
|
||||
if longit_speed > 0 then
|
||||
if ctrl then
|
||||
if ctrl.right or ctrl.left then
|
||||
else
|
||||
if not (ctrl.right or ctrl.left) then
|
||||
airutils.rudder_auto_correction(self, longit_speed, dtime)
|
||||
end
|
||||
else
|
||||
@ -178,11 +176,9 @@ function airutils.set_pitch(self, dir, dtime)
|
||||
local multiplier = pitch_factor*(dtime/airutils.ideal_step)
|
||||
if dir == -1 then
|
||||
--minetest.chat_send_all("cabrando")
|
||||
if self._elevator_angle > 0 then pitch_factor = pitch_factor * 2 end
|
||||
self._elevator_angle = math.max(self._elevator_angle-multiplier,-self._elevator_limit)
|
||||
elseif dir == 1 then
|
||||
--minetest.chat_send_all("picando")
|
||||
if self._angle_of_attack < 0 then pitch_factor = 1 end --lets reduce the command power to avoid accidents
|
||||
self._elevator_angle = math.min(self._elevator_angle+multiplier,self._elevator_limit)
|
||||
end
|
||||
end
|
||||
@ -192,11 +188,9 @@ function airutils.set_autopilot_pitch(self, dir, dtime)
|
||||
local multiplier = pitch_factor*(dtime/airutils.ideal_step)
|
||||
if dir == -1 then
|
||||
--minetest.chat_send_all("cabrando")
|
||||
if self._elevator_angle > 0 then pitch_factor = pitch_factor * 2 end
|
||||
self._elevator_angle = math.max(self._elevator_angle-multiplier,-self._elevator_limit)
|
||||
elseif dir == 1 then
|
||||
--minetest.chat_send_all("picando")
|
||||
if self._angle_of_attack < 0 then pitch_factor = 1 end --lets reduce the command power to avoid accidents
|
||||
self._elevator_angle = math.min(self._elevator_angle+multiplier,self._elevator_limit)
|
||||
end
|
||||
end
|
||||
@ -204,7 +198,7 @@ end
|
||||
function airutils.set_yaw_by_mouse(self, dir)
|
||||
local rotation = self.object:get_rotation()
|
||||
local rot_y = math.deg(rotation.y)
|
||||
|
||||
|
||||
local total = math.abs(math.floor(rot_y/360))
|
||||
|
||||
if rot_y < 0 then rot_y = rot_y + (360*total) end
|
||||
@ -214,7 +208,7 @@ function airutils.set_yaw_by_mouse(self, dir)
|
||||
|
||||
local intensity = self._yaw_intensity / 10
|
||||
local command = (rot_y - dir) * intensity
|
||||
if command < -90 then command = -90
|
||||
if command < -90 then command = -90
|
||||
elseif command > 90 then command = 90 end
|
||||
--minetest.chat_send_all("rotation y: "..rot_y.." - dir: "..dir.." - command: "..command)
|
||||
|
||||
@ -243,22 +237,12 @@ function airutils.rudder_auto_correction(self, longit_speed, dtime)
|
||||
end
|
||||
end
|
||||
|
||||
--obsolete, will be removed
|
||||
function getAdjustFactor(curr_y, desired_y)
|
||||
local max_difference = 0.1
|
||||
local adjust_factor = 0.5
|
||||
local difference = math.abs(curr_y - desired_y)
|
||||
if difference > max_difference then difference = max_difference end
|
||||
return (difference * adjust_factor) / max_difference
|
||||
end
|
||||
|
||||
function airutils.autopilot(self, dtime, hull_direction, longit_speed, accel, curr_pos)
|
||||
|
||||
local retval_accel = accel
|
||||
|
||||
if not self._have_auto_pilot then return end
|
||||
|
||||
local max_autopilot_power = 85
|
||||
local max_attack_angle = 1.8
|
||||
|
||||
--climb
|
||||
|
@ -30,7 +30,6 @@ function airutils.physics(self)
|
||||
end
|
||||
|
||||
if self.isinliquid then
|
||||
local accell = {x=0, y=0, z=0}
|
||||
self.water_drag = 0.2
|
||||
self.isinliquid = true
|
||||
local height = self.height
|
||||
@ -38,7 +37,7 @@ function airutils.physics(self)
|
||||
-- local balance = self.buoyancy*self.height
|
||||
local buoyacc = airutils.gravity*(self.buoyancy-submergence)
|
||||
--local buoyacc = self._baloon_buoyancy*(self.buoyancy-submergence)
|
||||
accell = {
|
||||
local accell = {
|
||||
x=-vel.x*self.water_drag,
|
||||
y=buoyacc-(vel.y*math.abs(vel.y)*0.4),
|
||||
z=-vel.z*self.water_drag
|
||||
@ -53,7 +52,7 @@ function airutils.physics(self)
|
||||
else
|
||||
--airutils.set_acceleration(self.object,{x=0,y=airutils.gravity,z=0})
|
||||
self.isinliquid = false
|
||||
|
||||
|
||||
if last_accel then
|
||||
last_accel.y = last_accel.y + airutils.gravity --gravity here
|
||||
|
||||
@ -71,7 +70,7 @@ function airutils.physics(self)
|
||||
-- bounciness
|
||||
if self.springiness and self.springiness > 0 and self.buoyancy >= 1 then
|
||||
local vnew = vector.new(new_velocity)
|
||||
|
||||
|
||||
if not self.collided then -- ugly workaround for inconsistent collisions
|
||||
for _,k in ipairs({'y','z','x'}) do
|
||||
if new_velocity[k]==0 and math.abs(self.lastvelocity[k])> 0.1 then
|
||||
@ -79,7 +78,7 @@ function airutils.physics(self)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if not vector.equals(new_velocity,vnew) then
|
||||
self.collided = true
|
||||
else
|
||||
|
@ -76,7 +76,7 @@ function airutils.on_activate(self, staticdata, dtime_s)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
self._climb_rate = 0
|
||||
self._yaw = 0
|
||||
self._roll = 0
|
||||
@ -99,7 +99,7 @@ function airutils.on_activate(self, staticdata, dtime_s)
|
||||
if self._anim_start_frame then
|
||||
start_frame = self._anim_start_frame
|
||||
end_frame = self._anim_start_frame + self._anim_frames
|
||||
end
|
||||
end
|
||||
|
||||
self.object:set_animation({x = start_frame, y = end_frame}, 0, 0, true)
|
||||
if self.wheels then
|
||||
@ -135,7 +135,7 @@ function airutils.on_step(self,dtime,colinfo)
|
||||
self.dtime = math.min(dtime,0.2)
|
||||
self.colinfo = colinfo
|
||||
self.height = airutils.get_box_height(self)
|
||||
|
||||
|
||||
-- physics comes first
|
||||
local vel = self.object:get_velocity()
|
||||
local pos = self.object:get_pos()
|
||||
@ -154,8 +154,8 @@ function airutils.on_step(self,dtime,colinfo)
|
||||
props.show_on_minimap = false
|
||||
self.object:set_properties(props)
|
||||
end
|
||||
|
||||
if colinfo then
|
||||
|
||||
if colinfo then
|
||||
self.isonground = colinfo.touching_ground
|
||||
else
|
||||
if self.lastvelocity.y==0 and vel.y==0 then
|
||||
@ -164,7 +164,7 @@ function airutils.on_step(self,dtime,colinfo)
|
||||
self.isonground = false
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if self.hp_max <= 0 then
|
||||
airutils.destroy(self)
|
||||
end
|
||||
@ -174,7 +174,7 @@ function airutils.on_step(self,dtime,colinfo)
|
||||
if self.logic then
|
||||
self:logic()
|
||||
end
|
||||
|
||||
|
||||
self.lastvelocity = self.object:get_velocity()
|
||||
self.time_total=self.time_total+self.dtime
|
||||
end
|
||||
@ -205,7 +205,7 @@ local function ground_pitch(self, longit_speed, curr_pitch)
|
||||
|
||||
if newpitch > math.rad(self._tail_angle) then newpitch = math.rad(self._tail_angle) end --não queremos arrastar o cauda no chão
|
||||
end
|
||||
|
||||
|
||||
return newpitch
|
||||
end
|
||||
|
||||
@ -280,7 +280,6 @@ function airutils.logic(self)
|
||||
local rotation = self.object:get_rotation()
|
||||
local yaw = rotation.y
|
||||
local newyaw=yaw
|
||||
local pitch = rotation.x
|
||||
local roll = rotation.z
|
||||
local newroll=roll
|
||||
newroll = math.floor(newroll/360)
|
||||
@ -411,11 +410,12 @@ function airutils.logic(self)
|
||||
|
||||
--is an stall, force a recover
|
||||
if longit_speed < (self._min_speed+0.5) and climb_rate < -1.5 and is_flying then
|
||||
--[[
|
||||
if player and self.driver_name then
|
||||
--minetest.chat_send_player(self.driver_name,core.colorize('#ff0000', " >>> STALL"))
|
||||
minetest.chat_send_player(self.driver_name,core.colorize('#ff0000', " >>> STALL"))
|
||||
end
|
||||
]]--
|
||||
self._elevator_angle = 0
|
||||
actuator_angle = 0
|
||||
self._angle_of_attack = -1
|
||||
newpitch = math.rad(self._angle_of_attack)
|
||||
else
|
||||
@ -439,7 +439,7 @@ function airutils.logic(self)
|
||||
end --limiting the very high climb angle due to strange behavior]]--]]--
|
||||
|
||||
if self._inverted_pitch_reaction then self._elevator_angle = -1*actuator_angle end --revert the reversion
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@ -516,7 +516,7 @@ function airutils.logic(self)
|
||||
--end accell
|
||||
|
||||
--get disconnected players
|
||||
if not self._autoflymode == true then
|
||||
if self._autoflymode ~= true then
|
||||
airutils.rescueConnectionFailedPassengers(self)
|
||||
end
|
||||
|
||||
@ -557,7 +557,7 @@ function airutils.logic(self)
|
||||
if longit_speed > self._min_speed*0.66 then
|
||||
--[[lets do something interesting:
|
||||
here I'll fake the longit speed effect for takeoff, to force the airplane
|
||||
to use more runway
|
||||
to use more runway
|
||||
]]--
|
||||
local factorized_longit_speed = longit_speed
|
||||
if is_flying == false and airutils.quadBezier then
|
||||
@ -727,27 +727,26 @@ function airutils.on_punch(self, puncher, ttime, toolcaps, dir, damage)
|
||||
end
|
||||
if self._vehicle_name then airutils.setText(self, self._vehicle_name) end
|
||||
|
||||
if (string.find(puncher:get_wielded_item():get_name(), "rayweapon") or
|
||||
if (string.find(puncher:get_wielded_item():get_name(), "rayweapon") or
|
||||
toolcaps.damage_groups.vehicle) then
|
||||
damage_vehicle(self, toolcaps, ttime, damage)
|
||||
end
|
||||
|
||||
local is_admin = false
|
||||
is_admin = minetest.check_player_privs(puncher, {server=true})
|
||||
local is_admin = minetest.check_player_privs(puncher, {server=true})
|
||||
if self.owner == nil then
|
||||
self.owner = name
|
||||
end
|
||||
if self.owner and self.owner ~= name and self.owner ~= "" then
|
||||
if is_admin == false then return end
|
||||
end
|
||||
|
||||
|
||||
if is_admin == false and minetest.check_player_privs(puncher, {protection_bypass=false}) then
|
||||
if self.driver_name and self.driver_name ~= name then
|
||||
-- do not allow other players to remove the object while there is a driver
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local is_attached = false
|
||||
local player_attach = puncher:get_attach()
|
||||
if player_attach then
|
||||
@ -758,7 +757,7 @@ function airutils.on_punch(self, puncher, ttime, toolcaps, dir, damage)
|
||||
is_attached = true
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if puncher:get_attach() == self.object then is_attached = true end
|
||||
--if puncher:get_attach() == self.pilot_seat_base then is_attached = true end
|
||||
|
||||
@ -831,9 +830,9 @@ local function get_vehicle(self, player)
|
||||
local lua_ent = self.object:get_luaentity()
|
||||
local staticdata = lua_ent:get_staticdata(self)
|
||||
local obj_name = lua_ent.name
|
||||
local pos = self.object:get_pos()
|
||||
|
||||
local stack = ItemStack(obj_name)
|
||||
local max = stack:get_stack_max()
|
||||
local tool = false
|
||||
if stack:get_stack_max() == 1 then tool = true end
|
||||
|
||||
@ -863,7 +862,7 @@ local function get_vehicle(self, player)
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
@ -886,8 +885,6 @@ function airutils.on_rightclick(self, clicker)
|
||||
|
||||
--minetest.chat_send_all(dump(self.driver_name))
|
||||
|
||||
local touching_ground, liquid_below = airutils.check_node_below(self.object, 2.5)
|
||||
local is_on_ground = self.isinliquid or touching_ground or liquid_below
|
||||
local is_under_water = airutils.check_is_under_water(self.object)
|
||||
|
||||
--minetest.chat_send_all('name '.. dump(name) .. ' - pilot: ' .. dump(self.driver_name) .. ' - pax: ' .. dump(copilot_name))
|
||||
@ -900,7 +897,7 @@ function airutils.on_rightclick(self, clicker)
|
||||
local plane = seat:get_attach()
|
||||
if plane == self.object then is_attached = true end
|
||||
end
|
||||
|
||||
|
||||
if name == self.driver_name then
|
||||
if is_attached then
|
||||
local itmstck=clicker:get_wielded_item()
|
||||
@ -946,8 +943,6 @@ function airutils.on_rightclick(self, clicker)
|
||||
if self.owner == name or minetest.check_player_privs(clicker, {protection_bypass=true}) then
|
||||
|
||||
local itmstck=clicker:get_wielded_item()
|
||||
local item_name = ""
|
||||
if itmstck then item_name = itmstck:get_name() end
|
||||
|
||||
if itmstck then
|
||||
if airutils.set_param_paint(self, clicker, itmstck, 2) == true then
|
||||
@ -963,10 +958,10 @@ function airutils.on_rightclick(self, clicker)
|
||||
else
|
||||
if is_under_water then return end
|
||||
|
||||
--remove the passengers first
|
||||
--remove the passengers first
|
||||
local max_seats = table.getn(self._seats)
|
||||
for i = max_seats,1,-1
|
||||
do
|
||||
do
|
||||
if self._passengers[i] and self._passengers[i] ~= "" then
|
||||
local passenger = minetest.get_player_by_name(self._passengers[i])
|
||||
if passenger then airutils.dettach_pax(self, passenger) end
|
||||
|
@ -87,7 +87,7 @@ function airutils.pilot_formspec(name)
|
||||
ver_pos = ver_pos + 0.5
|
||||
expand_form = true
|
||||
end
|
||||
|
||||
|
||||
if ent._have_copilot and name == ent.driver_name then
|
||||
basic_form = basic_form.."button[6,"..ver_pos..";4,1;copilot_form;" .. S("Co-pilot Manager") .. "]"
|
||||
ver_pos = ver_pos + 1.25
|
||||
@ -101,7 +101,7 @@ function airutils.pilot_formspec(name)
|
||||
end
|
||||
|
||||
if ent._have_manual then
|
||||
basic_form = basic_form.."button[6,5.2;4,1;manual;" .. S("Manual") .. "]"
|
||||
basic_form = basic_form.."button[6,5.2;4,1;manual;" .. S("Manual") .. "]"
|
||||
expand_form = true
|
||||
end
|
||||
|
||||
@ -168,8 +168,6 @@ function airutils.adf_formspec(name)
|
||||
z = math.floor(ent._adf_destiny.z)
|
||||
end
|
||||
end
|
||||
else
|
||||
--return
|
||||
end
|
||||
|
||||
local basic_form = table.concat({
|
||||
@ -280,7 +278,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
airutils.attach_pax(ent, player)
|
||||
end
|
||||
if fields.go_out then
|
||||
local touching_ground, liquid_below = airutils.check_node_below(plane_obj, 2.5)
|
||||
local touching_ground, _ = airutils.check_node_below(plane_obj, 2.5)
|
||||
if ent.isinliquid or touching_ground then --isn't flying?
|
||||
airutils.dettach_pax(ent, player)
|
||||
else
|
||||
@ -308,21 +306,20 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
if fields.go_out then
|
||||
local touch_point = ent.initial_properties.collisionbox[2]-1.0
|
||||
-----////
|
||||
local is_on_ground = false
|
||||
local pos = plane_obj:get_pos()
|
||||
pos.y = pos.y + touch_point
|
||||
local node_below = minetest.get_node(pos).name
|
||||
local nodedef = minetest.registered_nodes[node_below]
|
||||
is_on_ground = not nodedef or nodedef.walkable or false -- unknown nodes are solid
|
||||
local is_on_ground = not nodedef or nodedef.walkable or false -- unknown nodes are solid
|
||||
|
||||
if ent.driver_name == name and ent.owner == ent.driver_name then --just the owner can do this
|
||||
--minetest.chat_send_all(dump(noded))
|
||||
if is_on_ground then --or clicker:get_player_control().sneak then
|
||||
--minetest.chat_send_all(dump("is on ground"))
|
||||
--remove the passengers first
|
||||
--remove the passengers first
|
||||
local max_seats = table.getn(ent._seats)
|
||||
for i = max_seats,1,-1
|
||||
do
|
||||
do
|
||||
--minetest.chat_send_all("index: "..i.." - "..dump(ent._passengers[i]))
|
||||
if ent._passengers[i] then
|
||||
local passenger = minetest.get_player_by_name(ent._passengers[i])
|
||||
@ -409,8 +406,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
if fields.copilot then
|
||||
--look for a free seat first
|
||||
local is_there_a_free_seat = false
|
||||
for i = 2,1,-1
|
||||
do
|
||||
for i = 2,1,-1
|
||||
do
|
||||
if ent._passengers[i] == nil then
|
||||
is_there_a_free_seat = true
|
||||
break
|
||||
|
@ -25,10 +25,10 @@ function airutils.loadFuel(self, player_name)
|
||||
self._energy = self._energy + fuel
|
||||
if self._energy > self._max_fuel then self._energy = self._max_fuel end
|
||||
|
||||
local energy_indicator_angle = airutils.get_gauge_angle(self._energy)
|
||||
--local energy_indicator_angle = airutils.get_gauge_angle(self._energy)
|
||||
--self.fuel_gauge:set_attach(self.object,'',self._gauge_fuel_position,{x=0,y=0,z=energy_indicator_angle})
|
||||
end
|
||||
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
|
@ -1,15 +1,16 @@
|
||||
--[[
|
||||
local function get_pointer(pointer_angle, gauge_center_x, gauge_center_y, full_pointer)
|
||||
full_pointer = full_pointer or 1
|
||||
local retval = ""
|
||||
local ind_pixel = "airutils_ind_box_2.png"
|
||||
|
||||
pointer_img_size = 8
|
||||
local pointer_img_size = 8
|
||||
local pointer_rad = math.rad(pointer_angle)
|
||||
local dim = 2*(pointer_img_size/2)
|
||||
local pos_x = math.sin(pointer_rad) * dim
|
||||
local pos_y = math.cos(pointer_rad) * dim
|
||||
retval = retval..(gauge_center_x+pos_x)..","..(gauge_center_y+pos_y).."="..ind_pixel..":"
|
||||
|
||||
|
||||
dim = 4*(pointer_img_size/2)
|
||||
pos_x = math.sin(pointer_rad) * dim
|
||||
pos_y = math.cos(pointer_rad) * dim
|
||||
@ -33,10 +34,11 @@ local function get_pointer(pointer_angle, gauge_center_x, gauge_center_y, full_p
|
||||
end
|
||||
return retval
|
||||
end
|
||||
]]--
|
||||
|
||||
function airutils.plot_altimeter_gauge(self, scale, place_x, place_y)
|
||||
local bg_width_height = 100
|
||||
local pointer_img = 8
|
||||
local pointer_img = 8
|
||||
local gauge_center = (bg_width_height / 2) - (pointer_img/2)
|
||||
local gauge_center_x = place_x + gauge_center
|
||||
local gauge_center_y = place_y + gauge_center
|
||||
@ -76,7 +78,7 @@ end
|
||||
|
||||
function airutils.plot_fuel_gauge(self, scale, place_x, place_y)
|
||||
local bg_width_height = 100
|
||||
local pointer_img = 8
|
||||
local pointer_img = 8
|
||||
local gauge_center = (bg_width_height / 2) - (pointer_img/2)
|
||||
local gauge_center_x = place_x + gauge_center
|
||||
local gauge_center_y = place_y + gauge_center
|
||||
@ -95,7 +97,7 @@ end
|
||||
|
||||
function airutils.plot_speed_gauge(self, scale, place_x, place_y)
|
||||
local bg_width_height = 100
|
||||
local pointer_img = 8
|
||||
local pointer_img = 8
|
||||
local gauge_center = (bg_width_height / 2) - (pointer_img/2)
|
||||
local gauge_center_x = place_x + gauge_center
|
||||
local gauge_center_y = place_y + gauge_center
|
||||
@ -114,7 +116,7 @@ end
|
||||
|
||||
function airutils.plot_power_gauge(self, scale, place_x, place_y)
|
||||
local bg_width_height = 100
|
||||
local pointer_img = 8
|
||||
local pointer_img = 8
|
||||
local gauge_center = (bg_width_height / 2) - (pointer_img/2)
|
||||
local gauge_center_x = place_x + gauge_center
|
||||
local gauge_center_y = place_y + gauge_center
|
||||
|
@ -73,7 +73,7 @@ function airutils.update_hud(player, climb, speed, power, fuel)
|
||||
scale = { x = 0.5, y = 0.5},
|
||||
alignment = { x = 1, y = 0 },
|
||||
})
|
||||
|
||||
|
||||
ids["clb_pt_1"] = player:hud_add({
|
||||
hud_elem_type = "image",
|
||||
position = {x = 0, y = 1},
|
||||
|
@ -17,11 +17,3 @@ dofile(minetest.get_modpath("airutils") .. DIR_DELIM .. "lib_planes" .. DIR_DELI
|
||||
--
|
||||
-- items
|
||||
--
|
||||
|
||||
settings = Settings(minetest.get_worldpath() .. "/settings.conf")
|
||||
local function fetch_setting(name)
|
||||
local sname = name
|
||||
return settings and settings:get(sname) or minetest.settings:get(sname)
|
||||
end
|
||||
|
||||
|
||||
|
@ -77,7 +77,7 @@ function airutils.attach(self, player, instructor_mode)
|
||||
eye_y = -4
|
||||
--airutils.seat_create(self, 1)
|
||||
--airutils.seat_create(self, 2)
|
||||
|
||||
|
||||
if not self.co_pilot_seat_base then
|
||||
self.co_pilot_seat_base = self._passengers_base[2]
|
||||
end
|
||||
@ -99,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
|
||||
@ -173,8 +173,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
|
||||
@ -272,7 +272,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] = ""
|
||||
break
|
||||
@ -365,10 +365,10 @@ function airutils.destroy(self, by_name, by_automation)
|
||||
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] and self._passengers[i] ~= "" then
|
||||
local passenger = minetest.get_player_by_name(self._passengers[i])
|
||||
if passenger then airutils.dettach_pax(self, passenger) end
|
||||
@ -535,7 +535,6 @@ function airutils.testImpact(self, velocity, position)
|
||||
}, true)
|
||||
self.hp_max = self.hp_max - self._damage_by_wind_speed
|
||||
if self.driver_name then
|
||||
local player_name = self.driver_name
|
||||
airutils.setText(self, self._vehicle_name)
|
||||
end
|
||||
if self.hp_max < 0 then --if acumulated damage is greater than 50, adieu
|
||||
@ -580,7 +579,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
|
||||
@ -621,8 +620,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] and self._passengers[i] ~= "" then
|
||||
local player = minetest.get_player_by_name(self._passengers[i])
|
||||
if player then --we have a player!
|
||||
@ -672,11 +671,11 @@ function airutils.checkattachBug(self)
|
||||
local base_value = 1.0
|
||||
if self._seat_check_interval == nil then self._seat_check_interval = base_value end
|
||||
self._seat_check_interval = self._seat_check_interval + self.dtime
|
||||
|
||||
|
||||
if self._seat_check_interval >= base_value then
|
||||
self._seat_check_interval = 0
|
||||
local max_seats = table.getn(self._seats)
|
||||
for i = max_seats,1,-1
|
||||
for i = max_seats,1,-1
|
||||
do
|
||||
if self._passengers[i] and self._passengers[i] ~= "" then
|
||||
local player = minetest.get_player_by_name(self._passengers[i])
|
||||
@ -734,7 +733,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
|
||||
@ -751,7 +750,7 @@ function airutils.set_param_paint(self, puncher, itmstck, mode)
|
||||
else
|
||||
--painting with dyes
|
||||
local split = string.split(item_name, ":")
|
||||
local color, indx, _
|
||||
local indx, _
|
||||
if split[1] then _,indx = split[1]:find('dye') end
|
||||
if indx then
|
||||
self._skin = ""
|
||||
@ -784,7 +783,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)
|
||||
@ -879,7 +878,7 @@ end
|
||||
function airutils.paint_with_mask(self, colstr, target_texture, mask_texture)
|
||||
if colstr then
|
||||
self._color = colstr
|
||||
self._det_color = mask_colstr
|
||||
self._det_color = mask_colstr -- !!! accessing undefined variable mask_colstr
|
||||
local l_textures = self.initial_properties.textures
|
||||
for _, texture in ipairs(l_textures) do
|
||||
local indx = texture:find(target_texture)
|
||||
@ -904,7 +903,7 @@ function airutils.pid_controller(current_value, setpoint, last_error, d_time, kp
|
||||
local _error = setpoint - current_value
|
||||
local derivative = _error - last_error
|
||||
--local output = kpv*erro + (kpv/Tiv)*I + kpv*Tdv*((erro - erro_passado)/delta_t);
|
||||
if integrative == nil then integrative = 0 end
|
||||
if integrative == nil then integrative = 0 end -- !!! accessing undefined variable integrative
|
||||
integrative = integrative + (((_error + last_error)/delta_t)/2);
|
||||
local output = kp*_error + (kp/ti)*integrative + kp * td*((_error - last_error)/delta_t)
|
||||
last_error = _error
|
||||
@ -927,7 +926,6 @@ function airutils.add_smoke_trail(self, smoke_type)
|
||||
end
|
||||
|
||||
if self._smoke_spawner == nil then
|
||||
local radius = 1
|
||||
self._smoke_spawner = minetest.add_particlespawner({
|
||||
amount = 3,
|
||||
time = 0,
|
||||
@ -1017,7 +1015,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
|
||||
@ -1044,7 +1042,7 @@ function airutils.add_blast_damage(pos, radius, damage_cal)
|
||||
}, nil)
|
||||
end
|
||||
for _, item in pairs(entity_drops) do
|
||||
add_drop(drops, item)
|
||||
add_drop(drops, item) -- !!! accessing undefined variable add_drop, drops
|
||||
end
|
||||
end
|
||||
|
||||
@ -1114,7 +1112,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
|
||||
@ -1129,7 +1127,7 @@ function airutils.seats_create(self)
|
||||
local pos = self.object:get_pos()
|
||||
self._passengers_base = {}
|
||||
self._passengers = {}
|
||||
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')
|
||||
@ -1154,7 +1152,7 @@ function airutils.seat_create(self, index)
|
||||
local pos = self.object:get_pos()
|
||||
if not self._passengers_base then
|
||||
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] = 0
|
||||
@ -1162,7 +1160,7 @@ function airutils.seat_create(self, index)
|
||||
end
|
||||
end
|
||||
if self._passengers_base[index] == 0 then
|
||||
if self._seats then
|
||||
if self._seats then
|
||||
local max_seats = table.getn(self._seats)
|
||||
for i=1, max_seats do
|
||||
if i == index then
|
||||
@ -1179,8 +1177,7 @@ end
|
||||
|
||||
function airutils.seats_update(self)
|
||||
if self.object then
|
||||
local pos = self.object:get_pos()
|
||||
if self._passengers_base then
|
||||
if self._passengers_base then
|
||||
local max_seats = table.getn(self._passengers_base)
|
||||
for i=1, max_seats do
|
||||
if self._passengers_base[i] then
|
||||
@ -1324,8 +1321,6 @@ function airutils.destroyed_save_static_data(self)
|
||||
end
|
||||
|
||||
function airutils.destroyed_on_activate(self, staticdata, dtime_s)
|
||||
local pos = self.object:get_pos()
|
||||
|
||||
if staticdata ~= "" and staticdata ~= nil then
|
||||
local data = minetest.deserialize(staticdata) or {}
|
||||
self.owner = data.stored_owner
|
||||
@ -1354,7 +1349,6 @@ local function check_shared_by_time(self)
|
||||
end
|
||||
|
||||
function airutils.destroyed_open_inventory(self, clicker)
|
||||
local message = ""
|
||||
if not clicker or not clicker:is_player() then
|
||||
return
|
||||
end
|
||||
@ -1386,8 +1380,7 @@ function airutils.destroyed_on_punch(self, puncher, ttime, toolcaps, dir, damage
|
||||
local shared_by_time = check_shared_by_time(self)
|
||||
local pos = self.object:get_pos()
|
||||
|
||||
local is_admin = false
|
||||
is_admin = minetest.check_player_privs(puncher, {server=true})
|
||||
local is_admin = minetest.check_player_privs(puncher, {server=true})
|
||||
if shared_by_time == false then
|
||||
if self.owner and self.owner ~= name and self.owner ~= "" then
|
||||
if is_admin == false then return end
|
||||
|
@ -45,7 +45,7 @@ function airutils.swap_node(self, pos)
|
||||
count = count + 1
|
||||
target_pos.y = target_pos.y + 1
|
||||
end
|
||||
|
||||
|
||||
if have_air then
|
||||
minetest.set_node(target_pos, {name='airutils:light'})
|
||||
airutils.remove_light(self)
|
||||
|
@ -48,7 +48,7 @@ function airutils.get_stand_pos(thing) -- thing can be luaentity or objectref.
|
||||
pos = thing:get_pos()
|
||||
if not thing:get_properties() then return false end
|
||||
colbox = thing:get_properties().collisionbox
|
||||
else
|
||||
else
|
||||
return false
|
||||
end
|
||||
return airutils.pos_shift(pos,{y=colbox[2]+0.01}), pos
|
||||
@ -78,7 +78,7 @@ function airutils.set_acceleration(thing,vec,limit)
|
||||
vec.x=airutils.minmax(vec.x,limit)
|
||||
vec.y=airutils.minmax(vec.y,limit)
|
||||
vec.z=airutils.minmax(vec.z,limit)
|
||||
|
||||
|
||||
thing:set_acceleration(vec)
|
||||
end
|
||||
|
||||
@ -86,7 +86,7 @@ function airutils.actfunc(self, staticdata, dtime_s)
|
||||
|
||||
self.logic = self.logic or self.brainfunc
|
||||
self.physics = self.physics or airutils.physics
|
||||
|
||||
|
||||
self.lqueue = {}
|
||||
self.hqueue = {}
|
||||
self.nearby_objects = {}
|
||||
@ -97,29 +97,29 @@ function airutils.actfunc(self, staticdata, dtime_s)
|
||||
self.water_drag = self.water_drag or 1
|
||||
|
||||
local sdata = minetest.deserialize(staticdata)
|
||||
if sdata then
|
||||
if sdata then
|
||||
for k,v in pairs(sdata) do
|
||||
self[k] = v
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if self.textures==nil then
|
||||
local prop_tex = self.object:get_properties().textures
|
||||
if prop_tex then self.textures=prop_tex end
|
||||
end
|
||||
|
||||
|
||||
if not self.memory then -- this is the initial activation
|
||||
self.memory = {}
|
||||
|
||||
self.memory = {}
|
||||
|
||||
-- texture variation
|
||||
if #self.textures > 1 then self.texture_no = random(#self.textures) end
|
||||
end
|
||||
|
||||
|
||||
if self.timeout and ((self.timeout>0 and dtime_s > self.timeout and next(self.memory)==nil) or
|
||||
(self.timeout<0 and dtime_s > abs(self.timeout))) then
|
||||
self.object:remove()
|
||||
end
|
||||
|
||||
|
||||
-- apply texture
|
||||
if self.textures and self.texture_no then
|
||||
local props = {}
|
||||
@ -136,7 +136,7 @@ function airutils.actfunc(self, staticdata, dtime_s)
|
||||
end
|
||||
self.armor_groups.immortal = 1
|
||||
self.object:set_armor_groups(self.armor_groups)
|
||||
|
||||
|
||||
self.buoyancy = self.buoyancy or 0
|
||||
self.oxygen = self.oxygen or self.lung_capacity
|
||||
self.lastvelocity = {x=0,y=0,z=0}
|
||||
@ -147,7 +147,7 @@ function airutils.get_box_height(self)
|
||||
local colbox = self:get_properties().collisionbox
|
||||
local height = 0.1
|
||||
if colbox then height = colbox[5]-colbox[2] end
|
||||
|
||||
|
||||
return height > 0 and height or 0.1
|
||||
end
|
||||
|
||||
@ -155,11 +155,11 @@ function airutils.stepfunc(self,dtime,colinfo)
|
||||
self.dtime = min(dtime,0.2)
|
||||
self.colinfo = colinfo
|
||||
self.height = airutils.get_box_height(self)
|
||||
|
||||
|
||||
-- physics comes first
|
||||
local vel = self.object:get_velocity()
|
||||
|
||||
if colinfo then
|
||||
|
||||
if colinfo then
|
||||
self.isonground = colinfo.touching_ground
|
||||
else
|
||||
if self.lastvelocity.y==0 and vel.y==0 then
|
||||
@ -168,15 +168,15 @@ function airutils.stepfunc(self,dtime,colinfo)
|
||||
self.isonground = false
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
self:physics()
|
||||
|
||||
if self.logic then
|
||||
if self.view_range then self:sensefunc() end
|
||||
self:logic()
|
||||
execute_queues(self)
|
||||
execute_queues(self) -- !!! accessing undefined variable execute_queues
|
||||
end
|
||||
|
||||
|
||||
self.lastvelocity = self.object:get_velocity()
|
||||
self.time_total=self.time_total+self.dtime
|
||||
end
|
||||
|
@ -3,8 +3,6 @@ local S = airutils.S
|
||||
airutils.pilot_textures = {"pilot_clothes1.png","pilot_clothes2.png","pilot_clothes3.png","pilot_clothes4.png",
|
||||
"pilot_novaskin_girl.png","pilot_novaskin_girl_steampunk.png","pilot_novaskin_girl_2.png","pilot_novaskin_girl_steampunk_2.png"}
|
||||
local skinsdb_mod_path = minetest.get_modpath("skinsdb")
|
||||
local backup = "airutils:bcp_last_skin"
|
||||
local curr_skin = "airutils:skin"
|
||||
|
||||
minetest.register_chatcommand("au_uniform", {
|
||||
func = function(name, param)
|
||||
@ -99,7 +97,7 @@ function airutils.set_player_skin(player, skin)
|
||||
else
|
||||
--remove texture
|
||||
local old_texture = player_meta:get_string("backup")
|
||||
if set_skin then
|
||||
if set_skin then -- !!! accessing undefined variable set_skin
|
||||
if player:get_attribute("set_skin:player_skin") ~= nil and player:get_attribute("set_skin:player_skin") ~= "" then
|
||||
old_texture = player:get_attribute("set_skin:player_skin")
|
||||
end
|
||||
|
16
text.lua
16
text.lua
@ -58,20 +58,20 @@ local function clamp_characters(text, max_lenght)
|
||||
local c = ""
|
||||
for i = 1, #new_string, 1 do
|
||||
c = string.sub(new_string,i,i)
|
||||
if not (c == control_char) then
|
||||
if c ~= control_char then
|
||||
count = count + 1
|
||||
end
|
||||
curr_index = i
|
||||
if count == max_lenght then break end
|
||||
end
|
||||
local cutstring = string.sub(new_string,1,curr_index)
|
||||
|
||||
|
||||
--now reconstruct the string
|
||||
local outputstring = ""
|
||||
local control_order_curr_intex = 0
|
||||
for i = 1, #cutstring, 1 do
|
||||
c = string.sub(cutstring,i,i)
|
||||
if not (c == control_char) then
|
||||
if c ~= control_char then
|
||||
outputstring = outputstring .. (c or "")
|
||||
else
|
||||
control_order_curr_intex = control_order_curr_intex + 1
|
||||
@ -92,10 +92,10 @@ local function file_exists(name, return_handle, mode)
|
||||
if (return_handle) then
|
||||
return f
|
||||
end
|
||||
io.close(f)
|
||||
return true
|
||||
else
|
||||
return false
|
||||
io.close(f)
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
@ -217,7 +217,7 @@ local function make_text_texture(text, default_color, line_width, line_height, c
|
||||
table.insert(texture, (":%d,%d=%s"):format(xpos + ch.off, ypos, ch.tex))
|
||||
end
|
||||
table.insert(
|
||||
texture,
|
||||
texture,
|
||||
(":%d,%d="):format(xpos + word.w, ypos) .. char_tex(font_name, " ")
|
||||
)
|
||||
xpos = xpos + word.w + cwidth_tab[" "]
|
||||
|
@ -48,7 +48,7 @@ local function getTexturesFromItem(itemDef)
|
||||
end
|
||||
|
||||
--function to remove duplicates and invalid for textlist
|
||||
function filter_texture_names(list_to_test)
|
||||
local function filter_texture_names(list_to_test)
|
||||
local hash = {}
|
||||
local result = {}
|
||||
for _,v in ipairs(list_to_test) do
|
||||
@ -63,7 +63,7 @@ function filter_texture_names(list_to_test)
|
||||
end
|
||||
|
||||
-- Function to list all loaded textures
|
||||
function listLoadedTextures()
|
||||
local function listLoadedTextures()
|
||||
local loadedTextures = {}
|
||||
|
||||
--nodes
|
||||
|
@ -6,7 +6,7 @@ local function calculateVelocity(magnitude, angle)
|
||||
y = 0, -- Se a velocidade não tem componente z
|
||||
z = magnitude * math.sin(angle),
|
||||
}
|
||||
|
||||
|
||||
return velocity
|
||||
end
|
||||
|
||||
@ -30,14 +30,14 @@ end
|
||||
function airutils.add_splash(pos, yaw, x_pos)
|
||||
local direction = yaw
|
||||
|
||||
local spl_pos = vector.new(pos)
|
||||
local spl_pos = vector.new(pos)
|
||||
--water_particle(spl_pos, {x=0,y=0,z=0})
|
||||
|
||||
--right
|
||||
local move = x_pos/10
|
||||
spl_pos.x = spl_pos.x + move * math.cos(direction)
|
||||
spl_pos.z = spl_pos.z + move * math.sin(direction)
|
||||
|
||||
|
||||
local velocity = calculateVelocity(0.2, yaw)
|
||||
water_particle(spl_pos, velocity)
|
||||
|
||||
@ -46,7 +46,7 @@ function airutils.add_splash(pos, yaw, x_pos)
|
||||
spl_pos = vector.new(pos)
|
||||
spl_pos.x = spl_pos.x + move * math.cos(direction)
|
||||
spl_pos.z = spl_pos.z + move * math.sin(direction)
|
||||
|
||||
|
||||
velocity = calculateVelocity(0.2, yaw - math.rad(180))
|
||||
water_particle(spl_pos, velocity)
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user