From 131b1ad10cedc20c4c27bef3b7250b90d57e61d6 Mon Sep 17 00:00:00 2001 From: masterdraco Date: Wed, 30 Sep 2026 14:42:53 +0200 Subject: [PATCH] =?UTF-8?q?fix(k=C3=A6de):=20stald-mangel=20forklares=20ri?= =?UTF-8?q?gtigt=20og=20beskeder=20n=C3=A6vner=20k=C3=A6den?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Køb af en rest efter gårdens stalde giver nu spu_chain_problem_barn (køb resten eller flere dyr) i stedet for 'byg en fabrik'. Engangsbeskeden får kædens navn foran, så to kæder der mangler samme vare kan skelnes. --- CHANGELOG.md | 2 +- FS25_ADSmartPickup/adChain.lua | 7 ++++++- FS25_ADSmartPickup/adChainView.lua | 10 ++++++++-- FS25_ADSmartPickup/l10n/l10n_da.xml | 1 + FS25_ADSmartPickup/l10n/l10n_en.xml | 1 + docs/BRUGERMANUAL.md | 3 ++- docs/USER_MANUAL.md | 3 ++- 7 files changed, 21 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 317afb2..78fc7dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ står i [docs/BRUGERMANUAL.md](docs/BRUGERMANUAL.md) (dansk) og [docs/USER_MANUA ## 1.61 — Produktionskæder -- **1.61.0** Produktionskæder: slå et produkt til i en fabrik, og moden holder det kørende helt tilbage til marken. Kæden regner baglæns gennem dine egne fabrikker og stalde til afgrøderne og ser 12 måneder frem. Ny fane **Kæder** med træ pr. rod-produktion, farvet status, fold ud/ind og **[Pause]**/**[Start]**. Marker markeret **Fri til kæden** skifter afgrøde automatisk (højst 2 i minuttet); andre marker får forslag med **[Godkend]**/**[Afvis]** (højst 3 pr. afgrøde) i fanen og som ét samlet punkt i **Kræver handling**. En afgrøde, du selv har valgt, ændres aldrig. Mellemled tændes og slukkes kun igen, hvis kæden tændte dem. Flows **Kæde: → ** oprettes med en ledig pool-traktor og tipvogn (ellers stoppet: *mangler traktor/vogn*; paller altid stoppet) og stoppes, ikke slettes, når kæden slås fra. Dine egne tændte produktioner bruges som kilde først; slukker du en produktion, tænder kæden den ikke igen, før du tænder en ny. Stoppede kædeflows slippes af kæden. Ingen handlinger de første 2 minutter, ingen markskift før alle marker er scannet, og intet slukkes ved delvise læsefejl. Begrænsninger: intet køb, ingen dyrekøb, flerårige afgrøder og græsmarker skiftes aldrig, grundudbytte uden gødningsbonus. **Vigtigt:** hver produktion, du tænder i en fabrik, prøver moden at forsyne — tænd kun det, du vil have produceret; sluk produktionen eller tryk [Pause] for at stoppe kæden. Manglende led forklares i klart sprog med råd (*Ingen af dine fabrikker laver Mel — byg en eller køb*, *Mølle kan kun lave 800 af 1.0k/md*, *… er slukket af dig*, *Kredsløb omkring …*): som rød tekst under varen i fanen Kæder, som én rød linje pr. kæde i **Kræver handling** (højst 2; klik åbner kæden foldet ud) og som engangsbesked, når et nyt led mangler (ikke i opstartsfristen eller mens markerne scannes). Manual og ordliste opdateret. +- **1.61.0** Produktionskæder: slå et produkt til i en fabrik, og moden holder det kørende helt tilbage til marken. Kæden regner baglæns gennem dine egne fabrikker og stalde til afgrøderne og ser 12 måneder frem. Ny fane **Kæder** med træ pr. rod-produktion, farvet status, fold ud/ind og **[Pause]**/**[Start]**. Marker markeret **Fri til kæden** skifter afgrøde automatisk (højst 2 i minuttet); andre marker får forslag med **[Godkend]**/**[Afvis]** (højst 3 pr. afgrøde) i fanen og som ét samlet punkt i **Kræver handling**. En afgrøde, du selv har valgt, ændres aldrig. Mellemled tændes og slukkes kun igen, hvis kæden tændte dem. Flows **Kæde: → ** oprettes med en ledig pool-traktor og tipvogn (ellers stoppet: *mangler traktor/vogn*; paller altid stoppet) og stoppes, ikke slettes, når kæden slås fra. Dine egne tændte produktioner bruges som kilde først; slukker du en produktion, tænder kæden den ikke igen, før du tænder en ny. Stoppede kædeflows slippes af kæden. Ingen handlinger de første 2 minutter, ingen markskift før alle marker er scannet, og intet slukkes ved delvise læsefejl. Begrænsninger: intet køb, ingen dyrekøb, flerårige afgrøder og græsmarker skiftes aldrig, grundudbytte uden gødningsbonus. **Vigtigt:** hver produktion, du tænder i en fabrik, prøver moden at forsyne — tænd kun det, du vil have produceret; sluk produktionen eller tryk [Pause] for at stoppe kæden. Manglende led forklares i klart sprog med råd (*Ingen af dine fabrikker laver Mel — byg en eller køb*, *Mølle kan kun lave 800 af 1.0k/md*, *Dine stalde leverer ikke nok Mælk …*, *… er slukket af dig*, *Kredsløb omkring …*): som rød tekst under varen i fanen Kæder, som én rød linje pr. kæde i **Kræver handling** (højst 2; klik åbner kæden foldet ud) og som engangsbesked med kædens navn foran, når et nyt led mangler (ikke i opstartsfristen eller mens markerne scannes). Manual og ordliste opdateret. ## 1.60 — "Kræver handling" → flow, menuplacering, flow-vogne i guiden diff --git a/FS25_ADSmartPickup/adChain.lua b/FS25_ADSmartPickup/adChain.lua index 96f1e02..11ee582 100644 --- a/FS25_ADSmartPickup/adChain.lua +++ b/FS25_ADSmartPickup/adChain.lua @@ -365,8 +365,13 @@ function ADChain.notifyProblems(last) if #fresh == 0 or ADFieldJobs == nil or ADFieldJobs.notify == nil then return 0 end local textOf = function(key) return g_i18n ~= nil and g_i18n:getText(key) or key end local fmt = SmartPickupFrame ~= nil and SmartPickupFrame.formatCompact or nil + local rootNames = {} + for _, root in ipairs(last.chain ~= nil and last.chain.roots or {}) do + rootNames[root.key] = tostring((last.titles or {})[root.name] or root.name) + end for _, problem in ipairs(fresh) do - local text = ADChainView.problemText(problem, last, textOf, nil, fmt) + -- kædens navn foran, så to kæder der mangler samme vare kan skelnes + local text = tostring(rootNames[problem.rootKey] or problem.rootKey) .. ": " .. ADChainView.problemText(problem, last, textOf, nil, fmt) Logging.info(ADChain.LOG_PREFIX .. "manglende led: %s", text) ADFieldJobs.notify(text, true) end diff --git a/FS25_ADSmartPickup/adChainView.lua b/FS25_ADSmartPickup/adChainView.lua index f10c691..3c7d1b2 100644 --- a/FS25_ADSmartPickup/adChainView.lua +++ b/FS25_ADSmartPickup/adChainView.lua @@ -26,7 +26,7 @@ ADChainView.TEXT_KEYS = {"spu_chain_empty", "spu_chain_approve", "spu_chain_dism "spu_chain_pause", "spu_chain_resume", "spu_chain_scanning", "spu_chain_rootOk", "spu_chain_rootError", "spu_chain_rootWaiting", "spu_chain_rootPaused", "spu_chain_rootSummary", "spu_chain_free", "spu_chain_switches", "spu_chain_gone", "spu_chain_col_item", "spu_chain_col_source", "spu_chain_col_perMonth", "spu_chain_col_status", "spu_chain_col_stock", - "spu_chain_problem_buy", "spu_chain_problem_bottleneck", "spu_chain_problem_off", "spu_chain_problem_cycle"} + "spu_chain_problem_buy", "spu_chain_problem_bottleneck", "spu_chain_problem_off", "spu_chain_problem_cycle", "spu_chain_problem_barn"} local FLOW_KEYS = {ok = "spu_chain_flowOk", missing = "spu_chain_flowNone", stopped = "spu_chain_flowStopped", noVehicle = "spu_chain_flowMissing", pallet = "spu_chain_flowPallet"} @@ -148,7 +148,7 @@ local function producersOf(last, fillType) end -- Årsag i klart sprog med råd for et problem fra kædemodellen ({kind="buy"|"bottleneck"|"cycle", fillType, rootKey, --- detail = manglende l/md, need = behov l/md}). En producent spilleren selv har slukket (last.userOff, stadig +-- detail = manglende l/md, need = behov l/md}). Køb af en rest efter gårdens stalde -> stald-tekst. En producent spilleren selv har slukket (last.userOff, stadig -- slukket) slår igennem som "slukket af dig" — det er den reelle årsag, uanset om modellen så køb eller flaskehals. function ADChainView.problemText(problem, last, textOf, titleOf, fmt) last, textOf, fmt = last or {}, textOf or identity, fmt or ADChainView.compact @@ -171,6 +171,12 @@ function ADChainView.problemText(problem, last, textOf, titleOf, fmt) local made = math.max(0, need - (problem.detail or 0)) return string.format(textOf("spu_chain_problem_bottleneck"), joinCapped(names), fmt(math.floor(made + 0.5)), fmt(math.floor(need + 0.5))) end + -- modellen melder også "køb" for resten, når gårdens stalde leverer for lidt: så er rådet ikke "byg en fabrik" + for _, herd in ipairs(last.data ~= nil and last.data.husbandry or {}) do + if ((herd.outputs or {})[problem.fillType] or 0) > 0 then + return string.format(textOf("spu_chain_problem_barn"), item) + end + end return string.format(textOf("spu_chain_problem_buy"), item) end diff --git a/FS25_ADSmartPickup/l10n/l10n_da.xml b/FS25_ADSmartPickup/l10n/l10n_da.xml index 4c67aa6..a5b8aa4 100644 --- a/FS25_ADSmartPickup/l10n/l10n_da.xml +++ b/FS25_ADSmartPickup/l10n/l10n_da.xml @@ -611,6 +611,7 @@ + diff --git a/FS25_ADSmartPickup/l10n/l10n_en.xml b/FS25_ADSmartPickup/l10n/l10n_en.xml index cc346a1..5cda597 100644 --- a/FS25_ADSmartPickup/l10n/l10n_en.xml +++ b/FS25_ADSmartPickup/l10n/l10n_en.xml @@ -611,6 +611,7 @@ + diff --git a/docs/BRUGERMANUAL.md b/docs/BRUGERMANUAL.md index 1eea430..8360688 100644 --- a/docs/BRUGERMANUAL.md +++ b/docs/BRUGERMANUAL.md @@ -657,12 +657,13 @@ Mangler et led i en kæde, forklarer moden hvorfor og hvad du kan gøre. Teksten - **I fanen Kæder**: fold kæden ud; under den røde vare står årsagen i rødt. - **I Kræver handling**: én rød linje pr. kæde, fx *Brød mangler et led: Mel*. Der vises højst 2 kæder; resten står i fanen Kæder. Et klik åbner fanen Kæder med kæden foldet ud. -- **Som besked på skærmen**: første gang et nyt led mangler. Samme besked kommer først igen, når problemet har +- **Som besked på skærmen**: første gang et nyt led mangler, med kædens navn foran (fx *Brød: …*). Samme besked kommer først igen, når problemet har været væk og vender tilbage. De første 2 minutter efter indlæsning og mens markerne scannes, sendes ingen besked. Beskederne: - *Ingen af dine fabrikker laver Mel — byg en eller køb*: ingen fabrik, stald eller mark leverer varen. +- *Dine stalde leverer ikke nok Mælk — køb resten eller flere dyr*: stalden laver varen, men for lidt. - *Mølle kan kun lave 800 af 1.0k/md*: fabrikken kan ikke følge med (flaskehals). - *Mølle (Mel) er slukket af dig — tænd den eller sæt kæden på pause*: du har selv slukket produktionen. - *Kredsløb omkring Mel — kæden kan ikke beregnes*: varen bruges til at lave sig selv. diff --git a/docs/USER_MANUAL.md b/docs/USER_MANUAL.md index fa12944..a2be993 100644 --- a/docs/USER_MANUAL.md +++ b/docs/USER_MANUAL.md @@ -670,13 +670,14 @@ If a link in a chain is missing, the mod explains why and what you can do. The t - **In the Chains tab**: fold the chain out; the reason is shown in red below the red goods row. - **In Needs attention**: one red line per chain, for example *Bread is missing a link: Flour*. At most 2 chains are shown; the rest are in the Chains tab. Clicking opens the Chains tab with that chain folded out. -- **As an on-screen message**: the first time a new link goes missing. The same message only returns after the +- **As an on-screen message**: the first time a new link goes missing, with the chain's name in front (for example *Bread: …*). The same message only returns after the problem has gone away and come back. No messages during the first 2 minutes after loading or while fields are being scanned. The messages: - *None of your factories makes Flour — build one or buy it*: no factory, barn or field supplies the goods. +- *Barns make too little Milk — buy the rest or more animals*: the barn makes the goods, but too little. - *Mill can only make 800 of 1.0k/mo*: the factory cannot keep up (bottleneck). - *Mill (Flour) was turned off by you — turn it on or pause the chain*: you switched the production off yourself. - *Loop around Flour — the chain cannot be calculated*: the goods are needed to make themselves.