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

Willkommen in der Transport Fever Community

Welcome to the fan community of Transport Fever and Train Fever, the economic simulators of Urban Games. The community is free for you to share and inform yourself about the game. We cultivate a friendly and objective interaction with each other and our team will be happy to answer any questions you may have.

 

Registration and use is of course free for you.

 

We wish you a lot of fun and hope for active participation.

The Team of the 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 :)

Share