Event commands: Różnice pomiędzy wersjami

Z MaSzyna
Skocz do: nawigacja, szukaj
(SetLights (exe180806) w kolejkowanych eventach)
(PassengerStopPoint:*)
Linia 31: Linia 31:
 
==PassengerStopPoint:*==
 
==PassengerStopPoint:*==
  
Miejsce zatrzymania. Komenda do umieszczenia we wskaźniku W4 (miejsce zatrzymania czoła pociągu). Pierwszy parametr to numer toru (nie jest używany), drugi określa, z której strony mają być otwierane drzwi: '''1''' - lewo, '''2''' - prawo, '''3''' - z obu stron. 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.
+
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.<br />
 +
Pierwszy parametr ujemny - preferowana odległość zatrzymania miedzy wskaźnikiem i czołem składu (np. przed przejściem). <br />
 +
Pierwszy parametr dodatni - preferowana odległość zatrzymania miedzy wskaźnikiem i środkiem składu (np. przy wiacie, przejściu podziemnym).<br />
 +
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.<br />
 +
Drugi parametr ujemny - wskazanie zatrzymania dla krótszych składów (W32).<br />
 +
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).<br />
 +
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==
 
==FoulingPoint==

Wersja z 22:07, 6 lut 2019

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.

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

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.


Szablon:MaSzyna wersje