fix: guard vejnet-afstand (køretøjer uden getClosestWayPoint), kun motoriserede køretøjer i listen (v1.9.5.0)
This commit is contained in:
@@ -40,7 +40,9 @@ function ADRunsController.getFarmVehicles(adEnv)
|
|||||||
local farmId = g_currentMission:getFarmId()
|
local farmId = g_currentMission:getFarmId()
|
||||||
local result = {}
|
local result = {}
|
||||||
for _, vehicle in pairs(adEnv.AutoDrive.getAllVehicles()) do
|
for _, vehicle in pairs(adEnv.AutoDrive.getAllVehicles()) do
|
||||||
if vehicle.ad ~= nil and vehicle.getOwnerFarmId ~= nil and vehicle:getOwnerFarmId() == farmId then
|
-- kun motoriserede (traktorer, høstere); AD-spec'en sidder også på redskaber
|
||||||
|
local isMotorized = vehicle.spec_motorized ~= nil or vehicle.spec_motorized == nil and vehicle.startAutoDrive ~= nil
|
||||||
|
if vehicle.ad ~= nil and isMotorized and vehicle.getOwnerFarmId ~= nil and vehicle:getOwnerFarmId() == farmId then
|
||||||
table.insert(result, vehicle)
|
table.insert(result, vehicle)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -230,7 +232,13 @@ function ADRunsController.validateVehicle(adEnv, run, vehicle)
|
|||||||
result.reason = "cannotCarry"
|
result.reason = "cannotCarry"
|
||||||
return result
|
return result
|
||||||
end
|
end
|
||||||
local distance = adEnv.ADGraphManager.getDistanceFromNetwork ~= nil and adEnv.ADGraphManager:getDistanceFromNetwork(vehicle) or 0
|
-- AD's getDistanceFromNetwork kalder vehicle:getClosestWayPoint(), som ikke alle
|
||||||
|
-- AD-køretøjer har (set in-game på en høster) — uden metoden springes tjekket over.
|
||||||
|
local distance = 0
|
||||||
|
if vehicle.getClosestWayPoint ~= nil and adEnv.ADGraphManager.getDistanceFromNetwork ~= nil then
|
||||||
|
local ok, value = pcall(adEnv.ADGraphManager.getDistanceFromNetwork, adEnv.ADGraphManager, vehicle)
|
||||||
|
distance = ok and value or 0
|
||||||
|
end
|
||||||
if distance == nil or distance > ADRunsController.MAX_NETWORK_DISTANCE then
|
if distance == nil or distance > ADRunsController.MAX_NETWORK_DISTANCE then
|
||||||
result.reason = "farFromNetwork"
|
result.reason = "farFromNetwork"
|
||||||
return result
|
return result
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
<modDesc descVersion="107">
|
<modDesc descVersion="107">
|
||||||
<author>masterdraco</author>
|
<author>masterdraco</author>
|
||||||
<version>1.9.4.0</version>
|
<version>1.9.5.0</version>
|
||||||
<title>
|
<title>
|
||||||
<en>AD Smart Pickup</en>
|
<en>AD Smart Pickup</en>
|
||||||
</title>
|
</title>
|
||||||
|
|||||||
@@ -86,6 +86,7 @@ local function makeVehicle(uniqueId, name, carriable, capacity, x, z)
|
|||||||
getName = function() return name end,
|
getName = function() return name end,
|
||||||
getOwnerFarmId = function() return 1 end,
|
getOwnerFarmId = function() return 1 end,
|
||||||
startAutoDrive = function(self) self.ad.stateModule.active = true; self.started = (self.started or 0) + 1 end,
|
startAutoDrive = function(self) self.ad.stateModule.active = true; self.started = (self.started or 0) + 1 end,
|
||||||
|
getClosestWayPoint = function() return nil, 0 end,
|
||||||
stopAutoDrive = function(self) self.ad.stateModule.active = false; self.stopped = (self.stopped or 0) + 1 end,
|
stopAutoDrive = function(self) self.ad.stateModule.active = false; self.stopped = (self.stopped or 0) + 1 end,
|
||||||
ad = {stateModule = stateModule, settings = {rotateTargets = {values = {1, 2, 3, 4}, current = 1, new = 1, isVehicleSpecific = true}}},
|
ad = {stateModule = stateModule, settings = {rotateTargets = {values = {1, 2, 3, 4}, current = 1, new = 1, isVehicleSpecific = true}}},
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user