From de88846166ed86e7e8bfec33d7b354d462fa1ea8 Mon Sep 17 00:00:00 2001 From: masterdraco Date: Sun, 27 Sep 2026 14:20:46 +0200 Subject: [PATCH] =?UTF-8?q?fix(markarbejde):=20'ingen=20maskine=20sendt'?= =?UTF-8?q?=20logger=20hver=20maskine=20med=20rollen=20og=20hvorfor=20(spi?= =?UTF-8?q?ller=20i,=20AD/CP=20k=C3=B8rer,=20opgave,=20marksilo-l=C3=A5n,?= =?UTF-8?q?=20ikke=20i=20fl=C3=A5den);=20manuel-transport-h=C3=B8stere=20a?= =?UTF-8?q?fvises=20ikke=20for=20afstand=20til=20vejnettet=20(v1.38.2.0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FS25_ADSmartPickup/adFieldWork.lua | 17 ++++++++++++++++- FS25_ADSmartPickup/modDesc.xml | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/FS25_ADSmartPickup/adFieldWork.lua b/FS25_ADSmartPickup/adFieldWork.lua index 079d394..d616284 100644 --- a/FS25_ADSmartPickup/adFieldWork.lua +++ b/FS25_ADSmartPickup/adFieldWork.lua @@ -137,6 +137,10 @@ function ADFieldWork.getRigs(adEnv) -- egen parkeringstur) — den må ikke kapres midt i en anden kørsel busy = state.assignments[id] ~= nil or isAdActive(vehicle) or ADCpBridge.isWorking(vehicle) or (ADFieldSilos ~= nil and ADFieldSilos.isLoaned(vehicle)), + -- hvorfor optaget (til loggen, når ingen maskine kan sendes ud) + busyWhy = (state.assignments[id] ~= nil and ("opgave F" .. tostring(state.assignments[id].fieldId))) + or (isAdActive(vehicle) and "AutoDrive kører") or (ADCpBridge.isWorking(vehicle) and "Courseplay kører") + or (ADFieldSilos ~= nil and ADFieldSilos.isLoaned(vehicle) and "lånt af marksilo-flow") or nil, controlled = isControlledByPlayer(vehicle), -- manuel transport: spilleren kører den til marken (for bred til vejene med skærebord) manual = (state.manual or {})[id] == true, @@ -383,6 +387,8 @@ function ADFieldWork.dispatch(adEnv, field, info, decision) local offNetwork = {} local accept = function(candidate) if roleAccept ~= nil and not roleAccept(candidate) then return false end + -- manuel transport: spilleren kører den — afstand til AutoDrive-vejnettet er ligegyldig + if role == "harvester" and candidate.manual then return true end local d = candidate.x ~= nil and ADFieldWork.distanceToNetwork(adEnv, candidate.x, candidate.z) or nil if d ~= nil and d > ADFieldWork.MAX_OFF_NETWORK then table.insert(offNetwork, string.format("'%s' %.0f m", tostring(candidate.label), d)) @@ -410,7 +416,16 @@ function ADFieldWork.dispatch(adEnv, field, info, decision) local noRigKey = tostring(role) .. ":" .. tostring(why) if lastNoRig[field.id] ~= noRigKey then lastNoRig[field.id] = noRigKey - log(field.id, "ingen maskine sendt til %s: %s", tostring(role), tostring(why)) + -- hvem har rollen, og hvorfor kan de ikke bruges (in-game 27/9: "allBusy" uden at sige hvem) + local who = {} + for _, candidate in ipairs(candidates) do + if candidate.role == role or (candidate.roles ~= nil and candidate.roles[role]) then + local state = candidate.controlled and "spiller i førersædet" or candidate.busyWhy + or (not candidate.enabled and "ikke i flåden") or (roleAccept ~= nil and not roleAccept(candidate) and "kan ikke (afgrøde/frø)") or "ledig" + table.insert(who, string.format("'%s': %s", tostring(candidate.label), state)) + end + end + log(field.id, "ingen maskine sendt til %s: %s%s", tostring(role), tostring(why), #who > 0 and (" — " .. table.concat(who, "; ")) or "") end return end diff --git a/FS25_ADSmartPickup/modDesc.xml b/FS25_ADSmartPickup/modDesc.xml index c6e788a..049d886 100644 --- a/FS25_ADSmartPickup/modDesc.xml +++ b/FS25_ADSmartPickup/modDesc.xml @@ -1,7 +1,7 @@ masterdraco - 1.38.1.0 + 1.38.2.0 <en>AD Smart Pickup</en>