Beiträge von ma7t3

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!

    Wie kann man in OMSI diese schönen "geschmeidigen" Kamerafahrten machen, so wie sie im Trailer zu sehen sind?

    Der einzige Trick, den ich da kenne ist einfach, sich einen Bus zu nehmen, den irgendwo auf der Map hinzustellen, wo man ihn nicht sieht - außerhalb eines "Schlauchbaus" oder hinter einem Backdrop.

    Dann in die F3-Ansicht weit rauszoomen, sodass man den Bildausschnitt hat, den man haben will und dann mit etwas Gefühl losfahren, die Kamera folgt dann ja der F3-Ansicht und scheint somit zu schwenken.

    So, genug Offopic dazu.

    Ich finde auch, der Trailer zeigt nochmal, wie unfassbar gut die Karte aussieht.

    Insbesondere von den vielseitigen Straßentexturen und wirklich sehr gut aussehenden Straßen- und Asphalttexturen bin ich wirklich beeindruckt.

    Das erste, was ich machen werden, wenn die Map rauskommt, wird wahrscheinlich sein, erstmal in den Editor zu gehen und die Karte bautechnisch "außeinanderzupflücken" um mir die ein oder andere Bautechnik abzugucken ^^

    Probier mal, in den Eigenschaften deiner OMSI.exe folgende Einstellungen anzupassen:


    Damit sollte OMSI deine System-DPI-Einstellung ignorieren und alles richtig darstellen.

    Dann wirkt OMSI vielleicht etwas "klein" aber nicht dein komplettes System und andere Programme.

    Ist es Normal, das Omsi nur 5,8GB runterladen möchte, obwohl ich Addons installieren möchte und den Ordner komplett gelöscht habe?

    Kommt drauf an, welche und wieviele Addons du verwendest.

    OMSI selbst (also ohne Addons) ist in der Tat nur ca. 4 GB groß. Wenn du nicht viele bzw. kleine Addons hast, kann das schon hinhauen, zumal Steam ja, um den Netzwerktraffic zu entlasten, die Dateien in komprimierter Form herunterlädt und dann lokal entpackt. D.h. die "Downloadmenge" ist immer noch deutlich kleiner als die Größe, die das Zeug am Ende fertig installiert auf deiner Festplatte einnimmt.

    Tritt das Problem bei jedem Bus auf oder nur bei einem bestimmten?

    Hast du wirklich alle Haken bei den Kollisionen in deinen Einstellungen entfernt?

    Falls das alles nicht hilft, kannst du mal probieren, im jeweiligen Map-Editor die *.prt-Dateien komplett zu löschen.

    Die sind nicht essenziell bzw. werden von OMSI bei Bedarf automatisch neu generiert. Es handelt sich dabei um Cache-Dateien für Kollisionen u.ä., die die Map schneller laden lassen. Möglicherweise ist da irgendwas im Busch.

    Eine ams-Datei ist einfach eine ZIP-Datei mit "falscher" Dateiendung.

    Du kannst im Dateiname also einfach das ".ams" durch ".zip" ersetzen und die Datei dann mit jedem handelsüblichen Archivprogramm öffnen. (Windows-Explorer, 7zip, WinRAR oder was du auch immer verwendest) :)

    Moin,

    leider gibt es diese Möglichkeit nicht direkt. Du musst im Editor immer alle Objekte einzeln löschen.

    Was du jedoch machen könntest, wäre, mit einem Suchen-und-ersetzen-Tool (ich persönlich empfehle FNR: https://findandreplace.io/download), die Hilfspfeile auf der ganzen Map durch andere (Dummy-)Objekte zu ersetzen. Somit sind sie im Editor möglicherweise leichter auffindbar und anklickbar.

    Die Hilfspfeile selbst haben ja in dem Bezug die etwas nervige Eigenschaft, dass sie zum einen nur von einer Seite sichtbar sind und zum anderen durch die Eigentleuchtkraft sich beim Auswählen nicht färben. Dadurch kann man schnell einen übersehen oder versehentlich ein anderes Objekt löschen.

    Das macht man sich beim vorherigen Ersetzen durch andere Objekte möglicherweise etwas einfacher.

    Zum Script-Backend: Im Prinzip ist es fast noch etwas abstrakter:

    Letztendlich kannst du jeder Phase eine beliebige Zahl zuweisen (0-12 sind eben allgemein verwendet und werden vom Kreuzungseditor so unterstützt, im Prinzip müsste man in der SCO aber jede beliebige Zahl eintragen können).

    Die Ampelobjekte können dann in ihrem Script über die Variable TrafficLightPhase den aktuellen Wert einfach abfragen und entsprechend behandeln (heißt, eine bestimmte Lampe aktivieren).

    Die mehreren Werte pro Phase dienen dann dazu, verschiedene Signalbilder zu aktivieren.

    So könnte man z.B. ein "T-Signal" (Türen schließen) über eine zweite Rotphase definieren.

    Das hieße dann 0 entspricht einfach "rot", 1 dann "Rot mit Türen schließen". Die normale rote Ampel (also der Querbalken) würde dann eben auf jeden Wert zwischen 0 und 2 anspringen, das T hingegen nur beim Wert 1.

    Das funktioniert tatsächlich auch so.


    Also, wie man es genau verwendet, ist dann tasächliche Sache der jeweiligen Ampelobjekte, die man verbaut bzw. wie diese die Phasen eben interpretieren (müsste man in Dokumentation oder entsprechende Scripte mal reinschauen).

    Aber die allgemeine Konvention ist eben diese:

    0-2: Rot

    3-5: Gelb

    6-8: Grün

    9-11: wieder gelb

    12: aus.

    So gibt es pro "Farbe" drei mögliche Zustände, die man dann noch individuell untergliedern kann.


    Allerdings muss man beachten, dass die KI eben nur bei den Werten 6-8 und >= 12 fährt und bei allen anderen stehen bleibt.

    Das ist tatsächlich in OMSI auch so hardgecodet und nicht per Script oder so beeinflussbar.


    Edit:

    grade bei Marcel gefunden: Die DDR-Ampeln nutzen es z.B. leicht anders:

    Du kannst mal versuchen, in den Eigenschaften von der omsi.exe bei der Option "Vollbildoptimierungen deaktivieren" das Häckchen aktivieren.

    Ansonsten ist auch der Kompatibilitätsmodus für Windows 7 sehr empfehlenswert:

    Bei Ahlheim V4 kann man außerdem durch den KI-Verkehr recht viel Performance rausholen (bzw. eben auch verschenken).


    Standardmäßig nutzt die Map zum großen Teil den Facelift als KI-Bus. Der ist in der Masse dann doch recht inperformant, was zumindest bei mir gerade in den Bereichen der Kontenpunkte (Eichenhöhe, Hbf, Kranenburg, Rosental), wo viele Linien fahren, die FPS dann doch ganz schön in den Keller gezogen hat.


    Ich habe jetzt aber eine AIList mit Spandau-MAN als KI. Damit läuft die Map bei mir einwandfrei.

    Natürlich kann man auch andere performancefreundliche KI-Fahrzeuge verwenden. :)

    Moin zusammen,


    ich bin gerade dabei, mein Haltestellenschild mit einer Alpha-Fläche auszustatten, die sich über das Haltestellenschild legt, um eine Art "Ausgeblichenheit" (durch lang anhaltende Sonneneinstrahlung usw.) darzustellen.

    Um dies möglichst dynamisch halten zu können und nicht 70 verschiedene SCO-Dateien zu benötigen, habe ich mich dazu entschieden, die Deckkraft dieser Fläche (und damit den Grad der Ausgeblichenheit) dynamisch per [alphascale] anzugeben. Das Vorgehen ist dann eigentlich recht simpel: Über eine Scriptvariable kann man im Editor über das "Beschriftung"-Fenster eine gewünschte Ausgeblichenheit zwischen 0 und 1 eingeben, ein kleine Script wandelt diesen String einmal in eine Zahl um und speichert sie in eine entsprechende Zahlenvariable, die dann mit alphascale die Deckkraft der Ausgeblichenheit bestimmt.

    (Farbe und Form des "Ausbleichungsdings" bitte erstmal ignorieren, das ist bisher nur ein Prototype und irrelevant für mein "Problem")

    Das Script nochmal ganz simpel:

    Code
    {frame}
        (L.L.init) !
        {if}
    'Ausgeblichenheit einmalig setzen und dann über "init" merken, damit es nicht in jedem Frame wieder ausgeführt wird (Performance)
            (L.$.Ausgeblichenheit) $StrToFloat (S.L.Ausgeblichenheit)
            1 (S.L.init)
        {endif}
    {end}


    Mein Haltestellenschild besteht aber nicht nur aus einem Objekt, sondern aus mehreren Einzelteilen, die im Editor modular zusammengebaut werden können (im Wesentlichen die große Haltestellentafel mit dem Haltestellennamen sowie zusätzlich Linieneinschübe). Diese werden alle per attach to an den Mast (der alleinstehend ein eigenes Objekt ist) geheftet.

    Das sieht dann so aus:

    Auch diese einzelnen Einschübe haben natürlich die Ausbleichungs-Mechanik, d.h. ebenfalls das Mesh und entsprechende Variablen. Tafel und Einschübe nutzen jedoch nicht die gleiche Stringvarlist, da sie verschiedene Beschriftungsstrings haben, allerdings heißt die "Ausbleichungsvariable" überall gleich.

    Und jetzt kommt das überraschende: Wenn ich beim "ersten" Objekt, also der Tafel, einen beliebigen Wert eintrage und die Variable aber bei den Einschüben darunter leer lasse, scheint das oberste Objekt seinen Variablenwert die nachfolgenden zu vererben. In rot habe ich jeweils daneben geschrieben, welchen Wert die einzelnen Objekte bei der Ausbleichung eingetragen haben:


    Allerdings lässt es sich scheinbar auch unter gewissen Kriterien überschreiben, dies wird dann auch nach "unten" hin weitergegeben:


    Jedoch findet die Vererbung scheinbar nicht zwingend nur von "oben nach unten" (in der Reihenfolge der Objekt-IDs, also der Platzierungsreihenfolge) statt:

    Objekt "3" scheint an Objekt "1" zu vererben, aber Nummer 2 nicht anzutasten, da es einen eigenen Wert hat:


    Das ganze funktioniert sogar auch, wenn die Objekte garnicht per attach to das gleiche Elternobjekt haben. Diese beiden Dinger wurden vollständig separat nacheinander platziert:

    Auch hier funktioniert die Vererbung in beide Richtungen, d.h. egal, welchem Objekt ich einen Wert gebe, das andere ohne Wert nimmt den des ersten an...


    Ich frage mich, ob dieses Verhalten irgendwie bewusst in OMSI programmiert wurde bzw. ob das irgendjemandem schon bekannt ist oder vielleicht sogar aktiv genutzt wird oder dazu genaueres bekannt ist.

    Grade diese Tatsache, dass die Vererbung scheinbar in beide "Richtungen" von den IDs her klappt, wirft bei mir dann doch Fragen auf, weil mir nicht klar ist, von wo ein Objekt seinen Wert im Zweifelsfall nimmt...


    Scheinbar scheint das ganze auch nicht direkt am String-Wert zu liegen sondern eher der dahinterliegende Zahl-Wert vererbt zu werden, wenn dieser "-1" ist (?)

    Die Funktion $StrToFloat parst laut Wiki den obersten Stringstack-Wert in einen Float bzw. gibt "-1" aus, wenn die Konvertierung fehlschlägt, z.B. weil der String keine gültige Zahl darstellt (was - denke ich mal, bei einem Leerstring der Fall ist).

    Wenn ich jedoch folgende Prüfung in meinem Script hinzufüge, verhindere ich damit, dass eine "-1" ausgegeben wird und interpretiere somit jegliche ungültige oder leere Eingabe als "0":

    Diese kleine Änderung sorgt jedoch nun dafür, dass die gesamte Vererbung nicht mehr funktioniert bzw. nicht mehr aktiv ist, daher meine Hypothese dass OMSI "-1" in einer Zahlvariable interpretiert als "ungesetzt, hol dir den Wert von woanders".


    Wie gesagt, mich würde mal interessieren, ob es irgendeine Person in der OMSI-Community gibt, er dieses Verhalten bekannt ist und vielleicht mehr darüber weiß...


    Edit/Nachtrag:

    Ich habe grade, um es genauer zu verstehen, mir mal die Variablenwerte direkt auf das Objekt im Textfeld ausgeben lassen. Das führt zu der Erkenntnis:

    Der Variablenwert selbst im Rahmen der Scriptsystems scheint nicht direkt vererbt/überschrieben zu werden, die Variable an sich ist und bleibt tatsächlich "-1". Jedoch scheint OMSI dann bei der Verarbeitung und Darstellung des alphascales (und vielleicht auch noch bei anderen Dingen) den Wert dann nicht zu verwenden, sondern ihn von woanders zu suchen.

    In diesem Fall habe ich links verschiedene Werte eingetragen. Rechts bliebt die ganze Zeit leer, daher wird der String als "-1" eingelesen und angezeigt:


    Nicht für für "-1", sondern jeden Wert unter 0 ist das Verhalten so:


    Ungültige Werte über 1 (ergibt ja an sich auch keinen Sinn für eine Deckkraft) werden aber hingegen wie "1" behandelt:

    Moin zusammen,

    ich wollte mal an die erfahrenen Scripter und alle anderen hier in die Runde fragen, ob irgendjemand mir mal erklären kann oder überhaupt weiß, welchen Sinn die Script-Variable InUse hat bzw. wonach sie sich verhält.

    Die Variable ist in allen Szenerieobjekten vordefiniert und ist für Skripte ReadOnly, man kann die also nur abfragen, aber nicht selber setzen.

    Die Erklärung im alten Omsi-Wiki lautet wiefolgt:

    Zitat

    Ist das Objekt "aktiv"? Die Sporthallen sind bspw. nur an Schultagen vormittags "aktiv", sodass die Soundeffekte an diese Variable gekoppelt werden können - auf diese Weise wird verhindert, dass die Soundeffekte auch in den Ferien oder nachts zu hören sind.

    Allerdings muss ich da doch gestehen, dass das für mich noch nicht so ganz einleuchtend ist. Was soll das denn genau heißen, ob ein Objekt "aktiv" ist bzw. wonach entscheidet sich das? Kann ich das als Objektbauer irgendwie beeinflussen?

    Eine Theorie von mir war, dass das quasi mit dem NightMapMode zusammenhängt, dazu habe ich auch diesen Thread gefunden. Allerdings ist das für mich auch noch nicht wirklich aufschlussreich, zumal es zum Abfragen der Nightmap-Aktivität ja schon die VariableNightLightA gibt, also warum sollte es nochmal eine andere Variable für eigentlich das gleiche geben?


    Vielleicht weiß da jemand mehr, was sich OMSI bei dieser InUse-Variable "denkt" und nach welchen Parametern sie aktiviert oder deaktiviert wird.... :/

    Leider ist der offizielle Download nicht mehr verfügbar. Die Domain existiert nicht mehr.

    Ich habe auch grade mal im WebArchive geguckt. Dort findet man zwar die Download-Seite, aber die tatsächliche Download-Datei wurde auch dort nie gesichert.

    Moin, das liegt an der Kodierung.

    OMSI speichert die global.cfg-Datei in der UTF-16-Kodierung mit LE-BOM-Markierung.

    Aus dem Screenshot wird nicht genau erkennbar, welchen Texteditor du verwendet hast, aber er scheint UTF-16 nicht zu kennen und zeigt die Datei stattdessen als UTF-8 an, was dazu führt, dass immer eine Lücke zwischen den Zeichen ist, weil (wie der Name schon vermuten lässt) UTF-8 nur 8 Bytes pro Zeichen verwendet, UTF-16 aber eben 16.

    Ich persönlich empfehle Notepad++. Das kann auf jeden Fall die Kodierung richtig erkennen und sollte die Datei dann auch richtig anzeigen. :)

    In deinem Screenshot startest du die Map mit "Letzten Stand der Karte laden". Hast du es auch, wenn du ohne Busse laden auswählst?