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:
labelList = {
labels = {
{
type = "LINE_NAME",
transf = {
0, 1, 0, 0,
0, 0, 1, 0,
1, 0, 0, 0,
2.8254, -0.403 , 2.7219, 1,
},
size = { 0.807 , 0.333 },
color = {16 / 255, 16 / 255, 16 / 255},
fitting = "SCALE",
alignment = "CENTER",
verticalAlignment = "CENTER",
renderMode = "STD",
childId = "RootNode",
},
},
},
Display More
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
{
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.
Comments 7
Newly created comments need to be manually approved before publication, other users cannot see this comment until it has been approved.
Newly created comments need to be manually approved before publication, other users cannot see this comment until it has been approved.
wurstbrot
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;-)
Danto
@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?
Marcolino26
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.
elektronikfreak
Mark_86, die Zeile: font = "res/fonts/Lato2OFL/Lato-Regular.ttf", funktioniert bei mir. ( .ttf ) beachten!!!
Marcolino26
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.
jimbob1977uk
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
Marcolino26
Ask in a separate thread in the forum.
I think you need common api for this but I‘m not sure.