fix: Wait-pulje = mapper med 'Wait' i navnet, ikke markørnavne (v1.7.1.0)
Savegame viste eksisterende mark-ventepladser 'F91 Wait', 'F108 Wait' m.fl. i mark-mapperne — de ville være røget i puljen med navne-reglen. Brugerens nye punkter ligger i mappen 'Cow Wait' (6 markører med samme navn) -> mappen afgør. Log viser markørnummer, da navne kan være ens.
This commit is contained in:
@@ -122,14 +122,13 @@ function ADSupplyPlanner.fullLoadFits(freeSpace, loadCapacity)
|
|||||||
return freeSpace >= loadCapacity
|
return freeSpace >= loadCapacity
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Wait-punkter: markører med ordet "Wait" i navnet (uanset store/små) eller i mappen "Wait".
|
-- Wait-punkter: alle markører i en MAPPE med ordet "Wait" i navnet (uanset store/små),
|
||||||
-- Her venter en traktor med rest-læs, til der igen er plads i målet.
|
-- fx mappen "Cow Wait". Her venter en traktor med rest-læs, til der igen er plads i
|
||||||
|
-- målet. Markørens eget navn tæller ikke — spillerens mark-ventepladser ("F91 Wait")
|
||||||
|
-- ligger i mark-mapperne og hører ikke til puljen.
|
||||||
function ADSupplyPlanner.isWaitMarker(marker)
|
function ADSupplyPlanner.isWaitMarker(marker)
|
||||||
if marker.group == "Wait" then
|
local group = string.lower(tostring(marker.group or ""))
|
||||||
return true
|
return string.find(group, "%f[%a]wait%f[%A]") ~= nil
|
||||||
end
|
|
||||||
local name = string.lower(tostring(marker.name or ""))
|
|
||||||
return string.find(name, "%f[%a]wait%f[%A]") ~= nil
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- candidates: {{marker, x, z}}; claims: {[marker.id] = køretøj}. Nærmeste punkt der er
|
-- candidates: {{marker, x, z}}; claims: {[marker.id] = køretøj}. Nærmeste punkt der er
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
-- Holder en traktor med rest-læs ved en fuld stald AutoDrive i dag stille ved
|
-- Holder en traktor med rest-læs ved en fuld stald AutoDrive i dag stille ved
|
||||||
-- aflæsningspunktet "til den er tømt på en eller anden måde" — og spærrer for
|
-- aflæsningspunktet "til den er tømt på en eller anden måde" — og spærrer for
|
||||||
-- de næste i køen. Her omdirigeres den i stedet til nærmeste ledige Wait-punkt
|
-- de næste i køen. Her omdirigeres den i stedet til nærmeste ledige Wait-punkt
|
||||||
-- (markør med ordet "Wait" i navnet eller i mappen "Wait"), og når målet igen
|
-- (markør i en mappe med ordet "Wait" i navnet, fx "Cow Wait"), og når målet igen
|
||||||
-- har plads til HELE resten, sendes den tilbage og læsser af.
|
-- har plads til HELE resten, sendes den tilbage og læsser af.
|
||||||
--
|
--
|
||||||
-- Kun den aktuelle aflæsningsopgaves destination ændres; AutoDrives mål,
|
-- Kun den aktuelle aflæsningsopgaves destination ændres; AutoDrives mål,
|
||||||
@@ -94,7 +94,7 @@ local function startWaiting(adEnv, task)
|
|||||||
if candidate == nil then
|
if candidate == nil then
|
||||||
if not warnedNoWaitPoint[vehicle] then
|
if not warnedNoWaitPoint[vehicle] then
|
||||||
warnedNoWaitPoint[vehicle] = true
|
warnedNoWaitPoint[vehicle] = true
|
||||||
Logging.warning(ADUnloadWait.LOG_PREFIX .. "'%s' har %.0f l rest, og målet er fuldt — intet ledigt Wait-punkt (markør med 'Wait' i navnet), så AutoDrive venter ved målet", tostring(vehicle:getName()), rest)
|
Logging.warning(ADUnloadWait.LOG_PREFIX .. "'%s' har %.0f l rest, og målet er fuldt — intet ledigt Wait-punkt (markør i en mappe med 'Wait' i navnet), så AutoDrive venter ved målet", tostring(vehicle:getName()), rest)
|
||||||
end
|
end
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@@ -103,7 +103,7 @@ local function startWaiting(adEnv, task)
|
|||||||
waits[vehicle] = {task = task, homeDestinationID = task.destinationID, waitMarker = candidate.marker, fillType = fillType, rest = rest}
|
waits[vehicle] = {task = task, homeDestinationID = task.destinationID, waitMarker = candidate.marker, fillType = fillType, rest = rest}
|
||||||
redirect(task, candidate.marker.id)
|
redirect(task, candidate.marker.id)
|
||||||
local fillTypeName = g_fillTypeManager ~= nil and g_fillTypeManager:getFillTypeNameByIndex(fillType) or tostring(fillType)
|
local fillTypeName = g_fillTypeManager ~= nil and g_fillTypeManager:getFillTypeNameByIndex(fillType) or tostring(fillType)
|
||||||
Logging.info(ADUnloadWait.LOG_PREFIX .. "'%s' venter ved %s: %.0f l %s rest, målet har kun %.0f l fri", tostring(vehicle:getName()), tostring(candidate.marker.name), rest, tostring(fillTypeName), free)
|
Logging.info(ADUnloadWait.LOG_PREFIX .. "'%s' venter ved %s (markør %s): %.0f l %s rest, målet har kun %.0f l fri", tostring(vehicle:getName()), tostring(candidate.marker.name), tostring(candidate.marker.markerIndex or candidate.marker.id), rest, tostring(fillTypeName), free)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Ventende køretøj: er der nu plads til hele resten, køres tilbage til målet.
|
-- Ventende køretøj: er der nu plads til hele resten, køres tilbage til målet.
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
<modDesc descVersion="107">
|
<modDesc descVersion="107">
|
||||||
<author>masterdraco</author>
|
<author>masterdraco</author>
|
||||||
<version>1.7.0.0</version>
|
<version>1.7.1.0</version>
|
||||||
<title>
|
<title>
|
||||||
<en>AD Smart Pickup</en>
|
<en>AD Smart Pickup</en>
|
||||||
</title>
|
</title>
|
||||||
<description>
|
<description>
|
||||||
<en><![CDATA[AutoDrive-tillæg: når pålæsningsmål roteres i en mappe, køres der direkte til den silo i mappen, der har den valgte vare (mindst fyldte først), i stedet for at prøve markørerne én efter én. Vælges FLERE varer i AutoDrive, ses de som ingredienser til aflæsningsmålet (fx en TMR-blander): én traktor henter pr. tur den vare målet mangler mest, fra en silo hvor som helst på kortet. Er målet en fabrik, følger listen automatisk fabrikkens tændte produktioner (tid-til-tom først). Rest-læs ved fuldt mål venter ved nærmeste ledige "Wait"-markør til der er plads. Kræver FS25_AutoDrive med "Brug mapper" + "Rotér mål: pålæsning".]]></en>
|
<en><![CDATA[AutoDrive-tillæg: når pålæsningsmål roteres i en mappe, køres der direkte til den silo i mappen, der har den valgte vare (mindst fyldte først), i stedet for at prøve markørerne én efter én. Vælges FLERE varer i AutoDrive, ses de som ingredienser til aflæsningsmålet (fx en TMR-blander): én traktor henter pr. tur den vare målet mangler mest, fra en silo hvor som helst på kortet. Er målet en fabrik, følger listen automatisk fabrikkens tændte produktioner (tid-til-tom først). Rest-læs ved fuldt mål venter ved nærmeste ledige markør i en "Wait"-mappe til der er plads. Kræver FS25_AutoDrive med "Brug mapper" + "Rotér mål: pålæsning".]]></en>
|
||||||
</description>
|
</description>
|
||||||
<iconFilename>icon.dds</iconFilename>
|
<iconFilename>icon.dds</iconFilename>
|
||||||
<multiplayer supported="true"/>
|
<multiplayer supported="true"/>
|
||||||
|
|||||||
@@ -54,8 +54,9 @@ stald rangeres korrekt, selv om staldens aflæsningsstation kun "kender" foder.
|
|||||||
AutoDrive holder ellers en traktor med rest-læs stille ved aflæsningspunktet, til den er tømt — og
|
AutoDrive holder ellers en traktor med rest-læs stille ved aflæsningspunktet, til den er tømt — og
|
||||||
spærrer for de næste i køen. Med Wait-punkter:
|
spærrer for de næste i køen. Med Wait-punkter:
|
||||||
|
|
||||||
1. Sæt markører med ordet **`Wait`** i navnet (fx `Wait 1`, `Cow Wait 2`) eller i en mappe kaldet
|
1. Læg markører i en **mappe med ordet `Wait` i navnet** (fx mappen `Cow Wait`) — så mange du har
|
||||||
`Wait` — så mange du har plads til; de er en fælles pulje for alle traktorer.
|
plads til; de er en fælles pulje for alle traktorer. Markørernes egne navne er ligegyldige, så
|
||||||
|
dine mark-ventepladser ("F91 Wait" i mark-mapperne) rører den ikke.
|
||||||
2. Kan målet ikke tage mere af vognens vare, kører traktoren til det **nærmeste ledige** Wait-punkt
|
2. Kan målet ikke tage mere af vognens vare, kører traktoren til det **nærmeste ledige** Wait-punkt
|
||||||
(modden holder styr på reservationer) og venter dér.
|
(modden holder styr på reservationer) og venter dér.
|
||||||
3. Når målet igen har plads til **hele** resten, kører den tilbage og læsser af. Derefter normal tur.
|
3. Når målet igen har plads til **hele** resten, kører den tilbage og læsser af. Derefter normal tur.
|
||||||
@@ -63,6 +64,7 @@ spærrer for de næste i køen. Med Wait-punkter:
|
|||||||
Kun den aktuelle aflæsningsopgaves destination ændres — mål, rotation og loop-tæller røres ikke.
|
Kun den aktuelle aflæsningsopgaves destination ændres — mål, rotation og loop-tæller røres ikke.
|
||||||
Ventende traktorer ser rotationen som slået fra, så AutoDrive ikke kører videre fra Wait-punktet.
|
Ventende traktorer ser rotationen som slået fra, så AutoDrive ikke kører videre fra Wait-punktet.
|
||||||
Ingen ledige Wait-punkter → AutoDrive venter ved målet som i dag (én advarsel i loggen).
|
Ingen ledige Wait-punkter → AutoDrive venter ved målet som i dag (én advarsel i loggen).
|
||||||
|
Seks markører må gerne hedde det samme (fx `Cow Wait`); loggen viser markørnummeret.
|
||||||
|
|
||||||
**Læs der passer, foretrækkes (v1.7):** ved valg af næste tur går varer, hvor et fuldt læs kan komme af
|
**Læs der passer, foretrækkes (v1.7):** ved valg af næste tur går varer, hvor et fuldt læs kan komme af
|
||||||
i målet, forud; passer intet fuldt læs, tages den mest trængende alligevel (og Wait-punktet bruges).
|
i målet, forud; passer intet fuldt læs, tages den mest trængende alligevel (og Wait-punktet bruges).
|
||||||
|
|||||||
@@ -441,8 +441,8 @@ local function buildWaitWorld()
|
|||||||
}
|
}
|
||||||
unloadStations[1].targetStorages = nil
|
unloadStations[1].targetStorages = nil
|
||||||
unloadStations[1].owningPlaceable = barn2
|
unloadStations[1].owningPlaceable = barn2
|
||||||
addMarker(40, "Wait 1", "Cow Food", 5100, 0)
|
addMarker(40, "Wait 1", "Cow Wait", 5100, 0)
|
||||||
addMarker(41, "Wait 2", "Cow Food", 5300, 0)
|
addMarker(41, "Wait 2", "Cow Wait", 5300, 0)
|
||||||
end
|
end
|
||||||
-- traktor der holder ved stalden (markør 30) med rest-læs halm på vognen
|
-- traktor der holder ved stalden (markør 30) med rest-læs halm på vognen
|
||||||
local function makeUnloadingVehicle(name, node, x, restStraw)
|
local function makeUnloadingVehicle(name, node, x, restStraw)
|
||||||
|
|||||||
@@ -138,12 +138,14 @@ local noneFit = ADSupplyPlanner.rankNeeds({
|
|||||||
check("passer intet -> mest trængende først", noneFit[1].fillType, STRAW)
|
check("passer intet -> mest trængende først", noneFit[1].fillType, STRAW)
|
||||||
check("uden læs-størrelse -> som før", ADSupplyPlanner.rankNeeds({{fillType = STRAW, level = 40000, capacity = 50000}})[1].fits, nil)
|
check("uden læs-størrelse -> som før", ADSupplyPlanner.rankNeeds({{fillType = STRAW, level = 40000, capacity = 50000}})[1].fits, nil)
|
||||||
|
|
||||||
-- Wait-punkter: navn med ordet "Wait" (uanset store/små) eller mappen "Wait"
|
-- Wait-punkter: MAPPEN har ordet "Wait" (uanset store/små); markørnavnet er ligegyldigt.
|
||||||
check("'Cow 1 Food Wait' er wait-punkt", ADSupplyPlanner.isWaitMarker({name = "Cow 1 Food Wait", group = "Cow Food"}), true)
|
-- (Brugeren har mark-ventepladser som "F91 Wait" i mark-mapperne — de må ikke ryge i puljen.)
|
||||||
check("'wait 3' er wait-punkt", ADSupplyPlanner.isWaitMarker({name = "wait 3", group = "Andet"}), true)
|
check("mappen 'Cow Wait' tæller", ADSupplyPlanner.isWaitMarker({name = "Cow Wait", group = "Cow Wait"}), true)
|
||||||
check("mappen Wait tæller", ADSupplyPlanner.isWaitMarker({name = "P2", group = "Wait"}), true)
|
check("mappen 'Wait' tæller", ADSupplyPlanner.isWaitMarker({name = "P2", group = "Wait"}), true)
|
||||||
check("'Waiter' er ikke wait-punkt", ADSupplyPlanner.isWaitMarker({name = "Waiter", group = "X"}), false)
|
check("mappen 'wait stalde' tæller", ADSupplyPlanner.isWaitMarker({name = "3", group = "wait stalde"}), true)
|
||||||
check("'Cow 1 Food' er ikke wait-punkt", ADSupplyPlanner.isWaitMarker({name = "Cow 1 Food", group = "Cow Food"}), false)
|
check("mark-venteplads i mark-mappe tæller IKKE", ADSupplyPlanner.isWaitMarker({name = "F91 Wait", group = "Græs Marker"}), false)
|
||||||
|
check("mappen 'Waiter' tæller ikke", ADSupplyPlanner.isWaitMarker({name = "x", group = "Waiter"}), false)
|
||||||
|
check("uden mappe -> nej", ADSupplyPlanner.isWaitMarker({name = "Wait 1"}), false)
|
||||||
|
|
||||||
-- nærmeste ledige wait-punkt; candidates = {{marker, x, z}}, claims = {[markerId] = vehicle}
|
-- nærmeste ledige wait-punkt; candidates = {{marker, x, z}}, claims = {[markerId] = vehicle}
|
||||||
local V1, V2 = {}, {}
|
local V1, V2 = {}, {}
|
||||||
|
|||||||
Reference in New Issue
Block a user