Alle Ressourcen zur Auswahl in Konstruktionsparametern

Willkommen in der Transport Fever Community

Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.

 

Die Registrierung und Nutzung ist selbstverständlich kostenlos.

 

Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.

Das Team der Transport-Fever Community


  • Hier erkläre ich, wie man eine dynamisch erstellte Auswahl von allen vorhandenen Ressourcen (Gleise, Straßen, Modelle, Gütertypen) inklusive Mods als Parameter in einer Konstruktion ermöglicht.

    Mich hat es schon immer gestört, dass die Auswahl von Straßentypen in Konstruktionen zu gering war oder Bahnhöfe nur die 2 Vanilla-Gleise angeboten haben. Schöner wäre es, wenn man automatisch die Auswahl von allen im Spiel vorhandenen Typen hätte, was die Modkompatibilitäten erhöhen würde.


    In diesem Post habe ich gefragt, ob man dieses Problem nicht irgendwie lösen kann, worauf jemand von UG schrieb, dass das mit dem neuen dynamischen Ressourcensystem möglich sei, mit Verweis auf dieses Beispiel im Wiki. Umgesetzt habe ich es dann bei der Mod Advanced Person Magnet, welche hier auch als Beispiel dient. Dabei wird ein Parameter für alle Straßentypen implementiert, aber für Gleise, Modelle oder Gütertypen ist das Vorgehen ähnlich.


    1 Parameter

    Der Parameter, um den es geht, wird zunächst wie gewöhnlich in der Konstruktion definiert. Als Typ bietet sich Combobox an.

    Code: res\construction\Advanced_Person_Magnet.con
    ...
    params = {
        {
            uiType = "COMBOBOX",
            key = "APMstreetType",
            name = _("Street Type"),
            values = {"dummy","standard/town_medium_new.lua"},  -- wird später ersetzt
        },
    ...

    (In APM werden die Parameter eigentlich mithilfe von ParamBuilder definiert)

    2 Update-Funktion extern

    Die updateFn muss aus der Konstruktion genommen und in einer seperaten .script Datei definiert werden. In der .con Datei stehen dann nur noch die statischen Infos sowie die Parameter. Dazu muss man in der postRunFn die .script Datei benennen:

    Code: mod.lua
    postRunFn = function (settings, modparams)
        local APMcon = api.res.constructionRep.get(api.res.constructionRep.find("Advanced_Person_Magnet.con"))
        APMcon.updateScript.fileName = "construction/Advanced_Person_Magnet.updateFn"
        ...

    3 Ressourcen ermitteln

    Außerdem muss man alle Typen der entsprechenden Ressource mithilfe der API ermitteln. Der Übersicht halber kann man das in einer eigenen Datei machen:

    Es werden die Dateinamen (Typ), die später in der Update-Funktion gebraucht werden, und die Namen, zur Anzeige in der Liste, zurückgegeben. Dabei kann man die Typen eventuell filtern oder sortieren, um die Übersichtlichkeit im Konstruktions-UI zu bewahren. Ist das Spiel geladen, sind die Parameter fix und können nicht mehr geändert werden.

    4 Übergabe der Ressourcen

    In der postRunFn wird dann die obige Funktion aufgerufen und die Liste an die Script-Parameter (für die updateFn) übergeben sowie deren Bezeichnungen an den Konstruktions-Parameter:

    5 Verwendung in der Update-Funktion

    In der externen updateFn kann dann mithilfe der scriptParams auf die Ressourcenliste zugegriffen werden. Der Index wird wie gewöhnlich anhand von constrParams ermittelt.


    Ein anderes Beispiel ist Vehicle Asset Builder wo alle Fahrzeugmodelle ermittelt werden und zu Assets hinzugefügt werden. Dabei findet zusätzlich zur Filterung der Modelle eine Kategorisierung der Fahrzeugtypen statt.



    Ich hoffe, einigen damit geholfen zu haben und würde mich freuen, wenn die ein oder andere zukünftige Mod so eine Auswahl anbietet.

    Mein Script aus APM zur Ermittlung aller Straßentypen (inklusive Filter) sowie auch das Script von VAB stelle ich zur freien Verfügung.

Teilen

Kommentare 2

  • Hi, danke für den Eintrag, das ist sehr interessant.
    Denkst du, dass es so eine Ermittlung der Ressourcen auch für Fahrzeuge gibt? Zum Beispiel für alle Dampflokomotiven, die in einem Spiel zur Verfügung stehen?

    Mein Plan wäre es, diese Fahrzeuge als Asset für den Schönbau zu verwenden. Bisher musste ich jedoch jede Lok, die ich gerne hätte, manuell als Asset erstellen.