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
+8
View File
@@ -777,11 +777,19 @@ function ADRunsController.findWrongCargoDump(adEnv, run, vehicle, targetId)
return nil return nil
end end
local farmId = ADSmartPickup.getFarmId(vehicle) local farmId = ADSmartPickup.getFarmId(vehicle)
-- 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 for _, entry in ipairs(getTargetStations(adEnv, run, farmId)) do
if ADSmartPickup.getStationLevelAndCapacity(entry.station, fillType, farmId) ~= nil then if ADSmartPickup.getStationLevelAndCapacity(entry.station, fillType, farmId) ~= nil then
return nil return nil
end end
end end
end
local isReachable = function(markerId) local isReachable = function(markerId)
return ADUnloadWait.hasRouteTo == nil or ADUnloadWait.hasRouteTo(adEnv, vehicle, markerId) return ADUnloadWait.hasRouteTo == nil or ADUnloadWait.hasRouteTo(adEnv, vehicle, markerId)
end end
+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 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) 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)) 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 return true
end end
+1 -1
View File
@@ -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.18.6.0</version> <version>1.18.7.0</version>
<title> <title>
<en>AD Smart Pickup</en> <en>AD Smart Pickup</en>
</title> </title>
+7 -1
View File
@@ -1,6 +1,6 @@
# AD Smart Pickup — brugermanual # AD Smart Pickup — brugermanual
Version 1.18.6 · Farming Simulator 25 · tillæg til AutoDrive Version 1.18.7 · Farming Simulator 25 · tillæg til AutoDrive
*English version: [USER_MANUAL.md](USER_MANUAL.md)* *English version: [USER_MANUAL.md](USER_MANUAL.md)*
@@ -218,6 +218,12 @@ ensilage, hø, halm og mineralfoder af sig selv. Slukker du den, holder traktore
som kortet selv har slukket på grund af manglende input, tæller som ønskede, for dem skal der netop som kortet selv har slukket på grund af manglende input, tæller som ønskede, for dem skal der netop
fyldes på. fyldes på.
### Forkert last på vognen
Har en traktor en vare på vognen, som ikke er en af flowets varer, køres den først til en silo, der
tager varen. Den afleveres ikke ved flowets mål, heller ikke når målet tager varen. Med **Vælg** tæller
kun de afkrydsede varer. Med **Auto** tæller alt, målet tager.
### Bedste foder først ### Bedste foder først
Foder i et stald-trug deler plads. Står bedre foder som **TMR** på listen, hentes lavere foder som Foder i et stald-trug deler plads. Står bedre foder som **TMR** på listen, hentes lavere foder som
+7 -1
View File
@@ -1,6 +1,6 @@
# AD Smart Pickup — user manual # AD Smart Pickup — user manual
Version 1.18.6 · Farming Simulator 25 · add-on for AutoDrive Version 1.18.7 · Farming Simulator 25 · add-on for AutoDrive
*Dansk version: [BRUGERMANUAL.md](BRUGERMANUAL.md)* *Dansk version: [BRUGERMANUAL.md](BRUGERMANUAL.md)*
@@ -220,6 +220,12 @@ silage, hay, straw and mineral feed by itself. Switch it off, and the tractor st
the map switched off because an input ran out still count as wanted, because those are exactly the the map switched off because an input ran out still count as wanted, because those are exactly the
ones that need filling. ones that need filling.
### Wrong cargo on the trailer
If a tractor has a good on the trailer that is not one of the flow's goods, it first takes it to a
silo that accepts it. It is not unloaded at the flow's target, even when the target accepts the good.
With **Select**, only the ticked goods count. With **Auto**, everything the target accepts counts.
### Best feed first ### Best feed first
Feed in a barn trough shares space. If better feed such as **TMR** is on the list, lower feed such Feed in a barn trough shares space. If better feed such as **TMR** is on the list, lower feed such
+13
View File
@@ -440,6 +440,19 @@ sugarVehicle.loadType = TMR
sugarVehicle.ad.stateModule.active = false sugarVehicle.ad.stateModule.active = false
ADRunsController.startRun(adEnv, sugar.id) ADRunsController.startRun(adEnv, sugar.id)
check("C18 rigtig last -> målet", sugarVehicle.ad.stateModule.secondMarkerId, 77) check("C18 rigtig last -> målet", sugarVehicle.ad.stateModule.secondMarkerId, 77)
-- C18b: målet TAGER varen, men den er ikke en af run'ets valgte varer (gødning i en ensilage-DOB)
-- -> aflæs i en silo der tager den, ikke i målet
unloadAt[77].accepts = {[TMR] = 360000, [STRAW] = 360000}
ADRunsController.updateRun(sugar.id, {ingredientMode = "manual", ingredients = {"FORAGE"}})
sugarVehicle.loadType = STRAW
sugarVehicle.ad.stateModule.active = false
ADRunsController.startRun(adEnv, sugar.id)
check("C18b forkert vare for run'et -> silo, ikke målet", sugarVehicle.ad.stateModule.secondMarkerId, 44)
-- auto-varer: alt målet tager hører til -> målet
ADRunsController.updateRun(sugar.id, {ingredientMode = "auto", ingredients = {}})
sugarVehicle.ad.stateModule.active = false
ADRunsController.startRun(adEnv, sugar.id)
check("C18b auto: målet tager varen -> målet", sugarVehicle.ad.stateModule.secondMarkerId, 77)
ADUnloadWait = nil; ADLoadSwap = nil ADUnloadWait = nil; ADLoadSwap = nil
-- C19: Wait-markører er aldrig mål — heller ikke når de står inden for 40 m af staldens trigger -- C19: Wait-markører er aldrig mål — heller ikke når de står inden for 40 m af staldens trigger