Steuern von Signalen per LUA Script aus dem Szenario / Artikel auf Railworks America

  • Hallo zusammen


    ich habe heute einen interessanten Artikel auf Railworks America von @GreatNortherner gefunden, es ist wohl möglich mittels Script Signale auf der Strecke zufällig (per Zufallsgenerator) zu steuern. Michael hat das dort für die Cascadian Route erklärt und auch ein Beispielszenario bereitgestellt.


    http://railworksamerica.com/forum/viewtopic.php?f=80&t=21237


    Es soll aber in der Theorie zumindest auf jeder Strecke funktionieren, so ganz bin ich derzeit noch nicht dahintergekommen wie das ganze funktioniert und ob es vom Aufwand her vertretbar ist für andere Strecken vorzubereiten. Bin jetzt nicht der beste Scripter, und LUA eher noch weniger, aber wie ich es verstehe wird je nach Ergebnis des Zufallsgenerators für das betreffende Signal das jeweilig gewünschte Signalbild gesetzt.
    Es wird auch ein Scenery Objekt im Editor gesetzt und mit einem speziellen Namen versehen, welches wohl in Abhängigkeit vom Signalbild verschoben wird oder Platz verbleibt - wofür das allerdings genau benötigt wird habe ich noch nicht ganz verstanden. Bedeutet aber wohl man kann auch bei Objekten etwas Abwechslung im Szenario erzeugen wenn man dieses öfter abfährt.


    Interessant noch der Hinweis im Diskussionsverlauf:
    The critical step is that you must first assemble your own list of named signals (or whatever objects you want to use) for your ScenarioProperties.xml. In the case of signals, this means finding the signal's code block in tracks.bin was wohl bedeutet es ist nch auf Signale beschränkt sondern wohl alle Objekte die über Scriptfunktionen verfügen - eventuell kann man so auch die Spielerlok manipulieren, zufällig Hauptschalter abschalten, ein Leck in der Luftleitung simulieren usw.?


    Ich werde mir das Szenario einmal ansehen wie das genau aussieht im Ergebnis, eventuell hat ja einer der Scripting Kenner und Könner da einen besseren Durchblick - interessant finde ich die Möglichkeit alle Male.


    LG


    Thorsten

    Einmal editiert, zuletzt von Thor () aus folgendem Grund: Link ergänzt

  • Nichts wirklich Neues und auch kein wirkliches Steuern der Signale. Man schaltet einfach auf diese Art nur andere Lampen am Signal ein/aus. Das kann aber auch schnell zu Konflikten führen, oder grundsätzlich schlecht funktionieren, wenn die Signallogik dagegen arbeitet. Mal ab von der Fummelei die Entity Liste zu erstellen. Für andere Dinge auf einer Strecke mag die Sache irgendwie nützlich sein. Aber dazu muss man eigentlich nicht so einen Aufwand treiben, denn es gibt ja ScriptedScenery, die man auch steuern kann, wenn man weis wie.

  • Danke @Maik Goltz für den Input, ja macht nicht unbedingt Sinn die nur die Lichter der Signale an- und auszuknipsen entgegen dem eigentlichen Status- und das Signal sollte dann ja auch wieder umschalten nach einer Zeit. Aufwand wie Michael ja schon selbst sagt nicht unerheblich, und mit Triggern wie bei Schuster Signalen vermutlich einfacher umzusetzen.
    Eventuell schalten diese Flagstop Signale dann ja auch nicht mehr um, ist vermutlichh eher so etwas wie die Haktewunsch Funktion bei den Thomson CH Strecken.


    Aber kannst Du mir erklären was mit diesem Magic Object erreicht werden soll? Ist das für die Funktion von Bedeutung oder nur zum Funktionstest? Oder so als Vorwarnung "wenn der Baumstumpf zu sehen ist muss ich ncht halten, sonst ja"?


    Danke und Gruss


    Thorsten

  • Das "mymagicobject" nur eine "Beschriftung" eines vorhandenen Objekts, damit man den Einstiegspunkt für die Änderungen in der XML-Datei findet und die Änderungen reinkopieren kann. Da kannst du auch beliebig anders benennen musst dann aber nach der von dir gewählten Zeichenkette in der ScenarioProperties.xml suchen und die Sachen dort reinpacken wie beschieben...


    Das ganze ist aber aus bereits genannten Gründen nicht sehr praktikabel.

  • @-setter- hm das lese ich in dem Scipt anders, ist die Zahl grösser 4 wird ein Syscall ausgelöst:


    Code
    if flagstoptest1 > 4 then
        -- 60% chance for the following
          SysCall ( "ScenarioManager:ShowMessage", "Random Success?", "YES! Train Order Board now at Y/Y. Magic Object has disappeared.", 0 )
          SysCall( "MyMagicObject:setNearPosition", 0,0,0 )             
        -- this moves the named object to the center of the tile (so it's hidden)


    was wohl diese MagicObject in die Mitte der Kachel schiebt. Das passiert aber bei Zahlen bis 4 eben nicht - da wird nur das Signal bearbeitet. Das ganze findet ja auch im LUA Script statt und nicht in der ScenarioProperties.xml wo man den XML Code einfügen soll.
    Praktikabel oder nicht - es interessiert mich einfach auch wie das funktionert, und im Fall dieses MagicObjects bin ich im Moment ratlos (also braucht es das zwingend für die Funktion oder nicht?) Auch wenn es nur zu auffinden einer Stelle im XML dient sehe ich keinen Grund das einmal zu bewegen und einmal nicht.

  • Setter hat doch schon gesagt wozu das Ojekt dient. Es wird lediglich dazu platziert, um in der ScenarioProperties.xml den NamedEntitiy Knoten zu erzeugen, den man dann erweitern muss. Ob das wirklich nötig ist, denke nicht, denn die Knoten kann man auch selbst einfügen, aber es hilf Anfängern die Stelle überhaupt zu finden. Dass das Objekt dann zufällig verschoben wird, ist einfach nur ne lustige Spielerei, weil es halt mit statischen, benannten Objekten geht, diese neu zu platzieren per Script (nicht an Fahrzeugen oder sowas möglich, hab ich alles schon probiert).