From ee230ae248996cd7f190bc2610c662bc07170f21 Mon Sep 17 00:00:00 2001 From: masterdraco Date: Wed, 23 Sep 2026 01:24:17 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20guard=20vejnet-afstand=20(k=C3=B8ret?= =?UTF-8?q?=C3=B8jer=20uden=20getClosestWayPoint),=20kun=20motoriserede=20?= =?UTF-8?q?k=C3=B8ret=C3=B8jer=20i=20listen=20(v1.9.5.0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FS25_ADSmartPickup/adRunsController.lua | 12 ++++++++++-- FS25_ADSmartPickup/modDesc.xml | 2 +- tests/test_adRunsController.lua | 1 + 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/FS25_ADSmartPickup/adRunsController.lua b/FS25_ADSmartPickup/adRunsController.lua index 0050b1c..021f7f8 100644 --- a/FS25_ADSmartPickup/adRunsController.lua +++ b/FS25_ADSmartPickup/adRunsController.lua @@ -40,7 +40,9 @@ function ADRunsController.getFarmVehicles(adEnv) local farmId = g_currentMission:getFarmId() local result = {} 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) end end @@ -230,7 +232,13 @@ function ADRunsController.validateVehicle(adEnv, run, vehicle) result.reason = "cannotCarry" return result 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 result.reason = "farFromNetwork" return result diff --git a/FS25_ADSmartPickup/modDesc.xml b/FS25_ADSmartPickup/modDesc.xml index 321cdd3..192fc56 100644 --- a/FS25_ADSmartPickup/modDesc.xml +++ b/FS25_ADSmartPickup/modDesc.xml @@ -1,7 +1,7 @@ masterdraco - 1.9.4.0 + 1.9.5.0 <en>AD Smart Pickup</en> diff --git a/tests/test_adRunsController.lua b/tests/test_adRunsController.lua index bf70daa..bca8adb 100644 --- a/tests/test_adRunsController.lua +++ b/tests/test_adRunsController.lua @@ -86,6 +86,7 @@ local function makeVehicle(uniqueId, name, carriable, capacity, x, z) getName = function() return name end, getOwnerFarmId = function() return 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, ad = {stateModule = stateModule, settings = {rotateTargets = {values = {1, 2, 3, 4}, current = 1, new = 1, isVehicleSpecific = true}}}, }