(L.S.Pause) - Funktion??

Willkommen in der OMSI-WebDisk!
Als Gast kannst du nur Inhalte in deiner ausgewählten Sprache sehen. Registrierte Nutzer können die Sichtbarkeit anderer Sprachen in ihrem Kontrollzentrum aktivieren, weitere Infos hier.
Alle Themen sind in den Foren mit einer Sprachflagge gekennzeichnet: = Englisch [EN], = Deutsch [DE], = Französisch [FR]. Wenn du die angegebene Sprache nicht beherrschst, schreibe auf Englisch!
  • Moin,


    für OMSI-Scripte gibt es ja die Systemvariable Pause, welche - wie der Name bereits sagt - herausfinden kann, ob das Gameplay pausiert wurde. Laut Wiki soll sich der Wert auf 1 ändern, wenn die Pause aktiv ist. Nun meine Frage: wie liest man das im Script richtig aus?


    Meine Idee/Vorgehensweise:


    Ein Objekt soll beim berühren eine Animation ausführen, sowie einen Sound abspielen. Soweit so gut.

    Wenn man allerdings Pause drückt ([P]), stoppt omsibedingt der Sound. Nun soll aber auch die Animation stoppen. Das tut sie aber leider nicht.


    Code
        (L.L.var5) 1 =
        {if}
            (L.L.var6) (L.S.Timegap) + (S.L.var6)
            
            (L.L.var6) 75 >=
            (L.S.Pause) 1 = ||
            {if}
                0 (S.L.var5) (S.L.var6)
            {endif}
        {endif}

    Die Variablen 5 und 6 werden ordnungsgemäß auf 0 (zurück)gesetzt, wenn die Bedingung var6 größer-gleich 75 erfüllt ist. Aber eben nicht bei der Pausenvariable.


    Habe bereits mehreres versucht:

    Code
    (L.S.Pause) -1 =
    (L.S.Pause) 0 =
    (L.S.Pause) 1 =
    (L.S.Pause)
    (L.S.Pause) !


    Funktioniert leider nicht. Weiß jemand von euch weiter?

  • Ich denke eher, das ist für das Auslesen durch Plugins gedacht, ich meine, wie soll das Script die Pause erkennen, wenn es doch im Moment des Pausierens mit Pausiert wird? Ich kann doch auch nicht sagen, mache die Augen zu und wenn ich dir die grüne Karte zeige wieder auf. Man sieht ja schließlich nichts.

    Rest in Peace Haha-Reaktion - Von uns Gegangen am 03.10.2023 .(

  • Ich weiß nicht, ob OMSI eine Art "Schedule-List" hat, wie es die Befehle im Spiel verarbeitet. Dann hätte es bspw. so aussehen können:



    Aber da muss ich mir eben was anderes einfallen lassen. Auf die Schnelle habe ich die Variable auch in keinen anderen osc-Dateien gefunden.

  • Moin,


    wie wird denn deine Animation genau ausgeführt. Ist die quasi OMSI-automatisiert, dass du den Animationswert irgendwann auf "1" setzt und die tatsächliche Animation automatisch (z.B. durch die Angabe von maxspeed im [newanim]-Eintrag) "entsteht". oder steuerst du die manuell, dass du also die mit der Animation assoziierten Variable händisch in jedem Frame auf einen passenden Wert setzt?


    Das Problem, dass bei Objekten Animationen weiterlaufen, wenn OMSI pausiert ist, ist jedenfalls nichts grundsätzlich neues, bzw. sieht man öfter.

    Sogar die spandauer Schranken von Ruediger dürften sich weiter schließen/öffnen während das Spiel pausiert ist.


    Ich weiß allerdings nicht, ob die meisten Entwickler da einfach nur "pfuschen" und es halt vergessen bzw. nicht richtig ipmlementieren.


    Ich habe gerade mal spaßeshalber meinen Vanilla-OMSI-Ordner auf der externen Festplatte komplett nach (L.S.Pause) durchsuchen lassen und habe dabei festgestellt, das scheinbar kein einziges Script in der kompletten OMSI-Original-Installation, weder bei Fahrzeugen, noch Szenerieobjekten diese Variable verwendet:


    Das muss natürlich erstmal nichts heißen, andererseits könnte ich mir tatsächlich vorstellen, dass die Pause-Variable vielleicht einfach garnicht funktioniert oder tatsächlich, wie DerErzbusfahrer schon vermutet hat, nur von Plugins ausgelesen werden kann.


    Du könntest ja sonst mal testweise einfach im Frame-Abschnitt immer die Pause-Variable in eine eigene Variable übertragen ((L.S.Pause) (S.L.myVar))

    Das spiel dann mal pausieren und speichern und dann in der last.osn schauen, welchen Wert "myVar" tatsächlich hat.

  • wie wird denn deine Animation genau ausgeführt

    Mittels Timegap und einem Multiplikator.

    Beispiel: (L.L.var1) (L.S.Timegap) 15 * + 8 min (S.L.var1)


    Die Animation an sich stoppt auch, wenn die Pause drin ist und wird normal wiedergegeben/fortgesetzt, wenn ich die wieder verlasse.


    Die Systemvariable auf eine lokale ~ zu speichern... funktioniert leider nicht, habe es soeben probiert. ^^ Der Wert bleibt immer "0" - egal ob Pause oder nicht.

  • Das liegt, wie DerErzbusfahrer schon erwähnt hat, daran, dass die Ausführung der Scripts ebenfalls gestoppt wird, wenn man das Spiel pausiert. Das kann man ganz leicht verifizieren, indem man absichtlich Zugriffsverletzungen herbei provoziert. Diese stoppen ebenfalls, sobald man das Spiel pausiert.


    Das gilt aber nur für den Frame-Teil des Scripts. Trigger funktionieren weiterhin wie gewohnt.