diff --git a/CHANGELOG.md b/CHANGELOG.md index 1777db8..81cd2e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ står i [docs/BRUGERMANUAL.md](docs/BRUGERMANUAL.md) (dansk) og [docs/USER_MANUA ## 1.62 — Kæder slås selv til +- **1.62.6** Pålæsningsdiagnosen logger kun, når en trigger med varen er inden for 20 m (køretøjer der holder ved Wait-punkter eller marker gav falske meldinger). - Manualerne understreger nu, at parkering og hentning af redskaber kun virker ved at bakke: ruten til `P ` og `Connect P ` skal slutte som en bakrute. - **1.62.5** Diagnose: står AutoDrive 30 s ved et LOAD-mål uden at fylde, skriver loggen én linje med markør, vare og for hver vogn den nærmeste AD-læssetrigger (afstand, har varen, står vognen i triggerens boks). Ingen indgreb. - **1.62.4** Rettet: påfyldning af et langt sæt fik AutoDrive til at oprette ekstra markører med stationens navn (fx "Buying Station Multifruit"). Det gør AutoDrives `getMarkerAtStation`, når ingen markør passer til togets længde. Moden kalder den ikke længere; markøren findes ved stationens læssetriggere eller ved bygningen. diff --git a/FS25_ADSmartPickup/adLoadDiag.lua b/FS25_ADSmartPickup/adLoadDiag.lua index 6cf5fc1..765af91 100644 --- a/FS25_ADSmartPickup/adLoadDiag.lua +++ b/FS25_ADSmartPickup/adLoadDiag.lua @@ -2,11 +2,13 @@ -- Diagnose når AutoDrive står ved et LOAD-mål uden at fylde (in-game 30/9: Fendt + MEGA-sprøjte ved "Market Price -- Liquid Fill Station"). AutoDrive fylder kun, når en fyldenhed står i triggerens boks (trigger.fillableObjects) og -- triggeren har varen. Efter REPORT_MS ved målet uden fremgang skrives én linje: markør, vare, og for hver vogn den --- nærmeste AD-læssetrigger (afstand, har varen?, står vognen i boksen?). Ingen indgreb — kun log. +-- nærmeste AD-læssetrigger (afstand, har varen?, står vognen i boksen?). Kun når en trigger med varen er inden for +-- NEAR_M (holder ved Wait-punkter logges ikke). Ingen indgreb — kun log. ADLoadDiag = {} ADLoadDiag.LOG_PREFIX = "ADSmartPickup: pålæsning: " ADLoadDiag.REPORT_MS = 30000 +ADLoadDiag.NEAR_M = 20 -- m: trigger med varen herinden for = køretøjet står ved stationen (ellers Wait/mark: ingen log) -- ---- ren logik ---- @@ -27,6 +29,14 @@ function ADLoadDiag.tick(state, dt, reached, level) return true end +-- distances = afstande fra vognene til nærmeste AD-trigger med varen -> står ved stationen? +function ADLoadDiag.atStation(distances) + for _, d in ipairs(distances or {}) do + if d <= ADLoadDiag.NEAR_M then return true end + end + return false +end + -- ---- spil ---- local function fillTypeName(fillType) @@ -65,20 +75,23 @@ local function describeTrailer(adEnv, trailer, fillType) inBox(nearestOk.trigger, trailer) and "i boksen" or "ikke i boksen")) end if nearestOk == nil then table.insert(parts, "INGEN AD-læssetrigger med varen") end - return string.format("'%s': %s", tostring(name), table.concat(parts, ", ")) + return string.format("'%s': %s", tostring(name), table.concat(parts, ", ")), nearestOk ~= nil and nearestOk.d or nil end local function report(adEnv, task) local vehicle = task.vehicle local fillType = vehicle.ad.stateModule.getFillType ~= nil and vehicle.ad.stateModule:getFillType() or nil local marker = task.destinationID ~= nil and adEnv.ADGraphManager:getMapMarkerByWayPointId(task.destinationID) or nil - local lines = {} + local lines, distances = {}, {} for _, trailer in ipairs(task.trailers or {}) do if trailer.getFillUnits ~= nil and #trailer:getFillUnits() > 0 then - local ok, line = pcall(describeTrailer, adEnv, trailer, fillType) + local ok, line, distance = pcall(describeTrailer, adEnv, trailer, fillType) if ok and line ~= nil then table.insert(lines, line) end + if ok and distance ~= nil then table.insert(distances, distance) end end end + -- holder ved Wait/mark (ingen trigger med varen tæt på): det er ikke en fejlet pålæsning + if not ADLoadDiag.atStation(distances) then return end local maxDistance = adEnv.AutoDrive.getMaxTriggerDistance ~= nil and adEnv.AutoDrive.getMaxTriggerDistance(vehicle) or nil Logging.warning(ADLoadDiag.LOG_PREFIX .. "'%s' står ved '%s' uden at fylde %s i %d s (AD-triggerafstand %s m): %s", tostring(ADRuns.vehicleLabel(vehicle)), tostring(marker ~= nil and marker.name or task.destinationID), fillTypeName(fillType), diff --git a/FS25_ADSmartPickup/modDesc.xml b/FS25_ADSmartPickup/modDesc.xml index d97bfe9..82affa2 100644 --- a/FS25_ADSmartPickup/modDesc.xml +++ b/FS25_ADSmartPickup/modDesc.xml @@ -1,7 +1,7 @@ masterdraco - 1.62.5.0 + 1.62.6.0 <en>AD Smart Pickup</en>