Probleme bei Türscript für Ikarus 256.50V

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 in die Runde,


    ich beschäftige mich gerade zum ersten Mal mit Scripten, ohne dass ich wirklich Ahnung davon habe. Ursache hierfür ist die Türfunktion im Ikarus 256.50V, die mir in ihrer Bewegung zu unrealistisch erschien. Da ich nun keine Ahnung vom Scripten habe, entschloss ich mich, das Script samt varlist und constfile aus dem Ikarus 250.59 zu übernehmen. Also hab ich alle Einträge in der .bus umgebaut und die Dateien kopiert. Siehe da, die Tür bewegt sich nun auch im 256 wie ich's nett finde. Aber die Sache hat einen Haken wie ich im Linienbetrieb herausfand: Die Fahrgäste laufen zwar zur Tür, steigen aber nicht aus. Der Ikarus 256.50V hat vorn eine Schwenktür, hinten eine außer Betrieb gesetzte Schlagtür, ist also defacto ein Eintürer. Der Ikarus 250.59 hat hingegen zwei Schwenktüren, die von den Fahrgästen im Einbahnstraßenbetrieb benutzt werden. Vorn rein, hinten raus. Ich nehme an, dass der Fehler da zu suchen ist, aber ab hier blicke ich wie das berühmte Schwein ins Uhrwerk. Kann einer von den Script-Profis hier mal drüber sehen?






    Vielen Dank im Voraus


    Beste Grüße



    Matze

  • Weiß garnicht was du hast. Funktioniert doch wie es eingetragen ist ...

    :D


    Also mal im Ernst. Die Passanten in Omsi wissen nicht wann sie den Bus verlassen dürfen und wann nicht. Der Grund dafür ist einfach. wenn du mit 90 über die Autobahn schleichst, soll am besten keiner aussteigen. Darum gibt es Bedingungen. Idealerweise nimmt man hierfür die Türen. Also steige aus, wenn die Türen öffen sind.


    (L.L.door_0) 0.9 > (S.L.PAX_Entry0_Open)
    (L.L.door_1) 0.9 > (S.L.PAX_Entry1_Open)
    (L.L.door_2) 0.75 > (L.L.door_3) 0.75 > && (S.L.PAX_Exit0_Open) (S.L.PAX_Exit1_Open) (S.L.PAX_Entry2_Open) (S.L.PAX_Entry3_Open)


    Da steht geschrieben: Wenn die Tür 0 (erster Türflügel) zu 90% geöffnet ist, dann gilt der Einstieg als Freigegeben. Das selbe kommt dann noch für die Tür 1 (nächster Türflügel) zustande. Hintergrund ist hier der MAN SD, wo die Scripte raus sind. Beim Ikarus 250.59 gibt es nur einen Einstieg und einen Ausstieg. Beim MAN Sd aber 2 Einstiege an der Vordertür und 2 Ausstiege an der Mitteltür. Das wurde so für den Ikarus übernommen. Door 1 und door 3 sind aber im Ikarus 250 garnicht vorhanden.


    in der 3. Zeile steht dann auch der vorgegebene Ausgang:
    Wenn Türflügel 2 UND Türflügel 3 zu 75% geöffnet sind, dann sind die Eingänge 2 und 3, sowie die Ausgänge 0 und 1 frei und können benutzt werden. Heißt auf deutsch übersetzt:
    Wenn die 2 Tür mit beiden Türflügel offen steht, dann dürfen die Angegebenen Pfadpunkt genutzt werden. Wo stehen die Pfadpunkte die als Ein- und Ausgang definiert sind, drin? In der Passengercabin.


    Die gehört aber unbedingt dazu. Darum solltest du dch vor dem Scripten, erstmal mit den ganzen Thema beschäftigen, was wie zusammen gehört.
    In der Passengercabin steht drin, welcher Pfadpunkt ein Eingang ist und welcher Pfadpunkt ein Ausgang ist.
    [entry]
    0


    [entry]
    2


    [entry]
    8


    [entry]
    10


    [exit]
    8


    [exit]
    10


    Der erste Eintrag (hier im Beispiel mit Pfadpunkt 0) ist als der Eingang 0. Warum? Weil er in der Reihenfolge als erstes in der passengercabin steht. Also ist das PAX_Entry0_open erfüllt, wenn die Tür offen ist. Der erste Ausgang ist dann Exit mit der 8, weil es der erste Exit-Befehl in der Liste ist, also PAX_exit0_open.
    Nun haben wir hier die Definition für 4 Eingänge (PAX_Entry 0-3 [sind zusammen 4]) und zwei Ausgänge (PAX_Exit0_open bis Exit1_open). So wie in der Liste oben angegeben, 4 Eingänge und 2 Ausgänge.


    Also mußt du folgendes machen.
    1. Die Ein- und Ausgänge in der passengercabin neu definieren:
    Da du einen Bus mit nur einer Tür hast, gibt es also nur einen Ein- und einen Ausgang.
    [entry]
    0


    [exit]
    0


    Die NULL ist hier der Pfadpunkt, wie er in der Pfaddatei angegeben ist. Der erste Punkt ganz oben ist die Null, der zweite ist die 1. Ist der Pfadpunkt NULL also der erste erreichbar Punkt von außen, dann ist das Null. Liegt der irgendwo drinnen und der erste Einstiegspunkt ist an Stelle 12 ist der Pfadpunkt 11 zu schreiben. Verstanden?


    2. Dann mußt du noch das Script angleichen. Du hast nur einen Ein- und Ausgang. Jenachdem wie die Tür gescriptet wurde, mußt du auch die freigegebenen Zugänge erstellen. Für eine Tür, die nur einen Türflügel im Script hat schreibt man folgendes:


    (L.L.door_0) 0.75 > (S.L.PAX_Exit0_Open) (S.L.PAX_Entry0_Open)
    In diesem Beispiel habe ich beim Ein und Ausgang nur einen Weg beschrieben. Damit die Leute sich nicht gegenseitig im Weg stehen, solltest du zwei Wege an der Tür erstellen. Damit laufen die fahrkunden zwar im Bus durcheinander durch, aber blockieren sich nicht.


    [entry]
    0


    [exit]
    5


    und in der door.osc:
    (L.L.door_0) 0.8 > (S.L.PAX_Exit0_Open) (S.L.PAX_Entry0_Open)


    Die 0.8 oder oben die 0.75 oder ganz oben die 0.9 steht jeweils für den Stand der Türflügel, wie weit diese geöffnet ist. Also 90% oder 80% oder 75%.


    Aber Achtung, Es geht nicht darum, was der Bus verbaut bekommen hat, sondern wie die Tür gescriptet wurde. Der Ikarus 250.59 hat 2 Türen im Bus und 3 im Script. Tür vorne ist Door0 und die hintere Tür ist door2 und door3 zusammen, also door23.

  • Ahoi Tatra,


    ich danke dir für deine umfangreichen Erläuterungen. Morgen habe ich etwas Zeiz, da werde ich mich an das Problem machen und anschließend berichten.


    Beste Grüße



    Matze

  • Hallo Tatra, hallo Community


    ich habe die door.osc wie folgt geändert:



    Damit funktionert es jetzt super. Vielen Dank an dieser Stelle.


    Doch nun steht der nächste Punkt auf der Agenda: Ich möchte gern, dass der Blinker nach dem Wieder-geradeaus-Lenken selbsttätig abschaltet. Dazu erstmal die Frage: Ist das bei Ikarus-Fahrzeugen überhaupt realistisch? Ich könnte mir vorstellen, dass es ab einem bestimmten Baujahr serienmäßig wurde.


    Wie auch immer, mein 256.50V soll es so bekommen. Ich habe in der cockpit_constfile bereits

    Zitat

    [const]
    automBlinkerAbsch
    1


    eingefügt. Ohne Erfolg.
    Nach weiterer Recherche stieß ich auf folgenden Code:



    Das Einfügen in die lights.osc blieb weiter ohne Erfolg.


    Was übersehe ich? Wer kann sachdienliche Hinweise geben (Bitte nicht an jede Polizeidienststelle

    :D

    )


    Beste Grüße



    Matze

  • Hallo Matze,


    Entschuldige, aber du bist schon ein recht lustiger Geselle, gelle?
    Du hast zwar keine Ahnung vom Scripten, aber du versuchst es wenigstens. Ist nicht schlecht.
    Aber ich empfehle dir, dich mal mit den Grundlagen der Scripte zu beschäftigen. Das ganze Thema Script ist nicht gerade einfach, aber auch nicht unmöglich. Dir fehlt auf jeden Fall die Einsicht, dass es immer irgendwelche Verbindungen gibt. Damit Omsi irgendetwas ausliest müßen gewisse Vorgaben unbedingt eingehalten werden. Omsi ist kein Rätselprogramm, sondern führt stur irgendwelche Berechnungen aus, die Eingetragen wurden.
    Zuerst ein Blick in die BUS-Datei:
    Dort stehen die Scripte drin und wo diese sich befinden:
    - Script
    - Varlist
    - Stringvarlist
    - Constfile


    Steht eine Datei dort nicht drin, wird diese von Omsi garnicht beachtet. Soll diese beachtet werden muß diese auch drin stehen.


    Dann ein Blick in ein Script:
    Dort stehen viele Einträge
    - Trigger
    - Macro:..._init
    - Macro:..._frame


    Alle Trigger die dort stehen, werden ausgelesen, wenn die dort eingetragenen Variablen-Befehle verifiziert sind. Ansonsten ist jeder eingetragene Befehl, der nicht verifiziert wurde (also in der Varlist eingetragen ist) ungültig. Das trifft aber in gewisser Weise nur für die Trigger zu. Es gibt aber auchnoch die Macro's. Dort ist es nur Ähnlich.
    Alle Macro's, die dort eingetragen wurden, werden garnicht ausgelesen, wenn die Macros nicht eingetragen sind. Du kannst dort die wunderschönsten größten macros eintragen, keine wird beachtet, wenn die Macros nicht aufgelistet sind. Dazu hat jeder Bus sogenannte Frame und Init-Listen. Wo diese sich befindet ist egal, hauptsache sie befindet sich in einem Script, das in der Busdatei eigetragen wurde.
    So sieht eine Frame-Liste aus:
    (M.L.Thermometer_frame)
    (M.L.Light_frame)
    (M.L.AI_light_frame)
    (M.L.Drehzahlwinkel_frame)
    usw.


    Nur wenn die eingetragenen Macro's in der Frame-Liste eingetragen sind, werden diese auch ausgelesen. Das sture reinschreiben, von komplexen oder einfachen Macro's bringt garnichts. Erst wenn ein Macro eingetragen ist, werden auch eventuelle Fehler im Macro als Fehler in der Logfile angezeigt. Aber alle Variablen-Befehle die in einem macro stecken, müßen natürlich auch verifiziert werden, damit diese nicht ungültig sind.


    Das sture kopieren eines Macros aus einem Bus in einen anderen Bus bringt garnichts. Du mußt Omsi schon ganz genau sagen, was es machen soll und was nicht. Du mußt also die ganzen Verbindungen herstellen.


    Dazu erstmal die Frage: Ist das bei Ikarus-Fahrzeugen überhaupt realistisch?


    Bei den karus-Bussen der 200-er Serie, war es aber 1991 durchaus üblich, Fahrzeuge mit automatischer Blickabschaltung zu bekommen. Ab wann es serienmäßig bei allen Fahrzeugen eingesetzt wurde, weiß ich aber nicht. Der Ikarus 256 war die gekürzte Variante (11 Meter) des Reisebusses 250 (12 Meter). Beide Versionen hatten nie abschaltbare Blinker. Das kam erst mit der Übernahme durch EAG, wobei die Typbezeichnung sich änderte auf C56. Der 256.50 wurde von 84 bis 88 gebaut. Wäre also für den 256.50 nicht real.
    Wir sind aber in Omsi und wenn du es so haben willst, dann ist das auch ok.


    Was übersehe ich? Wer kann sachdienliche Hinweise geben (Bitte nicht an jede Polizeidienststelle

    :D

    )


    Also ich habe meinen Freund Peter aus Würzburg angerufen, der ist Polizist, kann aber mit den Hinweisen nichts anfangen

    :P


    Du übersiehst die Zusammenhänge, wann ein Script und damit ein Trigger ausgelesen wird und wann ein Macro beachtet wird.


    Ich schrieb zum Anfang, dass du ein lustiger Geselle bist. Du schreibst in die Constfile:
    [const]
    automBlinkerAbsch
    1


    Du hättest auch schreiben können:
    [const]
    Ich_will_das_mein_Blinker_grün_leuchtet
    256


    Ist genauso sinnvoll. Solange die Constante "automBlinkerAbsch" nicht im Macro abgefragt wird, ist dein Eintrag für'n Arsch. Genauso wie dein Macro für'n Arsch ist, wenn das Macro nicht in der Frame_Liste eingetragen wurde. Also reines blindes kopieren, geht bei Omsi nicht. In deinem kopierten Scriptschnipsel wird nur eine Constante abgefragt:
    (C.L.lights_blinkautom_minLenk)


    Ich würde dir auch erstmal die beiden Videos von Busfanat ans Herz legen, die Grundlegende Einblicke in die Scripte geben.

  • Ahoi Tatra,


    ja, man sagt mir einen recht speziellen Humor nach, aber das ist gut so.

    :D


    Das Scripting geht also viel tiefer, als ich vermutet habe.

    8|

    Ich danke dir sehr für deine Beschreibung. Die Umstellung des Blinkers ist, auch wenn unrealistisch, ja mal eine gute Übung, um sich da reinzuarbeiten.

    ^^

    Allein dass busfanats Videos zusammen um die vier Stunden lang sind, zeigt den Umfang des ganzen deutlich.

    :wacko:

    Mal sehen, ob ich mich da reinfuchse.

    :(


    Beste Grüße



    Matze

  • Moin,


    und wenn Du Dich ein bisschen reingefuchst hast, hier mal zum Vergleich das Scriptfragment, welches ich immer in die jeweilige light.osc einfüge, um den Blinker wieder auszuschalten. Hab ich irgendwann mal bei einem Bus gefunden und funktioniert bei den meisten Bussen:



    Liebe Grüße
    Stefan