Guten Tag.
Zunächst möchte ich mich entschuldigen und Sie warnen, dass meine Deutsch- und Englischkenntnisse schlecht sind und ich einen Übersetzer verwende. Aus diesem Grund kann es zu Grammatikfehlern kommen, aber ich hoffe, dass die Bedeutung klar ist.
Für den persönlichen Gebrauch modifiziere ich den Citybus o405-Bus aus dem Addon.
Meine Aufgabe besteht darin, die Steuerung der Bustüren auch während der Fahrt vollständig zu entriegeln und außerdem den Einfluss geöffneter Türen auf die Bewegung des Busses zu beseitigen (Zwangsbremsung und Blockierung).
Generell gilt, dass die Türsteuerung auf jeden Fall vollständig entriegelt werden muss.
Ich verstehe Skripte nicht gut.
Ich habe mit der Bearbeitung des Skripts „door.osc“ begonnen und mich auf einen anderen Bus konzentriert, in dem das Türsystem so implementiert ist, wie ich es brauche.
Hier Auszüge aus dem Originalskript:
{trigger:cp_doorrelease_toggle}
(L.L.cp_doorrel) ! (S.L.cp_doorrel)
(L.L.cp_doorrel) 1 =
{if}
(L.L.doormode_select) 0 =
(L.L.door_4) 0.1 < &&
(L.L.Velocity) 5 < &&
(L.L.is_G) 1 = &&
{if}
(M.L.trg_bus_dooraft45)
{endif}
(L.L.doormode_select) 1 =
(L.L.bremse_halte) 1 = &&
1 (S.L.door_release)
{endif}
{endif}
(L.L.cp_doorrel) 0 =
{if}
(L.L.doormode_select) 0 =
(L.L.door_4) 0.1 > &&
(L.L.Velocity) 5 < &&
(L.L.is_G) 1 = &&
{if}
(M.L.trg_bus_dooraft45)
{endif}
(L.L.doormode_select) 1 =
(L.L.bremse_halte) 1 = &&
{if}
0 (S.L.door_release)
{endif}
{endif}
{end}
{trigger:bus_doorfront0}
(L.L.elec_busbar_main) (C.L.elec_busbar_minV) >
{if}
(L.L.doormode_select) 0 =
(L.L.Velocity) 5 < &&
{if}
(L.L.door_lock) 0 =
{if}
(M.L.trg_bus_doorfront0)
(M.L.trg_bus_doorfront1)
{else}
(L.L.door_lock) 1 =
{if}
(M.L.trg_bus_doorfront0)
{else}
(L.L.door_lock) 2 =
{if}
(M.L.trg_bus_doorfront1)
{else}
(M.L.trg_bus_doorfront0)
(M.L.trg_bus_doorfront1)
{endif}
{endif}
{endif}
{endif}
{trigger:bus_doorfront1}
(L.L.elec_busbar_main) (C.L.elec_busbar_minV) >
{if}
(L.L.doormode_select) 0 =
(L.L.Velocity) 5 < &&
{if}
(M.L.trg_bus_dooraft23)
{endif}
(L.L.bremse_halte_sw) (L.L.door_20h_sw) || (C.L.door_needs_stopbrakeswitch) && (C.L.door_needs_stopbrake) ! &&
(L.L.bremse_halte) (C.L.door_needs_stopbrake) && ||
(C.L.door_needs_stopbrake) (C.L.door_needs_stopbrakeswitch) || ! ||
(L.L.doormode_select) 1 = &&
{if}
(M.L.trg_bus_doorfront1)
{endif}
{endif}
1 (S.L.cockpit_tuertaster2)
{end}
' Setzen der Haltestellenbremse erst bei Stillstand des Busses:
(L.L.bremse_halte_sw) (L.L.door_20h_sw) (L.L.door_hstbremse_knickschutz) || ||
(L.L.bremse_halte) ! (L.L.Velocity) (C.L.Door_Bremse_Halte_MaxKMH) < && &&
{if}
(L.L.elec_busbar_main) (C.L.elec_busbar_minV) >
{if}
(T.L.ev_haltebremse_an)
1 (S.L.bremse_halte)
{endif}
{endif}
' AI-Ablauf:
(L.L.AI_Scheduled_AtStation) s0
1 =
{if}
'Wenn Tьren geцffnet werden sollen:
(L.L.Velocity) (C.L.Door_Bremse_Halte_MaxKMH) <
{if}
'Nur, wenn v < maxkmh, sonst warten
'Taster jeweils nur betдtigen, falls noch nicht an
(L.L.bremse_halte_sw) !
{if}
(M.L.trg_bus_dooraft)
{endif}
(C.L.door_ManBackDoorFrontDoorCombined)
{if}
(L.L.doorTarget_0) ! (L.L.door_AI_timer) 0.3 > &&
{if}
(M.L.trg_bus_doorfront0)
{endif}
(L.L.doorTarget_1) ! (L.L.door_AI_timer) 0.3 > &&
{if}
(M.L.trg_bus_doorfront1)
{endif}
(L.L.haltewunsch)
(L.L.doorTarget_23) ! (L.L.door_AI_timer) 0.6 > && &&
{if}
(M.L.trg_bus_dooraft23)
{endif}
(L.L.haltewunsch_2)
(L.L.doorTarget_45) ! (L.L.door_AI_timer) 0.6 > && &&
{if}
(M.L.trg_bus_dooraft45)
{endif}
{else}
(L.L.doorTarget_0) ! (L.L.door_AI_timer) 0.3 > &&
{if}
(M.L.trg_bus_doorfront0)
{endif}
(L.L.doorTarget_1) ! (L.L.door_AI_timer) 0.6 > &&
{if}
(M.L.trg_bus_doorfront1)
{endif}
{endif}
{else}
0 (S.L.door_AI_timer)
{endif}
(L.L.door_AI_timer) (L.S.Timegap) + (S.L.door_AI_timer)
{else}
l0 -1 =
{if}
Alles anzeigen
Hier sind Auszüge aus dem Skript, das ich geändert habe:
{trigger:cp_doorrelease_toggle}
(L.L.cp_doorrel) ! (S.L.cp_doorrel)
(L.L.cp_doorrel) 1 =
{if}
(L.L.doormode_select) 0 =
(L.L.door_4) 0.1 < &&
(L.L.is_G) 1 = &&
{if}
(M.L.trg_bus_dooraft45)
{endif}
(L.L.doormode_select) 1 =
(L.L.bremse_halte) 1 = &&
1 (S.L.door_release)
{endif}
{endif}
(L.L.cp_doorrel) 0 =
{if}
(L.L.doormode_select) 0 =
(L.L.door_4) 0.1 > &&
(L.L.is_G) 1 = &&
{if}
(M.L.trg_bus_dooraft45)
{endif}
(L.L.doormode_select) 1 =
(L.L.bremse_halte) 1 = &&
{if}
0 (S.L.door_release)
{endif}
{endif}
{end}
{trigger:bus_doorfront0}
(L.L.elec_busbar_main) (C.L.elec_busbar_minV) >
{if}
(L.L.doormode_select) 0 =
{if}
(L.L.door_lock) 0 =
{if}
(M.L.trg_bus_doorfront0)
(M.L.trg_bus_doorfront1)
{else}
(L.L.door_lock) 1 =
{if}
(M.L.trg_bus_doorfront0)
{else}
(L.L.door_lock) 2 =
{if}
(M.L.trg_bus_doorfront1)
{else}
(M.L.trg_bus_doorfront0)
(M.L.trg_bus_doorfront1)
{endif}
{endif}
{endif}
{endif}
{trigger:bus_doorfront1}
(L.L.elec_busbar_main) (C.L.elec_busbar_minV) >
{if}
(L.L.doormode_select) 0 =
{if}
(M.L.trg_bus_dooraft23)
{endif}
(L.L.bremse_halte_sw) (L.L.door_20h_sw) || (C.L.door_needs_stopbrakeswitch) && (C.L.door_needs_stopbrake) ! &&
(L.L.bremse_halte) (C.L.door_needs_stopbrake) && ||
(C.L.door_needs_stopbrake) (C.L.door_needs_stopbrakeswitch) || ! ||
(L.L.doormode_select) 1 = &&
{if}
(M.L.trg_bus_doorfront1)
{endif}
{endif}
1 (S.L.cockpit_tuertaster2)
{end}
' Setzen der Haltestellenbremse erst bei Stillstand des Busses:
(L.L.bremse_halte_sw) (L.L.door_20h_sw) (L.L.door_hstbremse_knickschutz) || ||
(L.L.bremse_halte) ! (C.L.Door_Bremse_Halte_MaxKMH) < && &&
{if}
(L.L.elec_busbar_main) (C.L.elec_busbar_minV) >
{if}
(T.L.ev_haltebremse_an)
1 (S.L.bremse_halte)
{endif}
{endif}
(L.L.AI_Scheduled_AtStation) s0
1 =
{if}
'Wenn Tьren geцffnet werden sollen:
(C.L.Door_Bremse_Halte_MaxKMH) <
{if}
'Nur, wenn v < maxkmh, sonst warten
'Taster jeweils nur betдtigen, falls noch nicht an
(L.L.bremse_halte_sw) !
{if}
(M.L.trg_bus_dooraft)
{endif}
(C.L.door_ManBackDoorFrontDoorCombined)
{if}
(L.L.doorTarget_0) ! (L.L.door_AI_timer) 0.3 > &&
{if}
(M.L.trg_bus_doorfront0)
{endif}
(L.L.doorTarget_1) ! (L.L.door_AI_timer) 0.3 > &&
{if}
(M.L.trg_bus_doorfront1)
{endif}
(L.L.haltewunsch)
(L.L.doorTarget_23) ! (L.L.door_AI_timer) 0.6 > && &&
{if}
(M.L.trg_bus_dooraft23)
{endif}
(L.L.haltewunsch_2)
(L.L.doorTarget_45) ! (L.L.door_AI_timer) 0.6 > && &&
{if}
(M.L.trg_bus_dooraft45)
{endif}
{else}
(L.L.doorTarget_0) ! (L.L.door_AI_timer) 0.3 > &&
{if}
(M.L.trg_bus_doorfront0)
{endif}
(L.L.doorTarget_1) ! (L.L.door_AI_timer) 0.6 > &&
{if}
(M.L.trg_bus_doorfront1)
{endif}
{endif}
{else}
0 (S.L.door_AI_timer)
{endif}
(L.L.door_AI_timer) (L.S.Timegap) + (S.L.door_AI_timer)
{else}
l0 -1 =
{if}
Alles anzeigen
Im Allgemeinen habe ich nur Zeilen entfernt, die „L.L.Velocity“ enthalten, ähnlich wie bei dem anderen Bus, den ich als Beispiel verwende.
Bei einem anderen Bus wird die Entriegelung jedoch auch durch Änderungen in den Motor- und Getriebeskripten beeinflusst, beim o405 habe ich solche Werte jedoch nicht gefunden.
Das Ergebnis meines Eingriffs: Auf den ersten Blick funktioniert alles, zumindest die erste Tür öffnet und schließt sich unter allen Umständen, unabhängig von der Bewegung.
Während der Fahrt öffnet sich die zweite Tür, die Haltebremsung wird jedoch sofort aktiviert und der Bus stoppt entsprechend, die Bewegung wird blockiert.
Was sagen Sie im Allgemeinen dazu? Wie kann ich eine solche Funktionalität auf diesem Bus erreichen? Was beeinflusst dies sonst noch im door.osc-Skript? Was kann andere Skripte sonst noch beeinflussen?
Ich hänge die Original-Skriptdatei an, falls Sie sie benötigen.
Vielen Dank im Voraus für jede Hilfe.