Zielanzeigen

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

  • Kurze Erklärung der möglichen Einstellungen bezüglich der Zielanzeige bei Fahrzeugen (wird erweitert bei neuen Erkenntnissen)

    Zielanzeigen in Transport Fever 2


    Die Definition einer solchen Anzeige findet in der mdl-Datei des jeweiligen Fahrzeugs statt. Diese liegt gewöhnlich irgendwo im Ordner res/models/model/vehicle/...


    Ein typischer Eintrag sieht so aus:



    Es kann folgende Felder geben (Liste basiert auf meinem aktuellen Wissensstand und kann gerne erweitert werden!)


    alignment (horizontale Zentrierung des Textes innerhalb des definierten Raumes)
    - CENTER
    - LEFT
    - RIGHT



    verticalAlignment (vertikale Zentrierung des Textes innerhalb des definierten Raumes)
    - CENTER
    - TOP
    - BOTTOM


    childId
    "RootNode" bedeuted das es an den Nullpunkt der MDL angehangen wird
    Sinnvoller ist es an dein Mesh zu hängen da es sich dann in den Kurven mit bewegt.
    Dazu muss man einem passenden Mesh einen Namen verpassen und diesen dann bei childid eintragen


    Code
    {
    	materials = {"vehicle/train/mc_br442_1.mtl", },
    	mesh = "vehicle/train/mc_br442/mc_br442_lod_0_body.msh",
    	name = "mc_br442_lod_0_body",
    	transf = {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,},
    },


    color (Farbe des Textes)


    Basiert auf RGB (Rot-Grün-Blau). Habe verschiedene Schreibweisen gesehen, grundsätzlich ist es aber immer so, dass die erste Zahl für Rot, die zweite für Grün und die dritte für Blau steht.
    - Schreibweise 1: color = { 1.0, 1.0, 1.0, 0.1, } - 1.0 ist 100% der Farbe, 0.0 ist 0% der Farbe. Wenn ich also ein reines Rot will, muss also bei der ersten Zahl auf 1.0 gehen und die anderen Zahlen auf 0 setzen).
    - Schreibweise 2: color = {16 / 255, 16 / 255, 16 / 255} - Farbe aussuchen und Werte eintragen: https://www.rapidtables.com/web/color/RGB_Color.html
    Es gibt auch noch weitere Schreibweisen mit * drin, ich habe aber keine Ahnung, was das bedeutet. Auch ist mir unklar, was die vierte Zahl macht (die ist auch nicht immer dabei). Im Webdesign wäre diese zuständig für die Transparenz einer Farbe, das konnte ich bei meinen Tests aber nicht beobachten.


    filter (es werden nur bestimmte Inhalte angezeigt)
    - NUMBER - aus dem angelieferten Text (z.B. Linienname) werden nur die ersten zusammenhängenden Zahlen angezeigt, alle anderen Zeichen aber weggelassen. Das ist z.B. sinnvoll, wenn es eine eigene Anzeige nur für die Liniennummer gibt, auf der aber kein Ziel steht. Sieht man z.B. oft im Heck von Bussen.
    Beispiel: Heißt die Linie z.B. "23 Betriebshof 5A" dann würde letztendlich nur "23" dort stehen, weil quasi nur die ersten zusammenstehenden Zahlen dargestellt werden, die 5 weiter hinten ist dadurch auch schon irrelavant.
    - NONE - habe ich bei einer Vanilla-Straßenbahn gesehen, dann könnte man aber vermutlich auch die ganze Zeile einfach weglassen
    - CUSTOM - damit lassen sich eigene Filter erstellen. Diese werden über "params" (siehe unten) erstellt


    fitting (was passiert mit Text, der in der Standardschriftgröße nicht reinpasst)
    - SCALE - Text wird verkleinert, damit alles reinpasst
    - CUT- Text wird abgeschnitten


    font
    Man kann entweder keine angeben, oder eine der Schriftarten aus res/fonts/


    nlines (
    Number of Lines - Gibt an wieviele Zeilen die Anzeige haben kann.


    params (hiermit lassen sich wohl diverse Anpassungen vornehmen, bin aber noch nicht ganz durch das System gestiegen)


    @mediziner nutzt z.B. in der MGT6D-Tram folgendes:
    params = {offset = 2,}, - das führt dazu, dass im Cockpit auch die darauffolgende Haltestelle (= 2) angezeigt wird. Das kann man auch weiter hochzählen, "3" wäre dann die überübernächste Haltestelle usw.
    params = { expr = "([^0-9.]*)", replace = "\\1" }, --die Zahlen 0-9 werden nicht in der Anzeige angezeigt, nur Buchstaben und Sonderzeichen (danke @trunky )
    params = {relative = false, offset = 0}, - hiermit kann man die erste Haltestelle der Linie anzeigen lassen (danke @mediziner & @Marcolino26 )


    renderMode (leuchtet der Text der Zielanzeige oder nicht)
    - EMISSIVE - sie leuchtet
    - STD - sie leuchtet nicht


    size (die Größe der Anzeigefläche)
    Hier wird angegeben wie breit und hoch die Fläche ist die zur Verfügung steht (die Werte kann man in Blender abgreifen)


    transf (die Position der Anzeigefläche)
    (um das ganze in einem Eintrag zu haben, danke an Marcolino26)


    Vordere ZZA in Fahrtrichtung:
    0, 1, 0, 0,
    0, 0, 1, 0,
    1, 0, 0, 0,
    x, y, z, 1


    Hintere ZZA in Fahrtrichtung:
    0, -1, 0, 0,
    0, 0, 1, 0,
    1, 0, 0, 0,
    x, y, z, 1


    In Fahrtrichtung auf der rechten Seite:
    1, 0, 0, 0,
    0, 0, 1, 0,
    0, -1, 0, 0,
    x, y, z, 1


    In Fahrtrichtung auf der linken Seite:
    -1, 0, 0, 0,
    0, 0, 1, 0,
    0, -1, 0, 0,
    x, y, z, 1


    x,y,z ist dabei der linke untere Punkt der Anzeige.



    type (was wird überhaupt angezeigt)


    - COMPANY_NAME (Name der Firma des Spielers)
    - LINE_NAME (Name der Linie)
    - NAME (Name des Fahrzeugs)
    - NEXT_STOP (Name der gerade angefahrenen Haltestelle)
    - STATION_NAME (Name einer der Stationen der Linie, in Verbindung mit Params - wenn keine Params angegeben werden, dann die Station, die gerade angefahren wird)



    Ich würde mich sehr freuen, wenn wir die Liste gemeinsam vervollständigen würden - alles, was ich hier eingetragen habe, basiert auf dem Lesen von Code der Vanilla- und Mod-Fahrzeuge und auf eigenem Ausprobieren. Das ist sicher keine vollständige Aufzählung bisher.

Share

Comments 7

  • Interessant, vor allem dass man den Namen einer Station als Ziel anzeigen kann. Meiner Meinung nach die sinnvollste und flexibelste Option. Wenn man jetzt noch per Script auslesen könnte wie viele Stationen in den Fahrplan eingetragen sind, dann könnte man vielleicht für Hin- und Rückweg unterschiedliche Zielanzeigen realisieren nach der Formel Zielstation Hinweg=Anzahl der Stationen/2+1 und Zielstation Rückweg = Station 1. Wenns mal hakt könnte man noch mit Waypoints tricksen... Dann das ganze noch als globalen Scriptmod für alle Fahrzeugtypen und es wäre fast perfekt;-)

    Like 2
  • @Marcolino26 Das mit dem Reversible Mesh klingt ja interessant, man könnte es vielleicht so lösen, dass man sagt:
    In die eine Richtung ist es die 1. Station, in die andere Richtung der Linienname (Text, ohne Nummer) - dann könnte man es bei jeder Strecke flexibel einsetzen.+


    Ich hab aber noch nicht ganz verstanden, wie man es machen im Code machen würde ... könntest du ein Codebeispiel bringen, wie man zwei verschiedene Zustände (= Ziele) passend zur ChildId einträgt?

  • Portierung altes Forum


    Marcolino26

    Wenn man als ChildId vom Label ein Reversible Mesh angibt, dann kann man auch relative = false wechseln.

    In die eine Richtung statisch die erste Station der Linie anzeigen und in die andere Richtung z.B. Station 3 der Linie (hier kann man es nicht allen recht machen, muss man sich entscheiden



    Mark_86 - Sonntag, 17:36

    Hat schon jemand Erfahrung mit "font" oder "nlines"?


    Mit der Zeile "font = {"res/fonts/Lato2OFL/Lato-Bold.tff"}," (auch mit kürzeren Pfadangaben) stürzt TPF2 ab (Key: metadata/labelList/labels/font, Wrong data type (string expected)).


    Die Zeile "nlines = {2}," wird vom Spiel ignoriert.


    Ausserdem habe ich herausgefunden, dass wenn in der mdl keine "seats" angegeben sind, die Anzeigen nicht funktionieren (werden ausgeblendet, wenn sich die Kamera zu nahe am Fahrzeug befindet). Es genügt, in der mdl die Zeilen

    seatProvider = {

    crewModels = { },

    drivingLicense = "RAIL",

    seats = {

    },

    },

    einzufügen.



    Finni zockt! - 6. Januar 2020

    Wo finde ich das entsprechende params-feld welches ich für die zugzielanzeige nutzen muss?

    Danto - 7. Januar 2020

    Ich glaube, es gibt keine festgelegte Stelle, habe es oft in der Zeile nach "renderMode" gesehen



    Daf-07 - 28. Dezember 2019

    Weiß Wer von Euch wo die Anzeige Parameter für die Station`s module drin ist ???

    HG

    Danto - 7. Januar 2020

    Mit Stations hatte ich bisher nichts zu tun, sorry.



    mediziner - 23. Dezember 2019 +2

    Mit params = {relative = false} kann man die angezeigte Station über offset auch immer fix bestimmen. Also immer die erste. Leider weiß man nicht, wie viele Werte die Liste enthält

    Dann gibt's noch params.replace - das müsste mal einer testen. Erwartet wird ein STRING.

    Damit eine Transparenz genutzt wird muss man wohl alpha und alphaMode festlegen. Alphamode kann sein: "CUTOUT", "BLEND", "NONE"

    Marcolino26 - 23. Dezember 2019 +1

    params = {relative = false, offset = 0}, gibt statisch die erste Haltestelle an - sehr gut [Blocked Image: https://alt.train-fever.net/wcf/images/smilies/smile.png]



    Danto - 24. Dezember 2019

    @mediziner Habe ein bisschen rumgetestet, bin aber noch nicht auf ein nachvollziehbares Ergebnis bei der Transparenz gekommen ... "alpha" muss wohl 1 sein, aber nimmt er jetzt den vierten Wert der Farbangabe für die Transparenz oder nicht?

    "BLEND" sieht sehr seltsam aus.


    Marcolino26 - 23. Dezember 2019 +1

    type kann man auch CUSTOM machen soweit ich weiß. Wie genau man das einstellt weiß ich jedoch nicht. Ahh majuen hats unten schon geschrieben.

    Oben ist noch ein Rechtschreibfehler. EMISSIVE NICHT EMISSE - habs editiert


    Tipp für kleine Schriften: transf verkleinern (0.01) und size vergrößern *100



    majuen - 22. Dezember 2019 +1

    Dank dem lieben trunky kann man diese Zeile hinzufügen

    filter = "CUSTOM",

    params = { expr = "([^0-9.]*)", replace = "\\1" }, --die Zahlen 0-9 werden nicht in der Anzeige angezeigt, nur Buchstaben und Sonderzeichen

    Danto - 22. Dezember 2019

    Cool, danke für den Hinweis. Habe es oben hinzugefügt!



    Danto - 20. Dezember 2019

    @MaikC: Danke fürs Überarbeiten [Blocked Image: https://alt.train-fever.net/wcf/images/smilies/smile.png]



    Danto - 20. Dezember 2019

    @majuen Danke für den Hinweis [Blocked Image: https://alt.train-fever.net/wcf/images/smilies/smile.png]

    Woher hast du diese Zeile:

    ["labelList.labels.*.type"] = { name = "Type", type = "STRING", values = { "LINE_NAME", "NEXT_STOP", "NAME", "COMPANY_NAME" , "STATION_NAME" , "CUSTOM" } },

    ?


    Klingt ja ein bisschen so, als wäre irgendwo definiert, was man pro Feld angeben kann - das wäre ja herrlich [Blocked Image: https://alt.train-fever.net/wcf/images/smilies/smile.png]


    Hast du möglicherweise auch noch Ideen zu folgenden Fragen:

    - { 1.0, 1.0, 1.0, 0.1, } - Was ist die vierte Zahl bei den color-Angaben? Transparenz scheint es nicht zu sein (wirkte zumindest bei meinen Tests so).

    - Gibt es bei params noch andere Möglichkeiten außer offset? Habe irgendwo (ich glaube auch bei @mediziner) das hier noch gesehen: params = { expr = "([0-9]+)", replace = " \\1" }, -- - da wurde offenbar mit einem Straßenbahn-Icon innerhalb der Font experimentiert ... hochinteressant! [Blocked Image: https://alt.train-fever.net/wcf/images/smilies/smile.png]

    - Was ist die Definition von "CUSTOM"? Klingt ja so wie "Ich schreibe mir meinen eigenen Filter/Type" - aber wo hinterlege ich den und was macht der?

    majuen - 21. Dezember 2019 +1

    Ja es gibt jetzt eine metadata lua config. Zu finden unter res/config/meta_metadata.lua . Habe auch gesehen das es ausreicht wenn man 2x alignment angibt. Habe es bei einem original Fahrzeug entdeckt und so übernommen. Oder dort ist es nicht korrekt.

    Danto - 21. Dezember 2019

    Ah, super, danke für die Info - die meta_metadata.lua ist schon mal ne gute Info [Blocked Image: https://alt.train-fever.net/wcf/images/smilies/smile.png]



    majuen - 20. Dezember 2019 +2

    Bei type kannst du noch "CUSTOM" hinzufügen und bei filter entfernen [Blocked Image: https://alt.train-fever.net/wcf/images/smilies/wink.png]


    ["labelList.labels.*.type"] = { name = "Type", type = "STRING", values = { "LINE_NAME", "NEXT_STOP", "NAME", "COMPANY_NAME" , "STATION_NAME" , "CUSTOM" } },


    Hoffe bei filter kommt noch ein Eintrag für "TEXT" hin weil ich meine Front ZZA unterteilt habe links für Nummer und rechts nur für Text.

    • Mark_86, die Zeile: font = "res/fonts/Lato2OFL/Lato-Regular.ttf", funktioniert bei mir. ( .ttf ) beachten!!!

    • Sieht man nen Unterschied?Ich hatten es mal getestet da ging es nicht. Evtl. hab ich keinen ganzen Pfad angegeben.


      Vllt haben sies auch heimlich gepatched.

    • Sorry to bump this old topic, but I'm hoping one of you guys will know, I'm trying to use the Type = "CUSTOM" as below


      labels = {

      {

      alignment = "CENTER",

      alpha = 3,

      alphaMode = "CUTOUT",

      childId = "20_body_1",

      color = { 0.8862743973732, 0.88627451658249, 0.19115723669529, },

      filter = "NONE",

      fitting = "SCALE",

      nLines = 1,

      params = { },

      renderMode = "EMISSIVE",

      size = { 0.85000002384186, 0.15999999642372, },

      transf = { -4.3711388286738e-08, 1, 0, 0, 4.3711388286738e-08, 1.9106854651647e-15, 1, 0, 1, 4.3711388286738e-08, -4.3711388286738e-08, 0, 4.7600002288818, -0.73000001907349, 2.5099999904633, 1, },

      type = "CUSTOM",

      verticalAlignment = "BOTTOM",

      },


      The issue I have is where & what string is needed to make my "CUSTOM" show "LIMITED STOP" for example?

      Many thanks

      thumbs up 1
    • Ask in a separate thread in the forum.

      I think you need common api for this but I‘m not sure.