fix(forsyning): intet at hente til valgt mål -> prøv run'ets andre mål før Wait (to traktorer til samme DOB); hold-tekst siger den reelle grund (v1.18.2.0)
This commit is contained in:
@@ -736,6 +736,37 @@ local function chooseRunTarget(adEnv, driver)
|
|||||||
Logging.info(ADSmartPickup.LOG_PREFIX .. "'%s' kører til %s (%s)", tostring(ADRuns.vehicleLabel(driver)), marker ~= nil and tostring(marker.name) or tostring(targetId), why)
|
Logging.info(ADSmartPickup.LOG_PREFIX .. "'%s' kører til %s (%s)", tostring(ADRuns.vehicleLabel(driver)), marker ~= nil and tostring(marker.name) or tostring(targetId), why)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local tryOtherRunTargets
|
||||||
|
-- Det valgte mål har intet der kan hentes (kilden er tom, eller andre traktorer har allerede læs på vej
|
||||||
|
-- til det): prøv run'ets ANDRE mål, og skift AD's aflæsningsmål til det første der kan forsynes.
|
||||||
|
-- Ellers holdt traktoren ved Wait mens fx fire andre DOB'er ved samme biogasanlæg stod tomme.
|
||||||
|
tryOtherRunTargets = function(adEnv, driver, ingredients)
|
||||||
|
local run = ADRunsController ~= nil and ADRunsController.getRunForVehicle(driver) or nil
|
||||||
|
if run == nil or (run.kind or "supply") ~= "supply" then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
-- AD's mål er midlertidigt en silo (forkert last læsses af): rør det ikke
|
||||||
|
if ADUnloadWait ~= nil and ADUnloadWait.getPendingTargetRestore ~= nil and ADUnloadWait.getPendingTargetRestore(driver) ~= nil then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
local stateModule = driver.ad.stateModule
|
||||||
|
local current = stateModule.getSecondMarker ~= nil and stateModule:getSecondMarker() or nil
|
||||||
|
local currentId = current ~= nil and current.id or nil
|
||||||
|
for _, targetId in ipairs(ADRunsController.getRunTargets(run)) do
|
||||||
|
if targetId ~= currentId then
|
||||||
|
local choice = ADSmartPickup.findSupplyPickup(adEnv, driver, ingredients, targetId)
|
||||||
|
if choice ~= nil and stateModule.setSecondMarkerByWayPointId ~= nil then
|
||||||
|
stateModule:setSecondMarkerByWayPointId(targetId)
|
||||||
|
local marker = adEnv.ADGraphManager.getMapMarkerByWayPointId ~= nil and adEnv.ADGraphManager:getMapMarkerByWayPointId(targetId) or nil
|
||||||
|
Logging.info(ADSmartPickup.LOG_PREFIX .. "'%s' kører til %s (intet at hente til %s)", tostring(ADRuns.vehicleLabel(driver)),
|
||||||
|
marker ~= nil and tostring(marker.name) or tostring(targetId), current ~= nil and tostring(current.name) or "?")
|
||||||
|
return choice
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
-- Samlet valg: behovsstyret med ingrediensliste, ellers mappe-logik. nil = AutoDrives original.
|
-- Samlet valg: behovsstyret med ingrediensliste, ellers mappe-logik. nil = AutoDrives original.
|
||||||
function ADSmartPickup.choosePickup(adEnv, driver)
|
function ADSmartPickup.choosePickup(adEnv, driver)
|
||||||
enRoute[driver] = nil -- ny tur: forrige læs er leveret (eller opgivet)
|
enRoute[driver] = nil -- ny tur: forrige læs er leveret (eller opgivet)
|
||||||
@@ -747,6 +778,9 @@ function ADSmartPickup.choosePickup(adEnv, driver)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local choice = ADSmartPickup.findSupplyPickup(adEnv, driver, ingredients)
|
local choice = ADSmartPickup.findSupplyPickup(adEnv, driver, ingredients)
|
||||||
|
if choice == nil then
|
||||||
|
choice = tryOtherRunTargets(adEnv, driver, ingredients)
|
||||||
|
end
|
||||||
if choice == nil then
|
if choice == nil then
|
||||||
-- Traktor i et forsynings-run uden noget (tilladt) at hente: hold ved Wait og prøv igen, i stedet
|
-- Traktor i et forsynings-run uden noget (tilladt) at hente: hold ved Wait og prøv igen, i stedet
|
||||||
-- for at falde tilbage til mappe-logikken (den henter hvad som helst, fx ensilage i et halvfuldt trug).
|
-- for at falde tilbage til mappe-logikken (den henter hvad som helst, fx ensilage i et halvfuldt trug).
|
||||||
@@ -762,7 +796,7 @@ function ADSmartPickup.choosePickup(adEnv, driver)
|
|||||||
activePickups[driver] = {station = next.station, fillTypes = next.fillTypes, markerName = next.markerName, fillType = next.fillType}
|
activePickups[driver] = {station = next.station, fillTypes = next.fillTypes, markerName = next.markerName, fillType = next.fillType}
|
||||||
return next.markerId
|
return next.markerId
|
||||||
end
|
end
|
||||||
local held = ADOutbound.holdSupplyVehicle(adEnv, driver, run, {"intet at hente (bedste foder mangler, truget ikke nødlidende)"}, replan)
|
local held = ADOutbound.holdSupplyVehicle(adEnv, driver, run, {"intet at hente til nogen af run'ets mål (tom kilde, læs på vej, eller bedste foder mangler)"}, replan)
|
||||||
if held ~= nil then
|
if held ~= nil then
|
||||||
return held
|
return held
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -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.1.0</version>
|
<version>1.18.2.0</version>
|
||||||
<title>
|
<title>
|
||||||
<en>AD Smart Pickup</en>
|
<en>AD Smart Pickup</en>
|
||||||
</title>
|
</title>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# AD Smart Pickup — brugermanual
|
# AD Smart Pickup — brugermanual
|
||||||
|
|
||||||
Version 1.18.1 · Farming Simulator 25 · tillæg til AutoDrive
|
Version 1.18.2 · Farming Simulator 25 · tillæg til AutoDrive
|
||||||
|
|
||||||
*English version: [USER_MANUAL.md](USER_MANUAL.md)*
|
*English version: [USER_MANUAL.md](USER_MANUAL.md)*
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
# AD Smart Pickup — user manual
|
# AD Smart Pickup — user manual
|
||||||
|
|
||||||
Version 1.18.1 · Farming Simulator 25 · add-on for AutoDrive
|
Version 1.18.2 · Farming Simulator 25 · add-on for AutoDrive
|
||||||
|
|
||||||
*Dansk version: [BRUGERMANUAL.md](BRUGERMANUAL.md)*
|
*Dansk version: [BRUGERMANUAL.md](BRUGERMANUAL.md)*
|
||||||
|
|
||||||
|
|||||||
@@ -988,6 +988,27 @@ check("I6 næste tur: halm til stald 2", manager:getNextPickup(i6, false), 21)
|
|||||||
check("I6 mål skiftet til stald 2", i6.ad.stateModule.secondMarkerId, 31)
|
check("I6 mål skiftet til stald 2", i6.ad.stateModule.secondMarkerId, 31)
|
||||||
ADRunsController.store = ADRuns.newStore()
|
ADRunsController.store = ADRuns.newStore()
|
||||||
|
|
||||||
|
-- I7: det valgte mål har intet der kan hentes (TMR-kilden er tom) -> prøv run'ets ANDRE mål før Wait
|
||||||
|
-- (in-game 24/9: to traktorer fik begge 'Biogas Drop 1'; nr. 2 holdt selv om 4 DOB'er var tomme)
|
||||||
|
buildCowWorld()
|
||||||
|
addMarker(31, "Cow 2 Food", "Cow Food", 6000, 0)
|
||||||
|
local cow2LevelsI7 = {[STRAW] = 10000, [TMR] = 100000}
|
||||||
|
table.insert(unloadStations, makeUnloadStation(131, 6000, 10, cow2LevelsI7, {[STRAW] = 100000, [TMR] = 100000}, {name = "kostald 2"}))
|
||||||
|
cowLevels[STRAW], cowLevels[TMR] = 100000, 0 -- stald 1 mangler KUN TMR (mest trængende)
|
||||||
|
stations[1].getFillLevel = function(_, fillType) return fillType == STRAW and 5000 or 0 end -- TMR-kilden tom
|
||||||
|
local i7 = makeSupplyDriver(markerByIndex(21), markerByIndex(30), {TMR, STRAW})
|
||||||
|
i7.uniqueId = "vehicleI7"; i7.carriable = {TMR, STRAW}; i7.trailers = {level = 0, capacity = 8000}
|
||||||
|
i7.ad.stateModule.setSecondMarkerByWayPointId = function(self, id) self.secondMarkerId = id end
|
||||||
|
i7.ad.stateModule.getSecondMarker = function(self) return markerByIndex(self.secondMarkerId or 30) end
|
||||||
|
testVehicles = {i7}
|
||||||
|
ADRunsController.store = ADRuns.newStore()
|
||||||
|
local twoBarnsI7 = ADRunsController.createRun("Kvæg2")
|
||||||
|
ADRunsController.updateRun(twoBarnsI7.id, {targetWayPointIds = {30, 31}})
|
||||||
|
ADRunsController.assignVehicle(twoBarnsI7.id, i7)
|
||||||
|
check("I7 henter halm til det andet mål", manager:getNextPickup(i7, false), 21)
|
||||||
|
check("I7 AD's mål skiftet til stald 2", i7.ad.stateModule.secondMarkerId, 31)
|
||||||
|
ADRunsController.store = ADRuns.newStore()
|
||||||
|
|
||||||
-- ==== V: forkert last på vognen ====
|
-- ==== V: forkert last på vognen ====
|
||||||
-- V1: pålæsning starter med anden vare på vognen -> opgaven afsluttes straks (AD leverer det den har)
|
-- V1: pålæsning starter med anden vare på vognen -> opgaven afsluttes straks (AD leverer det den har)
|
||||||
buildCowWorld()
|
buildCowWorld()
|
||||||
|
|||||||
Reference in New Issue
Block a user