Objekte nur temporär anzeigen

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 brauche für den Bau meiner Map (M46-Berlin) einige Objekte, die nur zu bestimmten Tageszeiten angezeigt werden sollen.
    Ich denke, dass so etwas gehen müsste indem man die Textur einfach zu den Zeiten, wo das Objekt nicht angezeigt werden soll durch unsichtbare/ durchsichtige Texturen ersetzt.


    Bei den Gebäuden "Buildungs_MC" wird ja die Funktion "Nihtmap mode" verwendet. Wo finde ich denn die Datei, in welcher die verschiedenen Zeitfenster konfiguriert werden?
    Dann würde ich einfach ein neues Zeitfenster erstellen, sodass Omsi weiß wann die durchsichtige Textur verwendet werden soll und das Objekt somit unsichtbar wird.


    Zum Verständnis: Ich benötige diese Funktion zum einen für ein Tor, welches nur zu bestimmten Tageszeiten offen stehen soll. Außerdem würde ich so evtl. temporäre Busspuren ermöglichen können, auf denen außerhalb ihrer Geltungszeit geparkt werden kann.

  • Nein, ist schon richtig, dass Chrono nur bei Datumsveränderung funktioniert.
    Das mit dem Nachtmode kann man meines Wissens nicht so genau einstellen, es gibt aber verschiedene Modi (z.B. Schulen sind in der Nacht auch dunkel, Bürohäuser sind ab 6 Uhr beleuchtet, etc.).
    Guck dir einfach mal die verschiedenen Texture-Dateien an.


    Wo man unbedingt drauf achten sollte, ist die Kollision des Objekts, wenn nämlich die Texturen auch durchsichtig sind, die Kollision ist immer da.

    ;)
  • Wenn du das Hamburg Tag&Nacht-Addon hast, kannst du mal gucken, wie es mit den Menschengruppen gemacht wurde. Denn bei denen kannst du im Editor einstellen, wann sie auftauchen und verschwinden sollen.

  • Das Hamburg-Addon habe ich leider nicht

    :(


    Ich dachte vielleicht, dass es irgendeine Datei gibt, in welcher die verschiedenen Zeitfenster definiert werden. Von irgendwoher muss Omsi ja wissen, ab wann die Lichter im Gebäude eingeschaltet werden sollen.


    Die Kollision würde ich natürlich ausstellen

    ;)
  • Die Nightmap-Modes sind meines Wissens nach hardcodet.


    Man könnte das ganze aber per Script lösen.
    Im Script definiert man dann die gewünschten Zeitfenster & macht sich eine Variable, die wenn das gewünschte Zeitfenster erreicht ist auf 1 gesetzt wird.
    So kann man per visible-Befehl in der sco das Objekt anzeigen bzw verschwinden lassen.

  • Ist jetzt nicht getestet, aber das sollte gehen:


    osc


    varlist:

    Code
    1. Sichtbar


    model.cfg zur betreffende o3d drunter setzen:

    Code
    1. [visible]
    2. Sichtbar
    3. 1


    recht simpel gehalten, sollte aber gehen.

  • Ich hatte auch schon die Idee, auf diese Weise z.B. temporär parkende Fahrzeuge auf der Busspur zu realisieren.
    Problematisch wird es allerdings, wenn man zu der Zeit gerade selbst dort unterwegs ist, und es ploppt plötzlich vor der Nase ein Lieferwagen auf.
    Da müsste man noch eine Lösung für finden, damit Objekte nur aus-/eingeblendet werden, wenn der Spieler nicht in Sichtweite ist.

  • Das könnte zum Problem werden.
    Werden denn beim Kachelnachladen die Scripte von den Objekten neu geladen?
    Wenn ja könnte man das ganze einfach ins init auslagern.
    Wenn nicht habe ich auch keine passable Lösung.

  • Jedes Objekt besitzt sein eigenes Script-Context, das bei erstmaliger Sichtbarkeit die INIT und dann in jeder Frame das FRAME-Macro aufruft, solange es sichtbar (geladene Kachel) ist.


    Die Variable "Sichtbar" wird somit bei jedem Frame neu gesetzt, jenachdem, wie man es einprogrammiert.
    Die Spiele-Engine schaut dann immer, ob die Variable in der [Visible]-Sektion sich geändert hat und handelt dementsprechend.

  • Problematisch wird es allerdings, wenn man zu der Zeit gerade selbst dort unterwegs ist, und es ploppt plötzlich vor der Nase ein Lieferwagen auf.

    Dann musst du bei einer Busspur, die 14-18 Uhr gilt, deinen Hintern eben bis 17:59 aus der Schussbahn bewegen

    :D

    . Ist bestimmt nicht ideal, aber da notwendigerweise die Kollision abgeschaltet ist, wäre das kein Weltuntergang. Es würde sicher auch Sinn machen, die Parkplätze per Zufall zwischen 18:00 und 18:30 zu füllen. Dann kracht man um 18:01 nämlich erst gegen ein Fahrzeug und nicht gegen alle.

  • Endlich habe ich eine Lösung gefunden. Vielen Dank an MAN-Busfahrer, ohne ihn wäre das nicht möglich gewesen.


    Es folgt ein Beispiel für eine Spur die zwischen 14 und 18 Uhr nicht beparkt werden soll:


    1.


    2.


    3.


    4.


    5.


    6.


    7.


    8.


    Wichtig:


    ERKLÄRUNG DER FUNKTIONSWEISE:

  • Braucht es wirklich die Script-Einträge unter jedem Mesh? Scripte und alles was dazugehört sind doch einem Objekt (also hier Scenery-Object) zugeordnet und nicht einem Mesh eines Objekts (daher auch nur ein script-Block bei den Bussen).

  • Ohne jetzt allzuviel Ahnung von Szenarienobjekten zu haben: Gibt es nicht sogar Möglichkeiten im Editor Zahlvariablen festzulegen? Das wäre 100x praktischer als für jede Zeitspanne ne eigene dusselige Scriptdatei zu erstellen.

  • Naja wäre es auch möglich im Script zu sagen an welchen Tag etwas "da sein soll"?


    Ich bräuchte eigentlich einen Soundcupe der eine Datei einmalig abspielt um eine bestimmte Uhrzeit und das nur an einem Bestimmten Wochentag oder gar Monat... (Ergo: Sirenentest der Feuerwehr)