SPOILER! Kattints ide a szöveg elolvasásához!
'######################
' Script 4-Gang-Schaltgetriebe für Omnibusse
'######################
'Revision History
'Rüdiger Hülsmann 16.02.2011 Schalthebelbewegung und Synchronisation
'Marcel Kuhnt 10.06.2012 Neutralgang ist auch wirklich neutral
'Marcel Kuhnt 19.06.2012 Schalthebelgeschwindigkeit in Konstante, Kupplungspedal-Soundevents, Schalthebel-Sounds
'Marcel Kuhnt 30.06.2012 Rückgebaut auf 4 Gänge, Warnleuchte Kupplungskraftverstärker
'Marcel Kuhnt 26.01.2013 Kupplungs-Punkt korrigiert und variabel gemacht
'Marcel Kuhnt 22.03.2013 +/- Schaltbefehle
'######################
' Macro- und Triggerteil
'######################
'######################
' Antrieb
'######################
'----------------------
' Trigger
'----------------------
{trigger:kw_s_plus}
(L.L.antrieb_getr_gang) s0 5 <
{if}
l0 0 = !
{if}
(T.L.ev_schalthebel_0)
{endif}
l0 1 + (S.L.antrieb_getr_gang)
0 (S.L.antrieb_shifter_posy_target)
{endif}
{end}
{trigger:kw_s_minus}
(L.L.antrieb_getr_gang) s0 -1 >
{if}
l0 0 = !
{if}
(T.L.ev_schalthebel_0)
{endif}
l0 1 - (S.L.antrieb_getr_gang)
0 (S.L.antrieb_shifter_posy_target)
{endif}
{end}
{trigger:kw_s_1_fest}
{trigger:kw_s_1}
(L.L.antrieb_getr_gang) s0 1 = !
{if}
l0 0 = !
{if}
(T.L.ev_schalthebel_0)
{endif}
1 (S.L.antrieb_getr_gang)
0 (S.L.antrieb_shifter_posy_target)
' 0 (S.L.antrieb_shifter_posx_target)
{endif}
{end}
{end}
{trigger:kw_s_2_fest}
{trigger:kw_s_2}
(L.L.antrieb_getr_gang) s0 2 = !
{if}
l0 0 = !
{if}
(T.L.ev_schalthebel_0)
{endif}
2 (S.L.antrieb_getr_gang)
0 (S.L.antrieb_shifter_posy_target)
' 0 (S.L.antrieb_shifter_posx_target)
{endif}
{end}
{end}
{trigger:kw_s_3_fest}
{trigger:kw_s_3}
(L.L.antrieb_getr_gang) s0 3 = !
{if}
l0 0 = !
{if}
(T.L.ev_schalthebel_0)
{endif}
3 (S.L.antrieb_getr_gang)
0 (S.L.antrieb_shifter_posy_target)
' 0 (S.L.antrieb_shifter_posx_target)
{endif}
{end}
{end}
{trigger:kw_s_4_fest}
{trigger:kw_s_4}
(L.L.antrieb_getr_gang) s0 4 = !
{if}
l0 0 = !
{if}
(T.L.ev_schalthebel_0)
{endif}
4 (S.L.antrieb_getr_gang)
0 (S.L.antrieb_shifter_posy_target)
' 0 (S.L.antrieb_shifter_posx_target)
{endif}
{end}
{end}
{trigger:kw_s_5_fest}
{trigger:kw_s_5}
(L.L.antrieb_getr_gang) s0 5 = !
{if}
l0 0 = !
{if}
(T.L.ev_schalthebel_0)
{endif}
5 (S.L.antrieb_getr_gang)
0 (S.L.antrieb_shifter_posy_target)
' 0 (S.L.antrieb_shifter_posx_target)
{endif}
{end}
{end}
{trigger:kw_s_R_fest}
{trigger:kw_s_R}
(L.L.antrieb_getr_gang) s0 -1 = !
{if}
l0 0 = !
{if}
(T.L.ev_schalthebel_0)
{endif}
-1 (S.L.antrieb_getr_gang)
0 (S.L.antrieb_shifter_posy_target)
' 0 (S.L.antrieb_shifter_posx_target)
{endif}
{end}
{end}
{trigger:kw_s_1_fest_off}
{trigger:kw_s_2_fest_off}
{trigger:kw_s_3_fest_off}
{trigger:kw_s_4_fest_off}
{trigger:kw_s_5_fest_off}
{trigger:kw_s_R_fest_off}
{trigger:kw_s_N}
(L.L.antrieb_getr_gang) 0 = !
{if}
(T.L.ev_schalthebel_0)
0 (S.L.antrieb_getr_gang)
0 (S.L.antrieb_shifter_posy_target)
' 0 (S.L.antrieb_shifter_posx_target)
{endif}
{end}
{end}
{end}
{end}
{end}
{end}
{end}
'----------------------
' Init
'----------------------
{macro:antrieb_init}
0 (S.L.antrieb_getr_gang)
'Variation von 0.4 bis 0.8
40 random 100 / 0.4 + (S.L.antrieb_Clutch_Variation)
{end}
'----------------------
' Frame
'----------------------
{macro:antrieb_frame}
'Setzen der aktuellen Übersetzung, aber nur, wenn Gang korrekt eingelegt:
'Die Drehzahl, auf die das Getriebe die Kupplungsdrehzahl bremsen oder beschleunigen muss, prüfen. Hierdurch können synchro-Getriebe simuliert werden.
(L.L.n_Wheel) (C.L.antrieb_i_achse) * (L.L.antrieb_getr_gang) (F.L.antrieb_getr_ratio) * (L.L.antrieb_kupp_n) - abs s2
(L.L.antrieb_shifter_posy_target) 0 = !
{if}
l2 3000 <
(L.L.Clutch) (L.L.antrieb_Clutch_Variation) / 0.8 >
(L.L.engine_n) abs 20 < || &&
{if}
(L.L.antrieb_shifter_posy) 0.3 >
(L.L.antrieb_shifter_posy) -0.3 < ||
{if}
(L.L.antrieb_getr_ratio_act) s3 (L.L.antrieb_getr_gang) (F.L.antrieb_getr_ratio) (S.L.antrieb_getr_ratio_act) l3 = !
{if}
(T.L.ev_schalthebel_1)
{endif}
{endif}
{else}
(L.L.antrieb_shifter_posy) 0.3 <
(L.L.antrieb_shifter_posy) -0.3 > &&
{if}
(L.L.engine_n) 300 >
{if}
(T.L.ev_schalthebel_fail)
{endif}
(T.L.ev_ratsch)
0 (S.L.antrieb_shifter_posy_target) (S.L.antrieb_getr_gang) (S.L.antrieb_getr_ratio_act)
{endif}
{endif}
{else}
0 (S.L.antrieb_getr_ratio_act)
{endif}
'Bewegen des Schalthebels
'Erst Gang rausnehmen, bevor Schaltgasse gewechselt werden kann:
(L.L.antrieb_shifter_posy) 0 =
{if}
(L.L.antrieb_getr_gang) (F.L.antrieb_shifter_posx) (S.L.antrieb_shifter_posx_target)
{endif}
'Gang erst einlegbar, wenn zugehörige Schaltgasse erreicht:
(L.L.antrieb_shifter_posx) (L.L.antrieb_shifter_posx_target) =
(L.L.antrieb_shifter_posy) 0 = &&
{if}
(L.L.antrieb_getr_gang) (F.L.antrieb_shifter_posy) (S.L.antrieb_shifter_posy_target)
{endif}
(L.L.antrieb_shifter_posy) (L.L.antrieb_shifter_posy_target) <
{if}
(L.L.antrieb_shifter_posy) (L.S.Timegap) (C.L.antrieb_shifter_spdy) * + (S.L.antrieb_shifter_posy)
(L.L.antrieb_shifter_posy_target) s0 >
{if}
l0 (S.L.antrieb_shifter_posy)
{endif}
{endif}
(L.L.antrieb_shifter_posy) (L.L.antrieb_shifter_posy_target) >
{if}
(L.L.antrieb_shifter_posy) (L.S.Timegap) (C.L.antrieb_shifter_spdy) * - (S.L.antrieb_shifter_posy)
(L.L.antrieb_shifter_posy_target) s1 <
{if}
l1 (S.L.antrieb_shifter_posy)
{endif}
{endif}
(L.L.antrieb_shifter_posx) (L.L.antrieb_shifter_posx_target) <
{if}
(L.L.antrieb_shifter_posx) (L.S.Timegap) (C.L.antrieb_shifter_spdx) * + (S.L.antrieb_shifter_posx)
(L.L.antrieb_shifter_posx_target) s0 >
{if}
l0 (S.L.antrieb_shifter_posx)
0 =
{if}
(T.L.ev_schalthebel_gasse_0)
{else}
l0 -2 =
{if}
(T.L.ev_schalthebel_gasse_R)
{else}
(T.L.ev_schalthebel_gasse_1)
{endif}
{endif}
{endif}
{endif}
(L.L.antrieb_shifter_posx) (L.L.antrieb_shifter_posx_target) >
{if}
(L.L.antrieb_shifter_posx) (L.S.Timegap) (C.L.antrieb_shifter_spdx) * - (S.L.antrieb_shifter_posx)
(L.L.antrieb_shifter_posx_target) s1 <
{if}
l1 (S.L.antrieb_shifter_posx)
0 =
{if}
(T.L.ev_schalthebel_gasse_0)
{else}
l1 -2 =
{if}
(T.L.ev_schalthebel_gasse_R)
{else}
(T.L.ev_schalthebel_gasse_1)
{endif}
{endif}
{endif}
{endif}
'Berechnung der Kupplungsdrehzahl:
(L.L.antrieb_getr_ratio_act) 0 = !
{if}
(L.L.n_Wheel) (C.L.antrieb_i_achse) * (L.L.antrieb_getr_ratio_act) * (S.L.antrieb_kupp_n)
{endif}
'Berechnung des Motormomentes:
(M.L.engine_moment)
'Berechnung der Differenz zwischen Motordrehzahl und Kupplungsdrehzahl:
(L.L.antrieb_kupp_n) (L.L.engine_n) - (S.L.antrieb_kupp_n_delta) abs 50 >
' {if}
' 1 (S.L.antrieb_kupp_schleif)
' {endif}
'Berechnen der aktuellen Kupplungsmomente:
'Variation der Kupplung nur, wenn man selbst und ohne Auto-Kupplung fährt (sonst müsste die ja darauf noch justiert werden):
(L.L.AI) (L.S.AutoClutch) ||
{if}
(L.L.Clutch) (F.L.antrieb_kupplung) s0
{else}
(L.L.Clutch) (L.L.antrieb_Clutch_Variation) / (F.L.antrieb_kupplung) s0
{endif}
(C.L.antrieb_kupp_Mmax_haft) * (S.L.antrieb_kupp_M_haft)
l0 (C.L.antrieb_kupp_Mmax_gleit) * (S.L.antrieb_kupp_M_gleit)
'Wenn kein Gang eingelegt ist...
(L.L.antrieb_getr_ratio_act) 0 =
{if}
0 (S.L.antrieb_kupp_M_haft) (S.L.antrieb_kupp_M_gleit)
1 (S.L.antrieb_kupp_schleif)
l0 2000 * 600 + (L.S.timegap) * s5
l0 -2000 * 600 + (L.S.timegap) * s6
(L.L.antrieb_kupp_n) (L.L.antrieb_kupp_n_delta) l5 min l6 max - 0 max (S.L.antrieb_kupp_n)
{endif}
'Wenn die Kupplung nicht schleift...
(L.L.antrieb_kupp_schleif) 0 =
{if}
(L.L.antrieb_getr_M_an) (S.L.antrieb_getr_M_last)
(L.L.antrieb_kupp_n) (S.L.engine_n)
(L.L.engine_M) (S.L.antrieb_getr_M_an)
(L.L.engine_M) abs (L.L.antrieb_kupp_M_haft) >
{if}
1 (S.L.antrieb_kupp_schleif)
{endif}
(L.L.engine_n) (S.L.engine_n_last)
{else}
'Sonst...
(L.L.antrieb_kupp_n_delta) s0
0 >
'Wenn Motor durch Kupplung beschleunigt wird...
{if}
'Berechnen des Motor-Beschleunigungsmomentes:
(L.L.antrieb_kupp_M_gleit) /-/ (S.L.antrieb_getr_M_an)
{else}
(L.L.antrieb_kupp_M_gleit) (S.L.antrieb_getr_M_an)
{endif}
'Nun wird der Motor beschleunigt...
(M.L.engine_acceleration)
'Prüfen, ob sich das Vorzeichen der Drehzahldifferenz umkehrt:
(L.L.antrieb_kupp_n) (L.L.engine_n) - (L.L.antrieb_kupp_n_delta) * 0 <
(L.L.engine_M) abs (L.L.antrieb_kupp_M_haft) > ! &&
{if}
0 (S.L.antrieb_kupp_schleif)
(L.L.antrieb_kupp_n) (S.L.engine_n)
{endif}
{endif}
(L.L.antrieb_getr_M_an)
(L.L.antrieb_kupp_schleif)
'Berechnung des Abtriebmomentes:
(L.L.antrieb_getr_M_an) (L.L.antrieb_getr_ratio_act) * (C.L.antrieb_i_achse) * (S.L.M_Wheel)
'-----------------------------------------------------------
'Sound-Trigger für das Kupplungspedal:
(L.L.antrieb_prev_clutch) s0
(L.L.clutch) s1
l1 l0 - (L.S.Timegap) / (S.L.antrieb_clutch_spd)
l0 0.0 <=
l1 0.0 > &&
{if}
(T.L.ev_kupplung_inc_start)
{endif}
l0 1.0 <
l1 1.0 >= &&
{if}
(T.L.ev_kupplung_inc_end)
{endif}
l0 0.0 >
l1 0.0 <= &&
{if}
(T.L.ev_kupplung_dec_end)
{endif}
l1 (S.L.antrieb_prev_clutch)
'---------------------------------------------------------------
' Simulation des Kupplungskraftverstärkers:
(L.L.Clutch) 0.1 >
{if}
(L.L.antrieb_clutch_timer) (L.S.Timegap) + s0
{else}
0 s0
{endif}
l0 (S.L.antrieb_clutch_timer) (C.L.antrieb_clutch_warning_time) > (L.L.elec_busbar_main) * (S.L.antrieb_clutch_warning)
{end}
SPOILER! Kattints ide a szöveg elolvasásához!
Antrieb für einen MB O305, 4-Gang
[newcurve]
antrieb_getr_ratio
[pnt]
-1
-4.314
[pnt]
0
0
[pnt]
1
4.434
[pnt]
2
2.481
[pnt]
3
1.497
[pnt]
4
1
[pnt]
5
0.632
[const]
antrieb_i_achse
5.68
[const]
antrieb_kupp_Mmax_haft
1200
[const]
antrieb_kupp_Mmax_gleit
1100
[newcurve]
antrieb_kupplung
[pnt]
0
1
[pnt]
0.95
0
[pnt]
1
0
[newcurve]
antrieb_shifter_posx
[pnt]
-1
-1.5
[pnt]
0
0
[pnt]
1
-0.5
[pnt]
2
-0.5
[pnt]
3
0.5
[pnt]
4
0.5
[pnt]
5
1
[newcurve]
antrieb_shifter_posy
[pnt]
-1
1
[pnt]
0
0
[pnt]
1
1
[pnt]
2
-1
[pnt]
3
1
[pnt]
4
-1
[pnt]
5
1
[const]
antrieb_shifter_spdx
12
[const]
antrieb_shifter_spdy
3
[const]
antrieb_clutch_warning_time
15
---------------------------------------
Nötig fürs KI-Script:
[const]
antrieb_getr_ratioR
-2.23
[const]
antrieb_getr_ratio1
2.12
[const]
antrieb_getr_ratio2
1.35
[const]
antrieb_getr_ratio3
1.0
[const]
antrieb_getr_ratio4
0.7
[const]
antrieb_getr_autoSwUpMinSpd1
710
[const]
antrieb_getr_autoSwUpMaxSpd1
883
[const]
antrieb_getr_autoSwDnMinSpd2
630
[const]
antrieb_getr_autoSwDnMaxSpd2
850
[const]
antrieb_getr_autoSwUpMinSpd2
1300
[const]
antrieb_getr_autoSwUpMaxSpd2
1300
[const]
antrieb_getr_autoSwDnMinSpd3
975
[const]
antrieb_getr_autoSwDnMaxSpd3
1050
[const]
antrieb_getr_autoSwUpMinSpd3
1800
[const]
antrieb_getr_autoSwUpMaxSpd3
1800
[const]
antrieb_getr_autoSwDnMinSpd4
1600
[const]
antrieb_getr_autoSwDnMaxSpd4
1600
[const]
antrieb_getr_autoSwDnMinSpd5
1600
[const]
antrieb_getr_autoSwDnMaxSpd5
1600