Varianten von Stations-Modulen mit M und N wählbar machen

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


  • Auch wenn es z.Z. nicht möglich ist einzelnen Modulen ein eigenes Menü (wie bei der ganzen Konstruktion) zu geben, kann man zumindest Varianten mit M und N wählbar machen. Hier wird kurz beschrieben, wie man darauf im Modul-Skript zugreifen kann.

    Auch wenn es z.Z. nicht möglich ist einzelnen Modulen ein eigenes Menü (wie bei der ganzen Konstruktion) zu geben, kann man zumindest Varianten mit M und N wählbar machen. Hier wird kurz beschrieben, wie man darauf im Modul-Skript zugreifen kann.


    Zunächst muss der updateFn des Moduls die Variable "params" übergeben werden. Es handelt sich dabei um die Parameter, die auch die ganze Construction bei Bau (oder ggf. auch beim Upgrade) zur Verfügung hatte, wie hier erklärt wird. Also: updateFn = function(result, transform, tag, slotId, addModelFn, params, closureParams)


    Zusätzlich ist aber auch eine Liste aller bereits platzierten Module enthalten - einschließlich des aktuell zu platzierenden Moduls, sofern es gerade über einen freien Slot gehalten wird (also nicht "frei schwebt"). Auf diese Liste greift man zu mit params.modules und kann sie einer SlotId indizieren. Folglich gibt params.modules[slotId] die Informationen zum eigenen Modul zurück. Folgendes ist darin enthalten:

    Der variant-Eintrag ist das, was mit N und M variiert werden kann. Es handelt sich um eine Integer-Variable, die per default 0 ist und mit N und M variiert werden kann (da Integer theoretisch von -2.147.483.648 bis 2.147.483.647 geht, hat man wirklich sehr viele Möglichkeiten).

    Möchte man also unterschiedliche Versionen eines Moduls vereinen, kann man das damit tun und mit params.modules[slotId].variant darauf zugreifen.


    Die updateFn eines Moduls mit drei Varianten könnte dann z.B. so aussehen:


    Die Einsatzmöglichkeiten sind vielfältig. Ich habe das beispielsweise verwendet, um unsymmetrische Unter- und Überführungen an Bahnhöfen rotieren zu können (Treppe links, rechts, beides). Da man aber theoretisch über 4.000.000.000 Varianten unterscheiden könnte, fällt euch bestimmt noch mehr ein, was man damit anstellen könnte ;)


    Edit:

    In der getModelsFn(params), die die frei schwebende Vorschau des Moduls vor der Platzierung liefert, kann man mit params.variant ebenfalls auf die Variante zugreifen und so dort ebenfalls nutzen. Danke an Maverick2002 für den Hinweis!



    Noch ein paar Randbemerkungen:

    - Sofern man die SlotId eines anderen Moduls kennt, kann man natürlich auf die gleiche Art auch dessen Variante abfragen.

    - Wenn jemand einen eleganteren Weg kennt, passe ich diesen Lexikon-Eintrag auch gerne an

    - mit dem Befehl debugPrint(...) kann man sich eine beliebige Tabelle in der Konsole ausgeben lassen - das war mir ungemein hilfreich, um herauszufinden, wie ich an solche Modul-Informationen heran komme.


    Viel Spaß beim Skripten :)

Teilen