kleinere Scriptänderungen im AFR200-Drucker

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!
  • Hallo,

    ich Lagere Hilfegesuche beim Scripten mal aus meinem Tutorial-Thread hierher aus.


    Ich bin am versuchen, eine Distanzgesteuerte Haltestellenfortschaltung zu scripten, wie ich sie hier aus den ehem. AFR200-Druckern kenne. Das System soll später auch für Distanzgesteuert verzögerte Ansagen genutzt werden. Dazu habe ich mir einen "Debug-Mode" in den AFR200-Drucker eingebaut, welcher als Tacho während der Fahrt mitläuft und die Distanz aus den Scriptberechnungen anzeigt (v.a. für die Messung der Haltestellenabstände, aber auch zur Kontrolle).


    Für diesen Tacho habe ich 2 Lösungsansätze versucht:


    1. über den Tachostand (errechnet durch (L.L.kmcounter_km) 1000 * (L.L.kmcounter_m) +, dieser wert wird beim Reset gespeichert und jeweils verglichen, die Differenz aus beiden Werten ist die Gefahrende Distanz

    Problem: Trotz Abfrage jedes Frame zeigt mir OMSI die Distanz stehts in 64m-Schritten an, unabhängig von der gefahrenen Geschwindigkeit o.ä.. Das ist für das Projekt definitiv zu unpräzise. Ist das OMSI-Bedingt oder habe ich einen Fehler im Script gemacht?


    2. über S=V*T, also (L.L.Velocity) 3.6 / (L.S.Timegap) *. Diese Methode hat zwar den Realismus dabei, dass z.B. durchdrehen der Reifen die Fortschaltung beeinflusst und gibt auch Metergenaue Angaben (nicht in 64m-Schritten), dafür wird z.B. die Zeit von Rucklern als gefahrene Distanz mitberechnet (hatte z.B. beim Ausmessen 200m Differenz durch einen Loading-AI-Ruckler).


    Also sind beide Methoden noch nicht optimal, kennt hier vielleicht jemand einen Lösungsansatz, eine der Methodens ins brauchbare zu verbessern?

    Ich vermute mal, da beide Methoden im Grunde funktionieren (=die annähernd korrekte Distanz anzeigen) und beide Methoden identisch im Script eingebaut waren, helfen euch weitere Scriptteile nur Bedingt weiter, bei Bedarf kann ich diese aber gerne Liefern.


    Danke schonmal für Hilfe!

    LG Niklas

  • Ich meine, irgendwo Mal eine Variable oder ein Marko für die Entfernung zu einer Haltestelle gesehen zu haben. Finde ich bloß gerade nicht mehr...

  • Ich meine, irgendwo Mal eine Variable oder ein Marko für die Entfernung zu einer Haltestelle gesehen zu haben. Finde ich bloß gerade nicht mehr...

    In den Macrolisten der Wiki taucht nichts diesbezüglich auf.


    Aber mithilfe eines Tipps aus dem Discord hab ich es nun soweit hinbekommen, jetzt (im 3. Anlauf) wird die Entfernung aus der Raddrehung heraus pro Frame gemessen. Einziges Problem ist da noch eine Kombination aus hohen Geschwindigkeiten und sehr niedriger Performance (bei 86km/h/20FPS hatte noch noch keine Probleme), denn sobald die Raddrehung pro Frame mehr als 75% beträgt, kommt das Script mit hoher Wahrscheinlichkeit durcheinander (hat mit einem Schutzmechanismus zu tun, wenn die Umdrehung von 359° auf 0° springt). Da wird noch einiges an Tests und Feinjustierungen nötig sein.


    Für alle Interessenten hier der Code, ein Tutorial gibt's dann wenn es wirklich fertig ist.


    Abschnitt im Frame-Bereich für Fortschaltung:

    Und hier die Debug-Tachoanzeige im Display für die Streckenmessung:


    Der Debug-Reset wird durch ein Simples "1 (S.L.IBIS_Debugreset)" im Trigger der Auslösen-Taste ausgelöst.

    Auskommentiert sieht man hier noch die anderen getesteten Varianten.


    Das hier habe ich im Macro für den Busstop-Refresh eingefügt. Dadurch wird entweder die neue Entfernung ausgelesen oder bei Manueller Fortschaltung eine Konstante (50m) eingefügt, nach welcher der Drucker fortschalten soll. Heißt, die Manuelle Fortschaltung sollte nur exakt an der Haltestelle passieren, weil ansonsten alles durcheinandergerät. Ist/War in der realität aber genauso.



    Ich bin für weiteres Feedback und Verbesserungsvorschläge/Lösungsansätze offen!


    LG Niklas

  • der_Nik_

    Hat den Titel des Themas von „Distantgesteuerte Haltestellenweiterschaltung“ zu „Scriptänderungen im AFR200-Drucker“ geändert.
  • Mittlerweile bin ich etwas tiefer in die Materie des Druckers eingestiegen, genauer gesagt in die Linie/Fahrt-Eingabe.

    Theoretisch will ich, dass der Drucker bei Linie 9999 Resettet wird und ansonsten die Linieneingabe an die Matrix überträgt, in der Praxis passiert aber genau das Gegenteil (er wird zwar bei 9999 resettet, die Matrix wird allerdings nur bei 9999 aktualisiert, nicht bei anderen Linien), was für mich nicht wirklich Nachvollziehbar ist. Die Logfile meldet keine Probleme seitens des Scripts.

    Ich konnte bereits herausfinden, dass die Variablen "IBIS_LinieKurs", "IBIS_Linie_Complex", "IBIS_Linie_Suffix" und "IBIS_Route" korrekt beschrieben werden.


    Kann mir diesbezüglich vielleicht einer weiterhelfen?


    Hier der EIngabetrigger: EDIT: Ich konnte das Problem durch teilweises Austauschen durch Originalscripts konkret auf den Bereich "Input Teilen.." zurückführen, unnötiges Entfernt

    LG Niklas

    3 Mal editiert, zuletzt von der_Nik_ ()

  • Ich hab die Lösung soeben gefunden. Eigentlich dachte ich, da ich die Suffixeingabe von der Linieneingabe getrennt habe und diese ja standardmäßig eine eigene Variable hat, dass das "IBIS_Linie_Complex" irrelevant ist und hab deshalb einfach die Liniennummer in diese Variable geschrieben. Das Script übermittelt aber genau diese Variable an die Matrix, d.h. wenn ich Linie 76 eingegeben habe, war das für das Script die Linie 000, Suffix 76. Ich habe dies nun geändert, jetzt wird bei der Linieneingabe "Linie * 100" in die Variable geschrieben und das Suffix daraufaddiert.


    Ich würde den Thread mal noch unerledigt lassen, da ich recht wahrscheinlich im Verlauf des Scriptens noch auf weitere Probleme stoßen werde (oder soll ich dann einen neuen Thread erstellen?).

  • der_Nik_

    Hat den Titel des Themas von „Scriptänderungen im AFR200-Drucker“ zu „kleinere Scriptänderungen im AFR200-Drucker“ geändert.