diff --git a/Moose/Cargo.lua b/Moose/Cargo.lua index bf0409be8..185efc096 100644 --- a/Moose/Cargo.lua +++ b/Moose/Cargo.lua @@ -307,6 +307,7 @@ trace.f( self.ClassName ) end function CARGO:IsLoadedInClient() +trace.f( self.ClassName ) if self:IsStatusLoaded() or self:IsStatusLoading() then return self.CargoClient @@ -656,7 +657,8 @@ trace.f( self.ClassName ) end if SpawnCargo then - self:StatusNone() + self.CargoClient = CLIENT:New( self.CargoClientInitGroupName ) + self:StatusLoaded( self.CargoClient ) end local CargoClientInitGroup = Group.getByName( self.CargoClientInitGroupName ) @@ -782,7 +784,7 @@ trace.f(self.ClassName ) local OnBoarded = false if self.CargoClient and self.CargoClient:ClientGroup() then - if routines.IsUnitInRadius( self.CargoClient:GetClientGroupUnit(), CargoClient:ClientPosition(), 25 ) then + if routines.IsUnitInRadius( self.CargoClient:GetClientGroupUnit(), self.CargoClient:ClientPosition(), 10 ) then -- Switch Cargo from self.CargoClient to Client ... Each cargo can have only one client. So assigning the new client for the cargo is enough. self:StatusLoaded( Client ) diff --git a/Moose/Client.lua b/Moose/Client.lua index 03169e32e..ed8994a53 100644 --- a/Moose/Client.lua +++ b/Moose/Client.lua @@ -86,10 +86,12 @@ trace.f(self.ClassName) local ClientGroup = Group.getByName( self.ClientName ) if ClientGroup then trace.i( self.ClassName, "ClientGroup = " .. self.ClientName ) - if ClientGroup:isExist() and ClientGroup:getID() == UnitData:getGroup():getID() then - trace.i( self.ClassName, "Normal logic" ) - trace.i( self.ClassName, self.ClientName .. " : group found!" ) - return ClientGroup + if ClientGroup:isExist() then + if ClientGroup:getID() == UnitData:getGroup():getID() then + trace.i( self.ClassName, "Normal logic" ) + trace.i( self.ClassName, self.ClientName .. " : group found!" ) + return ClientGroup + end else -- Now we need to resolve the bugs in DCS 1.5 ... -- Consult the database for the units of the Client Group. (ClientGroup:getUnits() returns nil) @@ -113,6 +115,17 @@ trace.f(self.ClassName) end end end + + -- For non player clients + local ClientGroup = Group.getByName( self.ClientName ) + if ClientGroup then + trace.i( self.ClassName, "ClientGroup = " .. self.ClientName ) + if ClientGroup:isExist() then + trace.i( self.ClassName, "Normal logic" ) + trace.i( self.ClassName, self.ClientName .. " : group found!" ) + return ClientGroup + end + end self.ClientGroupID = nil self.ClientGroupUnit = nil diff --git a/Moose/DeployTask.lua b/Moose/DeployTask.lua index 0cc5dd2eb..e27e29898 100644 --- a/Moose/DeployTask.lua +++ b/Moose/DeployTask.lua @@ -98,7 +98,7 @@ trace.f( self.ClassName ) trace.i( self.ClassName, { Cargo.ClassName, Cargo.CargoName, Cargo.CargoType, Cargo.CargoWeight } ) - if Cargo:IsStatusLoaded() then + if Cargo:IsStatusLoaded() and Client == Cargo:IsLoadedInClient() then if Client._Menus[Cargo.CargoType] == nil then Client._Menus[Cargo.CargoType] = {} diff --git a/Moose/PickupTask.lua b/Moose/PickupTask.lua index bad1ea879..52479fa42 100644 --- a/Moose/PickupTask.lua +++ b/Moose/PickupTask.lua @@ -78,7 +78,7 @@ trace.f( self.ClassName ) trace.i( self.ClassName, { Cargo.ClassName, Cargo.CargoName, Cargo.CargoType, Cargo:IsStatusNone(), Cargo:IsStatusLoaded(), Cargo:IsStatusLoading(), Cargo:IsStatusUnLoaded() } ) - if Cargo:IsStatusNone() then + if Cargo:IsStatusNone() or ( Cargo:IsStatusLoaded() and Client ~= Cargo:IsLoadedInClient() ) then local MenuAdd = false if Cargo:IsNear( Client, self.CurrentCargoZone ) then