Thanks for your answer!
Yeah, the idea with the AUXI script variables is excellent! If you would implement the mentioned functions, AUXI would be a perfect addition to the OMSI script system!
Du bist in Begriff, OMSI WebDisk & Community zu verlassen, um auf die folgende Adresse weitergeleitet zu werden:
Bitte beachte, dass wir für den Inhalt der Zielseite nicht verantwortlich sind und unsere Datenschutzbestimmungen dort keine Anwendung finden.
Thanks for your answer!
Yeah, the idea with the AUXI script variables is excellent! If you would implement the mentioned functions, AUXI would be a perfect addition to the OMSI script system!
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:
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!
Vielen Dank! Ich habe hier schon mal einen Beitrag zu diesem Thema gesucht, aber nichts gefunden. Das war aber schon eine Weile her...
Hallo,
ich wollte fragen, wann genau eine Datei das Label "Empfohlen" bekommt. Wovon genau hängt das ab?
Vielen Dank für Eure Antworten!
Lösung von Einsamer_Wolf86: RE: Wie kommt man an ein "Empfohlen" bei den Downloads?
Nach längerer Zeit wird es bald ein neues Update geben:
Nach langem Warten ist es nun so weit: Der OMSI Font Generator wird zum OMSI Font Creator mit vielen neuen Funktionen!
Bald kommt ein neues Update mit:
Bald folgt:
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.
'#################################
'Parada-Announcement
'#################################
'plays the actual stop announcement after X meters
'(c) 31.03.2022 jjb
'Script Version: 1.0
'Omsi release: 2.0
'Needs:
'- none
{init}
"Debug: Init" $msg
' Nullsetzen
0 (S.L.lastbusstop)
(L.L.kmcounter_km) (L.L.kmcounter_m) 1000 / + 10 * (S.L.lastkm)
{end}
{frame}
"Debug: Frame" $msg
' Script soll nur auf Mallorca ausgeführt werden
(L.$.Yard) "PMI_2Palma" $=
{if}
"Debug: Hof-Datei PMI_2Palma" $msg
' Speichern des Ziels und der aktuellen Haltestelle
' Register 0: Haltestelle als Index
' Register 1: akt. Km-Stand
' Variable 3:
(M.V.GetTTBusstopIndex) (S.L.actbusstop)
(L.L.kmcounter_km) (L.L.kmcounter_m) 1000 / + 10 * (S.L.actkm)
(L.L.actbusstop) 4 (M.V.GetBusstopString) "" $= !
{if}
"Nächste Haltestelle ist nicht leer" $msg
(L.L.actbusstop) 2 (M.V.GetBusstopString) $IntToStr (S.L.shoulddistance)
{else}
"Nächste Haltestelle ist leer" $msg
0 (S.L.shoulddistance)
{endif}
' vergleichen der Werte mit dem letzten Durchlauf
(L.L.actbusstop) (L.L.lastbusstop) = !
(L.L.lastbusstop) 0 = ! &&
(L.L.shouldplay) 0 = &&
(L.L.shoulddistance) 0 = ! &&
{if}
"Soll abgespielt werden" $msg
1 (S.L.shouldplay)
(L.L.actkm) (L.L.shoulddistance) + (S.L.lastkm)
{else}
"Soll nicht abgespielt werden" $msg
0 (S.L.shouldplay)
{endif}
' schon bereit Ansage abzuspielen?
(L.L.lastkm) (L.L.actkm) =
(L.L.shouldplay) 1 = &&
{if}
' Ansage vorbereiten
"..\..\Announcements\" 0 (M.V.GetDepotStringGlobal) "\" $+ $+ "act_" $+ (L.$.act_busstop) $+ ".wav" $+
(T.F.ev_ansage) $msg
' Zurücksetzen
0 (S.L.shouldplay)
0 (S.L.shoulddistance)
(L.L.actbusstop) (S.L.lastbusstop)
{endif}
{endif}
{end}
Alles anzeigen
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:
Vielen Dank für die Antworten!
Ich fasse mal zusammen, um sicherzugehen, dass ich alles richtig verstanden habe:
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!
Hallo,
da ich den OMSI Script Creator entwickle, brauche ich einige Informationen zum Verhalten der Stacks:
Danke für eure Antworten!
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 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)
{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 =)
... erscheint das Variablen-Fenster, welches ich heute auch verbessert habe:
Gebe ich nicht 'Tutti Frutti' ein, öffnet sich auch nicht das Stackdump-Fenster.
Hier ist l0 l1 = 1, also richtig und das Stackdump-Fenster öffnet sich.
Man nehme ein einfaches (und in diesem Fall sinnloses) Script:
'Testscript für den OMSI Script Debugger
'von jjb
'muss jeden Frame ausgeführt werden
{frame}
1 (S.L.Variable3)
2 (S.L.Variable2)
3 (S.L.Variable1)
(L.L.Wetter) 2 =
{if}
1 (S.L.Regentropfen)
(L.L.Regentropfen) 10 =
{if}
5 (S.L.Regentropfen)
{endif}
{endif}
'ein Fehler:
'{end}
Alles anzeigen
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 ...
Aus dem:
{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:
{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}
Alles anzeigen
... 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.