Skip to content

Für Mod Autoren

Marcel1853 edited this page Sep 28, 2026 · 2 revisions

🇬🇧 English version

Für Mod-Autoren

UTL bietet die Remote-Schnittstelle utl für andere Mods, Szenarien und die Konsole.

/c game.print(serpent.line(remote.call("utl", "get_station", 123)))

Stationen werden über die unit_number angesprochen – bei der UTL-Haltestelle die der Haltestelle, beim Combinator die des Combinators.

Abfragen

Funktion Ergebnis
station_count() Anzahl UTL-Stationen
idle_train_count() Anzahl freier Züge in Depots
delivery_count() Anzahl laufender Lieferungen
get_station(unit) Kopie der Stationsdaten: unit, kind, stop_name, config, provide, request, version; nil, wenn unbekannt
get_deliveries() Liste laufender Lieferungen: id, train_id, provider, requester, from, to, network, manifest, state, started, chained
get_alerts() letzte Warnungen, neueste zuerst: key, group, icon, count, tick
get_network_star(surface_index, name, force?) Stern eines Netzes: role, center, partners
get_team_config(force_name, key) gültiger Team-Wert (eigener Wert oder Kartenwert)

Waren-Schlüssel in provide, request und manifest haben die Form "Typ|Name|Qualität", zum Beispiel "item|iron-plate|normal" oder "fluid|water|normal". Der state einer Lieferung ist to_provider, loading, to_requester oder unloading.

Einstellen

Funktion Wirkung
configure_station(unit, changes) Einstellungen übernehmen, z. B. { mode = "station", provide = true, request = false, request_priority = 5 }. Nur bekannte Schlüssel mit passendem Typ. mode: "station", "depot", "fuel", "cleanup", "storage". Verschachtelte Tabellen werden eine Ebene tief zusammengeführt, z. B. behält { cleanup = { offer = "first" } } die Warenliste; Lager: { mode = "storage", storage = { limits = { { signal = { type = "item", name = "iron-plate" }, min = 1000, max = 4000 } }, accept_leftover = true } }. Cleanup-offer: false, "reserve", "normal", "first".
set_request(unit, slot, signal, count) Anforderungs-Slot setzen, z. B. set_request(unit, 1, { type = "item", name = "iron-plate" }, 400); signal = nil leert den Slot.
copy_settings(from_unit, to_unit) alle Einstellungen kopieren, wie Shift-Klick
tag_blueprint(blueprint, mapping, surface) UTL-Einstellungen in eine per Script erstellte Blaupause schreiben
link_networks(surface_index, center, partner, force?) zwei Netze zu einem Stern verbinden; Grenze wie im Spiel aus der Forschung. Liefert true oder den Grund als Text.
unlink_networks(surface_index, a, b, force?) Verbindung lösen
set_team_config(force_name, key, value) Team-Wert setzen: load_timeout, unload_timeout (Sekunden), timeout_mode ("and"/"or"); nil = Kartenwert. Team-Werte zählen nur, wenn es Teams gibt.
set_map_config(setting, value) Kartenwert setzen wie im UTL-Manager, z. B. set_map_config("utl-load-timeout", 10); nil = wieder der Wert aus den Mod-Einstellungen. Prüft Typ und Grenzen.

force ist der Name der Force, Standard "player".

Beispiel: Blaupause mit UTL-Einstellungen

local mapping = stack.create_blueprint({ surface = surface, force = force, area = area })
remote.call("utl", "tag_blueprint", stack, mapping, surface)

Beispiel: Station per Script einrichten

local stop = surface.create_entity({ name = "utl-train-stop", position = pos, direction = defines.direction.east,
  force = "player", raise_built = true })
remote.call("utl", "configure_station", stop.unit_number, { mode = "station", provide = false, request = true })
remote.call("utl", "set_request", stop.unit_number, 1, { type = "item", name = "iron-plate" }, 4000)

Important

Per Script gebaute Stationen mit raise_built = true setzen, sonst erfährt UTL nichts von ihnen. Einen Stations-Combinator ordnet UTL über das Kabel an seinem Ausgang der Haltestelle zu – also ohne raise_built setzen, verkabeln, dann script.raise_script_built({ entity = combinator }).

Note

Die Schnittstelle wächst mit den Versionen. Der Quelltext steht auf GitHub in scripts/api/remote.lua.

Clone this wiki locally