mouseevent triggert dauerhaft [gelöst]

Das Forum befindet sich im reduzierten Betrieb. Die Addon- und Supportforen bleiben weiterhin verfügbar.
Bitte beachte, dass OMSI nicht mehr weiterentwickelt wird. Ein Teil der Entwickler widmet sich inzwischen der Entwicklung eines neuen Simulators. Weitere Informationen zum LOTUS-Simulator findest Du hier.
  • Hallo,
    ich bin es schon wieder

    :whistling:

    ...
    Ich habe folgendes Problem: Im Zusammenhang mit der Programmierung eines Abfahrtssignals wollte ich einen Screen hinzufügen, der das Abfahrtssignal bestätigt. Allerdings habe ich das Problem, dass das [mouseevent] dauerhaft getriggert wird. Woran kann das liegen

    ?(



    Was habe ich diesesmal falsch gemacht?
    Ich hoffe ihr könnt mir helfen.


    Gruß
    feliweigi

  • Sorry habe ich wohl vergessen...


    Das Script habe ich zum Testen verwendet, da das eigentliche Script nicht funktionierte.

  • Das kann garnicht funktionieren. Was hast du dir denn dabei gedacht?
    Mich wundert es, das Omsi das nicht als Fehler in der Logfile anzeigt.


    Wenn Variable "Test" Wahr ist (Also = 1) dann addiere 1 dazu. Und was soll das?
    Da steht weder, was passieren soll, noch was du erreichen willst.


  • Wenn Variable "Test" Wahr ist (Also = 1) dann addiere 1 dazu.


    Woher kommt den das "wenn" - da ist doch garkein if

    ?(



    Da steht weder, was passieren soll, noch was du erreichen willst.


    Das ist nur ein Test, und wenn ich auf den Screen drücke, soll die Variable "Test" um eins höher werden, nur wird sie jetzt grade auch größer wenn ich ihn nicht drücke

  • Woher kommt den das "wenn" - da ist doch garkein if


    Wenn du es so sehen möchtest, aber {if} heißt nicht "wenn"


    Anders ausgedrückt:
    Falls (L.L.Test) wahr ist, dann addiere 1 dazu. Macht immernoch keinen Sinn.


    und wenn ich auf den Screen drücke, soll die Variable "Test" um eins höher werden,


    Mir ist immer noch nicht klar was du eigentlich machen möchtest. Und Omsi erst recht nicht.


  • Mir ist immer noch nicht klar was du eigentlich machen möchtest. Und Omsi erst recht nicht.


    Also, ich möchte einfach nur, dass wenn der Trigger ausgelößt wird, eine Zählvariable (hier Test) um 1 hochgeht, um zu Testen, wann der Trigger auslöst.


    {if} heißt nicht "wenn"


    Seit wann heißt "if" nicht "wenn"?

  • Tatra ich glaube du verstehst hier irgendetwas falsch. Hier findet doch gar keine Bedingung statt? Also ich versteh den Code so:
    1. Lade Variable Test (L.L.Test)
    2. Addiere 1 dazu (1 +)
    3. Speicher das Ergebnis in Variable Test (S.L.Test)


    Hier wird doch gar nichts geprüft ob Test = 1 ist

    ?(


    feliweigi Doofe Frage vielleicht, aber hast du schonmal versucht das "ä" aus dem Trigger zu entfernen? Vllt kommt Omsi damit nicht zu Recht, ist aber nur eine spontane Vermutung

    ^^
  • Also ich versteh den Code so:
    1. Lade Variable Test (L.L.Test)
    2. Addiere 1 dazu (1 +)
    3. Speicher das Ergebnis in Variable Test (S.L.Test)


    Hier wird doch gar nichts geprüft ob Test = 1 ist


    Danke, so sehe ich das nämlich auch.

    Doofe Frage vielleicht, aber hast du schonmal versucht das "ä" aus dem Trigger zu entfernen? Vllt kommt Omsi damit nicht zu Recht, ist aber nur eine spontane Vermutung


    Ohne "ä" funktioniert es leider auch nicht, aber danke für die Idee

    ^^
  • Da ich nicht genau weiß, was der @TE eigentlich möchte, stelle ich meinen Support ein.


    Erstmal danke für deinen "Support"

    Was der Code macht, ist mir absolut klar. Aber weder Omsi, noch du, noch sonst jemand weiß was passieren soll, wenn Test = 2 ist oder weißt du wo das Ende ist?


    ?(

    Das script soll einmalig ausgefürht werden, d.h einmal drücken --> Zählvariable +1
    Wozu brauche ich da ein Ende?

    Da der @TE nicht bereit ist, zu sagen, was er eigentlich machen möchte, soll es mir Recht sein. Es bringt recht wenig, dem @TE zu erklären, dass er einen Zähler gestellt hat, der vollläuft. Das hat er selber rausgefunden.


    Eigentlich soll das Script das Abfahrstssignal deaktivieren. Wie aber schon bekannt läuft der Script aber dauerhaft, so das das Abfahrtssignal dauerhaft bestätigt wird, und so garnicht erst zu Stande kommt. Deshalb habe ich das mit der Zählvariable erstellt um zu sehen, wann das Script im Trigger ausgeführt wird.
    Ich hoffe ich habe mich jetzt verständlich ausgedrückt

  • Zitat von MBFan1611

    Tatra ich glaube du verstehst hier irgendetwas falsch.


    Absolut richtig, ich verstehe das ganze nicht! Weil es ein Scriptblödsinn ist.


    Zitat von MBFan1611

    Also ich versteh den Code so:
    1. Lade Variable Test (L.L.Test)
    2. Addiere 1 dazu (1 +)
    3. Speicher das Ergebnis in Variable Test (S.L.Test)


    Hier wird doch gar nichts geprüft ob Test = 1 ist


    Wie das Script funktioniert, weiß ich ganz genau. Wenn du diesen Trigger verstehst, dann sage mir bitte folgendes:
    im ersten Frame:
    1. Solange der Trigger nicht gestartet wurde, ist die Variable "Test" = 0 - damit ist der Screen aus also UNWAHR!
    nächstes Frame
    2. Die Variable "Test" wird ausgelesen - mit 1 addiert und
    3. gespeichert.
    Da der Screen nun 1 ist, wird dieser aktiviert - hat also den Zustand WAHR.
    nächstes Frame:
    4. Die Variable "Test" wird ausgelesen (1) und Schritt 2 und 3 werden wiederholt. Am Ende hat die Variable "Test" den Wert 2.
    nächstes Frame:
    5. Die Variable "Test" wird ausgelesen (2) und Schritt 2 und 3 werden wiederholt. Am Ende hat die Variable "Test" den Wert 3.
    Und das geht immer so weiter und Omsi zählt bis es schwarz wird.


    Meine Fragen:
    Wenn Test = 0, dann Screen aus
    Wenn Test = 1, dann Screen an
    Wenn Test = 2, dann ist der Screen ????
    Wenn Test = 4647899485420, dann ist der Screen ????
    An und Aus sind schon vergeben. Da du es verstehst, sage mir bitte was das soll? Ich wollte wissen was sich feliweigi dabei gedacht hat.
    Und sage mir bitte was, deiner Meinung nach, im nächsten Frame passiert.
    Es wird nicht geprüft, ob die Variable Test = 1 ist? Richtig! Die Variable Test wird auf 1 gesetzt und ausgelesen, der Screen soll eigentlich angehen. Wenn du in Omsi einen Bus stehen hast prüft Omsi ob der Batteriestrom eingeschaltet ist (Betteriehauptschalter nicht getrennt) und ob die Variable lights_abblend 1 ist. Ist beides nicht auf 1 bleibt das Standlicht aus. Erst wenn beide Werte 1 sind, wird das Standlicht aktiviert. Schalte ich das Fernlicht ein, dann prüft Omsi ob die Vorraussetzungen für das Standlicht gegeben sind und läßt das Standlicht an, wenn beide Vorgaben 1 sind. Das Fernlicht wird lediglich darüber gesetzt.
    (L.L.elec_busbar_main) - püfe ob Batteriestrom höher als X % ist UND (&&)
    (L.L.schluesselschalter) größer als 2 ist. Denn 0 = aus, 1 = Standlicht und 2 = Abblendlicht.
    [Ich habe es zum leichteren Verständnis falsch geschrieben]


    Zitat von feliweigi

    Das script soll einmalig ausgefürht werden, d.h einmal drücken --> Zählvariable +1
    Wozu brauche ich da ein Ende?


    Der Trigger wird nicht einmalig ausgeführt. Das steht da auch garnicht. Läuft Omsi gerade mit 50 FPS, dann wird in jeder Sekunde dieser Trigger 50 mal gelesen. Und dort steht:
    Lese die Variable "Test" in den Stackcontainer, rechne den Wert 1 dazu und speicher es ab.
    Nach einer Sekunde ist der Wert der Variable "Test" 50, nach einer Minute 3000. Nach 2 Minuten ist der Wert 180.000 usw.


    Was sollen die Werte 2, und alle folgenden?


    Wenn du den Trigger wieder auslöst, wird wahrscheinlich nichts weiter passieren, denn du hast ja den Trigger schon gestartet und die Operation wird nur weiter ausgeführt. Omsi zählt sich nen Wolf.
    Du hast diesen Testtrigger erstellt. Nun möchte ich gern wissen, was du dir dabei gedacht hast? Ganz einfache Frage.


    Mal falsch gedacht. Angenommen, Omsi würde diesen Trigger nur einmalig ausführen (was Omsi nicht macht) du drückst einmal den Trigger, der Wert wird 1 und der Screen geht an. Wenn du den Trigger wieder drückst, wird der Wert 2. was soll denn der Screen machen? Wenn 0 = Unwahr und 1 = Wahr, was ist dann 2? Mehr als Wahr geht doch nicht. Und ein Vielleicht gibt es auch nicht. Darum möchte ich gern wissen, was du dir dabei gedacht hast, damit ich vielleicht nachvollziehen kann, auf was du da eigentlich hinaus möchtest. Wie lange soll der Wert 1 aktiv sein? Und was soll passieren wenn der Wert 2 ist?
    Wo steht denn das Omsi aufhören soll, wenn er den Trigger einmal berechnet hat? Wo steht was Omsi machen soll, wenn Test = 2 oder höher ist?
    Dieser Trigger ist doch lediglich die "Schalterstellung" für das Mausevent. Wo ist der Rest?


    Sorry feliweigi, ich will dir nicht unterstellen, das du von Scripten keine Ahnung hast, darum möchte ich gern wissen was du machen möchtest und was du dir dabei gedacht hast. Bisher sieht es nur so aus, dass du garkeine Ahnung von Scripten hast und nur irgendetwas hinschreibst. Du hast doch hier ins Forum geschrieben, weil du Hilfe haben möchtest. Wie soll man dir helfen, wenn keiner weiß, auf was du hinaus willst, was du machen wolltest, was dein Trigger bewirken soll. Was dein Trigger macht, kann jeder sehen, der Scripte versteht. Damit weiß man, was Omsi macht, aber nicht was Omsi deiner Meinung nach machen soll. Ich frage doch nicht was du vor hast, um dir zu sage, wie blöd du bist, sondern um dir zu sagen, was du falsch gemacht hast. Denn das war doch deine Frage im Eingangspost.
    Wenn aber niemand nachvollziehen kann, was du damit erreichen willst, wie sollen wir dir helfen, deine Script- und Eintragungsfehler in der model.cfg aufzuzeigen?
    Was hilft es dir, wenn jemand schreibt, dass dein Trigger kompletter Schwachsinn ist? Weißt du dann was genau falsch ist, warum es schwachsinnig ist? Und ist alles Schwachsinn nur weil ICH es anders machen würde oder ein anderer Scripter?

  • Wenn Test = 0, dann Screen aus
    Wenn Test = 1, dann Screen an
    Wenn Test = 2, dann ist der Screen ????
    Wenn Test = 4647899485420, dann ist der Screen ????


    Wenn du den Trigger wieder auslöst, wird wahrscheinlich nichts weiter passieren, denn du hast ja den Trigger schon gestartet und die Operation wird nur weiter ausgeführt. Omsi zählt sich nen Wolf.
    Du hast diesen Testtrigger erstellt. Nun möchte ich gern wissen, was du dir dabei gedacht hast? Ganz einfache Frage.


    Es soll bei der Test Variable nicht um den Zustand des Screens sondern lediglich darum gehen zu Testen wie lange und wann das Script ausgeführt wird.

    Sorry feliweigi, ich will dir nicht unterstellen, das du von Scripten keine Ahnung hast, darum möchte ich gern wissen was du machen möchtest und was du dir dabei gedacht hast.


    Egal, lassen wir das mit der Testvariable und kommen dazu was ich eigentlich machen wollte:
    Ich habe für das Abfahrtssignal eine Variable erstellt (Abfahrtssignal). Das funktioniert auch alles wunderbar. Wenn die Abfahrtszeit erreicht wurde ertönt das Abfahrtssignal. Nun wollte ich einen Knopf/Screen einbauen, auf den man drückt um das Abfahrtssignal zu bestätigen, damit es auch wieder aus geht. So habe ich dieses Mouseevent erstellt und habe in das Script geschrieben, dass einfach Abfahrtssignal auf 0 gesetzt werden soll. Nun hatte ich das Problem, dass der Trigger schon ausgeführt wird, ohne das der Screen überhaupt sichtbar war. Ich habe das Mouseevent also nicht einmal ausgelößt und OMSI setzt die Variable "Abfahrtssignal" dauerhaft auf 0 (oder er wechselt mit (L.L.Abfahrtssignal) ! (S.L.Abfahrtssignal) andauernd zwischen 1 und 0). Wahrscheinlich habe ich irgendwas mit den Triggern noch nicht ganz verstanden, und deshalb kommt so eine Dauerschleife zu stande.

  • Jetzt wird schonmal ein Schuh daraus. Jetzt weiß ich was du machen wolltest und ich bin fälschlicherweise davon ausgegangen, dass du von Scripten Ahnung hast. Hättest du vorher geschrieben, dess dir Scripte fremd sind, hätte ich ganz anders geschrieben:


    (oder er wechselt mit (L.L.Abfahrtssignal) ! (S.L.Abfahrtssignal) andauernd zwischen 1 und 0)


    Ist fast richtig. Selbstverständlich wechselt Omsi da ständig hin- und her. Das soll ja auch so sein. Dadurch das du aber den Trigger steuern möchtest, werden wir Omsi einfach mitteilen, dass er das Ergebniss speichern und festsetzen soll. Da ich davon ausging, das du weißt was in den Scripten passiert habe ich eine Kleinigkeit weggelassen.
    Daher muß dein Trigger also wie folgt aussehen:


    Code
    1. {trigger:Abfahrtssignalbest}
    2. (L.L.Abfahrtssignal) ! (S.L.Abfahrtssignal) s1
    3. {end}


    Nun wechselt Omsi nicht selbstständig, sondern wartet auf das Mausevent.


    Die Sache mit den Abfahrtstimer würde ich anders regeln. Aber wenn es so funktioniert, dann soll mir das auch Recht sein. Viele Wege führen nach Rom, oder in diesem Fall zum Ziel.



  • Danke für die Antwort.
    Leider wechselt OMSI immernoch selbstständig, trotz des "s1" Eintrages

    :(


    Und ja, das mit dem "1=" ist mir garnicht aufgefallen. Ich habe es aber jetzt entfernt.

  • Der Trigger muß natürlich allein stehen und darf nicht innerhalb eine Macros oder eines anderen Triggers eingetragen sein.


    Du solltest dich vielleicht ersteinmal mit den Grundlagen des Scriptens beschäftigen um zu lernen was in einem Script passiert und was dort vor sich geht.