LUA zur Bahnhofserstellung anpassen

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


  • Hallo Zusammen


    Da mir das standardmäßige Script für die Bahnhöfe in TF 2 nicht gefallen, wollte ich diesen Teil des Spiels für mich abändern damit ich nicht immer die gleichen Bahnhöfe über das Modulmenu zusammenstellen muss.

    Die Grundidee ist folgende( Auf Gleis 1 haltende Züge, Gleis 2 ist für die Durchfahrt ohne Halt. Gleise 3 und 4 sind für Wendezüge. Gleis 5 ist für die Durchfahrt ohne Halt und Gleis 6 ist für haltende Züge.

    Ich habe das folgende Script angepasst: modular_station.con ( Im Ordner Transport Fever 2\res\construction\station\rail\modular_station)

    Meine Programmiererfahrung beschränkt sich auf VBA Primär Excel aber auch Word/Outlook.

    Dies entspricht dem Original von UG ich habe lediglich die Positionen der Tracks und Plattformen angepasst. Die IF-Struktur ist so wie bisher. Es funktioniert, ist aber nicht wirklich schön, wenn man Stationen mit weniger als 4 Geleisen baut.


    if not cargo then

    AddPassenger(0, s, e)

    AddTrack(1, s, e)

    if params.tracks >= 1 then

    AddTrack(2, s, e)

    end

    if params.tracks >= 2 then

    AddTrack(3, s, e)

    end

    if params.tracks >= 3 then

    AddPassenger(4, s, e)

    AddTrack(5, s, e)


    end

    if params.tracks >= 4 then

    AddTrack(6, s, e)

    end

    if params.tracks >= 5 then

    AddTrack(7, s, e)

    AddPassenger(8, s, e)

    end

    if params.tracks >= 6 then

    AddTrack(9, s, e)

    end

    if params.tracks >= 7 then

    AddTrack(10, s, e)

    AddPassenger(11, s, e)

    end

    end

    if cargo then

    AddCargo(0, s, e)

    AddTrack(2, s, e)

    if params.tracks >= 1 then

    AddTrack(3, s, e)

    end

    if params.tracks >= 2 then

    AddTrack(4, s, e)

    end

    if params.tracks >= 3 then

    AddTrack(5, s, e)

    AddCargo(6, s, e)

    end

    if params.tracks >= 4 then

    AddTrack(8, s, e)

    end

    if params.tracks >= 5 then

    AddTrack(9, s, e)

    AddCargo(10, s, e)

    end

    if params.tracks >= 6 then

    AddTrack(12, s, e)

    end

    if params.tracks >= 7 then

    AddTrack(13, s, e)

    AddCargo(14, s, e)

    end

    end

    return result


    Nach ersten Fehlschlägen habe ich für jeden Wert zwischen 1 und 8 eine eigenes Stationsdesign geschrieben. Ich erhalten jedoch weiterhin den Fehler weiter unten.


    if not cargo then

    AddPassenger(0, s, e)

    AddTrack(1, s, e)


    if params.tracks = 1 then

    AddTrack(2, s, e)

    elseif params.tracks = 2 then

    AddTrack(2, s, e)

    AddPassenger(3, s, e)

    elseif params.tracks = 3 then

    AddTrack(2, s, e)

    AddPassenger(3, s, e)

    AddTrack(4, s, e)

    elseif params.tracks = 4 then

    AddTrack(2, s, e)

    AddTrack(3, s, e)

    AddTrack(4, s, e)

    AddPassenger(5, s, e)

    elseif params.tracks = 5 then

    AddTrack(2, s, e)

    AddPassenger(3, s, e)

    AddTrack(4, s, e)

    AddTrack(5, s, e)

    AddPassenger(6, s, e)

    AddTrack(7, s, e)

    elseif params.tracks = 6 then

    AddTrack(2, s, e)

    AddTrack(3, s, e)

    AddPassenger(4, s, e)

    AddTrack(5, s, e)

    AddTrack(6, s, e)

    AddTrack(7, s, e)

    AddPassenger(8, s, e)

    AddTrack(9, s, e)

    elseif params.tracks = 7 then

    AddTrack(2, s, e)

    AddTrack(3, s, e)

    AddPassenger(4, s, e)

    AddTrack(5, s, e)

    AddTrack(6, s, e)

    AddTrack(7, s, e)

    AddPassenger(8, s, e)

    AddTrack(9, s, e)

    AddTrack(10, s, e)

    elseif params.tracks = 8 then

    AddTrack(2, s, e)

    AddTrack(3, s, e)

    AddPassenger(4, s, e)

    AddTrack(5, s, e)

    AddTrack(6, s, e)

    AddTrack(7, s, e)

    AddPassenger(8, s, e)

    AddTrack(9, s, e)

    AddTrack(10, s, e)

    AddPassenger(11, s, e)

    AddTrack(12, s, e)

    end

    end


    Beim Laden der Karte stürzt das Spiel jedoch ab und folgende Fehlermeldung wird angezeigt:


    File: res/construction/station/rail/modular_station If 4.con

    [string "res/construction/station/rail/modular_station..."]:358 'then' expected near '='

    This error is usually caused by modding. The syntax of some game resources is not correct


    Kann mir jemand sagen was an meinem Code nicht stimmt? Ich habe alles so geschrieben wie im Original von UG. Ich finde Beispiele von If->Then->elseif->end Befehlen welche genau so aussehen wie mein Teil des Codes.


    Mit freundlichen Grüssen


    Fod_Lord

  • Nach einem kurzen Blick fällt auf, dass du falsche Vergleichsoperatoren verwendest. In Lua wäre das nämlich == und nicht =. Ob das alle Probleme löst, weiß ich nicht, das Skript ist meines Wissens nach relativ komplex und ich habe damit selber noch nichts gemacht.

    Noch zwei Tipps:

    • Nutze für eine bessere Übersicht in Zukunft gerne die Code-Formatierung vom Forum.
    • Baue dir eigene Mods für Änderungen an Original-Skripts (falls es kein Mod-freies Spiel sein muss); Erklären würde ich das aber erst die nächsten Tage, wenn ich wieder mehr Zeit habe oder jemand anderes macht das vorher.

    Viel Erfolg :)

  • Hallo Relozu


    Danke dir vielmals für den Tipp. Das Skript läuft nun mit == korrekt.


    Alle Bahnhöfe werden wie gewünscht aufgebaut. Ich musste noch den Vergleichswert um 1 senken, da von 0 her gezählt wird und nicht von 1.


    Ah danke für den Tipp. Ich dachte schon, dass sicher der Code ziemlich schlecht liest. Werde ich beim nächsten Mal berücksichtigen.


    Ich habe leider keine Ahnung wie ich eigene Mods schreibe^^. Ich bin eigentlich schon froh, dass ich den Code lesen und anpassen kann...

    Mod-Frei muss es nie sein, dafür mag ich vor allem die Fahrzeug-Mods zu sehr :-)

  • Nur auf die Schnelle:

    In deinem Fall musst nur nen Mod-Ordner mit ner mod.lua erstellen und die Dateien, die du geändert hast in den gleichen Ordner-Pfad da drinn hinein tun.

    Im Lexikon müsste der Eintrag dazu für TPF1 zu finden sein. Der ist auch für TPF2 noch gültig. Oder du schaust dir die Mods an, die das Spiel mit bringt und kopierst dir eine davon, die du anpasst.


    Ansonsten werden die Dateien beim nächsten Update des Spiels wieder überschrieben und deine Änderungen sind weg.


    Sollten die Infos nicht ausreichen, mach zumindest ne Sicherheitskopie deiner Änderungen ... sonst sind die wie schon gesagt bald weg ?(


    MFG PMV

  • Hallo PMV


    Danke für den Tipp. Ich habe eine Sicherungskopie erstellt. Ich werde aus dem mod.File nicht schlau. Ich sehe den Mod zwar im TF2 und kann ihn aktivieren, aber die Bahnhöfe sind unverändert.

    Mir reicht die aktuelle Lösung erstmal und wenn ein Update kommt, ersetze ich das LUA halt wieder.

BlueBrixx