Update CTLD.lua (#2164)

#CTLD 
* Fix for helo being no Chinook not finding crates e.g. on a ship or FARP
* `nil` check for static cargo position check
This commit is contained in:
Thomas 2024-08-12 11:39:03 +02:00 committed by GitHub
parent bc9938d08a
commit a54944b021
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -2817,6 +2817,7 @@ function CTLD:_FindCratesNearby( _group, _unit, _dist, _ignoreweight)
local capabilities = {} local capabilities = {}
local maxmass = 2000 local maxmass = 2000
local maxloadable = 2000 local maxloadable = 2000
local IsNoHook = not self:IsHook(_unit)
if not _ignoreweight then if not _ignoreweight then
maxloadable = self:_GetMaxLoadableMass(_unit) maxloadable = self:_GetMaxLoadableMass(_unit)
end end
@ -2830,14 +2831,14 @@ function CTLD:_FindCratesNearby( _group, _unit, _dist, _ignoreweight)
local cargoalive = false -- TODO dyn cargo spawn workaround local cargoalive = false -- TODO dyn cargo spawn workaround
local dcsunit = nil local dcsunit = nil
local dcsunitpos = nil local dcsunitpos = nil
if static.DCSCargoObject then if static and static.DCSCargoObject then
dcsunit = Unit.getByName(static.StaticName) dcsunit = Unit.getByName(static.StaticName)
if dcsunit then if dcsunit then
cargoalive = dcsunit:isExist() ~= nil and true or false cargoalive = dcsunit:isExist() ~= nil and true or false
end end
if cargoalive == true then if cargoalive == true then
local dcsvec3 = dcsunit:getPoint() or dcsunit:getPosition().p or {x=0,y=0,z=0} local dcsvec3 = dcsunit:getPoint() or dcsunit:getPosition().p or {x=0,y=0,z=0}
self:I({dcsvec3 = dcsunit:getPoint(), dcspos = dcsunit:getPosition().p}) self:T({dcsvec3 = dcsunit:getPoint(), dcspos = dcsunit:getPosition().p})
if dcsvec3 then if dcsvec3 then
dcsunitpos = COORDINATE:New(dcsvec3.x,dcsvec3.z,dcsvec3.y) dcsunitpos = COORDINATE:New(dcsvec3.x,dcsvec3.z,dcsvec3.y)
end end
@ -2850,9 +2851,10 @@ function CTLD:_FindCratesNearby( _group, _unit, _dist, _ignoreweight)
local agl = staticpos.y-landheight local agl = staticpos.y-landheight
agl = UTILS.Round(agl,2) agl = UTILS.Round(agl,2)
local GCloaded = agl > 0 and true or false local GCloaded = agl > 0 and true or false
if IsNoHook == true then GCloaded = false end
--- Testing --- Testing
local distance = self:_GetDistance(location,staticpos) local distance = self:_GetDistance(location,staticpos)
self:I({name=static:GetName(),agl=agl,GCloaded=GCloaded,distance=string.format("%.2f",distance or 0)}) self:T({name=static:GetName(),IsNoHook=IsNoHook,agl=agl,GCloaded=GCloaded,distance=string.format("%.2f",distance or 0)})
if (not GCloaded) and distance <= finddist and static and (weight <= maxloadable or _ignoreweight) then if (not GCloaded) and distance <= finddist and static and (weight <= maxloadable or _ignoreweight) then
index = index + 1 index = index + 1
table.insert(found, staticid, cargo) table.insert(found, staticid, cargo)