As the subject suggests, I'm writing here just to have a few hints or, worse case scenario, a confirmation of a problem related to OMSI's mechanics.
I'd be quite happier if it's something regarding my customizing or the fact that I'm too dense and blind to get it.
To make it quick, in a 4 doors articulated vehicle, if a passenger wishes to exit via the 4th door (Exit #2) it gets in position to said door but PAX_Exit2_Req remains to 0. When approaching the bus stop, PAX_Exit_Req1 gets set to 1 instead.
It's not consistent by any means. Sometimes PAX_Exit_Req2 is set 1, PAX_Exit_Req is set to 0 but, when the DoorAft macro gets called, the 3rd door gets opened as well.
This issue is not present if the passengers in the trailer wish to exit via the 3rd door (Exit #1).
I've had a peek via AUXI but either the values get changed so quickly that I can't catch them or they stay as they are.
DoorAft looks like this:
{macro:RDYDoorAft}
' If passengers are boarding/exiting via the defined pathlinks (have fun passing some time finding them :c), reset the door timers.
' Even if there is regular passenger-flow, occasionally GetHumanCountOnPathLink will return 0, allowing the door timers to increase
' to the point that they will trigger the door to close.
' Door 2
23 (M.V.GetHumanCountOnPathLink)
24 (M.V.GetHumanCountOnPathLink) ||
{if}
0 (S.L.doorAftLastOpen)
{endif}
' Door 3
38 (M.V.GetHumanCountOnPathLink)
39 (M.V.GetHumanCountOnPathLink) ||
{if}
0 (S.L.doorAftLastOpen1)
{endif}
' Door 4
40 (M.V.GetHumanCountOnPathLink)
42 (M.V.GetHumanCountOnPathLink) ||
{if}
0 (S.L.doorAftLastOpen2)
{endif}
' Door 2
' Open:
(L.L.door_haltewunsch_knopfdruck)
(L.L.door_handsteuerung) ||
(L.L.lichtschranke_befehl) ||
(L.L.Autoschalter_Leasing_sw) ||
(L.L.door_23_nothahn_sw) ||
(L.L.bus_dooraft_sw) ||
(L.L.door_2) 0 = (L.L.door_3) 0 = && &&
(L.L.bremse_p_tank04) 550000 > &&
{if}
(L.L.bus_dooraft_sw) &&
(L.L.velocity) 0.1 < &&
(L.L.lichtschranke_befehl) ||
(L.L.door_23_nothahn_sw) ||
(L.L.doorTarget_23) ! &&
(L.L.door23_req) &&
{if}
(C.L.lichtschrankenanfaelligkeit) random (S.L.lichtschranke_gestoert)
(L.L.Tuer2_IST_SST) 0 =
{if}
(T.L.ev_doortriggeropen_2)
{else}
(T.L.ev_doortriggeropen_2_SST)
{endif}
1 (S.L.doorTarget_23) (S.L.bremse_halte) (S.L.door23_sa_opn)
(L.L.bremse_p_Tank04) 100000 - 0.96 * 100000 + (S.L.bremse_p_Tank04)
0 (S.L.exit1_lichtschranke) (S.L.door23_req)
{endif}
0 (S.L.doorAftLastOpen) (S.L.doortimer23)
{endif}
' Close:
(L.L.elec_busbar_main)
(L.L.door23_sa_opn) &&
{if}
(L.L.bremse_halte)
(L.L.bremse_feststell) ||
(L.L.door_2) 1 = &&
(L.L.door_3) 1 = &&
23 (M.V.GetHumanCountOnPathLink) ! &&
24 (M.V.GetHumanCountOnPathLink) ! &&
{if}
(L.L.doorAftLastOpen) (L.S.Timegap) + (S.L.doorAftLastOpen)
{endif}
(L.L.doorTarget_23)
(L.L.doorAftLastOpen) (C.L.doorAftOpenTime) > &&
(L.L.bremse_p_tank04) 550000 > &&
{if}
(L.L.doortimer23) (L.S.Timegap) + (C.L.tuerverzoegerung) min (S.L.doortimer23)
(C.L.tuerverzoegerung) 0 >
{if}
(L.L.doortimer23) 0.05 <
{if}
(T.L.ev_doorwarn)
{endif}
(L.L.doortimer23) (L.S.Timegap) + (C.L.tuerverzoegerung) min (S.L.doortimer23)
(C.L.tuerverzoegerung) 0 >
{if}
(L.L.doortimer23) (C.L.tuerverzoegerung) =
{if}
0 (S.L.doorTarget_23) (S.L.doortimer23) (S.L.door23_sa_opn)
(L.L.Tuer2_IST_SST) 0 =
{if}
(T.L.ev_doortriggerclose_2)
{else}
(T.L.ev_doortriggerclose_2_SST)
{endif}
(L.L.bremse_p_Tank04) 100000 - 0.96 * 100000 + (S.L.bremse_p_Tank04)
{endif}
{endif}
{else}
(L.L.Tuer2_IST_SST) 0 =
{if}
(T.L.ev_doortriggerclose_2)
{else}
(T.L.ev_doortriggerclose_2_SST)
{endif}
0 (S.L.doorTarget_23) (S.L.door23_sa_opn)
(L.L.bremse_p_Tank04) 100000 - 0.96 * 100000 + (S.L.bremse_p_Tank04)
{endif}
{endif}
{endif}
'-------------------------------------------------------------------------------------------------------------------------
' Door 3
' Open:
(L.L.door_haltewunsch_knopfdruck)
(L.L.door_handsteuerung) ||
(L.L.lichtschranke_befehl) ||
(L.L.Autoschalter_Leasing_sw) ||
(L.L.door_45_nothahn_sw) ||
(L.L.bus_dooraft_sw) ||
(L.L.door_4) 0 = (L.L.door_5) 0 = && &&
(L.L.bremse_p_tank04) 550000 > &&
{if}
(L.L.bus_dooraft_sw) &&
(L.L.velocity) 0.1 < &&
(L.L.lichtschranke_befehl) ||
(L.L.door_45_nothahn_sw) ||
(L.L.doorTarget_45) ! &&
(L.L.door45_req) &&
{if}
(C.L.lichtschrankenanfaelligkeit) random (S.L.lichtschranke_gestoert)
(L.L.Tuer3_IST_SST) 0 =
{if}
(T.L.ev_doortriggeropen_5)
{else}
(T.L.ev_doortriggeropen_5_SST)
{endif}
1 (S.L.doorTarget_45) (S.L.bremse_halte) (S.L.door45_sa_opn)
(L.L.bremse_p_Tank04) 100000 - 0.96 * 100000 + (S.L.bremse_p_Tank04)
0 (S.L.exit1_lichtschranke) (S.L.door45_req)
{endif}
0 (S.L.doorAftLastOpen1) (S.L.doortimer45)
{endif}
' Close:
(L.L.elec_busbar_main)
(L.L.door45_sa_opn) &&
{if}
(L.L.bremse_halte)
(L.L.bremse_feststell) ||
(L.L.door_4) 1 = && (L.L.door_5) 1 = &&
38 (M.V.GetHumanCountOnPathLink) ! &&
39 (M.V.GetHumanCountOnPathLink) ! &&
{if}
(L.L.doorAftLastOpen1) (L.S.Timegap) + (S.L.doorAftLastOpen1)
{endif}
(L.L.doorTarget_45)
(L.L.doorAftLastOpen1) (C.L.doorAftOpenTime) > &&
(L.L.bremse_p_tank04) 550000 > &&
{if}
(L.L.doortimer45) (L.S.Timegap) + (C.L.tuerverzoegerung) min (S.L.doortimer45)
(C.L.tuerverzoegerung) 0 >
{if}
(L.L.doortimer45) 0.05 <
{if}
(T.L.ev_doorwarn2)
{endif}
(L.L.doortimer45) (L.S.Timegap) + (C.L.tuerverzoegerung) min (S.L.doortimer45)
(C.L.tuerverzoegerung) 0 >
{if}
(L.L.doortimer45) (C.L.tuerverzoegerung) =
{if}
0 (S.L.doorTarget_45) (S.L.doortimer45) (S.L.door45_sa_opn)
(L.L.Tuer3_IST_SST) 0 =
{if}
(T.L.ev_doortriggerclose_5)
{else}
(T.L.ev_doortriggerclose_5_SST)
{endif}
(L.L.bremse_p_Tank04) 100000 - 0.96 * 100000 + (S.L.bremse_p_Tank04)
{endif}
{endif}
{else}
(L.L.Tuer3_IST_SST) 0 =
{if}
(T.L.ev_doortriggerclose_5)
{else}
(T.L.ev_doortriggerclose_5_SST)
{endif}
0 (S.L.doorTarget_45) (S.L.door45_sa_opn)
(L.L.bremse_p_Tank04) 100000 - 0.96 * 100000 + (S.L.bremse_p_Tank04)
{endif}
{endif}
{endif}
'-------------------------------------------------------------------------------------------------------------------------
' Door 4
' Open:
(L.L.door_haltewunsch_knopfdruck)
(L.L.door_handsteuerung) ||
(L.L.lichtschranke_befehl) ||
(L.L.Autoschalter_Leasing_sw) ||
(L.L.door_67_nothahn_sw) ||
(L.L.bus_dooraft_sw) ||
(L.L.door_6) 0 = (L.L.door_7) 0 = && &&
(L.L.bremse_p_tank04) 550000 > &&
{if}
(L.L.bus_dooraft_sw) &&
(L.L.velocity) 0.1 < &&
(L.L.lichtschranke_befehl) ||
(L.L.door_67_nothahn_sw) ||
(L.L.doorTarget_67) ! &&
(L.L.door67_req) &&
{if}
(C.L.lichtschrankenanfaelligkeit) random (S.L.lichtschranke_gestoert)
(L.L.Tuer3_IST_SST) 0 =
{if}
(T.L.ev_doortriggeropen_7)
{else}
(T.L.ev_doortriggeropen_7_SST)
{endif}
1 (S.L.doorTarget_67) (S.L.bremse_halte) (S.L.door67_sa_opn)
(L.L.bremse_p_Tank04) 100000 - 0.96 * 100000 + (S.L.bremse_p_Tank04)
0 (S.L.exit1_lichtschranke) (S.L.door67_req)
{endif}
0 (S.L.doorAftLastOpen2) (S.L.doortimer67)
{endif}
' Close:
(L.L.elec_busbar_main)
(L.L.door67_sa_opn) &&
{if}
(L.L.bremse_halte)
(L.L.bremse_feststell) ||
(L.L.door_6) 1 = && (L.L.door_7) 1 = &&
40 (M.V.GetHumanCountOnPathLink) ! &&
42 (M.V.GetHumanCountOnPathLink) ! &&
{if}
(L.L.doorAftLastOpen2) (L.S.Timegap) + (S.L.doorAftLastOpen2)
{endif}
(L.L.doorTarget_67)
(L.L.doorAftLastOpen2) (C.L.doorAftOpenTime) > &&
(L.L.bremse_p_tank04) 550000 > &&
{if}
(L.L.doortimer67) (L.S.Timegap) + (C.L.tuerverzoegerung) min (S.L.doortimer67)
(C.L.tuerverzoegerung) 0 >
{if}
(L.L.doortimer67) 0.05 <
{if}
(T.L.ev_doorwarn3)
{endif}
(L.L.doortimer67) (L.S.Timegap) + (C.L.tuerverzoegerung) min (S.L.doortimer67)
(C.L.tuerverzoegerung) 0 >
{if}
(L.L.doortimer67) (C.L.tuerverzoegerung) =
{if}
0 (S.L.doorTarget_67) (S.L.doortimer67) (S.L.door67_sa_opn)
(L.L.Tuer4_IST_SST) 0 =
{if}
(T.L.ev_doortriggerclose_7)
{else}
(T.L.ev_doortriggerclose_7_SST)
{endif}
(L.L.bremse_p_Tank04) 100000 - 0.96 * 100000 + (S.L.bremse_p_Tank04)
{endif}
{endif}
{else}
(L.L.Tuer4_IST_SST) 0 =
{if}
(T.L.ev_doortriggerclose_7)
{else}
(T.L.ev_doortriggerclose_7_SST)
{endif}
0 (S.L.doorTarget_67) (S.L.door67_sa_opn)
(L.L.bremse_p_Tank04) 100000 - 0.96 * 100000 + (S.L.bremse_p_Tank04)
{endif}
{endif}
{endif}
{end}
Alles anzeigen
The three doorXX_req that monitor the state of the PAX_Entry/ExitY_Req and are dealt in the frame section:
' Door 2 request
(L.L.PAX_Exit0_Req) (L.L.PAX_Entry2_Req) || (L.L.door23_sa_opn) ! && (S.L.door23_req)
' Door 3 request
(L.L.PAX_Exit1_Req) (L.L.PAX_Entry3_Req) || (L.L.door45_sa_opn) ! && (S.L.door45_req)
' Door 4 request
(L.L.PAX_Exit2_Req) (L.L.PAX_Entry4_Req) || (L.L.door67_sa_opn) ! && (S.L.door67_req)
And the relevant configuration in the passengercabin:
Thanks in advance to anyone willing to help