Beiträge von jjb

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,

    AUXI ist ein echt tolles Programm, vorallem aber die Developer-Tools. Großes Lob an den Entwickler! Ich habe aber zwei Vorschläge: Wäre es möglich eine Funktion hinzuzufügen, die jeden (ungefähr) Frame/FixedFrame ein LUA-Script ausführen könnte? Möglicherweise könnte man dies mit einer async-Methode und einer Schleife umsetzen? Könnte man LUA-Scripts per Button/bzw. über das Menü ausführen? Somit könnte man OMSI perfekt modden! Ein Beispiel für das Ausführen von LUA-Scripts per Button wäre das Überspringen der Pausenzeit, Ändern der .HOF-Datei auf eine bestimmte, usw...


    Hello,

    AUXI is a really great programme, especially the developer tools. Great praise to the developer! But I have two suggestions: Would it be possible to add a function that could execute a LUA script every (approximately) Frame/FixedFrame? Possibly this could be implemented with an async method and a loop? Could LUA scripts be executed by button/via the menu? This would be a perfect way to mod OMSI! An example for executing LUA scripts via button would be skipping the pause time, changing the .HOF file to a specific one, etc....

    Du kannst dies versuchen:

    • das Mesh in Blender auswählen:

    • im Edit Mode alle Faces markieren mit a:

    • und Strg+T drücken:

    • das Mesh wie gewohnt exportieren und im Editor laden

    Dies passiert in OMSI deshalb, weil in der .o3d-Datei die Flächen als Dreiecke gespeichert werden und die Fläche nach dem Bearbeiten mit dem Knife-Tool in deinem Fall kein Dreieck mehr ist. Die Funktion Triangulate Faces formt das Polygon wieder in Dreiecke um. Achtung! Dadurch kann es schwieriger sein, bspw. das UV Mapping zu bearbeiten!

    Sprachupdate veröffentlicht

    Download - WebDisk

    • Sprachfeature inkl. 5 Sprachen:
      • Englisch
      • Deutsch
      • Polnisch
      • Spanisch
      • Französisch
      • Möglichkeit zum Hinzufügen seiner eigenen Sprache
    • einzelne Zeichen können nun bearbeitet werden (Beta-Funktion: Fehler können noch vorkommen)
      • anzeigen (zum Erstellen einer Font aus einem eigenen Bild)
      • verschieben
      • Größe ändern
    • neue Modes
    • einfacherer Weg zum Installieren von Assets (Modes und Sprachdateien)
    • diverse Fehlerbehebungen

    Neues Sprachupdate

    Nach längerer Zeit wird es bald ein neues Update geben:

    • Sprachfeature inkl. 5 Sprachen:
      • Englisch
      • Deutsch
      • Polnisch
      • Spanisch
      • Französisch
      • Möglichkeit zum Hinzufügen seiner eigenen Sprache
    • Zeichen können nun bearbeitet werden
      • anzeigen (zum Erstellen einer Font aus einem eigenen Bild)
      • verschieben
      • Größe ändern
    • neue Modes
    • einfacherer Weg zum Installieren von Assets (Modes und Sprachdateien)
    • viele Bugfixes

    Vereinigung vom OMSI Font Generator & Creator

    Nach langem Warten ist es nun so weit: Der OMSI Font Generator wird zum OMSI Font Creator mit vielen neuen Funktionen!

    • Verschiedene Sprachen
    • Laden und Speichern von Fonts, Projekten
    • Überarbeitung des UI’s inkl. Icons und neuen Funktionen

    Bald: Neues Update

    Bald kommt ein neues Update mit:

    • Laden & Speichern von Projekten
    • Erweiterte Einstellungen: ändere Darstellung, Ort und Größe des Buchstabens
    • ändere den Zeilenabstand
    • lade Buchstaben und Schriftarten aus *.oft-Dateien
    • ändere den Speicherort des Outputs


    Bald folgt:

    • OMSI Font Creator im OMSI Font Generator mit der Hilfe von dem More-Properties-Window
      • deshalb: kleine Überarbeitung des UI's


    Wie findet ihr das, was auf euch zukommt?

    Ich habe dieses Script erstellt, aber irgendwie sind alle Variablen 0 und die $msg-Befehle werden im Debug-Modus nicht angezeigt.

    Wo liegen die Fehler? In der Log-Datei steht nichts ...

    Langsam kommen mehr Funktionen hinzu:


    Nun habe ich schon ein wenig am Script-Generator gearbeitet:

    Auf dem Screenshot zu sehen ist der "Plugin Market", also "Plugin-Markt". So können Nutzer für Nutzer Plugins erstellen, die für den User ein Script generieren. Nur mit der Hilfe von ComboBoxes bzw. Buttons.


    Wie findet ihr die Idee?

    soweit wie ich das Verstehe, liegt der Vorteil bei diesem Scriptsystem und der umgekehrten polnischen Notation darin, dass das Script Wie ein Buch "gelesen" werden kann. es gibt ja deshalb auch keine Sprünge oder Loops innerhalb eines Frames. Stacks oder Register gibts in anderen Sprachen auch, die eine ähnliche Funktion haben.

    Ja, das stimmt. Erleichtert mir die Arbeit erheblich.

    Hier noch ein paar Fragen:

    • achtet && auf TRUE und FALSE (Bsp.: 18 5 && wäre 1) oder ob die Werte wirklich identisch sind (Bsp.: 18 5 wäre 0)
    • Werden auch bei den Vergleichsoperatoren die beiden miteinander verglichenen Werte gelöscht? Ich meine nein, möchte aber sichergehen ...
    • Wie genau funktioniert $IntToStrEnh? Ich kann das leider aus dem Wiki-Artikel nicht ganz verstehen ... Was sind die Parameter und was der Output?
    • Was passiert bei arctan und arcsin, wenn das Ergebnis nicht möglich/unendlich ist?

    Vielen Dank für die Antworten!

    Ich fasse mal zusammen, um sicherzugehen, dass ich alles richtig verstanden habe:

    • Im Fall von (L.L.variable1) ! (S.L.variable1) wird die Variable zu 1 bzw. zu 0, es kommt darauf an, ob die Variable 0 oder 1 ist.
      Wenn die Variable aber bspw. 18 (also größer 0, True) ist, wird sie auch zu 0?
    • Bei der If-Anweisung: (L.L.variable) ! {if} ... muss die Variable alles andere als ihr Wert sein.
    • Bei jeglichen Operationen werden die Operanden aus dem Stack entfernt. Also wird der Wert 5 auch bei bspw. 5 random entfernt.
    • True ist alles, was größer als 0 ist.

    Langsam frage ich mich, wie die auf sowas gekommen sind 😂...

    Hallo,

    ist es möglich per Script auszulesen, dass der Bus sich nah an seiner nächsten Haltestelle befindet?

    Damit würde ich gerne die zweite Haltestellenansage abspielen, wie bspw. "Haltestelle: Berliner Straße".


    Vielen Dank für eure Antworten!

    Hier ein kleiner Einblick in den Entwicklungsfortschritt


    OMSI Script Debugger

    Script-Schlüsselwörter

    Entry-/Exitpoints, Trigger, Macros

    Stack-Operationen

    Logische Operationen

    Vergleichsoperationen

    Mathematische Operationen

    String-Operationen

    Variablenzugriff

    System-Makros

    Bedingungen und Schleifen

    Konstanten und Funktionen

    Simulationsmodus:

    Sound-Trigger

    Systemvariablen


    OMSI Script Console

    OMSI Script Console - Beitrag


    OMSI Script Creator 0/0 0 %

    - noch keine Features umgesetzt -


    Legende

    fertig (größtenteils Fehlerlos) (4)

    fast fertig (Fehlerbehebung folgt) (3)

    einfache Features fertig (2)

    in Arbeit (1)

    unfertig (0)

    Erweiterung des Script-Debuggers

    • Nun kann das Programm auch Stringvariablen einlesen, zusammenfügen und vergleichen:
    Code: testscript-string.osc
    {frame}
        "Tutti " "Frutti" $+ (S.$.Var1)
        1 2 + (S.L.Var1)
        (L.L.Var1)
        "Tutti Frutti" (L.$.Var1) $=
        {if}
            %stackdump%
        {endif}
    {end}

    Da "Tutti " "Frutti" zusammen gleich "Tutti Frutti" ist, erscheint das Stackdump-Fenster:

    (Stackdump-Fenster zeigt den Floatstack an:

    - 1, 2 von 1 2 +

    - 3 ist davon die Summe

    - 3 wurde durch (L.L.Var1) geladen

    - 1, also TRUE, ist das Ergebnis des Vergleiches =)


    • Falls die Stringvariable nicht gesetzt wird, ...
    Code: testscript-string2.osc
    {frame}
        "Tutti Frutti" (L.$.Var1) $=
        {if}
            %stackdump%
        {endif}
    {end}

    ... erscheint das Variablen-Fenster, welches ich heute auch verbessert habe:

    Gebe ich nicht 'Tutti Frutti' ein, öffnet sich auch nicht das Stackdump-Fenster.

    • Auch habe ich ein wenig an den Systemvariablen gearbeitet:

    • Außerdem habe ich das Programm gelehrt, Registerwerte zu speichern und einzulesen:
    Code: registertest.osc
    {frame}
        10 s0 s1
        l0 l1 =
        {if}
            %stackdump%
        {endif}
    {end}

    Hier ist l0 l1 = 1, also richtig und das Stackdump-Fenster öffnet sich.

    • Was wäre euch persönlich als eins der ersten Features wichtig?

    Scripts können nun ausgeführt werden!

    Man nehme ein einfaches (und in diesem Fall sinnloses) Script:

    Und führe es aus. Da die Variable 'Wetter' nicht gesetzt wurde, erscheint das Variablenfenster:

    Und da der Endpoint auskommentiert wurde:

    Und nun die Variablen nach der Ausführung:

    ('Wetter' ist 1, 'Regentropfen' wurde deshalb nicht gesetzt)

    ('Wetter' ist 2, 'Regentropfen' ist deshalb 1)


    Na, was haltet ihr davon? Das hat mich eine Woche Vorplanung gekostet und 2,3 Std. Entwicklung ...

    Der Parser funktioniert nun!

    Aus dem:

    Code
    {init}
        1 (S.L.verschiebung)
    {end}
    
    {frame} 
        (L.L.verschiebung) (L.S.Timegap) 0.35 * - (S.L.verschiebung) 0 <
        {if}
            (L.L.verschiebung) 1 + (S.L.verschiebung)
        {endif}
    {end}

    Wird das:

    ... somit kann jede Anweisung nacheinander ausgeführt werden. Jetzt fehlt (nur) noch das Ausführen von einfachen Scripts, damit der Script-Debugger für die einfachen Scripts fertig ist.