Anfänge im Omsi-Script.... (Summer als Abfahrtston à la Bremer LC)

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!
  • Guten Morgen allerseits!


    Ich habe mich jetzt auch mal an die Omsi-Scriptsprache gewagt und versucht, dem NG313 einen Abfahrts-Summer zu verpassen. Soweit, so gut, der erste Code-Schnipsel funktioniert auch (so halb

    ).


    Das hier ist der Code:

    Mit dem Code bin ich schon mal so weit, dass ich, wenn ich die untere if-Abfrage und die Verundung der Variable Abfahrtston in der oberen if-Abfrage auskommentiere, (fast) den gewünschten Effekt erziele. Ohne diese Abfrage+Variable habe ich das Problem, dass der Summer auf Dauerfeuer ist, sobald alle Türen zu sind und die Türfreigabe raus genommen wurde.


    Die Zusatzvariable samt if-Abfrage soll nun dazu dienen, um dieses Dauerfeuer zu unterbinden und den Summer bei geschlossenen Türen und gelöschter Türfreigabe genau ein Mal abgespielt wird. Das funktioniert auch, nämlich genau ein Mal nach dem Spawnen des Busses. Dementsprechend müsste hier der Fehler liegen. Mit meinem mäßigen Programmierer-Latein bin ich hier aber am Ende.....

    Ich gehe aber davon aus, dass die Variable für die Haltestellenbremse (die ist bei gelöschter Türfreigabe und geschlossenen Türen ja noch aktiv, bis man das Gaspedal antippt) hier nicht die richtige ist. Kann das sein? Und wenn ja, wo würde ich die richtige Variable hierfür finden?

  • Anzeige
  • Gerne doch.


    Also: Ursprünglich wollte ich ja diese Funktion aus dem Bremer MAN übernehmen, aber die VDV-Scripts vom Bremer und der Stadtbusfamilie verhalten sich komplett unterschiedlich, sodass ein einfaches Trigger eintragen nicht funktioniert. Der Code hier übernimmt diese Aufgabe:

    Ich habe das hier bestmöglich nach Wiener Vorbild umgesetzt, heißt: Der Abfahrtston wird nur abgespielt, wenn zuvor die Türfreigabe gelöscht wird. Um das zu erkennen, wird eine entsprechende Variable ("frei_geloescht") beim Betätigen der Türfreigabe auf 1 gesetzt, und beim Lösen der Haltestellenbremse wieder auf 0 gesetzt.


    Der eigentliche Block fragt ab, ob alle Türen zu sind (kleiner Bug existiert hier noch: wenn man einen Haltewunsch hat und die Türfreigabe setzt und direkt wieder löscht, löst der Summer trotz geöffneter Tür aus), die Haltestellenbremse angelegt ist und die Türfreigabe gelöscht wurde. Ist das der Fall, wird der Summer abgespielt. Die Variable "abfahrtston" dient hier als sehr primitive Lösung, um ein Dauerfeuer zu verhindern.

    Wenn die Haltestellenbremse gelöst wird, dann wird die Variable wieder "scharf geschalten".

  • Danke für deine ausführliche Erklärung. Tatsächlich hatte ich (so etwas ähnliches) bei unserem Problem auch vor, kam aber mit der Umsetzung nicht klar ;)

    Ich werd das mal, in einer angepassten Version, testen.


    Vielen Dank nochmal


    mfg

    Daniel