From d7f4d0b3d35f178f11c7a30650e79e495c26c162 Mon Sep 17 00:00:00 2001 From: masterdraco Date: Sun, 27 Sep 2026 12:19:06 +0200 Subject: [PATCH] =?UTF-8?q?fix(marksilo):=20siloer=20inden=20for=20100=20m?= =?UTF-8?q?=20af=20et=20g=C3=A5rdlager=20er=20g=C3=A5rdens=20(Farma-klynge?= =?UTF-8?q?=20deler=20lager)=20=E2=80=94=20sukkerroer=20blev=20k=C3=B8rt?= =?UTF-8?q?=20fra=20=C3=A9n=20Farma-silo=20til=20nabosiloen=20(v1.36.1.0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FS25_ADSmartPickup/adFieldSilos.lua | 14 ++++++++++++-- FS25_ADSmartPickup/modDesc.xml | 2 +- tests/test_adFieldSilos.lua | 9 +++++++++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/FS25_ADSmartPickup/adFieldSilos.lua b/FS25_ADSmartPickup/adFieldSilos.lua index f37b693..fbe5bd0 100644 --- a/FS25_ADSmartPickup/adFieldSilos.lua +++ b/FS25_ADSmartPickup/adFieldSilos.lua @@ -11,6 +11,9 @@ ADFieldSilos.STUCK_MS = 120000 ADFieldSilos.PAUSE_MS = 600000 ADFieldSilos.FAIL_MS = 30000 -- AD slukket inden for 30 s uden fremdrift = turen kunne ikke køres ADFieldSilos.CARGO_MIN_LITERS = 100 -- rest under dette tæller ikke som last +-- Silo så tæt på et gårdlager er en del af gården (Farma-siloer deler lager inden for 50 m): ikke marksilo. +-- (in-game 27/9: sukkerroer blev kørt fra én Farma-silo til nabosiloen i samme klynge) +ADFieldSilos.FARM_RADIUS = 100 ADFieldSilos.MOVING_SPEED = 0.00028 -- m/ms, samme grænse som AutoDrive ADFieldSilos.FILE_NAME = "ADSmartPickup_fieldsilos.xml" ADFieldSilos.ROOT = "ADSmartPickupFieldSilos" @@ -110,6 +113,13 @@ local function runBuildingIds() return ids end +local function nearStore(stores, x, z) + for _, store in ipairs(stores) do + if (store.x - x) ^ 2 + (store.z - z) ^ 2 <= ADFieldSilos.FARM_RADIUS ^ 2 then return true end + end + return false +end + -- Gårdlagre fra opsætningen + marksiloer (alle markers marksiloer, uden dubletter og uden gårdlagre). function ADFieldSilos.collectBuildings(adEnv) local fid = farmId() @@ -125,9 +135,9 @@ function ADFieldSilos.collectBuildings(adEnv) local silos, seen = {}, runBuildingIds() for _, info in ipairs(ADFields.list()) do for _, building in ipairs(ADFields.fieldSilos(adEnv, fid, info)) do - if not seen[building.id] and not ADFieldSiloConfig.hasStore(ADFieldSilos.config, building.id) then + local x, z = position(building.placeable ~= nil and building.placeable.rootNode or nil) + if not seen[building.id] and not ADFieldSiloConfig.hasStore(ADFieldSilos.config, building.id) and not nearStore(stores, x, z) then seen[building.id] = true - local x, z = position(building.placeable ~= nil and building.placeable.rootNode or nil) table.insert(silos, {id = building.id, name = building.name, markerId = firstMarker(building, "load"), x = x, z = z, stock = siloStock(building.placeable)}) end diff --git a/FS25_ADSmartPickup/modDesc.xml b/FS25_ADSmartPickup/modDesc.xml index 12b0419..45e2f95 100644 --- a/FS25_ADSmartPickup/modDesc.xml +++ b/FS25_ADSmartPickup/modDesc.xml @@ -1,7 +1,7 @@ masterdraco - 1.36.0.0 + 1.36.1.0 <en>AD Smart Pickup</en> diff --git a/tests/test_adFieldSilos.lua b/tests/test_adFieldSilos.lua index 33fd0e2..5d64ccf 100644 --- a/tests/test_adFieldSilos.lua +++ b/tests/test_adFieldSilos.lua @@ -116,6 +116,15 @@ do check("I6 silo i et flow tømmes ikke", #silos, 0) ADRunsController.store.runs = {} + -- in-game 27/9: marksilo-flowet flyttede sukkerroer fra en Farma-silo til nabo-Farma-siloen (samme lagerklynge) + local neighbour = {id = "nb", name = "Nabo-Farma", kind = "silo", placeable = {rootNode = {x = 40, z = 0}, spec_silo = {storages = {storage({[WHEAT] = 60000}, 0)}}}} + ADFields.fieldSilos = function() return {fieldSilo, farm, neighbour} end + local withNeighbour = S.collectBuildings(adEnv) + local names = {} + for _, silo in ipairs(withNeighbour) do table.insert(names, silo.id) end + check("gårdens nabosilo (40 m fra gårdlager) er ikke marksilo", table.concat(names, ","), "fs") + ADFields.fieldSilos = function() return {fieldSilo, farm} end + -- M5: rest under 100 l tæller ikke som last residue = 50 local vehicles = S.collectVehicles(adEnv)