Fragen zu gescripteten Szenarien

Discord Einladung
Trete unserem Discord-Server bei (klicke hier zum Beitreten).
  • Moin,


    ein stiller Mitleser meldet sich zu Wort, leider gleich mit mehreren Fragen, Pardon im Voraus für diesen suboptimalen Einstieg ins Forum.
    In Railworks können Szenarios ja durch Lua-Script erweitert werden. Ich finde diese Möglichkeiten hochinteressant, schon alleine aufgrund der netten HTML-Hinweisboxen mit Bildern und formatierten Text. Im Netz und den Handbüchern findet man leider kaum Informationen zu den einzelnen Funktionen und ihren Parametern welche z.B. RSC in einigen seiner Szenarios verwendet. Insofern wende ich mich jetzt an euch, in der Hoffnung einige Hinweise zu bekommen. Zum konkreten Testszenario:


    Der Spieler startet vor einem ESig in Hannover Hbf und soll einen ICE(2) nach Hamburg Hbf steuern. Da es wenig Sinn ergeben würde, mit einem "abgerüsteten" Zug vor einem (roten) Einfahrtssignal zu starten, startet das Szenario mit einer kleinen 15 Sekündigen Kamerafahrt und einem kurzen Einweisungstext (Sinngemäß "Fahr nach Hannover, kuppel den hinteren Zugteil des ICE 2 ab und fahr nach Hamburg"). Während der Spieler den Text liest und die "Entschleunigung" durch die Kinokamera "genießt", rüstet das Script den Zug auf (Richtungswender nach vorne, AFB auf 40km/h, Führerstandslicht an, PZB & "Vigil" aka SIFA an) und setzt den Spieler nach ca. 15 Sekunden in den Führerstand. In Hannover bekommt der Spieler noch einen (bebilderten) Hinweis dass und wie er den ICE 2 flügeln/entkuppeln muss.
    Während der Spieler nun seinen Halbzug nach Hamburg-Harburg karrt, fällt der LZB-Rechner beim Tempo 180km/h - 200km/h "aus" inkl. Zwangsbremsung auf offener Strecke. Dazu schaltet das Script schlicht die LZB aus und aktiviert die Notbremse.
    Der Spieler muss nun bis zum nächsten Hauptsignal seinen Zugverband mit 40km/h und danach bis kurz hinter Celle mit maximal 160km/h VMax fahren. Dazu nutze (und missbrauche?) ich im Moment "TestCondition" und prüfe im gleichen Rutsch ob die LZB wieder eingeschaltet wurde. Nach Celle schaltet sich die LZB wieder ein, es folgt eine (ungescriptete) fliegende Überholung eines Güterzuges und der Spieler kann ohne weitere Vorkommnisse mit 200km/h die Fahrt bis Hamburg Hbf abschließen. Sollte der Spieler mit PZB und/oder SIFA gefahren sein erhält er zusätzlich eine kleine "Herzlichen Glückwunsch"-Meldung.


    Da ich beruflich mit der Eisenbahn soviel zu tun habe wie eine Wüste mit Wasserüberfluss ist das oben genannte Verfahren bei LZB-Rechnerausfall vermutlich falsch. Wie auch immer, das meiste des oben beschriebenen funktioniert bereits, allerdings ergaben sich folgende Probleme bzw. Fragen:


    1) Beim Aufgabenstart ist es nicht möglich die Scheibenwischer via Script einzuschalten. Alle Befehle an die Wischersteuerung ("Wipers") werden sofort "überschrieben", sie wischen genau einmal. Ich habe mir kurzfristig mit einem erst ~ 10 Minuten nach Aufgabenbeginn beginnenden sehr starken Regen beholfen, wäre aber über eine "echte" Lösung froh. Evtl. hat jemand bereits dieses Problem überwunden.
    2) Die LZB schaltet sich nach so gut wie jedem Gleisabzweig (scheinbar durch die "LZB Start"-Links) wieder kurz ein. Auch wenn das Script sie sofort wieder abwürgt mutet es seltsam an (Lautes Buzzer-Geräusch, LZB-Lichter gehen an), vorallem bei laufender PZB. Gibt es neben "LZBEnable" eine weitere Möglichkeit die LZB komplett zu deaktivieren welche ich übersehen habe? Zumindest im InputMapper des ICE2 habe ich keine weiteren Schalter für die LZB gefunden.
    3) Gibt es irgendwo eine Dokumentation über die Möglichkeiten des HTML-Parsers von Railworks bzw. hat sich jemand schon damit beschäftigt? Der scheint mir eine "lustige" Mischung zwischen HTML1-Standard und einer Eigenproduktion von RSC aus. Links in einer Hinweisbox z.B. werden zwar blau unterstrichen, sind aber nicht anklickbar. CSS funktioniert garnicht, JavaScript wird scheinbar irgendwie gefressen, erzeugt aber einen SBH. Ich hatte ja gehofft RSC würde schlicht den Internet Explorer nutzen, ist leider nicht so.
    4) Der in Railworks integrierte Lua-Interpreter versteht aus mir unbekannten Gründen auch die Funktion "loadlib". Zumindest theoretisch lassen sich damit scheinbar wirklich beliebige DLLs laden:



    Ist der Lua-Interpreter eine RSC-Eigenentwicklung? :ugly: Nee, im Ernst: Hat irgendjemand mit dieser Option bereits Experimentiert und oder Erfolge erzielt? Mit anderen Compilereinstellungen funktionierte es dann doch leidlich, ich frage mich was man damit wohl sinnvoll anstellen könnte... Hat jemand Ideen?


    Grüße
    Manfred

  • Hey willkommen! :)
    Endlich mal jemand der sich dem Thema annimmt. Kann dir leider mit den Szenario Skripts nicht wirklich helfen, weil ich mich nie tief genug in die Materie (und in Lua :whistling: ) eingearbeitet habe.


    Zu 3) kann ich etwas sagen:
    Der TS benutzt weder den IE noch ActiveX für die HTML Interpretation. Da steckt ein ganz simpler, eigener Interpreter hinter, der auch nur die absoluten Basisbefehle annimmt. Bei den Strecken und Lokbeschreibungen zumindest, da lässt sich <font> mit fast allen Zusatzoptionen nutzen, aber z.B. andere Schriftart frisst er nicht. Aber Farbe und Größe kann man anpassen. Und natürlich die gängigen Textformatierungen, <b>, <br>, <p> etc.


    Zu Szenario basierten Skripts generell: dazu existiert von RSC nichtmal der Hauch einer Dokumentation, ein bisschen was kann man sich aus deren Code zusammen reimen, aber auch nicht alles. Ich habe es mal geschafft die Kamera-Fahrten ans funktionieren zu bringen, aber auch mehr schlecht als recht. Das Zusammenspiel vom Editor Objekt Kamera, der Kamerabewegung und dem Skript ist mir jedenfalls nie ganz klar geworden.
    Wer Spaß am tüfteln hat: das Szenario "1000" auf der Horse Shoe Curve benutzt exzessiv Skripte und Trigger im Editor.


    Ein bisschen was zu LUA steht ja bei uns im Wiki, aber die praktische Anwendung im TS ist da leider nie rein gekommen. Liegt mitunter auch daran, dass so einige der Quelldateien nur verschlüsselt zu haben sind leider.

  • Moin Moin Zaunpfahl,


    danke für deine Antwort, du hast mir damit einige Stunden weiteres Testen mit dem HTML-Parser erspart. Das Szenario "One hundred" hatte ich zusammen mit anderen Szenarien von RSC wie "Unwelcome Interruption" bereits auseinandergenommen, trotzdem vielen Dank für den Hinweis! Daß es de facto keine Dokumentation für solche Szenarioscripts gibt hatte ich bereits aufgrund der lauen Informationslage sowohl hier als auch in anderen Foren wie UKTrainSim befürchtet. Auch RSC selbst war auf Nachfrage "verschlossen" bis "abwimmelndweisend".


    Wie auch immer, das erste Szenario (oben beschrieben) ist mit über 400 Zeilen Lua-Script fertig und ich kann mir die restlichen drei Fragen inzwischen selbst beantworten.

    Zitat

    1) Beim Aufgabenstart ist es nicht möglich die Scheibenwischer via Script einzuschalten. Alle Befehle an die Wischersteuerung ("Wipers") werden sofort "überschrieben", sie wischen genau einmal. Ich habe mir kurzfristig mit einem erst ~ 10 Minuten nach Aufgabenbeginn beginnenden sehr starken Regen beholfen, wäre aber über eine "echte" Lösung froh. Evtl. hat jemand bereits dieses Problem überwunden.

    Ist nicht möglich, einige (System-)Funktionen wie Pantograph, Türsteuerung u.Ä. lassen sich nicht aus anderen Scripten als dem der jeweiligen Lokomotive steuern.

    Zitat

    2) Die LZB schaltet sich nach so gut wie jedem Gleisabzweig (scheinbar durch die "LZB Start"-Links) wieder kurz ein. Auch wenn das Script sie sofort wieder abwürgt mutet es seltsam an (Lautes Buzzer-Geräusch, LZB-Lichter gehen an), vorallem bei laufender PZB. Gibt es neben "LZBEnable" eine weitere Möglichkeit die LZB komplett zu deaktivieren welche ich übersehen habe? Zumindest im InputMapper des ICE2 habe ich keine weiteren Schalter für die LZB gefunden.

    Lässt sich ebenfalls nicht verhindern, die "TestCondition"-Schleife des SzenarioScripts läuft scheinbar erst nach allen anderen Scriptschleifen an.

    Zitat

    4) Der in Railworks integrierte Lua-Interpreter versteht aus mir unbekannten Gründen auch die Funktion "loadlib". Zumindest theoretisch lassen sich damit scheinbar wirklich beliebige DLLs laden:

    Ja, das geht tatsächlich. Da RSC aber auf die absolut geniale Idee gekommen ist, den Lua-Interpreter nicht in eine DLL auszulagern kann diese Funktion jederzeit rausgepatcht werden und kann damit nicht wirklich verwendet werden bzw. ist absolut unbrauchbar. Zumindest ein ohrenbetäubendes "Zwannksbremmßunng" lässt sich damit aber abspielen. :ugly:


    Sollte der TS2014 keine Dokumentation oder gar Unterstützung von gescripteten Szenarien aus dem Editor heraus anbieten werde ich wohl ein bisschen was dazu hier niederschreiben damit andere sich diese reine "Trial'n'Error"-Arbeit ersparen können. Bis dahin werde ich wohl erstmal ein paar gescriptete Aufgaben bauen und weiter experimentieren. :)


    Nebenbei: Ich bräuchte einen Tester, welcher das ganz oben beschriebene Szenario einmal probespielen müsste. Vorallem die erste Hälfte des Szenarios ist doch sehr stark gescriptet (Wetter, "unvorhergesehene" Ereignisse, Geschwindigkeitsüberwachungen, Aufrüstung etc. pp.) und damit fehleranfälliger als ein "normales" Szenario. Sollte jemand Interesse, Lust und Zeit haben würde ich um eine kurze PN bitten. Voraussetzung wäre Hamburg - Hannover und das European Assets Pack.


    Grüße
    Manfred