Wysłany: 04-11-2017, 05:09 Zmienne, zasady i polecenia
Adamstan zapytał mnie jak rozwiązać pewną zagwostkę z AI dla określonej sytuacji ruchowej. Odpowiedzi udzieliłem na SB, ale Korzeń zaproponował aby ubrać to w temat i tu wypisywać takie "pomysły", żeby zostało dla potomnych.
Tak więc zaczynamy.
Na pierwszy ogień idzie zadanie:
Cytat:
Wjazd pociągu z jedną lokomotywą na czole sterowaną przez gracza oraz z lokomotywą drugą na końcu składu NIEOBSADZONĄ. Skład po zatrzymaniu ma zostać podzielony na dwie części, jedą cześć zabieramy dalej my, drugą zabierze już lokomotywa, która jest na końcu składu.
JAK TO ZROBIĆ?
Opis:
skład prowadzony lokomotywą ep07-442 zatrzymuję się na znaczniku Herby Nowe P1, czeka 10sek, odłączony zostaje wyznaczony wagon. Po odłączeniu zmienna manewr zmienia się na 1.
Maszynista AI oczekuję aż "manewr" = 1, gdy to się stanie przesiada się do lokomotywy na końcu składu (EP07-422), uruchamia lokomotywę i jest gotowy do jazdy...
Proste prawda? myślisz sobie " ta ciekawe o czym on pisze..."
Proszę bardzo, to samo co wyżej rozłożone na czynniki pierwsze:
(Wpisy przy których występuje
Kod:
*
są OPCJONALNE )
Przechodzimy do ustawień sesji,
dodajemy zasadę WorkTable,
przechodzimy do ustawień i wpisujemy:
Co znaczą poszczególne wpisy?
svar - jest to nazwa polecenie rozpoznawalna przez polecenie maszynisty
manewr - jest to nazwa naszej zmiennej, nazwę ustalamy sami
eq - jest to parametr określający "deklarację nierówności", można użyć następujących wpisów: "eq" (równy), "gt" (większy niż), "lt" (mniejszy), "ge" (większy lub równy) i "le" (mniejszy niż lub równe)
1 - jest to stała liczba CAŁKOWITA do porównania z wpisem poprzednim.
w sytuacji na screenie sytuacja wygląda tak: zmienna "manewr" równa się 1
będzie to potrzebne w dalszej części - zapamiętać!
dodajemy zasadę "Check tracside" (u mnie Sprawdzanie obiektów przytorowych)
Sprawdź obiekty przytorowe,
W tej zasadzie definiujemy 3 zestawy danych. Pierwszy dotyczy tego jaki obiekt "sprawdzamy", do wyboru mamy rozjazd, wyzwalacz(trigger, zielony grzybek) oraz znacznik ( czerwony dzióbek). Jeśli już wybraliśmy obiekt do sprawdzenia, to teraz trzeba określić kiedy zasada zadziała, do wyboru mamy 3 opcje. Gdy pojazd wjedzie w promień obiektu ( zasadniczo jest 20m), gdy pojazd zatrzyma się w promieniu obiektu, lub gdy pojazd opuści promień obiektu.
Na końcu wybieramy czy zasada dotyczy dowolnego pojazdu czy jakiegoś konkretnego.
Na moim przykładzie jest to znacznik "Herby Nowe P1" po zatrzymaniu przez EP07-442
* Następnie wybieramy zasadę Czekaj,
w konfiguracji wybieramy sobie czas oczekiwania. Pierwsza pozycja to ilość sekund, a druga to czas +/-. w moim przypadku jest to 10 sekund. i 0+/- .
Zasadę tą umieszczamy jako ZALEŻNĄ od zasady Sprawdź obiekty przytorowe, tzn. jedno "wcięcie" w prawo
W dalszej kolejności umieszczamy zasadę: Decouple Vehicle,
w niej wybieramy, który wagon/pojazd ma zostać odłączony. w opcji dodatkowej wybieramy czy odłączona część ma zmienić "kierunek". Pamiętać należy o tym że wskazany wagon będzie pierwszym wagonem w odłączonej części. tutaj wskazany wagon3
lok1+wagon1+wagon2+|wagon3+wagon4+lok2
Zasadę tą umieszczamy jako zależną od zasady czekaj, dwa "wcięcia" w prawo.
Na koniec, najważniejsze, umieszczamy zasadę Modyfikacja zmiennej,
W ustawieniach ustalamy czy zmienna ma być "dodana", "odjęta" lub "zamień na"
następnie określamy nazwę naszej zmiennej, i teraz wracamy do punkty z WorkTable. tam wpisaliśmy już naszą zmienną o nazwie "manewr", tutaj wpisujemy to samo.
Na końcu wpisujemy liczbę całkowitą o ile ma się zmienić zmienna.
Gdy zrobiliśmy już to wszystko to powinniśmy mieć takie 'drzewko"
teraz przechodzimy do Zasady konfiguracji maszynisty (zasada wbudowana w każdą sesje):
Pierwszy maszynista to maszynista naszej lokomotywy, brak poleceń
Drugi maszynista, umieszczamy go w jakiejś lokomotywie gdzieś w krzakach, która nie jest nam aktualnie potrzebna. Na screenie jest to SM42-507.
następnie wybieramy polecenia:
WaitUntilSVariable,
w jego "pod poleceniach" pojawi się wpis, który umieściliśmy w zasadzie WorkTable czyli: "svar,manewr,eq,1" wybieramy to, AI w tym momencie będzie czekać aż zmienna "manewr" osiągnie wartość = 1
w następnej kolejności dodajemy Przejdź do pociągu, WCZEŚNIEJ jednak należy od naszego składu ODŁĄCZYĆ lokomotywe bez obsady( tą do której ma się przesiąść AI w dalszym etapie)
Gdy lokomotywa jest odłączona wybieramy polecenie "przejdź do pociągu" -> wszystkie pociągi -> i wybieramy tą odłączoną lokomotywę.
* dalej dajemy polecenie poczekania x sekund, "Czekaj przez,
" u mnie jest to 10 sek.
* U mnie drugą lokomotywą jest lokomotywa ADHD więc następnym poleceniem jest polecenie uruchomienia lokomotywy ADHD E-Lok Driver Command,
W tym momencie skład jest już podzielony na dwie części, nowa oddzielona część jest już z uruchomioną lokomotywą, w dalszym etapie poleceń dodajemy już polecenia zgodnie z rozkładem jazdy jaki jest przewidziany dla tego pociągu.
Do tego miejsca pewnie mało kto doczyta więc napiszę to tutaj, jeśli ktoś miałby jakiś problem z AI, albo zagwozdkę jak wykonać jakiś manewr albo sytuację ruchową to proszę o rozpisanie co się chce osiągnąć, a ja postaram się pomóc. Od razu zaznaczam ze temat ten będzie mocno moderowany, więc jakikolwiek spam niezwiązany z poruszanymi tematami będzie kasowany. Jeśli masz jakieś pytania/sugestie/wątpliwości do opisanych rozwiązań możesz śmiało pisać
O możliwościach tworzenia ciekawych rozwiązań rozkładu jazdy w następnym odcinku
Bardzo dobrze, że powstał ten temat. Szkoda by było, żeby takie informacje przepadły w otchłani SB, albo prywatnych wiadomościach, bo to bardzo przydatna rzecz. Każdy by chciał robić ładne mapy i dodatki, ale już mało kto ma ochotę na zabawę w projektowanie sesji do tych map, bo wiąże się to z tym, że na pierwszy rzut oka sprawa jest dość skomplikowana (co widać w powyższym poście) i tylko wtajemniczeni są to w stanie w miarę sprawnie ogarnąć. Ja sam do niedawna zwyczajnie nie zdawałem sobie sprawy jak wiele fajnych możliwości dają reguły i polecenia maszynisty. Takie porady nieco przybliżą temat i być może pojawi się więcej ciekawych sesji.
Chociażby ten knif z "wsadzaniem" pozornie dwóch maszynistów do jednego składu. Dla mnie było to nieosiągalne, ze względu na co wielu rzeczy nie mogłem sobie zasymulować.
Wrzucaj te patenty o których pisałeś na końcu, albo np. jak dojechać lokiem do innego składu, ale nie spinać ich ze sobą, o dojeżdżaniu do taboru na określoną odległość. Głównie to co przydaje się przy przetokach i manewrach, a czego nie da się załatwić prostym "autodrive" i "połącz z"
Pomógł: 98 razy Wiek: 35 Dołączył: 04 Cze 2009 Posty: 2250 Skąd: spod Ostrołęki
Wysłany: 06-11-2017, 15:54
I od razu poproszę o zapisanie tu tego patentu ze znacznikami i określoną ilością wagonów w składzie determinującą miejsce zatrzymania - było na SB niedawno, ale już zdążyłem zapomnieć co z czym ;)
I od razu poproszę o zapisanie tu tego patentu ze znacznikami i określoną ilością wagonów w składzie determinującą miejsce zatrzymania - było na SB niedawno, ale już zdążyłem zapomnieć co z czym ;)
Dajesz sobie znacznik z nazwą powiedzmy Tor 1, a potem Tor 1@1 dla 1 wagonu itd.
EDIT 1:
A jak będziesz miał więcej wagonów niż sobie zdefiniujesz tymi znacznikami, to skład zatrzymuje się przy tym "głównym" Tor 1
Dla poprawki, poprawnie jest tak, że liczbą po @ określa liczbę pojazdów w składzie włącznie z lokomotywą. Czyli jeśli jest lokomotywa + wagon to musi być Tor1@2
Z tego co pamiętam, to muszę poprawić delikatnie korzenia.
Jeśli jest Lokomotywa z jednym wagonem to musi być x@2 .
Liczba po @ oznaczna ilość pojazdów w składzie, włącznie z lokomotywą.
przykład. typowy skład EN57 składa się z 3 pojazdów, więc musi być "Tor1@3".
O poleceniu AutoDrive opowiem w następnym odcinku, który będzie poświęcony zbiorom ciekawych zasad i poleceń
Pomógł: 98 razy Wiek: 35 Dołączył: 04 Cze 2009 Posty: 2250 Skąd: spod Ostrołęki
Wysłany: 08-11-2017, 08:40
Nie wiem czy masz w planie w następnym odcinku uwzględnić dwie małe rzeczy, które potrzebuję, więc je wymienię zawczasu:
1. Polecenie maszynisty, które skutecznie opróżnia cały skład z pasażerów (wbudowane "Unload" nie działa).
2. Sposób na zmuszenie AI do jazdy z prędkością rozkładową mimo semafora wskazującego "stój" na końcu jego drogi. Przedstawiam sytuację: chcę by w tle coś się działo podczas sesji i zaplanowałem wjazd osobówki. Wjeżdża ona od strony mapy, która jest "ślepo" zakończona, więc ma mało miejsca na rozpędzenie się. Po drodze ma semafor wjazdowy wskazujący "najwyższą dozwoloną" (100 km/h), następny za peronem na "stój". Rzecz jasna AI zamiast przynajmniej do semafora wjazdowego dojechać rozkładową, ono się kolebie całą drogę 40 km/h. Sesja jest programowana "na sztywno", więc dodałem pomiędzy wjazdowym i wyjazdowym semafor niewidzialny, ale nic to nie zmieniło. Moją intencją jest pozwolić by ten skład wjechał na stację z prędkością rozkładową i zaczął hamowanie jak najpóźniej się da - dla większej dynamiki scenki. Jeśli to coś zmienia, lok AI to SU45-113 ADHD. Na torach przed lokiem oczywiście ustawiłem znacznik z ograniczeniem do 100 km/h.
Jeśli chodzi o drugą sprawę, to mając najnowsze skrypty od sygnalizacji Radka, nie byłem w stanie zasymulować takiego zachowania AI, za każdym razem ( na kilku mapach) schemat był taki samo wyjazdowy na stój, wjazdowy(5 komorowy) na "jedno pomarańczowe"( w konfiguracji największa dozwolona prędkość wpisane jest 100km/h) po najechaniu na semafor wyświetla się "następna linia jest czysta przez jeden odcinek" skład ustawiam 1,5km przed wjazdowym, przed lokiem stawiam ograniczenie do 100 km/h. Skład rusza, mija ograniczenie ostatnim wagonem i zaczyna się bujać, mija semafor wjazdowy z jednym pomarańczowym i dalej jedzie nie zwalniając.
Hamowanie zaczyna dopiero przy dojeździe do znacznika w peronie
Jak skutecznie zmusić AI do przejazdu przez pierwszy wolny tor z wytypowanej przeze mnie grupy torów? Używając "DriveToTrackmarklist" skład faktycznie zajmuje pierwszy, wolny tor z grupy, ale problem polega na tym, że tor już fizycznie musi być zajęty, żeby komenda przypisała dla kolejnego jadącego składu tor wolny. Jeżeli w tym samym czasie dwa składy dostaną tę samą komendę, to oba za wszelką cenę będą kierować się na ten sam tor (na którym fizycznie jeszcze nic nie stoi) i ostatecznie kończy się to zderzeniem czołowym.
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach