fix(forsyning): forkert last der ikke er en af run'ets valgte varer køres til en silo — også midt i turen — i stedet for at havne i målet (gødning i ensilage-DOB) (v1.18.7.0)

This commit is contained in:
2026-09-24 18:27:54 +02:00
parent a281600760
commit 6d25478783
6 changed files with 49 additions and 6 deletions
+11 -3
View File
@@ -777,9 +777,17 @@ function ADRunsController.findWrongCargoDump(adEnv, run, vehicle, targetId)
return nil
end
local farmId = ADSmartPickup.getFarmId(vehicle)
for _, entry in ipairs(getTargetStations(adEnv, run, farmId)) do
if ADSmartPickup.getStationLevelAndCapacity(entry.station, fillType, farmId) ~= nil then
return nil
-- Lasten hører til run'et: valgte varer ("Vælg"), eller alt målet tager ("Auto"). Kun så afleveres
-- den ved målet — ellers havnede fx gødning i en ensilage-DOB, fordi DOB'en også tager gødning.
if run.ingredientMode == "manual" then
for _, index in ipairs(ADRunsController.getRunIngredients(adEnv, run, vehicle)) do
if index == fillType then return nil end
end
else
for _, entry in ipairs(getTargetStations(adEnv, run, farmId)) do
if ADSmartPickup.getStationLevelAndCapacity(entry.station, fillType, farmId) ~= nil then
return nil
end
end
end
local isReachable = function(markerId)
+10
View File
@@ -921,6 +921,16 @@ local function installLoadWaitHook(adEnv)
local cargoName = g_fillTypeManager ~= nil and g_fillTypeManager:getFillTypeNameByIndex(fillType) or tostring(fillType)
local wantedName = g_fillTypeManager ~= nil and g_fillTypeManager:getFillTypeNameByIndex(pickup.fillType) or tostring(pickup.fillType)
Logging.info(ADSmartPickup.LOG_PREFIX .. "'%s' har %.0f l %s på vognen og skulle hente %s — leverer først det den har", tostring(ADRuns.vehicleLabel(loadTask.vehicle)), liters, tostring(cargoName), tostring(wantedName))
-- hører lasten ikke til run'et (fx gødning i et ensilage-run), køres den til en silo der tager den
local run = ADRunsController ~= nil and ADRunsController.getRunForVehicle(loadTask.vehicle) or nil
if run ~= nil and ADRunsController.findWrongCargoDump ~= nil and ADUnloadWait.setDumpTarget ~= nil then
local stateModule = loadTask.vehicle.ad.stateModule
local current = stateModule.getSecondMarker ~= nil and stateModule:getSecondMarker() or nil
local ok, dump = pcall(ADRunsController.findWrongCargoDump, adEnv, run, loadTask.vehicle, current ~= nil and current.id or nil)
if ok and dump ~= nil then
ADUnloadWait.setDumpTarget(loadTask.vehicle, dump.marker.id)
end
end
return true
end
+1 -1
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<modDesc descVersion="107">
<author>masterdraco</author>
<version>1.18.6.0</version>
<version>1.18.7.0</version>
<title>
<en>AD Smart Pickup</en>
</title>