Event commands
Lista komend (ang. command) służących do sterowania AI oraz zmiany stanu pojazdu.
Komenda jest ciągiem tekstowym (bez spacji, wielkość liter jest istotna), może posiadać też dwa argumenty zmiennoprzecinkowe oraz współrzędne XYZ w scenerii. Argumenty liczbowe i współrzędne nie zawsze są istotne.
Od wersji 372 rozróżnione są komendy skanowane (odczytywane z torów i używane przez AI do regulacji prędkości jazdy) oraz kolejkowane (event jest dodawany do kolejki w momencie najechania na tor).
Uwaga! Działanie komend różni się w poszczególnych wersjach EU07.EXE. Opis może być nie zgadzać się z aktualnym zachowaniem.
Spis treści
- 1 Komendy AI (skanowane)
- 2 Komendy AI (kolejkowane)
- 2.1 Wait_for_orders
- 2.2 Prepare_engine
- 2.3 Change_direction
- 2.4 Obey_train
- 2.5 Shunt
- 2.6 ShuntVelocity
- 2.7 SetVelocity
- 2.8 SetProximityVelocity
- 2.9 Warning_signal
- 2.10 CabSignal
- 2.11 OutsideStation
- 2.12 Jump_to_order
- 2.13 Jump_to_first_order
- 2.14 Timetable:*
- 2.15 Emergency_brake
- 2.16 SetLights
- 2.17 Radio_channel
- 3 Komendy pojazdów
- 4 Komendy wewnętrzne
Komendy AI (skanowane)
Opis dotyczy wersji 372 i nowszych. Podczas jazdy AI skanuje tory na odległość zależną od prędkości jazdy, a na postoju na odległość 1000 metrów. Skanowanie odbywa się od końca składu w kierunku jazdy, a podczas jazdy manewrowej również od czoła wstecz.
Podczas wczytywania scenerii eventy PutValues i GetValues są klasyfikowane jako podlegające skanowaniu albo kolejkowaniu. Jeśli komendą zawartą w evencie PutValues albo w komórce pamięci eventu GetValues jest SetVelocity, ShuntVelocity albo zaczyna się od PassengerStopPoint:, to event uznany zostaje za skanowany i nie będzie możliwe wykonanie go przez kolejkę.
Przyjęto zasadę, że nazwy komend podlegających skanowaniu są pisane bez znaków podkreślenia.
SetVelocity
Ustala prędkość jazdy pociągowej. Nie załączy silnika. Prędkość aktualnie dozwoloną podaje się jako pierwszy parametr, a jako drugi prędkość na kolejnym odcinku (za miejscem o podanych współrzędnych eventu PutValues albo komórki GetValues). AI będzie tak jechać, aby po zbliżeniu się do punktu o podanych współrzędnych nie przekroczyć drugiej z podanych prędkości.
Event PutValues z SetVelocity służy do jednokierunkowego ograniczenia prędkości (dwukierunkowe ograniczenie powinno być wpisane jako parametr Velocity w torze). Pierwsza liczba określa maksymalną prędkość przed punktem umieszczenia eventu, a druga poza nim. (Zostanie to wprowadzone w przyszłych wersjach, przynajmniej wersja 390 nie obsługuje tego tak.)
Event GetValues z SetVelocity w komórce przeznaczony jest do stosowania przede wszystkim jako semafor. Pierwsza liczba określa maksymalną prędkość przed punktem umieszczenia eventu, a druga poza nim. Pierwszy parametr określa maksymalną prędkość ruchu przed komórką (wyjątkiem jest 0, które nie ogranicza możliwości ruchu). Prędkość różna od zera przełączy w tryb jazdy pociągowej (Obey_train). Drugi parametr 0 zatrzyma pojazdy zarówno w trybie jazdy pociągowej (Obey_train) jak i manewrowej (Shunt).
ShuntVelocity
Ustala prędkość jazdy manewrowej. Prędkość podaje się jako pierwszy parametr i jest ona ograniczona do przedziału <0,40> dla pojazdów kolejowych. Nie załączy silnika. Komenda przeznaczona do stosowania przede wszystkim w tarczach manewrowych (skonowanie) oraz do uruchomienia lokomotywy przed manewrami (kolejkowanie). Parametr 0 zatrzymuje pojazd. Gdy komenda jest umieszczona w komórce pamięci, nie działa na pojazdy w trybie jazdy pociągowej (Obey_train).
W przypadku samochodów nie ma potrzeby używania trybu manewrowego, ponieważ nie ma oddzielnych zasad dla takiego ruchu.
PassengerStopPoint:*
Miejsce zatrzymania. Komenda do umieszczenia we wskaźniku W4 (miejsce zatrzymania czoła pociągu). Parametr tekstowy to nazwa wskaźnika i numer toru (nie jest używany). Każdy wskaźnik musi mieć unikalną nazwę, aby AI prawidłowo odczytało współrzędne. Nazwa przed znakiem # musi być dokładnie taka sama, jak podana w rozkładzie, po znaku # mogą być dowolne znaki - są one ignorowane. Przykład: PassengerStopPoint:Łęczyca#1. Spacje należy zamienić na znaki podkreślenia.
Pierwszy parametr liczbowy określa sugerowany punkt zatrzymania i zachowanie pociągu po postoju.
Pierwszy parametr ujemny - preferowana odległość zatrzymania miedzy wskaźnikiem i czołem składu (np. przed przejściem).
Pierwszy parametr dodatni - preferowana odległość zatrzymania miedzy wskaźnikiem i środkiem składu (np. przy wiacie, przejściu podziemnym).
Parzystość tej liczby określa zachowanie po odjeździe z peronu. Dla parzystych, dostaje zgodę na odjazd po minięciu godziny odjazdu. Dla Nieparzystych czeka na sygnał zezwalający na semaforze w drodze skanowania.
Drugi parametr liczbowy definiuje długość peronu i stronę krawędzi peronowej.
Drugi parametr ujemny - wskazanie zatrzymania dla krótszych składów (W32).
Drugi parametr dodatni - długość peronu w metrach (W4). Postój zostanie zaliczony, jeśli skład zatrzyma się w podanej odległości od wskaźnika (o ile nie jest dłuższy).
Cyfra jedności tego parametru określa stronę krawędzi peronowej (1:lewa, 2:prawa, 3:obie).
Przykładowo:
include w4.inc testowo#01 100 0 20 0 0 0 21 302 end
Peron 300 metrowy po prawej stronie toru. Preferowany punkt zatrzymania 20m przed wskaźnikiem. Zgoda na odjazd po podaniu sygnału na semaforze wyjazdowym.
FoulingPoint
Ukres, czyli miejsce zatrzymania taboru, w którym nie będzie on kolidował z ruchem na sąsiednich torach. Planowane do wprowadzenia w przyszłych wersjach. Event PutValues powinien mieć współrzędne takie jak model słupka W17. Parametry powinny być zerowe, ich znaczenie zostanie ustalone w przyszłości. Możliwe, że będzie również wersja z nazwą stacji, podobnie jak to jest w przypadku PassengerStopPoint:.
SetProximityVelocity
Komenda ignorowana podczas skanowania, niemniej event ją zawierający zostanie zakwalifikowany jako skanowany.
OutsideStation
[Planowane jest wprowadzenie jako skanowanego w kolejnych wersjach po 390, obecnie podlega kolejkowaniu.] Informuje AI o dojechaniu do granicy stacji. W trybie manewrowym automatycznie zmienia kierunek jazdy, w trybie pociągowym pozwala na zwiększenie prędkości. Do stosowania we wskaźniku W5. Jeśli stacja nie posiada fizycznych wskaźników W5, należy umieścić odpowiednik bez modelu. Pierwszy parametr określi prędkość drogową za stacją, natomiast drugi powinien być kilometrażem umieszczenia wskaźnika W5, aby AI mogło dzięki temu jechać do określonego kilometra linii (ujemna wartość oznacza jazdę ze zmniejszającym się kilometrażem).
RoadVelocity
Nadanie prędkości drogowej. Obowiązuje do następnej komórki tego typu.
SectionVelocity
Ograniczenie prędkości, składa się z dwóch zmiennych: prędkości, długości. Długość może przyjmować trzy stany:
- < 0 - obowiązuje do napotkania kolejnej komórki tego typu
- = 0 - ograniczenie punktowe, np. przejazd
- > 0 - obowiązuje przez podaną długość i potem automatycznie się kasuje
Komendy AI (kolejkowane)
Przesyłanie komend do AI (pojazdów sterowanych przez komputer) jest najczęstszym ich zastosowaniem.
Oprócz interpretacji samych komend, AI posiada tabelkę rozkazów (ang. order). Tabelka służy do zapamiętywania kolejnych komend. Np. jeśli nakażemy AI jechać z określoną prędkością (SetVelocity), a silnik ma wyłączony, wtedy automatycznie jako pierwszą komendę do tabelki zapisze uruchomienie silnika (Prepare_engine), a do jazdy jako drugiej komendy przejdzie dopiero po wykonaniu całej procedury uruchomienia. Również zapodanie rozkładu jazdy wypełnia tabelkę komendami.
Wait_for_orders
Przełącza AI w tryb oczekiwania, opróżnia tabelkę rozkazów i wybiera rozkaz 0 (zawsze Wait_for_orders). Wysłanie następnie jakiejkolwiek innej komendy do AI zapisze ją jako rozkaz 1, ewentualnie 2, jeśli najpierw musi być wykonane uruchomienie silnika.
Prepare_engine
Włączenie (Prepare_engine 1 0) albo wyłączenie (Prepare_engine 0 0) silnika. Nie ma potrzeby wysyłania oddzielnego włączenia silnika, można od razu podać komendę do jazdy z określoną prędkością (SetVelocity, ShuntVelocity), czy jazdy rozkładowej albo manewrowej (Obey_train, Shunt), a procedura uruchomienia zostanie przeprowadzona automatycznie. Uruchomienie silnika można wykonać, jeśli chcemy postawić nieruchomą lokomotywę z odgłosami działania (np. SM42 oczekującą na manewry). Uruchomiona lokomotywa będzie miała zgaszone światła (aby uruchomić lokomotywę z zapalonymi światłami bez ruszenia z miejsca, należy wysłać ShuntVelocity 0 0 albo Shunt -2 0). Wyłączenie silnika należy wykonać, jeśli chcemy wygasić lokomotywę po zakończeniu jazdy, wyłączane są również światła.
Change_direction
Zmiana kierunku jazdy. Parametry 0 0 oznaczają jazdę w przeciwną stronę, natomiast 1 0 oraz -1 0 oznaczają jazdę odpowiednio w kierunku eventu wywołującego (komórki pamięci) albo od niego (do wersji 356 w kierunku sprzęgu 0 albo sprzęgu 1 ). Drugi z parametrów nie ma obecnie znaczenia i powinien mieć wartość 0.
Zmiana kierunku jazdy wymaga zahamowania lub zakończenia innej operacji (włączanie silnika, podczepianie, odczepianie), dlatego umieszczana jest w tabelce rozkazów. Komenda włączy silnik automatycznie. Jeżeli wcześniej wykonywana była jazda (Shunt albo Obey_train), będzie ona kontynuowana po zmianie kierunku. Jeżeli pojazd wcześniej oczekiwał (Wait_for_orders), zostanie przełączony w tryb jazdy manewrowej (Shunt). Kolejna wysłana komenda (np. podczepianie, jazda pociągowa) zostanie zapamiętana w tabelce i wykonana dopiero po zakończeniu zmiany kierunku jazdy.
Obey_train
Włączenie jazdy pociągowej. Automatycznie uruchamia silnik, zapala światła pociągowe i zakłada końcówki na ostatnim wagonie. Komenda załącza zatrzymywanie na przystankach rozkładowych (wskaźnik W4 - podczas manewrów muszą być wyłączone, aby zmieniająca czoło lokomotywa nie zatrzymywała się przy peronie).
Shunt
Włączenie jazdy manewrowej (parametry -1 0) albo łączenie/rozłączanie składu. Jeśli drugi parametr jest równy 0, to pierwszy (≥0) określa, ile pojazdów ma pozostać w składzie po operacji rozłączania. Do wersji 356 działało tylko Shunt 0 0, czyli odłączenie samej lokomotywy (i mogło nie działać prawidłowo dla lokomotyw dwuczłonowych). Od wersji 357 działa odczepianie dowolnej liczby wagonów, a także istnieje możliwość zablokowania połączeń w wieloczłonach, zarówno na poziomie CHK, jak również wpisów do scenerii (minus przed maską sprzęgu).
Za pomocą komendy Shunt -1 y, gdzie y<>0 jest typem sprzęgu (np. 3 dla połączenia hak+hamulec), można wykonać podłączenie AI do stojącego składu. AI po podłączeniu będzie kontynuować jazdę, w kierunku zależnym od znaku liczby y - dla wartości dodatnich skład będzie spychany. Aby AI po podłączeniu się zatrzymało w oczekiwaniu na dalsze rozkazy (np. podanie semafora do jazdy pociągowej), należy użyć liczby -2 jako pierwszej wartości: Shunt -2 y. Od wersji 352 można użyć komendy Shunt -3 y, która po podczepieniu włączy od razu tryb pociągowy. Przejście w tryb manewrowy bez zmian w składzie wykonuje się komendą Shunt -1 0, albo Shunt -2 0, jeśli AI ma oczekiwać w miejscu na podanie sygnału zezwalającego na jazdę.
Od wersji 357 działa również jednoczesne wykonanie podczepiania oraz odczepiania za pomocą jednej komendy Shunt x -y. Najpierw wykonywane jest podczepianie pchanego składu do stojących wagonów sprzęgiem y, a następnie odczepienie x>0 wagonów.
ShuntVelocity
Ustala prędkość jazdy manewrowej. Prędkość podaje się jako pierwszy parametr i jest ona ograniczona do przedziału <0,40> dla pojazdów kolejowych. Jeśli potrzeba, silnik zostanie załączony. Komenda przeznaczona do stosowania przede wszystkim w tarczach manewrowych oraz do uruchomienia lokomotywy przed manewrami. Parametr 0 zatrzymuje pojazd. Gdy komenda jest umieszczona w komórce pamięci, nie działa na pojazdy w trybie jazdy pociągowej (Obey_train).
W przypadku samochodów nie ma potrzeby używania trybu manewrowego, ponieważ nie ma oddzielnych zasad dla takiego ruchu.
SetVelocity
Ustala prędkość jazdy pociągowej. Jeśli potrzeba, silnik zostanie załączony. Prędkość aktualnie dozwoloną podaje się jako pierwszy parametr, a jako drugi prędkość na kolejnym odcinku (za miejscem o podanych współrzędnych). AI będzie tak jechać, aby po zbliżeniu się do punktu o podanych współrzędnych nie przekroczyć drugiej z podanych prędkości. Komenda przeznaczona do stosowania przede wszystkim w semaforach. Parametr 0 zatrzymuje pojazd. Gdy komenda jest umieszczona w komórce pamięci, to pierwszy parametr 0 zatrzyma pojazdy zarówno w trybie jazdy pociągowej (Obey_train) jak i manewrowej (Shunt), natomiast prędkość różna od zera przełączy w tryb jazdy pociągowej (Obey_train).
SetProximityVelocity
Komenda używana do sterowania prędkością. Pierwszy parametr określa długość dystansu do przejechania, a drugi maksymalną prędkość na końcu tego dystansu. Jeśli odległość jest dodatnia, będzie na bieżąco przeliczona do punktu o podanych współrzędnych, ujemna zostanie potraktowana jako podana bezpośrednio. Działanie komendy zależy od wersji systemu AI.
Wczesny system
Pierwotnie ta komenda była wpisana w tarcze ostrzegawcze (oraz wskaźniki W8 itp.) i służyła do poinformowania AI o prędkości na semaforze (w ograniczeniu itp.). Musiało to działać niezbyt dobrze, skoro już przed 2009 rokiem wprowadzono skanowanie torów.
Skanowanie torów
Po uruchomieniu skanowania torów tarcze ostrzegawcze z tą komendą przestały być potrzebne, ponieważ AI dostrzegało semafory z odpowiedniej odległości i mogło się bezpośrednio do nich dostosować. Komenda umieszczona w tarczy ostrzegawczej przestała mieć znaczenie, aczkolwiek potrafiła ruszyć z miejsca AI stojące daleko od semafora, ale dosięgające tarczy podczas skanowania.
Wersja 2011
Komenda używana tylko wewnętrznie, do ustalenia drogi hamowania. Wysyłana z poziomu scenerii może nie działać prawidłowo i nie powinna być stosowana. Wpisana w komórki pamięci tarcz ostrzegawczych (wskaźniki W8 itp.) jest ignorowana.
Tabelka prędkości
Po wprowadzeniu tabelki prędkości komenda straciła całkowicie swoją dotychczasową użyteczność. Najprawdopodobniej po podaniu zerowej prędkości będzie pozwalać na przesunięcie składu o ściśle określony dystans podczas manewrów. Ewentualnie może służyć do poinformowania początkującego użytkownika o tym, że mija sygnał ostrzegawczy (tarczę, wskaźnik W8).
Warning_signal
Uruchamia syrenę (Rp1). Pierwszy parametr określa długość trwania dźwięku, drugi ilość powtórzeń. Do stosowania we wskaźnikach W6.
CabSignal
Zmiana stanu sygnalizacji kabinowej. Aktualnie obsługiwane jako SHP, w rezonatorze należy zawsze podać parametry -1,-1.
OutsideStation
Informuje AI o dojechaniu do granicy stacji. W trybie manewrowym automatycznie zmienia kierunek jazdy, w trybie pociągowym pozwala na zwiększenie prędkości. Do stosowania we wskaźniku W5. Jeśli stacja nie posiada fizycznych wskaźników W5, należy umieścić odpowiednik bez modelu. W przyszłych wersjach zostanie przerobiona na skanowaną.
Jump_to_order
Wykonanie komendy wpisanej do tabelki rozkazów, na pozycji podanej jako pierwszy parametr. Komenda nie używana w związku z brakiem obsługi dowolnego wpisywania rozkazów do tabelki. Tabelka rozkazów jest tworzona automatycznie na podstawie rozkładu oraz używana bieżąco do zapamiętania następnej komendy, jeśli aktualnie wykonywana komenda wymaga dokończenia.
W celu uzyskania wstecznej zgodności, komenda Jump_to_order 0 0 jest wykonywana jako Jump_to_order 1 0, ponieważ na pozycji 0 zawsze jest Wait_for_orders.
Jump_to_first_order
Wykonanie rozkazu z pozycji 1. Może być używane do uruchomienia pociągu z przypisanym rozkładem oraz prędkością początkową 0.0.
Timetable:*
Nadanie nowego rozkładu jazdy. Za pomocą Timetable:(nazwa) można ustawić nowy rozkład jazdy, wczytany z pliku (nazwa).txt. Pozwala np. użyć EZT ponownie po zakończeniu poprzedniej relacji, czy wyprawić na szlak jeden z kilku dostępnych składów.
Wpis trainset w scenerii jest obecnie niejawnym wykonaniem tej komendy po wczytaniu składu. Nazwa rozkładu none powoduje uruchomienie w trybie manewrowym. Jeśli pojazd zostanie wstawiony bez trainset (najczęściej samochody), włączany jest tryb pociągowy (bez rozkładu i bez ograniczenia prędkości). Podobnie dzieje się przy przekazaniu komendy Timetable: (tzn. bez nazwy pliku).
Zachowanie pociągu po komendzie z rozkładem jazdy Timetable:(nazwa) zależy od prędkości podanej jako pierwszy parametr liczbowy:
- jeśli pociąg ma dojechać do pierwszego przystanku w trybie manewrowym, należy podać prędkość równą 0, a następnie komendę ShuntVelocity z prędkością manewrową; pociąg zostanie zatrzymany przez semafor (tarczę manewrową) albo W4 pierwszego przystanku podanego w rozkładzie, urządzenie to włączy następnie tryb pociągowy (nie dotyczy tarcz manewrowych)
- jeśli pociąg ma aktywnie oczekiwać w miejscu na podanie semafora albo czas odjazdu na W4, należy podać prędkość 0.1
- jeśli pociąg ma od razu jechać w trybie pociągowym, należy podać prędkość początkową, np. 40 (np. start ze stacji bez semaforów).
Jeśli pierwszy parametr (czyli prędkość) jest różny od zera, to istotny jest również znak. Dla wartości dodatnich skład będzie jechał w kierunku eventu wysyłającego (komórki pamięci), ujemna wartość włączy jazdę w przeciwną stronę. Nie dotyczy to wpisu trainset, w którym znak prędkości określi kierunek jazdy składu (dodatni - w stronę pierwszego pojazdu za trainset, ujemny - w stronę ostatniego przed endtrainset).
Drugi parametr komendy określa przesunięcie rozkładu w minutach i pozwala użyć ten sam plik rozkładu wielokrotnie w ciągu dnia. Opcja ta nie jest dostępna z wpisu trainset.
Emergency_brake
Komenda powoduje zahamowanie awaryjne pojazdu. Działa również na pojazdy prowadzone przez użytkowników.
SetLights
Wpis w formacie SetLights czoło_składu tył_składu, ustawia lampy. Suma poniższych:
- 1 // lewy reflektor
- 2 // lewe swiatlo czerwone
- 4 // gorny reflektor
- 16 // prawy reflektor
- 32 // prawe swiatlo czerwone
- 64 // tabliczki konca skladu
Radio_channel
Wybór kanału radiowego (którego powinien używać AI, ręczny maszynista musi go ustawić sam). Pierwszy parametr określa nowy kanał. -1 to brak zmiany kanału.
Komendy pojazdów
Komendy pojazdów umożliwiają zmianę stanu pojazdu, np. jego załadowanie bądź rozładowanie, uszkodzenie albo naprawienie.
Komendy wewnętrzne
Komendy te służą do wewnętrznego przekazywania informacji o sterowaniu do dalszych członów. Są używane przy ukrotnieniu, podwójnej trakcji oraz w pojazdach wieloczłonowych (ET41, EN57). Teoretycznie istnieje możliwość wysłania ich z poziomu scenerii, ale nie jest to stosowane.