Będę potrzebował niewielkiej pomocy przy napisaniu eventu/eventów blokujących podanie sygnału zezwalającego na jazdę dopóki odcinek pomiędzy stacjami nie będzie wolny.
Najprościej problem rozwiązać w tak, aby event podający s1 na semaforze wjazdowym (po minięciu go przez pociąg, który tym samym zwalnia szlak) w np. Bochni, zezwalał na wyjazd pociągu z Brzeska (lub na odwrót).
Eventy wyglądały by mniej więcej tak:
event wolny multiple 0 none Bochnia_A_s1 Brzesko_wyjazd endevent
event Brzesko_wyjazd multiple 10 Brzesko12 Brzesko_C_s2 condition trackoccupied endevent
Bochnia_A to nazwa semafora wjazdowego w Bochni; Brzesko12 to nazwa toru na którym stoi pociąg mający wyjechać w kierunku Bochni; Brzesko_C to semafor, który zezwoli na wyjazd tego pociągu.
Natomiast jeżeli nie wiemy, czy najpierw będziemy gotowi do jazdy (np. zakończymy manewry) a potem zwolni się szlak, czy na odwrót, to w takiej sytuacji sprawa się trochę komplikuje.
Najpierw wstawiamy komórkę pamięci:
node -1 0 szlak memcell 60.0 1.0 50.0 ab 1 1 none endmemcell
Zakładam, że w momencie uruchomienia scenerii szlak jest zajęty.
Kiedy szlak zostaje zwolniony (pociąg przejeżdża obok semafora wjazdowego), dodajemy event zmieniający jeden z parametrów komórki (niech to będzie pierwszy parametr liczbowy)
event wolny multiple 0 none Bochnia_A_s1 szlak_wolny Brzesko_wyjazd endevent
event szlak_wolny updatevalues 0 szlak * 0 * endevent
event Brzesko_wyjazd multiple 30 szlak Brzesko_C_s2 condition memcompare * 0 0 endevent
Parametr tekstowy jest tu nieważny a drugi parametr liczbowy powinien pozostać bez zmian, dlatego w ich miejsce dajemy *.
Kiedy będziemy gotowi do odjazdu (w przypadku manewrów należy na torze przez który przejeżdża lokomotywa tuż przed podczepieniem się do składu wstawić następujący event)
event wolny multiple 0 none gotowy Brzesko_wyjazd endevent
event gotowy updatevalues 0 szlak * * 0 endevent
Event Brzesko_wyjazd został już napisany wyżej.
Jak widać niezależnie od tego, która sytuacja nastąpi wcześniej (zwolnienie szlaku, czy nasza gotowość do wyjazdu), nie spowoduje ona możliwości wyjazdu ze stacji. Umożliwi to dopiero sytuacja późniejsza.
Wyjeżdżając ze stacji można dopisać event:
event zajety updatevalues 0 szlak * 1 * endevent
Spowoduje to zajęcie szlaku i uniemożliwi wyjazd ze stacji następnego pociągu, pod warunkiem, że wydarzenie, które ustawia wyjazd tego pociągu na szlak posiada warunek
condition memcompare * 0 0
Posta pisałem "na sucho" - nie przetestowałem, czy zaprezentowane rozwiązania będą działać, toteż mogą być tu jakieś błędy.
Mam nadzieje, że pomogłem.