Hier eine Sammlung meiner Script-Mods für diverse Busse, überwiegend noch aus dem MOF, ergänzt durch paar neue Dinge (kursiv). Diese funktionieren in "verwandten" Bussen, da meist die originalen Scriptteile kopiert wurden. Es gibt aber natürlich nie eine Garantie, insbesondere wenn man einen anderen Mod noch verwendet. Man kommt also ums ausprobieren nicht herum, und ich kann leider in vielen Fällen keine Hilfe geben, da ich im Grunde beim Scripten auch nur Basics beherrsche und das meiste durch Ausprobieren und viele Fehlversuche hinbekommen habe.
Scheibenwischer-Hebel durchschalten per Tastatur:
Wie ja allgemein bekannt ist wanderte die Steuerung der Wischer irgendwann in den Kombihebel zusammen mit dem Blinker, sodass man die einzelnen Wischer-Stufen mit diesem durchschaltet, und nicht einzelne Taster auf dem Armaturenbrett drückt. Solch ein Durchschalten ist aber mit der Tastatur standardmäßig nicht möglich, man muss auch in diesen Bussen die einzelnen Wischerstufen wie bei Bussen der ersten VÖV Generation auf einzelne Tasten legen. Damit ist jetzt Schluß. Mit dieser Änderung braucht Ihr nur zwei Tasten belegen, die die Richtung des Kombihebels steuern und nacheinander wie auch bei der Mausnutzung die Wischerstufen durchschalten. Da die Belegung bei den SD202-Doppeldeckern unterschiedlich war, gibt es hiervon zwei Versionen: die D86-Version für D86-88 sowie die neusten SD200er, und die D89-Version für D89-92, NL202/NG272 und viele andere neuere Busse.
Version "D86" (kompatibel mit D86-D88, neuere SD202er und ähnliche):
Script zu bearbeiten: cockpit.osc
Folgenden Code hinter das {end} des Abschnittes {trigger:cp_wischer_wascher_button_off} einfügen:
{trigger:cp_wischer_runter}
(L.L.cockpit_wischer_drehschalter_mode)
1.5 <
{if}
0 (S.L.cockpit_wischerhebel_mode) (S.L.cockpit_wischer_drehschalter_mode)
0 3 / (S.L.cockpit_wischerhebel)
0 (S.L.cockpit_wischer_drehschalter)
0 (S.L.cp_wischer_einaus_sw)
0 (S.L.cp_wischer_intervall_sw) (S.L.cp_wischer_schnell_sw)
{else}
(L.L.cockpit_wischer_drehschalter_mode)
2.5 <
{if}
1 (S.L.cockpit_wischerhebel_mode) (S.L.cockpit_wischer_drehschalter_mode)
1 3 / (S.L.cockpit_wischerhebel) (S.L.cockpit_wischer_drehschalter)
0 (S.L.cp_wischer_einaus_sw)
1 (S.L.cp_wischer_intervall_sw)
0 (S.L.cp_wischer_schnell_sw)
{else}
2 (S.L.cockpit_wischerhebel_mode) (S.L.cockpit_wischer_drehschalter_mode)
2 3 / (S.L.cockpit_wischerhebel) (S.L.cockpit_wischer_drehschalter)
1 (S.L.cp_wischer_einaus_sw)
0 (S.L.cp_wischer_intervall_sw)
0 (S.L.cp_wischer_schnell_sw)
{endif}
{endif}
(C.L.wiper_lever) !
{if}
l1 (M.L.kippschaltersound)
{endif}
{end}
{trigger:cp_wischer_hoch}
(L.L.cockpit_wischer_drehschalter_mode)
0.5 <
{if}
1 (S.L.cockpit_wischerhebel_mode) (S.L.cockpit_wischer_drehschalter_mode)
1 3 / (S.L.cockpit_wischerhebel)
0 (S.L.cockpit_wischer_drehschalter)
0 (S.L.cp_wischer_einaus_sw)
1 (S.L.cp_wischer_intervall_sw)
0 (S.L.cp_wischer_schnell_sw)
{else}
(L.L.cockpit_wischer_drehschalter_mode)
1.5 <
{if}
2 (S.L.cockpit_wischerhebel_mode) (S.L.cockpit_wischer_drehschalter_mode)
2 3 / (S.L.cockpit_wischerhebel) (S.L.cockpit_wischer_drehschalter)
1 (S.L.cp_wischer_einaus_sw)
0 (S.L.cp_wischer_intervall_sw)
0 (S.L.cp_wischer_schnell_sw)
{else}
(L.L.cockpit_wischer_drehschalter_mode)
2.5 <
{if}
3 (S.L.cockpit_wischerhebel_mode) (S.L.cockpit_wischer_drehschalter_mode)
3 3 / (S.L.cockpit_wischerhebel) (S.L.cockpit_wischer_drehschalter)
1 (S.L.cp_wischer_einaus_sw)
0 (S.L.cp_wischer_intervall_sw)
1 (S.L.cp_wischer_schnell_sw)
{endif}
{endif}
{endif}
(C.L.wiper_lever) !
{if}
l1 (M.L.kippschaltersound)
{endif}
{end}
Alles anzeigen
Im Anschluss am Besten als cockpit.osc abspeichern. Beim nächsten Start von OMSI gibt es in den Tastatur-Optionen die neuen Events "cp_wischer_hoch" und "cp_wischer_runter" die Ihr mit Tasten belegen könnt. Ich habe hierfür jeweils Shift-Q und Shift-E gewählt, da ich auf Q und E Blinker hab.
Version "D89" (kompatibel mit D89-D92, NL202/NG272 und ähnlichen):
Script zu bearbeiten: cockpit.osc
Folgenden Code hinter das {end} des Abschnittes {trigger:cp_wischer_wascher_button_off} einfügen:
{trigger:cp_wischer_runter}
(L.L.cockpit_wischer_drehschalter_mode)
1.5 <
{if}
0 (S.L.cockpit_wischerhebel_mode) (S.L.cockpit_wischer_drehschalter_mode)
0 3 / (S.L.cockpit_wischerhebel)
0 (S.L.cockpit_wischer_drehschalter)
0 (S.L.cp_wischer_einaus_sw)
1 (S.L.cp_wischer_intervall_sw)
0 (S.L.cp_wischer_schnell_sw)
{else}
(L.L.cockpit_wischer_drehschalter_mode)
2.5 <
{if}
1 (S.L.cockpit_wischerhebel_mode) (S.L.cockpit_wischer_drehschalter_mode)
1 3 / (S.L.cockpit_wischerhebel) (S.L.cockpit_wischer_drehschalter)
0 (S.L.cp_wischer_einaus_sw)
0 (S.L.cp_wischer_intervall_sw)
0 (S.L.cp_wischer_schnell_sw)
{else}
2 (S.L.cockpit_wischerhebel_mode) (S.L.cockpit_wischer_drehschalter_mode)
2 3 / (S.L.cockpit_wischerhebel) (S.L.cockpit_wischer_drehschalter)
1 (S.L.cp_wischer_einaus_sw)
0 (S.L.cp_wischer_intervall_sw)
0 (S.L.cp_wischer_schnell_sw)
{endif}
{endif}
(C.L.wiper_lever) !
{if}
l1 (M.L.kippschaltersound)
{endif}
{end}
{trigger:cp_wischer_hoch}
(L.L.cockpit_wischer_drehschalter_mode)
0.5 <
{if}
1 (S.L.cockpit_wischerhebel_mode) (S.L.cockpit_wischer_drehschalter_mode)
1 3 / (S.L.cockpit_wischerhebel) (S.L.cockpit_wischer_drehschalter)
0 (S.L.cp_wischer_einaus_sw)
0 (S.L.cp_wischer_intervall_sw)
0 (S.L.cp_wischer_schnell_sw)
{else}
(L.L.cockpit_wischer_drehschalter_mode)
1.5 <
{if}
2 (S.L.cockpit_wischerhebel_mode) (S.L.cockpit_wischer_drehschalter_mode)
2 3 / (S.L.cockpit_wischerhebel) (S.L.cockpit_wischer_drehschalter)
1 (S.L.cp_wischer_einaus_sw)
0 (S.L.cp_wischer_intervall_sw)
0 (S.L.cp_wischer_schnell_sw)
{else}
(L.L.cockpit_wischer_drehschalter_mode)
2.5 <
{if}
3 (S.L.cockpit_wischerhebel_mode) (S.L.cockpit_wischer_drehschalter_mode)
3 3 / (S.L.cockpit_wischerhebel) (S.L.cockpit_wischer_drehschalter)
1 (S.L.cp_wischer_einaus_sw)
0 (S.L.cp_wischer_intervall_sw)
1 (S.L.cp_wischer_schnell_sw)
{endif}
{endif}
{endif}
(C.L.wiper_lever) !
{if}
l1 (M.L.kippschaltersound)
{endif}
{end}
Alles anzeigen
Im Anschluss am Besten als cockpit_D89.osc abspeichern und in den .bus-Dateien der betroffenen Busse in der Auflistung der Scripts auch entsprechend statt cockpit.osc eben cockpit_D89.osc eintragen. Beim nächsten Start von OMSI gibt es in den Tastatur-Optionen die neuen Events "cp_wischer_hoch" und "cp_wischer_runter" die Ihr mit Tasten belegen könnt. Ich habe hierfür jeweils Shift-Q und Shift-E gewählt, da ich auf Q und E Blinker hab.
Wer nun auch noch die alte Tastenbelegung bei beiden varianten dafür entfernen möchte, der löscht oder kommandiert alle Zeilen etwas oberhalb im Script zwischen einschließlich {trigger:cp_wischer_schnell_toggle} und einschließlich dem {end} ÜBER {trigger:cp_wischer_wascher_button} aus, denn man braucht die nicht mehr und vielleicht hat man eine sinnvollere Verwendung in diesen Bussen für diese Tasten. Oder man nutzt zwei davon jeweils für cp_wischer_runter bzw. cp_wischer_hoch, dann wäre das Rauf- oder Runterschalten auf den gleichen Tasten wie bei Bussen wo man keinen Heben sondern wie bei den SDs Tasten nutzt. Wie man es macht ist Geschmackssache.
Schlüssel-Modifikation:
Ähnlich wie beim Wischer-Kombihebel ist es schon recht seltsam in Bussen die das Licht über die Position des Schlüssels steuern und nicht über Taster trotzdem für Standlicht/Fernlicht separate Tasten drücken zu müssen. Also machen wir mal das ganze ähnlich wie beim Wischerhebel und modifizieren es entsprechend. Diesmal auch mit dem i-Tüpfelchen, dass man den Schlüssel nur in Aus-Stellung ein und ausstecken kann und nur einen eingesteckten Schlüssel auch drehen kann. hier müssen wir allerdings nun zwei Scripte bearbeiten, jeweils die cockpit.osc und die lights.osc.
Script 1 zu bearbeiten: cockpit.osc
Wir ersetzen den Code zwischen dem trigger {trigger:cp_schluessel_mov_drag} und seinem {end} durch diesen:
{trigger:cp_schluessel_mov_drag}
' Ein- und Ausstecken des Schlüssels nur möglich wenn Schlüssel in Stellung 0 (=Licht aus),
' Drehen des Schlüssels nur Mmöglich wenn Schlüssel eingesteckt ist.
' Fallunterscheidung: Schlüssel in x- oder y-Richtung?
(L.S.mouse_y) abs (L.S.mouse_x) abs >=
{if}
(L.L.cp_schluessel_rot_mode) 0.5 <
{if}
' Zunächst Translation (Einstecken)
(L.S.mouse_y) 10 / (L.L.cp_schluessel_trans) + 0 max 1 min (S.L.cp_schluessel_trans) s0
' Stufen:
' 0: Schlüssel abgezogen
' 1: Schlüssel eingesteckt
l0 0.5 <
{if}
0 (S.L.cp_schluessel_trans_mode) (S.L.elec_busbar_main_sw)
{else}
1 (S.L.cp_schluessel_trans_mode)
1 (S.L.bremse_ABS_selftest)
' Wenn beim Einstecken bereits der Stromkreis geschlossen werden soll, ohne Trennschalter:
(C.L.automatic_battery_switch)
{if}
1 (S.L.elec_busbar_main_sw)
{endif}
{endif}
{endif}
{else}
(L.L.cp_schluessel_trans_mode) 0.5 >
{if}
' Sonst Rotation (Lichtschalter)
(L.S.mouse_x) 20 / (L.L.cp_schluessel_rot) + 0 max 1 min (S.L.cp_schluessel_rot) s1
' Stufen:
' 0: Licht aus
' 1: Standlicht
' 2: Abblendlicht
l1 0.2 <
{if}
0 (S.L.cp_schluessel_rot_mode)
{else}
l1 0.8 <
{if}
1 (S.L.cp_schluessel_rot_mode)
{else}
2 (S.L.cp_schluessel_rot_mode)
{endif}
{endif}
{endif}
{endif}
{end}
Alles anzeigen
Script 2 zu bearbeiten: lights.osc
Folgenden Code hinter das {end} des Abschnittes {trigger:kw_standlicht_toggle} einfügen:
{trigger:kw_schluessel_rechts}
(L.L.cp_schluessel_trans_mode) 0.5 >
{if}
(L.L.cp_schluessel_rot)
' Wenn Schlüsselposition Aus dann Standlicht
0.2 <
{if}
0.5 (S.L.cp_schluessel_rot)
1 (S.L.cp_schluessel_rot_mode)
(T.L.ev_schluessel_dreh)
' Wenn Schlüsselposition Standlicht dann Abblendlicht
{else}
(L.L.cp_schluessel_rot)
0.8 <
{if}
1 (S.L.cp_schluessel_rot)
2 (S.L.cp_schluessel_rot_mode)
(T.L.ev_schluessel_dreh)
{endif}
{endif}
{endif}
{end}
{trigger:kw_schluessel_links}
(L.L.cp_schluessel_trans_mode) 0.5 >
{if}
(L.L.cp_schluessel_rot)
0.4 >
{if}
' Wenn Schlüsselposition Standlicht dann Aus
(L.L.cp_schluessel_rot)
0.8 <
{if}
0 (S.L.cp_schluessel_rot)
0 (S.L.cp_schluessel_rot_mode)
(T.L.ev_schluessel_dreh)
' Wenn Schlüsselposition Abblendlicht dann Standdlicht
{else}
0.5 (S.L.cp_schluessel_rot)
1 (S.L.cp_schluessel_rot_mode)
(T.L.ev_schluessel_dreh)
{endif}
{endif}
{endif}
{end}
Alles anzeigen
Beim nächsten Start von OMSI gibt es in den Tastatur-Optionen die neuen Events "kw_schluessel_links" und "kw_schluessel_rechts" die Ihr mit Tasten belegen könnt. Ich habe hierfür jeweils Pfeiltaste links und rechts gewählt, mit Pfeil runter stecke ich den Schlüssel ein und aus.
Unnütz sind nun die Trigger {trigger:kw_scheinwerfer_toggle} und {trigger:kw_standlicht_toggle} geworden und können gelöscht oder auskommandiert werden bis zu ihrem {end}
Licht-Drehschalter:
Für Busse die das Licht unabhängig vom Schlüssel mit einem Drehschalter steuern (z.B. diverse Citaros) hätten wir folgenden Code zum "drehen":
Script zu bearbeiten: lights.osc:
{trigger:kw_scheinwerfer_toggle}
(L.L.cp_schluessel_rot)
'Wenn Schlüsselposition Standlicht dann Abbl-Licht
0.5 =
{if}
1 (S.L.cp_schluessel_rot)
(T.L.ev_schluessel_dreh)
{endif}
(L.L.cp_schluessel_rot)
'Wenn Schlüsselposition Aus dann Standlicht
0 =
{if}
0.5 (S.L.cp_schluessel_rot)
(T.L.ev_schluessel_dreh)
{endif}
{end}
{trigger:kw_standlicht_toggle}
(L.L.cp_schluessel_rot)
'Wenn Schlüsselposition Standlicht dann Aus
0.5 =
{if}
0 (S.L.cp_schluessel_rot)
(T.L.ev_schluessel_dreh)
{endif}
(L.L.cp_schluessel_rot)
'Wenn Schlüsselposition Abbl-Licht dann Standlicht
1 =
{if}
0.5 (S.L.cp_schluessel_rot)
(T.L.ev_schluessel_dreh)
{endif}
{end}
Alles anzeigen
Abblend-Licht nur aktiv bei eingeschaltetem Motor:
Wenn ich mich nicht irre wurde das hier für die verschiedensten Busse schon oft gewünscht. Dabei ist die nötige Modifikation und der Aufwand sehr minimal. Da ich es aber nur OMSI 2 ausprobiert habe, weiss ich nicht ob es auch in OMSI 1 so funktioniert.
Script zu bearbeiten: lights.osc
Wir suchen uns im Script den Kommentar "Lichterzustand in Abhängigkeit vom Schlüsselschalter und Batterierelais setzen:", und fügen dem Code eine Zeile hinzu , nämlich Zeile 11. Das war's schon!
'Lichterzustand in Abhängigkeit vom Schlüsselschalter und Batterierelais setzen:
(L.L.cp_taster_nebelschluss_target) (L.L.elec_busbar_main) sqr * (S.L.lights_nebelschluss)
(L.L.cp_licht_nebelschw_sw) (L.L.elec_busbar_main) sqr * (S.L.lights_nebelschw)
(L.L.cp_schluessel_rot) 0.2 >
{if}
(L.L.elec_busbar_main) sqr
(S.L.lights_stand)
(S.L.lights_rueck)
1 (S.L.lights_terminus)
(L.L.cp_schluessel_rot) 0.8 >
(L.L.engine_n) 200 > &&
{if}
(L.L.elec_busbar_main) sqr
(S.L.lights_abbl)
{else}
0
(S.L.lights_abbl)
{endif}
{else}
0
(S.L.lights_stand)
(S.L.lights_terminus)
(S.L.lights_rueck)
(S.L.lights_abbl)
{endif}
' Fernlicht
(L.L.lights_sw_fern)
{if}
(L.L.elec_busbar_main) sqr
(S.L.lights_fern)
(S.L.lights_abbl)
{else}
0 (S.L.lights_fern)
{endif}
Alles anzeigen
[Platzhalter]
"Polnische" Lichthupe / Fernlicht-Steuerung:
Im Urbino PL-Komplettpaket ist mir die Modifikation der Lichthupen/Fernlichtsteuerung aufgefallen und habe sie für genial befunden. Es hat mich immer genervt dass in Dunkelheit ich zum Geben der Lichthupe immer erst das Abblendlicht abschalten musste, da sonst nur das Fernlicht einspringt, und die KI dieses ja auch nicht als Lichthupe interpretiert, selbst wenn man es nur kurz einschaltet. Es gibt in OMSI so viele Situationen wo man einfach die Lichthupe braucht, da man oft die Vorfahrt der KI überlassen muss, zum Beispiel um "ums Eck" unfallfrei zu kommen, weil diese viel zu weit vorne steht. Mit dieser Modifikation geht das. Wenn das Abblendlicht eingeschaltet ist, funktioniert die Lichthupe so wie wenn man es Tags übergewohnt ist. Möchte man aber aber Fernlicht haben, drückt man die entsprechende Taste einfach mindestens 2 Sekunden, und man aktviert damit das Fernlicht.
Script zu modifizieren: lights.osc, cockpit.osc, cockpit_varlist.txt
lights.osc:
{trigger:kw_fernlicht_toggle}
(L.L.lights_sw_fern) ! (S.L.lights_sw_fern)
1 (S.L.dlugie_odliczanie)
(T.L.ev_wischerhebel)
{end}
{trigger:kw_fernlicht_toggle_off}
(L.L.cp_schluessel_rot) 0.8 <
{if}
0 (S.L.lights_sw_fern)
(T.L.ev_wischerhebel)
{else}
(L.L.dlugie_czas) 2 <
{if}
0 (S.L.lights_sw_fern)
(T.L.ev_wischerhebel)
{endif}
{endif}
0 (S.L.dlugie_odliczanie)
{end}
Alles anzeigen
Dann suchen wir noch in der cockpit.osc das Makro {macro:cockpit_frame} und fügen vor dessen end-Befehl folgendes zu:
Und zu guter letzt fügen wir noch der cockpit_varlist.txt die zwei neuen Variablen an den Schluss hinzu:
Wer mag kann sich dies auch aus dem Uribino PL Gesamtpaket entsprechend rauskopieren.
"richtige" Hebelsteuerung für Blinker:
Ich fand es immer komisch, dass man den Blinker nach rechts mit nochmaligem drücken der Taste für Blinker rechts deaktivieren konnte. Es erschien mir völlig unlogisch, weil man doch den Blinkerhebel auch nicht weiter nach rechts umlegen kann wenn man schon rechts blinkt. Um also einen rechts blinkenden Blinker auszuschalten muss man den Hebel zurücksetzen (also die Taste für Blinker links drücken). Entsprechend umgekehrt beim linken Blinker. Das ist also der Sinn dieser Modifikation, für all die jenigen denen das auch komisch oder unreal erscheint wie es standardmässig in OMSI seit Jahren gehandhabt wird.
Script zu modifizieren: lights.osc:
{trigger:blinker_left_move}
(L.L.lights_sw_blinker)
0 =
{if}
1 (S.L.lights_sw_blinker)
(T.L.ev_lights_blinker_swon)
(M.L.lights_calc_geberfaktor)
(M.L.lights_startblinkgeber)
{endif}
(L.L.lights_sw_blinker)
2 =
{if}
(T.L.ev_lights_blinker_swoff)
0 (S.L.lights_sw_blinker)
{endif}
{end}
{trigger:blinker_right_move}
(L.L.lights_sw_blinker)
0 =
{if}
2 (S.L.lights_sw_blinker)
(T.L.ev_lights_blinker_swon)
(M.L.lights_calc_geberfaktor)
(M.L.lights_startblinkgeber)
{endif}
(L.L.lights_sw_blinker)
1 =
{if}
(T.L.ev_lights_blinker_swoff)
0 (S.L.lights_sw_blinker)
{endif}
{end}
Alles anzeigen
Wir ersetzen die Trigger blinker_left_move und blinker_right_move durch den obigen Code. Die darauf folgenden Trigger blinker_left_set und blinker_right_set können wir auskommandieren oder löschen, denn wenn wir die Events mit den gleichen Tasten belegt haben wie für unsere Trigger, dann wird das ganze nicht funktionieren oder ein Chaos geben. Wenn wir die richtigen Events für die Tastenzuweisung finden wollen suchen wir nach "Blinker über rechts" und "Blinker über links". Sie sind relativ oben angeordnet und haben die deutsche Übersetzung angezeigt.