From b1f1aaa14874430d69e9d64aa5371e4bc96dbfdd Mon Sep 17 00:00:00 2001 From: masterdraco Date: Fri, 25 Sep 2026 22:59:31 +0200 Subject: [PATCH] =?UTF-8?q?fix(marker):=20slip=20kun=20s=C3=A6t=20spillere?= =?UTF-8?q?n=20selv=20k=C3=B8rer;=20sl=C3=A5et=20mark=20uden=20s=C3=A6t=20?= =?UTF-8?q?g=C3=A5r=20videre=20til=20opsamling=20(v1.21.3.0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In-game 25/9: spilleren satte sig i BiG M'en for at se CP-HUD'en -> sættet blev sluppet, og da CP var færdig, blev det aldrig sendt hjem; marken ville have sendt slåmaskinen ud igen til en slået mark. --- FS25_ADSmartPickup/adFieldJobs.lua | 9 ++++++++- FS25_ADSmartPickup/modDesc.xml | 2 +- docs/BRUGERMANUAL.md | 2 +- docs/USER_MANUAL.md | 2 +- tests/test_adFieldJobs.lua | 5 +++++ 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/FS25_ADSmartPickup/adFieldJobs.lua b/FS25_ADSmartPickup/adFieldJobs.lua index 5136bd5..fffd3f1 100644 --- a/FS25_ADSmartPickup/adFieldJobs.lua +++ b/FS25_ADSmartPickup/adFieldJobs.lua @@ -33,6 +33,10 @@ function ADFieldJobs.decide(field, info, assignments, now) if ACTIVE_PHASES[assignment.phase] then active = active + 1 end if assignment.phase == "finished" or assignment.phase == "returning" then finished = finished + 1 end end + -- slået mark uden sæt på (sluppet undervejs, genindlæst): slåningen er gjort, videre til næste trin + if active == 0 and field.stage == "mowing" and info ~= nil and info.mowable and (info.readyRatio or 1) < ADFieldModel.CUT_RATIO then + return {action = "advance"} + end if active == 0 and finished > 0 then local stillStanding = field.stage == "mowing" and info ~= nil and (info.readyRatio or 0) >= ADFieldModel.CUT_RATIO if not stillStanding or finished >= ADFieldJobs.MAX_MOW_PASSES then return {action = "advance"} end @@ -289,7 +293,10 @@ end local function follow(adEnv, assignment) local vehicle = assignment.vehicle - if isControlledByPlayer(vehicle) then + -- Kun når spilleren selv KØRER (hverken Courseplay eller AutoDrive styrer): at sætte sig ind for at + -- kigge på HUD'en mens CP slår, må ikke slippe sættet (in-game 25/9: F22 blev aldrig sendt hjem). + local steeredByAi = ADCpBridge.isWorking(vehicle) or isAdActive(vehicle) or assignment.phase == "starting" + if isControlledByPlayer(vehicle) and not steeredByAi then if assignment.handle ~= nil then assignment.handle.cancelled = true end log(assignment.fieldId, "'%s' frigivet — spilleren kører det", ADRuns.vehicleLabel(vehicle)) return release(assignment) diff --git a/FS25_ADSmartPickup/modDesc.xml b/FS25_ADSmartPickup/modDesc.xml index 7e9e371..80c133e 100644 --- a/FS25_ADSmartPickup/modDesc.xml +++ b/FS25_ADSmartPickup/modDesc.xml @@ -1,7 +1,7 @@ masterdraco - 1.21.2.0 + 1.21.3.0 <en>AD Smart Pickup</en> diff --git a/docs/BRUGERMANUAL.md b/docs/BRUGERMANUAL.md index 502412d..616d0e4 100644 --- a/docs/BRUGERMANUAL.md +++ b/docs/BRUGERMANUAL.md @@ -1,6 +1,6 @@ # AD Smart Pickup — brugermanual -Version 1.21.2 · Farming Simulator 25 · tillæg til AutoDrive +Version 1.21.3 · Farming Simulator 25 · tillæg til AutoDrive *English version: [USER_MANUAL.md](USER_MANUAL.md)* diff --git a/docs/USER_MANUAL.md b/docs/USER_MANUAL.md index fc43a4d..7e5b565 100644 --- a/docs/USER_MANUAL.md +++ b/docs/USER_MANUAL.md @@ -1,6 +1,6 @@ # AD Smart Pickup — user manual -Version 1.21.2 · Farming Simulator 25 · add-on for AutoDrive +Version 1.21.3 · Farming Simulator 25 · add-on for AutoDrive *Dansk version: [BRUGERMANUAL.md](BRUGERMANUAL.md)* diff --git a/tests/test_adFieldJobs.lua b/tests/test_adFieldJobs.lua index 3041e52..1f8f412 100644 --- a/tests/test_adFieldJobs.lua +++ b/tests/test_adFieldJobs.lua @@ -38,5 +38,10 @@ local standing = {id = 109, markerId = 5, mowable = true, readyRatio = 0.8} check("J6 én tur -> slå igen", J.decide(mowing, standing, {{phase = "finished"}}, 0).action, "dispatch") check("J6 to ture -> videre", J.decide(mowing, standing, {{phase = "finished"}, {phase = "finished"}}, 0).action, "advance") +-- J7: slået mark uden sæt (fx sluppet undervejs) -> videre til opsamling, ikke en ny slå-tur +check("J7 slået uden sæt -> videre", J.decide(mowing, {id = 109, markerId = 5, mowable = true, readyRatio = 0.1}, {}, 0).action, "advance") +check("J7 stående uden sæt -> slå", J.decide(mowing, info, {}, 0).action, "dispatch") +check("J7 slået men sæt i gang -> vent", J.decide(mowing, {id = 109, markerId = 5, mowable = true, readyRatio = 0.1}, {{phase = "working"}}, 0).action, "none") + print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL")) os.exit(failures == 0 and 0 or 1)