- Symulator MaSzyna -
Symulator EU07 (i nie tylko) => Pomoc doraźna => Wątek zaczęty przez: HTD w 08 Listopada 2014, 08:55:30
-
Przejechałem sobie wczoraj testowo scenerię quarkmce2007 na pierwszym składzie z listy. Ucieszyłem się, że nagle pojawił mi się rozkład jazdy. Znalazłem w pliku scenerii, gdzie dzieje się ta magia, jednak bez dokumentacji (z samych komentarzy w kodzie) raczej nie domyślę się, jak zrobić takie podstawianie rozkładu dla innej scenerii. Mniejsza o to. Wiem jak robić rozkłady, a to już coś. W sporej ilości bieżących scenerii rozkładów brak, albo jak są, to chyba do jakiejś innej wersji tej scenerii, albo zakładają, że PKP musi się zawsze spóźniać i to sporo ;)
Bardzo pozytywnie zaskoczyło mnie w tym quarku, że po dojechaniu do pierwszej stacji info pod F1 pokazało mi następną stację w rozkładzie! BOMBA! Wreszcie nie muszę co chwila kukać na drugi monitor i sprawdzać co chwila "jak stoję z rozkładem". To samo jak wciskam F3 - wyświetlany rozkład zaczyna się od stacji, na której ostatnio się zatrzymałem. Dodatkowo, czasami mam pierwszą pozycję w tym rozkładzie podświetloną na zielono. Czemu tak jest? Jakaś nagroda za planowy dojazd? ;) Bo o ile dobrze pamiętam, jak przyjechałem z minutowym opóźnieniem to nie było tej zielonej linii. Ale znów, mniejsza o to.
Chciałbym zrobić takie rozkłady wszędzie gdzie się tylko da. Pytanie tylko - jak? Ja wiem, że mogę sobie to drogą żmudnego orania forum, tudzież metodą reverse-engineering dojść sam, ale w czasie jak będę tracił czas na odtwarzanie tego co inni już zrobili - mógłbym tworzyć naprawdę użyteczne rozkłady jazdy i udostępnić je wszystkim jak zrobię. W ogóle, czy da się to zrobić w prosty sposób, tzn mam namierzony w scenerii event zatrzymania się na stacji, pcham rozkład do przodu jakąś "magiczną sekwencją" i już? Czy trzeba napisać skomplikowany skrypt wymagający wiedzy na poziomie tworzenia scenerii od zera? Jeśli ten pierwszy przypadek (nie trzeba roku doświadczenia w tworzeniu scenerii) - to proszę o info - i natychmiast biorę się za robotę.
Ogólnie pracuję nad większym projektem, do którego potrzebuję dopieszczonych scenerii (dopieszczam sam), a rozkłady jazdy są jego kluczową częścią.
-
Zielony kolor w rozkładzie oznacza, że upłynął czas odjazdu i żaden semafor nie blokuje dalszej jazdy. W momencie zmiany koloru na zielony powinien być też odegrany dźwięk odjazdu, podawany przez kierownika.
Aby działały rozkłady:
1. Plik z rozkładem musi być prawidłowo napisany, czyli musi być zgodny z algorytmem parsowania (kiedyś opisałem na forum).
2. W scenerii muszą się znajdować aktywne W4 z nazwą stacji (przypisane do torów), a jednocześnie mieć unikalne nazwy (inne końcówki po znaku #). Opis tego też pewnie gdzieś jest.
3. Nazwy stacji w W4 muszą być zgodne z tymi w rozkładzie, z uwzględnieniem spacji (zamienianych na podkreślenia), skrótów, znaków diakrytycznych oraz wielkich liter.
W ostatnim czasie kolega Lelek przerobił większość rozkładów z wersji PDF na parsowalną przez EU07.EXE i uzupełnił wpisy taboru. Natomiast pozostaje kwestia aktywnych W4 na stacjach, które miały już być uzupełnione 2 lata temu, a raczej nadal nie są. Na pewno W4 są na Quarku (robiłem sam), być może youBy poprawił Krzyżową. Lelek poprawiał Bałtyk Interregio, ale tam W4 zostały uruchomione chyba jedynie pod ową misję. Co do pozostałych scenerii, to nie kojarzę (nie jestem w stanie śledzić wszystkiego).
-
Na Całkowie SN61 też ostatnio zrobiłem dynamiczne rozkłady. Poprawiał to po mnie Stele, więc na pewno wszystko musi być cacy.
-
Aby działały rozkłady:
1. Plik z rozkładem musi być prawidłowo napisany, czyli musi być zgodny z algorytmem parsowania (kiedyś opisałem na forum).
2. W scenerii muszą się znajdować aktywne W4 z nazwą stacji (przypisane do torów), a jednocześnie mieć unikalne nazwy (inne końcówki po znaku #). Opis tego też pewnie gdzieś jest.
3. Nazwy stacji w W4 muszą być zgodne z tymi w rozkładzie, z uwzględnieniem spacji (zamienianych na podkreślenia), skrótów, znaków diakrytycznych oraz wielkich liter.
OK. Oto co zmieniłem w scenerii zwierzyniec_ed72, żeby dynamiczny rozkład zadziałał:
Po pierwsze rozkład:
______________________________________________________________
[ Rodzaj i numer pociągu | ROJ65113_1 ]
[________________________________________________|_____________]
[ | Kociary ]
[ Relacja pociągu | Pawianowo ]
[________________________________________________|_____________]
[ Wymagany % ciężaru hamującego | 88% ]
[________________________________________________|_____________]
[ Seria i obciążenie lokomotywy | ED72 192 ]
[________________________________________________|_____________]
[ 0.0 | 80 | Kociary 2 | ]
[ | | R1,L,H,RT,PP 2 6.38 | ]
[ | |----------------------------------2--------|----]
[ | | Kociary_podg 2 | ]
[ | | R1,+,L,H,PP 2 6.43 | ]
[ |_____|----------------------------------2--------|----]
[ 84.8 | 70 | Kociary_po 2 6.45 | 1 ]
[ | | R1 2 6.46 | ]
[ | |----------------------------------2--------|----]
[ 81.0 | | Chomikowo 2 6.53 | 4 ]
[ | | R1,+,L,H 2 6.54 | ]
[ |_____|----------------------------------2--------|----]
[ 78.4 | 100 | Psiary_Zagroda 2 6.59 | 3 ]
[ | | R1,L,H,RT,PP 2 7.00 | ]
[ | |----------------------------------2--------|----]
[ 75.0 | | Psiary_Poludnie 2 7.04 | 2 ]
[ | | R1,+,L,H,PP 2 7.04 | ]
[ |_____|----------------------------------2--------|----]
[ 72.0 | 60 | Psiary_Srodmiescie 2 7.10 | 2 ]
[ | | R1,+,L,H,RT,PP 2 7.12 | ]
[ | |----------------------------------2--------|----]
[ 2.8 | | Jelonkowo 2 7.18 | 4 ]
[ | | R1,+,L,H,T 2 7.19 | ]
[ |_____|----------------------------------2--------|----]
[ 8.1 | 70 | Pawianowo 2 7.31 | 8 ]
[ | | R1,L,H,RT 2 | ]
[_______|_____|__________________________________2________|____]
Oczywiście rozkład jest prawidłowo przypisany w głównym pliku scenerii:
FirstInit
trainset roj65113_1 tor_trasa_a_start_lok 10.0 0.0
Oczywiście rzeczy związane ze zmienioną godziną odjazdu względem oryginału także zostały prawidłowo zastąpione. Rozkład pod F3 wyświetla się prawidłowo.
Ze wskaźnikami W4 w scenerii jest coś nie tak. Znalazłem je w pliku wskazniki.scm, który jest ładowany przez główny plik scn.
Błędy które znalazłem to przypisane nazwy nie odpowiadające nazwom z rozkładu i dublujące się identyfikatory po znaku "#". Poprawiłem to jak umiałem.
Oto fragment dotyczący wskaźników po zmianie:
// A
include;ip/pkp/w4.inc;Kociary#01;22.5;0.0;1949.98;-180.0;0.0;-5.8;end
include;ip/pkp/w4.inc;Kociary_podg#02;-652.5;0.0;6949.3;-180.0;6.0;-3.8;end
include;ip/pkp/w4.inc;Kociary_po#03;-702.713;-0.5;-2863.59;-175.661;-5.0;-2.6;end
include;ip/pkp/w4.inc;Chomikowo#04;781.144;0.0;-4326.69;19.4234;0.0;0.0;end
include;ip/pkp/w4.inc;Psiary_Zagroda#05;1159.05;-0.5;-1960.31;2.97688;0.0;0.0;end
include;ip/pkp/w4.inc;Psiary_Poludnie#06;0;-50;0;-180.0;6.0;-3.8;end
include;ip/pkp/w4.inc;Psiary_Srodmiescie#07;1762.5;-0.5;4385.54;0.0;-3.0;-4.2;end
include;ip/pkp/w4.inc;Jelonkowo#08;2171.03;0.0;7022.12;-14.0857;0.0;0.0;end
include;ip/pkp/w4.inc;Pawianowo#09;-657.359;0.0;6949.3;-180.0;-3.4;-2.4;end
// B
include;ip\pkp\w4n.inc;Chomikowo#103;904.467;0.984252;-3970.39;-160.148;end //Passive
include;ip\pkp\w4n.inc;Chomikowo#104;792.498;0.984252;-4329.26;18.7874;end //Passive
include;ip\pkp\w4n.inc;Psiary_Zagroda#208;1275.45;0.0;-1527.14;-160.513;end //Passive
include;ip\pkp\w4n.inc;Psiary_Zagroda#207;1270.15;0.984252;-1526.33;-157.244;end //Passive
include;ip\pkp\w4n.inc;Psiary_Poludnie#301;1747.81;0.0;1615.02;180.0;end //Passive
include;ip\pkp\w4n.inc;Psiary_Puludnie#302;1756.68;0.984252;1622.43;-179.956;end //Passive
include;ip\pkp\w4n.inc;Psiary_Poludnie#303;1762.34;0.0;1620.42;-179.771;end //Passive
include;ip\pkp\w4n.inc;Psiary_Poludnie#304;1772.2;0.984252;1623.08;-179.988;end //Passive
include;ip\pkp\w4n.inc;Psiary_Poludnie#305;1753.3;0.0;1325.58;0.0;end //Passive
include;ip\pkp\w4n.inc;Psiary_Poludnie#306;1762.35;0.0;1327.4;0.0;end //Passive
include;ip\pkp\w4n.inc;Psiary_Poludnie#307;1768.57;0.984252;1325.76;0.0;end //Passive
include;ip\pkp\w4n.inc;Psiary_Poludnie#308;1777.41;0.0;1333.35;0.0;end //Passive
// C
include;ip/pkp/w4.inc;none;-652.5;0.0;6949.3;-180.0;6.0;-3.8;end
include;ip/pkp/w4.inc;none;-672.179;-0.5;6874.48;-180.0;0.0;0.0;end
include;ip/pkp/w4.inc;none;-662.819;0.0;6580.13;0.0;0.0;0.0;end
include;ip/pkp/w4.inc;none;-709.854;0.0;-3169.92;2.04904;0.0;0.0;end
include;ip/pkp/w4.inc;none;2103.92;0.0;7267.08;165.998;0.4;-4.0;end
include;ip/pkp/w4.inc;none;2180.35;0.0;7024.51;-14.3074;5.0;-5.4;end
include;ip/pkp/w4.inc;none;1757.81;-0.5;4734.79;-180.0;0.8;1.0;end
include;ip/pkp/w4.inc;non;1767.5;0.0;4734.79;-180.0;0.0;0.0;end
include;ip/pkp/w4.inc;none;1772.07;-0.5;4385.54;0.0;-3.0;-3.6;end
include;ip/pkp/w4.inc;none;1263.14;-0.5;-1517.38;-157.282;-1.0;3.2;end
include;ip/pkp/w4.inc;none;1164.1;-0.5;-1960.66;2.97688;0.0;0.0;end
include;ip/pkp/w4.inc;none;1149.09;-0.5;-1959.87;2.97688;0.0;0.0;end
include;ip/pkp/w4.inc;none;916.329;0.0;-3969.08;-159.272;0.0;0.0;end
include;ip/pkp/w4.inc;none;43.1745;-0.5;1600.14;0.0;1.6;0.0;end
include;ip/pkp/w4.inc;none;37.3472;-0.5;1544.95;0.0;0.0;0.0;end
include;ip/pkp/w4.inc;none;27.486;0.0;1544.99;0.0;-3.6;2.0;end
include;ip/pkp/w4.inc;none;42.6241;0.0;1899.53;-180.0;0.0;0.0;end
include;ip/pkp/w4.inc;none;-667.5;0.0;6874.59;-180.0;5.0;-0.4;end
Domyślam się, że grupa A (sam tak wyróżniłem część wpisów) to interesujące nas wskaźniki związane z głównym rozkładem jazdy. Grupa B wg mnie mogą dotyczyć innego składu lub innej misji. Grupa C, bez przypisanych nazw - to pewnie dekoracyjne W4, które nie są powiązane z rozkładem jazdy.
Sceneria startuje oczywiście o odpowiednim czasie, tak, żeby o 6:38 można było ruszyć z Kociar. W Kociarach, jakieś 2m przed czołem pociągu mam W4. Stoję i czekam na sygnał odjazdu. Ruszam po komendzie kierownika, planowo o 6:38. Mijam W4, semafor wyjazdowy, jadę jeszcze minutę. Rozkład nie działa, informacja pod F1 jest bez zmian. To samo jeśli chodzi o F3.
Co teraz? Gdzie (i jak) szukać błędów?
-
Parametry w4n.inc wyglądają tak:
p1=stationname, p2,p3,p4=location, p5=rotation, p8=track number, p9=platform side (1:left, 2:right, 3:both)
U Ciebie jest inaczej, popraw to.
-
Mogę się mylić, ale w4.inc to tylko ozdoba i nie ma eventów. Co widać w torach, to sprawdzisz wciskając dwa razy [F2], będąc w kabinie. Unikalność nazwy dotyczy całego napisu, a nie tylko części po znaku # — czyli tylko w ramach jednej stacji nie może się powtórzyć ciąg znaków za # (nie muszą to być cyfry, może być np. litera stojącego dalej semafora).
-
W4.inc nie ma żadnych eventów. Wydawało mi się, że wszędzie są we wpisach w4n.inc.
Jeśli już zmienisz wszystkie w4 na aktywne i dopiszesz im właściwe parametry, to pamiętaj o dobrym trybie pociągu. Też nie wiedziałem, dlaczego mi to nie działa (choć chyba powinienem był), i dopiero Stele mnie oświecił. Ale pierw popraw te wpisy.
-
Mogę się mylić, ale w4.inc to tylko ozdoba i nie ma eventów. Co widać w torach, to sprawdzisz wciskając dwa razy [F2], będąc w kabinie. Unikalność nazwy dotyczy całego napisu, a nie tylko części po znaku # — czyli tylko w ramach jednej stacji nie może się powtórzyć ciąg znaków za # (nie muszą to być cyfry, może być np. litera stojącego dalej semafora).
Sprawdzałem co widzę dojeżdżając do W4 - nic, tylko nazwy torów. Powinienem widzieć coś jeszcze na tym widoku po 2x [F2]?
-
Nazwę najbliższego W4 i semafora.
-
Nie widzę.
...
Reg. obowiązki 2.
Nie tak wstawiamy zdjęcia, usunąłem. Zapoznaj się z Regulaminem.
Benek
-
Skoro nie widzisz, to W4 nie jest przypisany do toru i obiekt zarządzający składem (i rozkładem) też go nie widzi.
-
Jak znaleźć w scenerii tor (ściślej numer toru) do którego chcę przypisać W4 (ściślej w4n.inc, w quarku widzę że masz nazwy stacji przypisane do w4n)?
Czy jeśli jeden w4n będzie poprawny, zadziała? Tzn czy błędy w pozostałych W4 zablokują przejście nawet pierwszej, poprawnej pozycji w rozkładzie?
Dodano: 09 Listopada 2014, 09:21:23
W4.inc nie ma żadnych eventów. Wydawało mi się, że wszędzie są we wpisach w4n.inc.
Jeśli już zmienisz wszystkie w4 na aktywne i dopiszesz im właściwe parametry, to pamiętaj o dobrym trybie pociągu. Też nie wiedziałem, dlaczego mi to nie działa (choć chyba powinienem był), i dopiero Stele mnie oświecił. Ale pierw popraw te wpisy.
Możesz mnie oświecić o co chodzi z trybem pociągu? I w jakiej kwestii Cię Stele oświecił? Dlaczego Ci to nie działało? I jak znaleźć ten numer toru? Chodzi mi o scenerię Zwierzyniec (misja dla ED72) - domyślam się, że jest w niej więcej błędów niż te, które wkleiłem. Tak czy inaczej, palę się do roboty, która już mogłaby iść do przodu, błędy mogłyby zostać w tej chwili poprawiane, gdybym tylko znalazł info / dokumentację, cokolwiek, co pozwoli to ruszyć.
-
Tor najprościej znajdziesz w Rainsted, na podglądzie scenerii. Klikasz w potrzebny tor i gdzieśtam widać jego nazwę (chyba w pasku tytułowym okna).
Tryb pociągu - może być jazda pociągowa, lub manewrowa. Z grubsza chodzi o to, że rozkłady są potrzebne dla AI, a dla gracza pełnią rolę drugorzędną. Tak więc żeby pociąg "zassał" rozkład muszą być eventy, które odpalą go tak jakby miał być kierowany przez AI. Czyli cośtam cośtam, "ObeyTrain". Poczytaj tutaj: http://eu07.pl/forum/index.php/topic,25206.msg369200.html
-
Przeczytałem, ale nadal nie wiem jak wysłać pociągowi obey_train.
Po ostatniej aktualizacji Rainsted edytor wysiadł. Stale chce się pobierać z neta, ale instalator się od razu zawiesza. Po anulowaniu pobierania z neta edytor otwiera się pusty i nie ładuje plików RSF.
Ok, zaraz sobie zrobię downgrade do poprzedniej wersji, ale żeby nie tracić czasu - jak wyszukać ten tor? Z tego co czytałem, większość torów w scenerii nie jest nazwanych. Mogę znaleźć tor nazwany w pobliżu, i nawet doklikać się w edytorze do tego toru przy którym stoi W4. Ale jak znajdę jego numer? W4n.inc przyjmuje jako przedostatni parametr NUMER a nie nazwę toru. W sceneriach w których to działa to jest mała liczba, od 0 do 8 (powiedzmy). Domyślam się, że nie jest to UID elementu graficznego, to jakiś inny rodzaj numeru.
Na marginesie, czy mogę rozwijać i poprawiać działanie scenerii BEZ 3DS max? Wszystkie tutki odnoszą się do użycia tego softu i jego skryptów. Rozumiem, że jest to niezbędne osobom projektującym ukształtowanie i wygląd scenerii. Ja chcę zmienić wyłącznie jej działanie. Ogólnie mając gotową mapę z torami można by tworzyć cuda w samym kodzie. Czy tak się nie da?
Obiecuję, że sam napiszę pełną dokumentację, jak tylko uda mi się zrobić dynamiczny rozkład jazdy dla Zwierzyńca. Mogę się założyć, że w krótkim czasie wszystkie scenerie będą miały dynamiczne rozkłady, nawet te zupełnie porzucone przez swoich twórców.
Dodano: 09 Listopada 2014, 13:11:04
Otworzyłem scenerię w edytorze RSF. Znalazłem moje W4. Użyłem opcji przypisz do toru. Wzkaźnik magicznie dostał numer toru 0. Super. Ale nagle przesunął się kawał drogi od swojego miejsca, zupełnie bez sensu. Nie wiem jak zmienić jego położenie, żeby wrócił na miejsce. W edytorze nie mogę przesuwać obiektów na mapie.
-
Przeczytałem, ale nadal nie wiem jak wysłać pociągowi obey_train.
No własnie to jest najdziwniejsze rozwiązanie w symulatorze - nie da się oddziaływac bezpośrednio na dynamic. Z tego co kojarzę, to działa to tak, że do toru na którym stoi dynamic musisz przypisać komórkę pamięci (node (cośtam) memcell (cośtam)). I wtedy musisz wywołać event PutValues (a może GetValues? nie pamiętam...) z nazwą tej komórki i wartością Obey_train (cośtam) (cośtam) - szczegóły przeczytaj sobie w scenery.doc
-
A gdzie mogę znaleźć mityczny scenery.doc, którego nigdzie nie ma? ;)
-
Maszynowy Święty Graal :) Tutaj wersja OnLine: http://rainsted.com/pl/Symulator/MaSzyna/Scenery.doc#node_.E2.80.A6_memcell. A old-school'owa wersja OffLine m.in. tutaj: http://eu07.pl/misc/download/doc/. Raczej opieraj się na tej nowej, bo w starej niektóre rzeczy mogły się już zdezaktualizować.
-
To też Ci się zapewne przyda:
http://rainsted.com/pl/Symulator/MaSzyna/RFC-commands (http://rainsted.com/pl/Symulator/MaSzyna/RFC-commands)
Ogarnij, jak to jest zrobione na innych sceneriach, bo prawie każdy scenariusz to wykorzystuje.
-
A z tym szukaniem toru to mi chodziło o takie coś: odpalasz podgląd scenerii (czyli wybierasz scenerię -> kara "struktura" -> wczytaj wszystkie include bez parametrów -> karta debugger -> podgląd terenu (to nie jest edytor)), tam odznaczasz teren i trakcję (żeby zostały same tory) no i szukasz swojego toru. Klikasz w niego, i na pasku tytułowym masz nazwę i plik:linię w którym jest jego definicja (zał). No to odpalasz ten plik, nadajesz mu nazwę jak jej nie ma, no i ustawiasz event(1/2) na ten wskaźnik w4 co potrzebujesz. A jak to zrobić edytorem to Ci nie powiem - pytanie do bardziej obcykanych w jego użyciu :)
Dodano: 09 Listopada 2014, 13:58:13
Generalnie, jako że na @Ra'owej wiki brakuje sensownego menu żeby poczytać dokumentację, wejdź tutaj: http://rainsted.com/pl/Specjalna:Wszystkie_strony i poczytaj to co uznasz za sensowne ;)
-
Zrobiłem 2 rzeczy - najpierw spróbowałem zrobić eksport scenerii do RSF, następnie wyszukałem mój W4 w zakładce "Sygnały" (jest pod nazwą Kociary#01 - taką mu nadałem). Kliknąłem "Przypisz do zaznaczonego toru", oczywiście uprzednio zaznaczając właściwy tor. Przypisanie się wykonało, wskaźnik uciekł jakieś 100m od miejsca w którym stał. Bug? Ponadto dostał jakiś dziwnych właściwości, które nie za bardzo idzie edytować, bo jak próbuję go ustawić bliżej toru - natychmiast ucieka z powrotem tam gdzie uciekł za pierwszym razem.
Drugą rzeczą było przejść w Rainsted do zakładki Debugger, potem "Podgląd teranu (to nie jest edytor)". Co ciekawe, tam się da też wyszukać ten W4, co jeszcze ciekawsze, jest opcja przypisz do toru i opcja ta powoduje jakąś permanetną zmianę, bo po wyjściu z Rainsted i odpaleniu jeszcze raz to przypisanie niby zostaje. Po ponowynym eksporcie do RSF wskaźnik także jest przypisany do toru. Niby ok. Ale odpalam symka, podjeżdżam do drania - wciskam 2x F2 i nadal lipa. Silnik nie widzi obiektu z jakiegoś powodu. A jak nie widzi, to dalej nie ruszę, na nic zda się grzebanie w eventach. Co właściwie się stało, jak odpaliłem to przypisanie? Gdzie to się zapisało? W pliku SCM? Jeśli tak, to słabo - bo jak mam to wydać jako dodatek? Wg zasad tworzenia dodatków - nie wolno modyfikować istniejących plików. Mogę oczywiście skopiować ten cały plik z inną nazwą, ale to trochę nieeleganckie - kopiować jeden z dłuższych plików, żeby zmienić w nim kilka bajtów.
Aha, jeszcze jedno - plik wzkazniki.inc się nie zmienił. Dziwne.
Reg. obowiązki 11a.
Proszę poprawić.
Benek
Usunąłem cytat, może tak być?
-
Przeczytałem, ale nadal nie wiem jak wysłać pociągowi obey_train.
Najprościej to zapalić na semaforze sygnał zezwalający na jazdę pociągową. Tylko że musi być w trybie czuwania, inaczej trzeba wysyłać komendę przez komórkę i tor, aby go "obudzić".
Po ostatniej aktualizacji Rainsted edytor wysiadł. Stale chce się pobierać z neta, ale instalator się od razu zawiesza. Po anulowaniu pobierania z neta edytor otwiera się pusty i nie ładuje plików RSF.
Był błąd z otwieraniem pliku RSF po ostatnich zmianach. Poprawiłem. Jak widać, nie ma kto testować i zgłaszać mi, że coś nie działa — wersja jest dostępna od 2 listopada, a zgłoszenie błędu dopiero dziś.
Mogę znaleźć tor nazwany w pobliżu, i nawet doklikać się w edytorze do tego toru przy którym stoi W4. Ale jak znajdę jego numer? W4n.inc przyjmuje jako przedostatni parametr NUMER a nie nazwę toru. W sceneriach w których to działa to jest mała liczba, od 0 do 8 (powiedzmy). Domyślam się, że nie jest to UID elementu graficznego, to jakiś inny rodzaj numeru.
Istotna jest nazwa W4 (złożona z nazwy stacji, znaku # oraz dowolnych znaków czyniących ją unikalną, żeby AI potrafiło jednoznacznie określić współrzędne i obliczyć rzut ich rzut na tor). Coś takiego jak numer toru nie ma znaczenia. Jeśli już, to numer toru wynika z budowy stacji (kierunku wzrostu kilometrażu linii, na której się ona znajduje).
Na marginesie, czy mogę rozwijać i poprawiać działanie scenerii BEZ 3DS max?
Wskazane by było, bo to dosyć drogie środowisko. Ale jakoś nikt nie ma tyle samozaparcia, żeby coś w tym zakresie zmienić.
Otworzyłem scenerię w edytorze RSF. Znalazłem moje W4. Użyłem opcji przypisz do toru. Wzkaźnik magicznie dostał numer toru 0. Super. Ale nagle przesunął się kawał drogi od swojego miejsca, zupełnie bez sensu. Nie wiem jak zmienić jego położenie, żeby wrócił na miejsce. W edytorze nie mogę przesuwać obiektów na mapie.
Obliczanie odległości od toru działa dla prostych, łuków okręgu oraz krzywych przejściowych. Nie działa w ogólności dla krzywych Béziera, bo na ogół się ich nie używa, a przy eksporcie do RSF mogą się pojawić. Żeby przesunąć W4 na mapie trzeba przełączyć się na warstwę sygnałów i użyć guzika Przestaw (albo podobna nazwa). Po przypisaniu do toru najprościej jest otworzyć Własności obiektów i wpisać odległość od toru.
Dodano: 09 Listopada 2014, 14:42:56
Co właściwie się stało, jak odpaliłem to przypisanie?
Zmodyfikowałeś scenerię wczytaną do pamięci.
Gdzie to się zapisało?
Nigdzie. Rainsted unika modyfikowania plików, ponieważ nie wszystko działa tak, jak teoretycznie powinno i użytkownik kilkoma ruchami mógłby sobie trwale uszkodzić scenerię. Oczywiście, można to zmienić, ale ja bym musiał mieć czas na poprawianie kodu, a ktoś by musiał to regularnie testować i raportować mi, co jeszcze poprawić.
Wg zasad tworzenia dodatków - nie wolno modyfikować istniejących plików. Mogę oczywiście skopiować ten cały plik z inną nazwą, ale to trochę nieeleganckie - kopiować jeden z dłuższych plików, żeby zmienić w nim kilka bajtów.
Źle to zrozumiałeś.
Dodano: 09 Listopada 2014, 15:20:53
Jeszcze dodam, że edytor w Rainsted powstał głównie pod kątem poprawienia scenerii PMPPW, której rozrost niezgodny z mapami stawiał nowe wyzwania, których ogarnięcie wydawało się prostsze, gdyby tory jednak pasowały do map. Niestety w miarę przekładania torów ujawniały się różne inne braki koncepcyjne MaSzyny, z których część udało się dopracować (np. rozjazdy), a inne utknęły (np. generowanie terenu). Stąd Rainsted nie bardzo nadaje się do edycji obecnych scenerii, ponieważ rozwijał się w innym kierunku niż te scenerie. Również mechanizmy edycyjne są specyficzne i głównie dostosowane do tego, co było do potrzebne do PMPPW, a potem do modelowania torów wokół Wrocławia.
Zwierzyniec — w porównaniu np. do PMPPW — jest mocno bezsensowny. Układy torowe ma splątane w absurdalny sposób. Jakkolwiek by to nie poprawiać, nic sensownego się nie uzyska. Ta sceneria jest bardziej zbliżona do makiety modelarskiej (w której przymyka się oko na ogromne uproszenia), niż do realnie możliwej linii/sieci kolejowej. Niemniej skoro ja się uczyłem budowy scenerii na Manewrowo2, to poprawianie Zwierzyńca też jakiś walor edukacyjny może mieć.
-
Dzięki za info, wygląda, że nie przeskoczę i muszę lepiej zrozumieć ogólną budowę scenerii, żeby ruszyć ten temat. Z tego co widzę w edytorze to tam nic nie jest przypisane do niczego. Domyślam się, że żeby to działało tak jak powinno trzeba by było dość mocno pozmieniać tę scenerię. Nasuwa się niewygodne pytanie - nie dało by się prościej zmienić exe, żeby popychać rozkład do przodu "ręcznym" eventem? Z tego co widziałem, w takim Zwierzyńcu bez problemu znajdę eventy które odpalają się po minięciu danej stacji. Gdyby tam ręcznie odpalić jeszcze jeden, popychający rozkład - byłby to szybki fix dla starych scenerii, które szybko zmodernizowane nie będą, o ile w ogóle ktoś jeszcze będzie je rozwijał. No chyba że to za dużo zachodu.
Pomimo złego rozkładu torów - lubię tę scenerię. Ona bardzo fajnie wygląda. Ta okolica przypomina mi moje znajome okolice, zwłaszcza te, które przez wiele lat mijałem za szczeniaka jeżdżąc SKM-ką ;) Trochę jeszcze z nią powalczę, ale jak nie dam rady - to może poczekam aż się ktoś przyłączy. Obecną wersję (bez dynamicznego rozkładu) chyba wrzucę do testów, może się komuś spodoba, bo jak dla mnie super przyjemnie się jeździ.
A dla nauki sztuki - może łatwiej będzie spróbować z innym scenariuszem, nieco łatwiejszym do poprawienia. Tak a'propos poprawiania: Z tego co się nauczyłem do tej pory wychodzi, że zrobienie scenerii od zera to niewyobrażalny ogrom pracy. Toż to normalnie chyba z miesiąc wolnego trzeba mieć na takie coś, licząc że potrzebną wiedzę już masz. A bez tego to pewnie lekko licząc rok albo dłużej. Zakładając normalnie, że uczysz się weekendami i nie utrzymujesz kontaktów z rodziną :) Ale zobacz - taki ogrom pracy włożony, a mi, jako "maszyniście z bożej łaski" nie chce się na nich jeździć, bo brakuje takich małych pierdółek jak "65113 odjazd!" na stacjach ;) Nie mówiąc już o rozkładach. Więc tak - robienie samych rozkładów jest trywialne i pracuję nad softem do generowania rozkładów. Nie żadne tam PDF-y, format maszynowy, opcja transpozycji na dowolną godzinę wyjazdu. Podajesz dane (z kilku objazdów) i wychodzi ładnie sformatowany i poprawny pliczek. Tylko dlatego mnie tak ciśnie, żeby nauczyć się robić rozkłady dynamiczne - żeby nie zostawiać jakby niedokończonej roboty :) Dalej chyba dorobienie radia nie jest żadnym problemem. Z tego co się nasłuchałem komunikatów w MaSzynie na różnych trasach sam mogę ponagrywać dialogi, dodać trochę radiowych szumów i trzasków na Audacity, event sound jest trywialny w użyciu... No gorzej jak nie będę miał go pod co podczepić :)
-
Dzięki za info, wygląda, że nie przeskoczę i muszę lepiej zrozumieć ogólną budowę scenerii, żeby ruszyć ten temat.
Znajomość budowy pliku scenerii to nadal podstawa. Wszelkie edytory pełnią tylko rolę pomocniczą — pozwalają wykonać tylko pewne operacje. Ale i tak sam na poziomie SCN musisz umieć stwierdzić, czy wyszło dobrze, czy nie. O ile dobrze pamiętam, to kiedyś w Rainsted (tzn. na podglądzie terenu) było przypisywanie sygnałów do torów, ale że zrobiłem wydajniejszy edytor RSF, a wiele rzeczy się pozmieniało, to mechanizm ów się zepsuł albo nawet go wyrzuciłem jako zbędny.
Nasuwa się niewygodne pytanie - nie dało by się prościej zmienić exe, żeby popychać rozkład do przodu "ręcznym" eventem?
Zawsze jest prościej coś zrobić, jak zrobi to ktoś inny. Jeszcze w 2011 rozkłady nie były obsługiwane, więc nikt się nie przejmował tym, aby zadbać o poprawność powiązań obiektów. Wymyślano za to zastępcze rozwiązania. Na Całkowie przystanki były zrobione przy pomocy podziemnych semaforów. W wielu scenariuszach AI pełni tylko funkcję ozdobną i jest uruchamiane, gdy użytkownik znajdzie się w odpowiednim miejscu. Ponieważ sceneria Quark miała wstępnie przygotowane rozkłady i ruch wielu pociągów, po wprowadzeniu rozkładów zacząłem ją dostosowywać jako pierwszą. Trochę mi na to zeszło, a końca nadal nie widać.
Gdyby tam ręcznie odpalić jeszcze jeden, popychający rozkład - byłby to szybki fix dla starych scenerii, które szybko zmodernizowane nie będą, o ile w ogóle ktoś jeszcze będzie je rozwijał. No chyba że to za dużo zachodu.
Nie ma to, jak zamiast zrobić coś porządnie i zgodnie przyjętymi założeniami i koncepcjami — zrobić byle jak, byle tylko jakoś działało... Rozkłady i W4 są po to, aby pociągi zatrzymywały się w odpowiednich miejscach i otwierały drzwi. Podgląd rozkładu i jego przewijanie to są efekty uboczne o charakterze bajeru. I Ty chcesz teraz, żeby ten bajer działał z pominięciem podstawowej funkcji, jaką miał spełniać rozkład?
Toż to normalnie chyba z miesiąc wolnego trzeba mieć na takie coś, licząc że potrzebną wiedzę już masz. A bez tego to pewnie lekko licząc rok albo dłużej.
Powiedzmy, że jakąś tam potrzebną wiedzę już mam — w miesiąc to ledwo byłbym w stanie zrobić od zera do przyzwoitego stanu jedną stację. Problem jest jeszcze w tym, że wiele rzeczy nie wystarczy zrobić — wcześniej trzeba wymyślić, jak to można zrobić i przygotować sobie narzędzia. No chyba że np. wszystkie tory układamy na płasko, rezygnujemy z rozjazdów łukowych, krzywych przejściowych, rowów itd. — wtedy jest prościej.
-
Dzięki za info, wygląda, że nie przeskoczę i muszę lepiej zrozumieć ogólną budowę scenerii, żeby ruszyć ten temat.
E no nie odpuszczaj. Chcesz przypisać W4 do toru przy którym stoi. no to finalnie masz mieć tak:
include;ip/pkp/w4n.inc;Skwarki_Fabryka#02;1117.23;0.0;-16524.0;-180.0;0.8;-3.6;2;1;;;end
node -1 0 t4153 track normal 100.0 1.435 0.25 25.0 20 0 flat vis
rail_screw_used1 4 tpbps-new2 0.2 0.5 1.1
1114.74 0.200012 -16608.8 0.0 //point 1
0.0 0.0 0.0 //control vector 1
0.0 0.0 0.0 //control vector 2
1114.74 0.200012 -16508.8 -3.0 //point2
0
event2 Skwarki_Fabryka#02_stopinfo
endtrack
no to jedyne czego Ci pewnie brakuje, to tego "event2 Skwarki_Fabryka#02_stopinfo ". No to znajdź ten tor o który się rozchodzi, otwórz plik w którym jest on zdefiniowany (notatnikiem) i dopisz mu ten event1/2 na "[nazwę tego w4]_stopinfo" i już.
-
A ten event przesuwajacy rozklad istnieje i jest zdefiniowany w w4n.inc a p1stopinfo to jego wywolanie.
-
@Ra:
Jak poprawnie przypisać rozkład do pociągu eventem?
Przeglądałem sobie jak to robiłeś w quarku. Spróbowałem zrobić to samo w moim pliku (modyfikacja zwierzyńca):
node -1 0 rozklad_jazdy memcell 0 0 0 Timetable:roj65113_2 10.0 0.0 none endmemcell
event ustaw_rozklad copyvalues 2 tor_trasa_a_start_lok rozklad_jazdy endevent
event ustaw_rozklad addvalues 2 tor_trasa_a_start_lok * 0 0 endevent
Tor "tor_trasa_a_start_lok" jest w scenerii, wpis trainset. Rozkład istnieje. Event odpala. Tyle, że nic się nie dzieje. Rozkład się nie ustawia po 2 sekundach. Co zrobiłem źle, albo co pominąłem? BTW, pominięcie drugiego eventu powoduje wysypanie symka :)
-
1. Komórka rozklad_jazdy przechowuje tylko rozkład jazdy i nie jest połączona z żadnym torem.
2. Zawartość owej komórki kopiujesz do komórki tor_trasa_a_start_lok, której nie przedstawiłeś. Komórka ta musi być połączona z torem, na którym stoi pojazd z obsadą, któremu chcemy nadać rozkład. Kopiuje się z komórki do komórki, a nie z komórki do toru (to by można było dodać w przyszłości).
3. Użyłeś tej samej nazwy ustaw_rozklad na dwóch eventach. To jest dopuszczalne pod warunkiem włączenia duplikatów, inaczej tylko ostatni zdefiniowany event zadziała. Być może o to chodzi z wysypaniem, kopiowanie komórki do innej nieistniejącej może nie być zabezpieczone (taki event powinien być ignorowany i logować błąd braku komórki).
4. Event AddValues z wartościami * 0 0 jest formalnie bez sensu, bo nie modyfikuje komórki z rozkładem.
-
Prawie wszystko zrozumiałem, oprócz tego, jak połączyć komórkę z torem. Czy wystarczy zadeklarować komórkę o tej samej nazwie co tor, czy muszę zmodyfikować definicję toru? Czy jeszcze inaczej? Inaczej, gdzie to połączenie jest zrealizowane w quarku? Mamy tor sk_start1s - i mamy taką komórkę. Gdzie one są powiązane?
-
Nazwa toru powiązanego jest we wpisie komórki, na końcu (brak powiązania to ostatnie none). Zbieżność nazw w Quarku jest "przypadkowa", tzn. nie chciało mi się wymyślać innych.
//komórki pamięci do uruchamiania AI stojących na torach
//kiepskie rozwiązanie, ale na razie nie ma innego
//komórki umieszcze są na wysokości północnych semaforów wjazdowych
node -1 0 sk_start1p_com memcell 1112 0 -18996 Wait_for_orders 0 0 sk_start1p endmemcell
node -1 0 sk_start1s_com memcell 1112 0 -18996 Wait_for_orders 0 0 sk_start1s endmemcell
node -1 0 sk_start1l_com memcell 1112 0 -18996 Wait_for_orders 0 0 sk_start1l endmemcell
node -1 0 sk_start1t_com memcell 1112 0 -18996 Wait_for_orders 0 0 sk_start1t endmemcell
Natomiast jest jeszcze powiązanie przez nazwę pomiędzy komórkami pamięci a odcinkami izolowanymi i na to trzeba uważać. Zrobienie odcinka izolowanego w torach automatycznie tworzy komórkę pamięci o takiej nazwie. Jawna definicja takiej komórki jedynie ustala jej wartości początkowe. W Quarku wszystkie komórki odcinków izolowanych są zdefiniowane jawnie, ponieważ robiłem te wpisy przed uruchomieniem automatycznych komórek pamięci dla odcinków izolowanych.
Ps. Quark przeszedł przez 4 koncepcje sterowania ruchem na stacjach i stacje mogą się różnić koncepcjami. Nie twierdzę też, że moje rozwiązanie jest najlepsze i wystarczy je opisać i kopiować dalej. Moim zdaniem jest to zbyt podatne na błędy, musiałem uruchamiać scenerię wielokrotnie, za każdym razem poprawiając jedną literkę w pliku sterowania, bo coś poszło nie tak. Być może da się to zrobić prościej przy wprowadzeniu nowych eventów albo niejawnych powiązań, albo może by trzeba było napisać generator, który na podstawie torów oraz sugestii typu urządzeń (kluczowe, mechaniczne scentralizowane, przekaźnikowe...) utworzy odpowiedni plik sterowania wraz z listą możliwych przebiegów. OIDP Paul zrobił w swoim ISDR generator kodu pascalowego, który następnie należało wkompilować w program. Nie jest to dobre rozwiązanie, aczkolwiek szybkie. Może zamiast Pascala dało by się tworzyć jakiś język pośredni (Forth?), który następnie mógłby być wykonywany przez symulator?
-
Jak już tak kombinujesz, może np JavaScript albo Python? :) Popularne, przyjemne, pewnie są gotowe liby do kompilowania i wykonywania tego na dowolnej platformie. Game-devy lubią używać lua, masa gier jest oskryptowana na tym. Tak czy inaczej plan jest bardzo ambitny i przewiduję, że w mniej niż rok nikt tego nie zrobi (tak żeby działało ze sceneriami).
Ja póki co chciałem tak na szybko (ekspresowo, turbo, na wczoraj) wydusić z tych scenerii wszystko co się da na istniejącym silniku. To nie jest "rocket science" - jedynym problemem jest dla mnie brak dokumentacji. Tzn tak, znalazłem scenery.doc, ale sam wiesz jakie to jest przyjazne jak wchodzisz od zera. Rozgryzam quarka, zobaczę "jak to jest zrobione" że poszczególne zdarzenia w misji grają ze sobą i z urządzeniami, znając to - istniejące misje da się szybko i wdzięcznie przerabiać i poprawiać. Tak żeby powiedzmy powstała jeszcze jedna paczka na starym silniku - taka pożegnalna ;)
To może pomóc pozyskać zainteresowanie projektem. Bo na razie to ja tego w ogóle nie widzę. Potrzebowałem miesiąca czasu i uporu maniaka, żeby w ogóle zacząć jeździć. Ze szczególnym naciskiem na upór maniaka. Jak się zrobi misje, które raz że nauczą świeżaka podstaw, dwa - dadzą mu feedback odnośnie tego co robi na trasie - bez porównania więcej ludzi zainteresuje się symkiem i będzie dla kogo go dalej rozwijać. I być może nawet będzie za co.
Co do bieżącego silnika, jeśli chodzi o bugi typu literówki - dość łatwo można zrobić narzędzie, które posprawdza i pokoloruje składnię. Robiłem kiedyś takie rzeczy (trywialny przykład: http://sourceforge.net/projects/hostseditor/ (http://sourceforge.net/projects/hostseditor/)).
-
Wolę Forth, bo znam go dobrze od strony technicznej, pozwala zarówno na interpretację kodu jak i na jego kompilację. Poza tym, jakby ze scenerii maszynowych pousuwać średniki, to można scenerię traktować jako gotowy program w Forth — wystarczy tylko zdefiniować kompilatory.
Problem obecny z MaSzyną nie polega na tym, że wszystko już jest doskonale zrobione i gotowe, a tylko brakuje dokumentacji, żeby początkujący mogli wszystkim posługiwać. Problem jest w tym, że wiele rzeczy trzeba dopiero wymyślić, rozpracować, zbadać zagadnienia, opracować koncepcje rozwiązań i następnie je wdrożyć. Np. czy jest sens edukować ludzi w temacie uruchamiania lokomotywy, jeśli obecne uruchamianie jest niepełne, a większość lokomotyw uruchamia się identycznie jak siódemki, mimo że w rzeczywistości ET22, EP05, czy EP09 działają inaczej?
Zrobienie scenerii edukacyjnej było postulowane już parę lat temu — jakoś nie chwyciło. A można by zrobić taką "misję", na której by rósł poziom trudności. Czyli najpierw uruchamiamy lokomotywę do jeżdżenia w kółko, a potem wprowadzamy sygnalizację i inne zagadnienia.
Pisząc pliki sterowania nie miałem problemów z literówkami w składni, raczej z nieodpowiednim ustawieniem którejś zwrotnicy przy którymś z kilku przebiegów albo zapaleniem nie tego sygnalizatora albo z nadaniem przebiegowi nazwy, która nie jest rozpoznawana przez eventy głowicy. Dopiero uruchomienie scenerii, a często dopiero przeanalizowanie loga pokazywało, co zostało zrobione niezgodnie z założeniem, że pociągi stoją. Po poprawieniu jednego wychodził następny błąd, a gdzieś za 10 poprawką już było dobrze.
-
W takim razie wygląda że nie da się za bardzo pomóc w usuwaniu bugów na etapie tworzenia. I tak trzeba debugować na żywca, i tu całą pomoc daje sam silnik i debug mode.
Co do edukacji - wydaje mi się, że sama mechanika jazdy to najprostsze zagadnienie. Raz - że niekompletny model daje już jakieś podstawy dla nowicjusza. Myślę, że czego się z niego nauczy - i tak mu się przyda nawet jak model stanie się bardziej realistyczny.
O wiele bardziej skomplikowane i IMHO trudniejsze jest opanowanie przepisów i zasad. Z drugiej strony realne, żywe misje mogą bardzo skutecznie uczyć, dawać dość ambitne wyzwanie - do tego nie przynudzają. Na wałkowanym przeze mnie zwierzyńcu uczę się prowadzić EZT dobrze się przy tym bawiąc. Gdyby misja działała tak jak chciałbym, żeby działała - pewne rzeczy złapałbym bez porównania szybciej. To samo - gdyby istniał do niej opis, z którego dowiedziałbym się co tak na prawdę mam tam zrobić. Np taki detal, że przed wjazdem do grupy postojowej jest tabliczka z ograniczeniem do 5km/h. Taki drobiazg ;) I kiedy mogę przyśpieszyć po S11. Jak poradzić sobie z górką koło Jelonkowa. I rzecz której nadal nie wiem - pod koniec trasy wjeżdżamy na SZ, wiem, że mam zwolnić do 40. A dalej? Jechać 40 do najbliższego semafora? A może przyśpieszyć za przejazdem? Przejazd ma oznakowanie, ale nie ma szlabanu. I co teraz? :) To wszystko powinien świeżak dostać w opisie misji zanim ją zacznie. Zamiast miesiąca czasu i wypytywania na forum - dostanie trudne, aczkolwiek wykonalne zadanie do wykonania.
W opisie dostanie też kupę linków do detali, np jak działa napęd EZT i jego wał kułakowy, co by wiedział jak operować "gazem".
Co do zrobienia tego wszystkiego - może nie było chętnych, no to ja się zgłaszam. Wiem, to się wiąże z molestowaniem dev-ów, ale w zamian będzie efekt, sporo przydatnej roboty. I nie pytaj się ludzi z forum, czy to jest potrzebne i przydatne. Im nie. Nowym (których tu nie ma, którzy nigdy nie słyszeli o Maszynie) - jak najbardziej.
-
Wiem, ja mam skrzywione podejście do rzeczywistości, bo do wszystkiego raczej dochodzę sam, czytając i eksperymentując, a pytać to najczęściej nie mam kogo. Jeśli ktoś jest początkującym, to na ogół ma słuszne uwagi, co mogło by być zrobione lepiej, ale najczęściej nie ma umiejętności i autorytetu, żeby te zmiany wprowadzić.
Ja bym chciał, żeby to działało lepiej, ale jak patrzę na to, co jest zrobione w całkiem skopany sposób, to widzę większy sens w naprawieniu tego niż w ułatwianiu udostępniania stanu zastanego. Kwestia, która się rysuje do przepracowania w najbliższym czasie, to sterowanie pojazdów oparte o "skrypty" elektryczno-pneumatyczne, chociaż większość pewnie by wolała mieć lepsze światła.
Co do rozkładów, obecnie można uruchomić W4 i zrobić rozkłady, które będą generowały głos kierownika. Uważam to za względnie proste do zrobienia, zrobiłem demonstracyjnie na jednej scenerii i nie chcę zajmować się osobiście pozostałymi, bo jest masa innych rzeczy do rozpracowania. Fajnie by też było zamiast pojedynczych nagrań pod każdy rozkład osobno, zrobić syntezę z nagranych osobno słów — ale to można zrobić później. Można też tymczasowo zrobić zewnętrzny program do tego i testować nim dobór dźwięków.
-
Zrobiłem dynamiczny rozkład, ale...
Wciskam Shift+Q na początku misji, skład rusza planowo. Super. Niestety na trasie już nie jest tak fajnie. Ignoruje kompletnie semafory, pruje całą drogę prędkością rozkładową. Na pierwszej stacji elegancko się zatrzymał i otworzył drzwi - no jakiś plus. Niestety, żeby uzyskać przypisanie W4 do toru, musiałem usunąć oryginalny event2 ze scenerii i zastąpić go moim _stopinfo.
Zmieniłem więc zdarzenie po zatrzymaniu na takie:
event Chomikowo#01_stopinfo multiple 80 none chomikowo_d_s10 chomikowo_zwr03- zschomwyj endevent
Dość powiedzieć, że żadne z tych zdarzeń nie odpala. A raczej skrypty przypisane do nich nie odpalają, bo rozkład się aktualizuje. Ogólnie w Chomikowie moje AI się zatrzymuje przed S1 i nie otwiera drzwi. Dziwne, na stacji Kociary_po otworzył. W Chomikowie nie. Stoi zawieszony, a zdarzenie chomikowo_d_s10 nie odpala.
Domyślam się, czemu AI ignoruje semafory - ewidentnie nie są przypisane do torów, na upartego jakoś to poprawię.
Ale nie mam pojęcia dlaczego do eventów typu nazwa_stacji_stopinfo nie mogę nic przypisać? Tzn mogę, ale to nie działa.
BTW, jak sobie biorę podgląd via 2x F2, to widać moje W4 z przypisanym _stopinfo. Pociąg jest w trybie Obey_train.
Skrypt scenerii jest tak napisany, żeby przestawiać zwrotnice i dawać wjazdy po zatrzymaniu się na kolejnych stacjach. Pytanie dlaczego nie mogę się teraz podpinać do tych zdarzeń?
Co ciekawe, żeby wypchnąć skład ze stacji początkowej (na której pociąg stoi przy rozpoczęciu misji) ręcznie odpalam zdarzenie Kociary#01_stopinfo. Czyli w jedną stronę niby to działa, bo mogę wysłać zdarzenie. W drugą stronę to nie działa. Pociąg zatrzymuje mi się przed _stopinfo, ale obsługa nazwa_stacji_stopinfo nie jest uruchamiana. Co robię nie tak?
-
A spróbuj włączyć łączenie duplikatów eventów (jest gdzieś w scenariuszach @Ra). Może event putvalues z W4 jest parsowany później i nadpisuje tego multipla. Zasadniczo w takich sytuacjach dzieli się tor na części, by eventy były przypisane do różnych odcinków. Tu może wystarczy przypisać je kawałek wcześniej. Chyba wstawienie ich na początek peronu nie zepsuje algorytmu.
-
Chyba próbujesz zrobić zbyt wiele rzeczy na raz, nie bardzo wiedząc, co robisz. Eventy dzielą się na skanowane i kolejkowane. Skanowane są widoczne dla AI i jest uwzględniane ich położenie, ale nie da się za to ich umieścić w Multiple. Wiele scenerii ma błędy, np. nieprzypisane semafory do torów. Nie da się zamaskować tych błędów robiąc inne błędy. Quark działa tak, jak działa, ponieważ poświęciłem na to parę miesięcy, żeby powstawiać brakujące obiekty i połączenia oraz odpowiednio ponazywać odcinki izolowane, a na koniec opracować mechanizmy eventowe. Raczej nie da się tego przenieść w jeden dzień na inną scenerię.
-
Ponieważ zdarzenia te już istnieją - zdefiniowane są w pliku w4n.inc, przez każdorazowe odwołanie od niego:
event (p1)_stopinfo putvalues 0.0 none (p2) (p3) (p4) PassengerStopPoint:(p1) (p8) (p9) endevent
. A jak tworzysz swoje o tej samej nazwie, to z tego co kojarze obowiązuje to które było "później" (w kolejności przetwarzania plików). Spróbuj zrobić odwrotnie: do toru przypisz zdarzenie X (czyli event2 X, i potem gdzieśtam jego definicja: node X event... ), które zdefiniujesz jaku multiple. No i w tym zdarzeniu będziesz mógł wrzucić wykonanie zdarzenia stopinfo Twojego w4 oraz te pozostałe który były w oryginale. Na chłopski rozum zadziała. Jak widac poniżej - jednak nie zadziała.
Idealnie - powinieneś podzielić ten tor na dwa kawałki, i jednemu dać cośtam, a drugiemu to ..._stopinfo.
-
Odczyt W4 jest skanowany i musi być przypisany bezpośrednio do toru. Nie można go użyć w Multiple, ani też nie będzie działać łączenie eventów o tych samych nazwach (normalnie jest wyłączone, poza tym możliwe jest tylko dla zdarzeń kolejkowanych). Jedynym rozwiązaniem jest podział toru na dwa i przypisanie dwóch zdarzeń. Aczkolwiek to i tak nadal jest prowizorka, bo powinno być ułożenie przebiegu uzależnione od zwolnienia głowicy, a po jego utwierdzeniu powinien być podawany sygnał jazdy zależny od stanu rozjazdów.
-
@Ra:
Pisałeś gdzieś coś, że właśnie dynamiczny rozkład z W4 ma wywoływać sygnał odjazdu. Czyli rozumiem, że jakiś komunikat radiowy też?
Skrypt nie ma możliwości sprawdzenia zatrzymania się pociągu na przystanku osobowym? Tak, próbowałem podpinać eventy kawałek przed i kawałek za torem i działają. Problem w tym, że nie mogę sobie zdefiniować, że event się odpala tylko jak pociąg stoi (bo się zatrzymał), czy mogę?
No prosta rzecz, pociąg dojeżdża do przystanku osobowego, zatrzymuje się, i chcę odtworzyć coś przez radio. Dzielenie torów? Serio? Jak podzielę na krótkie odcineczki, to pociąg będzie się musiał w punkcie zatrzymać, bo jak nie to jakiś event nie odpali. To hm, nie jest chyba rozwiązanie? No musi być jakiś inny sposób na to.
A może w ogóle da się do wyświetlanego w pociągu rozkładu pisać ręcznie? Tzn darujemy sobie skanowanie, odpali mi się event w skrypcie i wyślę do pociągu "ok, udało ci się zatrzymać na przystanku".
-
Wyświetlanie rozkładu jest ubocznym efektem jego działania.
-
Event0 działa gdy pojazd z obsadą stoi na torze. Możesz też w peron wstawić odcinek izolowany i ustawić licznik czasu zajętości. Nie wiem dokładnie co chcesz uzyskać.
Za odjazd odpowiada AI składu a nie oewentowanie scenerii. Skanuje w poszukiwaniu W4, porównuje je z rozkładem i czasem. Po zatrzymaniu się otwiera drzwi w wagonach a o czasie odjazdu zamyka, koloruje rozkład i odgrywa dźwięk sprzężony z rozkładem (ta sama nazwa i lokalizacja).
Czy to zadany pociąg możesz określać za pomocą eventu whois. Możesz wtedy warunkować zdarzenia w stacji na podstawie lokomotywy/rozkładu/ładunku.
@Woku. wiem, ale pytanie było jakie było, a event0 to właśnie robi.
-
Z tym, że nie stosujemy już Event0 od dłuższego czasu.
-
Dzielenie torów? Serio? Jak podzielę na krótkie odcineczki, to pociąg będzie się musiał w punkcie zatrzymać, bo jak nie to jakiś event nie odpali. To hm, nie jest chyba rozwiązanie? No musi być jakiś inny sposób na to.
Ech. Weź ty poczytaj w tym całym scenery doc co to są te eventy 0/1/2... W taki sposób jak opisałeś działałby Event0 - dlatego już się go nie stosuje. Event1/2 raegują na PRZEJAZD pojazdu z obsadą. A nie na zatrzymanie.
-
Dokładnie o to mi chodziło. Czyli na odjazd odtworzy mi plik w tym samym katalogu i tej samej nazwie co rozkład? Dlaczego miałbym wstawiać w peron odcinek izolowany? Czemu tak się robi?
Co chcę uzyskać? Hm, na razie wystarczyłoby, żeby misję dało się przejść i żeby sygnały odjazdu były we właściwym czasie. Rozumiem, że silnik sam to załatwi. Podoba mi się to.
Byłoby idealnie, gdyby jeszcze zmusić AI żeby sterował pociągiem sensownie. Niestety - we wszystkich testach jakie robiłem AI nie radzi sobie z drzwiami. Albo ich nie otwiera, albo dostaje szału i zamyka i otwiera jak głupi kilka razy. Do tego oczywiście ignoruje semafory, ale pewnie wystarczy je przypisać do torów właściwie i będzie grało.
Z tego co zauważyłem, jak W4n jest przypisany do jakiegoś odcinka, to działa, nawet jeśli ten odcinek bezpośrednio do niego nie przylega. To ciekawe. Może da się wykorzystać istniejące tory bez przesadnego przerabiania, żeby to po prostu działało.
Dodano: 19 Listopada 2014, 22:46:21
@muri:
Czytałem już przedtem, nawet testowałem, ale z jakiś dziwnych powodów nie chciał odpalać. Ale być może nie potrzebuję tego. W sumie wystarczy, żeby obecna trasa pootwierała przejazdy zgodnie ze starym skryptem. Może je pootwierać przed czasem, to tak prosty scenariusz, że nie zrobi to żadnej różnicy. Ważne jest tylko, żeby komunikat odjazdu szedł o właściwym czasie (zgodne z rozkładem). Z tego co testowałem dziś - to się da zrobić bez przepisywania wszystkiego od nowa.
W sumie byłoby fajnie, gdyby np na stacji szła zapowiedź "Pociąg osobowy spółki... odjedzie z toru 2 przy peronie pierwszym..." albo "Opóźniony pociąg osobowy" ;) W zależności od tego, czy da się to jakoś prosto sprawdzić.
Zmuszenie AI do zauważania semaforów i otwierania drzwi na przystankach to pewnie będzie dłuższa robota na zupełnie inny czas.
-
Skrypt nie ma możliwości sprawdzenia zatrzymania się pociągu na przystanku osobowym? Tak, próbowałem podpinać eventy kawałek przed i kawałek za torem i działają. Problem w tym, że nie mogę sobie zdefiniować, że event się odpala tylko jak pociąg stoi (bo się zatrzymał), czy mogę?
No prosta rzecz, pociąg dojeżdża do przystanku osobowego, zatrzymuje się, i chcę odtworzyć coś przez radio. Dzielenie torów? Serio? Jak podzielę na krótkie odcineczki, to pociąg będzie się musiał w punkcie zatrzymać, bo jak nie to jakiś event nie odpali. To hm, nie jest chyba rozwiązanie? No musi być jakiś inny sposób na to.
Kilka odcinków toru może mieć przypisane to samo zdarzenie jako Event0. Trzeba tylko pomyśleć, czy nie będziemy potrzebowali informacji o stanięciu pociągu w danym miejscu kilkukrotnie i odpowiednio się na tę okoliczność zabezpieczyć.
Dodano: 19 Listopada 2014, 22:51:12
Otwieranie drzwi na przystankach zależy od przypisania do torów W4 oraz zrobienia rozkładu jazdy. Semafory wymagają tylko przypisania.
-
Eventy skanowane są rzutowane na trajektorię, wiec nie muszą fizycznie się znajdować koło krańca toru do którego są przypisane. Istotna jest tylko kolejność, by się wzajemnie nie zasłaniały. Czyli najpierw W4 a za nim wyjazdowy.
Zapowiedzi można zrobić na dziś. Przed stacją skan numeru pociągu, w peronach skan który tor zajęty. Do tego licznik ewentualnego opóźnienia. Prowizorka straszna ale by działało nawet na Quarku. Tylko syntezatora do czytania nie mamy, więc mnóstwo wariantów zapowiedzi w osobnych plikach dźwiękowych musiałoby być.
-
Na Quarku detekcja pociągu ustala tor, na który zostanie skierowany, więc to jest wystarczające do uruchomienia zapowiedzi.
-
Hm, co w rozkładzie może przeszkadzać dzrzwiom w otworzeniu? Moja misja na Zwierzyńcu jest już przejezdna dla AI, tylko jeszcze z tymi drzwiami trochę wariuje. Mam nadzieję, że znajdę gdzieś info jak przypisać semafory.
-
Z drzwiami były jakieś cyrki na Bałtyku IR jak @Lelek tam dłubał. Nie pamiętam czy doszliśmy jednak do sedna problemu. Poszukaj, musi to być w ogólnodostępnych działach.
-
Hm, domyślam się, żeby pociąg nie pojechał jak nie został spełniony jakiś warunek (np nie wykonał próby hamulca) - wystarczy mu chyba tylko zabrać rozkład, i oddać jak spełni warunek.
-
W sensie "putvalues Timetable:none/rozklad"? Wtedy wejdzie w manewrowy/pociągowy bez rozkładu i pojedzie według wskazań semaforów. Mógłbyś opisać algorytm jaki wymyśliłeś do tej próby?
-
Wpis w4n.inc w scenerii zawiera na końcu liczbę określającą, z której strony otwierać drzwi. Po dodaniu dwóch dodatkowych przechyleń trochę bardziej się to skomplikowało. Tzw. numer toru nie ma znaczenia.
-
Zetknął się ktoś z sytuacją, że przypisanie jakiegokolwiek rozkładu jazdy (nawet pustego) do pociągu powoduje wywalenie się programu ("program wykonał nieprawidłową operację")?
-
Zetknąłem się, jak nie zadeklarowałem komórki pamięci dla toru ;)
Dodano: 01 Grudnia 2014, 10:19:13
@Ra:
Coś zmieniłem w moim przypisywaniu rozkładów i przestało działać. W związku z tym mam pytanie: czy pociąg musi być w trybie jazdy pociągowej żeby dostał rozkład? Wydaje mi się, że to właśnie zmieniałem - ustawiłem na początku scenariusza dla pociągu jazdę manewrową. Kiedy odpala event przypisujący mu rozkład - nic się nie dzieje - nie dostaję żadnego błędu, po prostu rozkład nie wskakuje. Czy w ogóle można eventem przestawić pociąg w tryb jazdy pociągowej?
-
Tryb pociągowy włącza się zapalając semafor (tzn. komendą SetVelocity z niezerową wartością), albo wysyłając komendę Obey_train. Można też przełączyć tryb wysyłając rozkład (znaczenie ma początkowa prędkość). Ostatnia (chyba) możliwość to włączenie trybu pociągowego po podłączeniu do składu. Jeśli nie dostaje rozkładu, to najprawdopodobniej nie stoi na torze połączonym z komórką.
Po złożeniu paczki i jak będę miał trochę czasu, zajmę się dopracowywaniem szczegółów, na razie są inne priorytety. Obecnie nie było by dużym problemem wysyłanie rozkładu do któregokolwiek toru pod składem, żeby był on przekazany do właściwego pojazdu. Można by też wysyłać rozkład na odcinek izolowany, a nie na tor.
-
Na Całkowie eksperymentowałem z jazdą manewrową z przejściem w oczekiwanie po podłączeniu i wysłanie rozkładu przez komórkę semafora wyjazdowego. Działało dobrze. Wraz z poprawkami w exe udało się to uprościć, ale chyba nadal jest to najbardziej optymalny sposób wysyłania rozkładu, bo pojazd może znajdować się na dowolnym odcinku-byle skanował semafor.
-
Hm, dopóki nie ustawiłem pociągowi jazdy manewrowej, to rozkład się przesyłał normalnie, sprawdzałem to kilkanaście razy. W ostatniej poprawce testowałem jazdę manewrową AI i od tego czasu przestało mi działać wysyłanie rozkładu.
Jest tak - mój skład STOI na torze tym na którym ma stać. Jak wciskam F2 to pokazuje mi się "Shunt". Czyli pewnie dlatego nie przyjmuje rozkładu. Jak mu wyślę "Obey_train" to powinien zassać rozkład w następnym evencie, nie? Dopiero wieczorem będę mógł sprawdzić. BTW, przedostatnim razem testowałem jazdę samego AI i jakimś cudem ten rozkład zadziałał. Dziś pojechałem bez włączania AI w ogóle i niestety lipa. Co do tego, że stoję na właściwym torze - W4n mam przypisany do tego toru, jak wciskam 2x F2 to pokazuje mi się jego nazwa na liście, więc tor jest na 100% poprawny.
Co do otwierania drzwi - faktycznie znalazłem głupią literówkę w parametrach W4n.inc i od miejsca wystąpienia tego błędu drzwi się nie otwierały. Więc poprawiłem buga i teraz w ogóle się nie otwierają na żadnym przystanku ;)
include ip/pkp/w4n.inc Kociary#01 37.3472 -0.5 1544.95 0.0 0.0 0.0 0 1 end // lewa strona
include ip/pkp/w4n.inc Kociary_po#01 -709.854 0.0 -3169.92 2.04904 0.0 0.0 0 1 end // lewa strona
include ip/pkp/w4n.inc Chomikowo#01 904.467 0.984 -3970.39 -160.148 0.0 0.0 0 2 end // prawa strona
include ip/pkp/w4n.inc Psiary_Zagroda#01 1263.14 -0.5 -1517.38 -157.282 -1.0 3.2 0 1 end // lewa strona
include ip/pkp/w4n.inc Psiary_Poludnie#01 1756.68 0.984 1622.43 -179.956 0.0 0.0 0 2 end // prawa strona
include ip/pkp/w4n.inc Psiary_Srodmiescie#01 1757.81 -0.5 4734.79 -180.0 0.8 1.0 0 2 end // prawa strona
include ip/pkp/w4n.inc Jelonkowo#01 2103.92 0.0 7267.08 165.998 0.4 -4.0 0 2 end // prawa strona
include ip/pkp/w4n.inc Pawianowo#01 -672.70 0.0 6506.50 0.0 0.0 0.00 0 1 end // lewa strona
Na 100% poprawne to jest, parametr 9 odpowiada za otwieranie drzwi. Gdyby pozostałe parametry były nieprawidłowe, AI nie dojechałby do stacji końcowej, lub nie zatrzymywał się na przystankach, a jedzie, zatrzymuje się, tylko drzwi nie otwiera.
Gdzie mogę znaleźć jak zrobić odcinek izolowany? W quarku jest? Otaczam czymś fragment definicji torów, czy po prostu definiuję sam odcinek od pierwszego toru do ostatniego? Czy odcinek izolowany ma jeszcze jakąś funkcję poza grupowaniem torów?
Rozwiązanie z semaforem jest lepsze, ale niestety nie potrafię go wdrożyć, chyba, że ktoś posiada jakąś dokumentację odnośnie tego jak to zrobić od strony plików.
Jeśli chodzi o przypisywanie W4 do torów (i tym samym uzyskanie działających rozkładów jazdy) nauczyłem się to robić i mogę napisać pełną dokumentację do tego. Co więcej, myślę, że da się to dość bezboleśnie wdrożyć na wszystkich sceneriach. W czasie nie mierzonych w latach, a raczej w tygodniach.
Gdybym dostał jakieś namiary na obsługę semaforów, mógłbym to od razu robić porządnie. Plus pracuję nad narzędziem wspomagającym tę pracę. Mam takie skrzywienie, że nie znoszę robić rzeczy, które może robić jakiś automat, wolę pisać automaty. Lub półautomaty, jeśli stworzenie pełnego automatu to "rocket science". Jedyne czego mi brakuje to dokumentacja. Jakakolwiek. Mogą być luźne notatki na serwetce, albo "zobacz sobie w pliku tym tam, linia 30, tam masz". Na urlop idę od 15-go i zamierzam trochę porozwijać rzeczy :)
Dodano: 01 Grudnia 2014, 14:54:16
Aha, jeszcze jedno, czy te #tagi są niezbędne? Po co one są? A jakby ich nie było to by nie działało?
-
Za hasztagiem masz coś, nadającego W4 unikalną nazwę. Przed masz nazwę stacji, która jest porównywana z rozkładem. Bez niego mógłby być tylko jeden W4 na posterunek by to działało.
A co do semafora: to event przypisz_rozklad updatevalues 0 nazwasem_sem_mem Timetable:nazwa_rozkladu tryb przesunięcie_rozkładu endevent
-
Ok, a jak sprawdzić czy semafor jest prawidłowo przypisany do toru? Zauważyłem, że AI na trasie, którą zmieniam potrafi zignorować niektóre S1 - nie byłoby to możliwe, gdyby semafor był prawidłowo przypisany.
-
Dla każdego semafora należy sprawdzić, czy w jakimś torze jest wpisane od niego zdarzenie _sem_info, następnie trzeba zobaczyć, czy orientacja toru pasuje do kierunku zdarzenia (event1/2) i czy to jest właściwy tor (najbliższy).
-
Gdzie mogę znaleźć jak zrobić odcinek izolowany? W quarku jest? Otaczam czymś fragment definicji torów, czy po prostu definiuję sam odcinek od pierwszego toru do ostatniego? Czy odcinek izolowany ma jeszcze jakąś funkcję poza grupowaniem torów?
W definicji toru dajesz "isolated xyz". przykłady tutaj:
Line 5654: isolated start_ctl
Line 7207: isolated balwidprz_eu07
Line 7451: isolated osobowka_wyjazd
Line 7636: isolated balwidprz_en57
-
OK. Mam tor, dodaję mu parametr 'isolated'. Ale czym on się różni od zwykłego toru?
Patrząc na przykład to te odcinki wyglądają jak normalne tory. Co zmieniło określenie tego toru jako 'isolated'? Może mogę tę samą nazwę przypisać do więcej niż 1 toru?
-
Może mogę tę samą nazwę przypisać do więcej niż 1 toru?
Tak.
OK. Mam tor, dodaję mu parametr 'isolated'. Ale czym on się różni od zwykłego toru?
Patrząc na przykład to te odcinki wyglądają jak normalne tory. Co zmieniło określenie tego toru jako 'isolated'?
Dla pojazdu – nic. Natomiast teraz możliwe jest teraz sprawdzanie zajętości i wywoływanie zdarzeń w chwili zajmowania lub zwalniania konkretnego odcinka izolowanego.
-
Poczytaj: http://rainsted.com/pl/Symulator/MaSzyna/EU07.EXE_212#24._Sygnalizacja_zaj.C4.99to.C5.9Bci.2Fzwolnienia_grupy_tor.C3.B3w . W skrócie działa to tak:
--tor1:isolated aaa---|--tor2:isolated aaa---|---tor3:isolated aaa--|--tor4:isolated bbb----|--tor5:isolated bbb--|-tor6:isolated bbb---
Czyli masz kilka odcinków torów (tutaj: 6) "zgrupowanych" w dwa odcinki izolowane.
Z oczywistych względów, odcinek nie może mieć "dziur", no i nazwa musi być unikalna w skali scenerii...
Daje Ci to możliwość zdefiniowania 4 zdarzeń:
aaa:free oraz aaa:busy (http://eu07.pl/forum/index.php/topic,18634.msg328587.html#msg328587) - analogicznie dla bbb. Zdarzenia ta wywołają się kiedy jakiś pojazd (do doczytania czy musi być z obsadą, czy dowolny) wjedzie na pierwszy tor będący składnikiem odcinka (event xxx:busy), lub ostatni pojazd zjedzie z danego odcinka (xxx:free). Tylko tyle i aż tyle.
Dodatkowo tworzona jest też (chyba) komórka pamięci o nazwie takiej jak odcinek, i można też ją odpytywać w jakiś sposób o zajętość odcinka - szczegółów szukaj tutaj: http://eu07.pl/forum/index.php?action=search2&search=isolated
Dodano: 02 Grudnia 2014, 09:43:50
Przejrzyj sobie pliki *.ctr , np. w scenery/quark. Np:
Line 32: event br_pn:busy updatevalues 0 br_pn * * 3 endevent
Line 33: event br_pn:busy multiple 0 none br_d_s1 br_e_s1 br_f_s1 endevent //S1 po zachodniej stronie
Line 34: event br_pn:free updatevalues 0 br_pn * 0 0 endevent
Line 35: event br_pn:free updatevalues 0 Bru-Kon * 0 0 condition memcompare * 2 * endevent //zwolnienie szlaku
Line 46: event br_pd:busy updatevalues 0 br_pd * * 3 endevent //południowa część zajęta
Line 47: event br_pd:busy multiple 0 none br_a_s1 br_b_s1 br_c_s1 endevent //S1 po wschodniej stronie
Line 48: event br_pd:free updatevalues 0 br_pd * 0 0 endevent //południowa część wolna
Line 49: event br_pd:free updatevalues 0 WKD-Bru * 0 0 condition memcompare * 1 * endevent //zwolnienie szlaku
Line 78: event br_1:free updatevalues 0 br_1 * * 0 endevent //tor zwolniony
Line 79: //event br_1:busy multiple 0 br_1 br_1>Kon br_1_loop condition memcompare WKD 1 1 endevent //tor został zajęty - wjazd ze WKD
Line 80: //event br_1:busy multiple 0 br_1 br_1>WKD br_1_loop condition memcompare Kon 2 1 endevent //tor został zajęty - wjazd ze WKD
Line 81: //event br_1:busy updatevalues 0 br_1 * 0 * condition memcompare * 1 * endevent //tor zajęty, kasowanie wjazdu
Line 82: event br_1:busy multiple 0 br_1_n else br_1_next condition memcompare * 0 * endevent
Line 107: event br_2:free updatevalues 0 br_2 * * 0 endevent //tor zwolniony
Line 108: //event br_2:busy multiple 0 br_2 br_2>Kon br_2_loop condition memcompare WKD 1 1 endevent //tor został zajęty - wjazd ze WKD
Line 109: //event br_2:busy multiple 0 br_2 br_2>WKD br_2_loop condition memcompare Kon 2 1 endevent //tor został zajęty - wjazd ze WKD
Line 110: event br_2:busy multiple 0 br_2_n else br_2_next condition memcompare * 0 * endevent
To wszystko są eventy reagujące na zmianę stanu odcinków izolowanych.
-
Dzięki. Postaram się odwdzięczyć w postaci dokumentacji i poprawek w scenariuszach.
-
Zetknął się ktoś z sytuacją, że przypisanie jakiegokolwiek rozkładu jazdy (nawet pustego) do pociągu powoduje wywalenie się programu ("program wykonał nieprawidłową operację")?
Przedstawiam dla potomności rozwiązanie problemu - w pliku scn było "Firstinit" zamiast "FirstInit". Skutek - Rainsted przy zapisywaniu pliku tymczasowego scenerii pomijał to słówko, co w połączeniu z deklaracją rozkładu dla jakiegokolwiek pociągu powodowało wywalenie się programu. Prawda, że to proste i logiczne? ;)
-
Piszę dzisiaj doktorat z przypisywania pojazdowi rozkładu jazdy i jakoś nie mogę dojść do porozumienia z tym bajerem. Historia wygląda następująco: przyjeżdża sobie wesoły pociąg na ostatnią stację swojego poprzedniego rozkładu i ponieważ ma w nim zawarty znak "@" lokomotywa grzecznie się odpina. Następnie równie grzecznie oblatuje skład, odbijając się dwa razy od W5, po czym do niego wraca. Przed składem ma podawany event Shunt -3 -3, bo sama się nie podepnie (choć z dokumentacji exe 291 wynika, że powinna, bo dałem jej "@" w rozkładzie). Po podpięciu przechodzi w tryb pociągowy i czeka. W międzyczasie wykonywany jest taki oberek:
node -1 0 jan_osob_rozklad_tor11 memcell -18811.873 -20.2 -53919.930 Timetable:slimson\calkowo_v2\test02 10 0 none endmemcell
event jan_osob_nadajrozklad_tor11 multiple 120.0 none jan_osob_nadajrozklad_tor11a jan_osob_nadajrozklad_tor11b jan_osob_nadajrozklad_tor11c jan_osob_nadajrozklad_tor11d endevent
event jan_osob_nadajrozklad_tor11a copyvalues 0.0 jan_osob_tor11a_mem jan_osob_rozklad_tor11 endevent
event jan_osob_nadajrozklad_tor11b copyvalues 0.0 jan_osob_tor11b_mem jan_osob_rozklad_tor11 endevent
event jan_osob_nadajrozklad_tor11c copyvalues 0.0 jan_osob_tor11c_mem jan_osob_rozklad_tor11 endevent
event jan_osob_nadajrozklad_tor11d copyvalues 0.0 jan_osob_tor11d_mem jan_osob_rozklad_tor11 endevent
node -1 0 jan_osob_tor11a_mem memcell -18861.873 -20.2 -53919.930 Wait_for_orders 0 0 jan_osob_tor11a endmemcell
node -1 0 jan_osob_tor11b_mem memcell -18911.873 -20.2 -53919.930 Wait_for_orders 0 0 jan_osob_tor11b endmemcell
node -1 0 jan_osob_tor11c_mem memcell -18961.873 -20.2 -53919.930 Wait_for_orders 0 0 jan_osob_tor11c endmemcell
node -1 0 jan_osob_tor11d_mem memcell -19011.873 -20.2 -53919.930 Wait_for_orders 0 0 jan_osob_tor11d endmemcell
Dziwaczna konstrukcja z czterema eventami w multiplu wynika z wysyłania tej samej informacji do czterech torów - po to, abym miał pewność, że jak pociąg będzie dłuższy to mi i tak ta konstrukcja zadziała.
Niestety powyższy mechanizm nie działa - eventy są wykonywane, ale informacja o wpisaniu komendy z rozkładem do komórki przypisanej do toru, na którym stoi pociąg, nie dociera do niego. W efekcie pociąg sobie grzecznie stoi i czeka. W związku z tym pytanie, co tu się powinno zrobić, aby ten bajer zadziałał? Patrzyłem, że w Quarku są jeszcze tajemnicze eventy addvalues, które podobno wysyłają coś do toru, a przynajmniej tak wynika z komentarzy w kodzie:
//rozkłady jazdy kopiowane do pociągów
node -1 0 kon_osobowy_WKD memcell 0 0 0 Timetable:quark\roj1102 0.1 0 none endmemcell //dołem
event kon_osobowy_WKD! copyvalues 2 kon_t5_com kon_osobowy_WKD endevent //przesłanie do pociągu
event kon_osobowy_WKD! addvalues 2 kon_t5_com * 0 0 endevent //bo copyvalues nie wysyła do toru
event kon_osobowy_WKD++ addvalues 300 kon_osobowy_WKD * * 30 endevent //takt dla jazdy dołem
Wygląda na to, że to jest ten element, który jest mi potrzebny, bo zgodnie z komentarzem "copyvaules nie wysyła do toru". Niemniej jednak kłóci mi się to z tym, co Ra napisał tutaj (http://eu07.pl/forum/index.php/topic,26263.msg390652.html#msg390652):
4. Event AddValues z wartościami * 0 0 jest formalnie bez sensu, bo nie modyfikuje komórki z rozkładem.
Podsumowując:
- czy event addvalues jest potrzebny, aby pociąg zorientował sie, że w komórce przypisanej do toru, na którym stoi, coś się zmieniło?
- czy w powyższych eventach jest coś nie tak?
- czemu komendy Timetable:costam nie można po prostu podać jako putvalues?
-
event jan_osob_nadajrozklad_tor11x updatevalues 0.0 jan_osob_tor11a_mem Timetable:slimson\calkowo_v2\test02 10 0 none endevent
Nie załatwiłoby problemu w mniejszej ilości kodu?
Jeśli pojazd jest aktywny, a po manewrach jest, wystarczy wysłać mu rozkład od komórki którą skanuje. Jak nie ma rozkładu, to W4 jej nie zasłania. Wyślij to do semafora wyjazdowego i problem toru na którym stoi zniknie.
-
Dla mnie na chłopski rozum - to kopiujesz jakąś wartość między komórkami pamięci. Ale nigdzie nie widzę, gdzie coś odczytuje te komórki? Nie powinno być gdzieś jakieś GetValues albo PutValues?
-
Nie.
node -1 0 jan_osob_tor11a_mem memcell -18861.873 -20.2 -53919.930 Wait_for_orders 0 0 jan_osob_tor11a endmemcell
Ostatni parametr to wskaźnik na tor. Gdy stan komórki ulega zmianie, pojazd na nim stojący otrzymuje komendę.
-
Event CopyValues nadal nie wysyła zmienionej wartości komórki do połączonego z komórką toru, tak więc wskazane jest użycie AddValues * 0 0 w tym celu. Być może w jakiejś przyszłej wersji się to zmieni. Również możliwe jest to, że rozkład będzie można wysłać do jakiegokolwiek wagonu w składzie i trafi on do AI.
-
Ostatni parametr to wskaźnik na tor. Gdy stan komórki ulega zmianie, pojazd na nim stojący otrzymuje komendę.
Event CopyValues nadal nie wysyła zmienionej wartości komórki do połączonego z komórką toru, tak więc wskazane jest użycie AddValues * 0 0 w tym celu. Być może w jakiejś przyszłej wersji się to zmieni. Również możliwe jest to, że rozkład będzie można wysłać do jakiegokolwiek wagonu w składzie i trafi on do AI.
Te rzeczy powinny znaleźć się tutaj: http://rainsted.com/pl/Symulator/MaSzyna/Scenery.doc#node_.E2.80.A6_memcell
-
event jan_osob_nadajrozklad_tor11x updatevalues 0.0 jan_osob_tor11a_mem Timetable:slimson\calkowo_v2\test02 10 0 none endevent
Nie załatwiłoby problemu w mniejszej ilości kodu?
Jeśli pojazd jest aktywny, a po manewrach jest, wystarczy wysłać mu rozkład od komórki którą skanuje. Jak nie ma rozkładu, to W4 jej nie zasłania. Wyślij to do semafora wyjazdowego i problem toru na którym stoi zniknie.
O, i takie rozwiązania lubię - dzięki za pomoc. Trzy linijki kodu i działa od pierwszego kopa. A te trzy linijki to:
event jan_osob_nadajrozklad_tor11 multiple 120.0 none jan_osob_g_wpiszrozklad jan_osob_g_resetuj endevent
event jan_osob_g_wpiszrozklad updatevalues 0.0 jan_osob_g_sem_mem Timetable:slimson\calkowo_v2\test02 10 0 endevent
event jan_osob_g_resetuj multiple 10.0 none jan_osob_g_s1 endevent
Event resetuj ma na celu powrót komórki semafora do normalnej wartości na wypadek, gdyby po nadaniu rozkładu okazało się, że czas odjazdu minął i pociąg by przeciął semafor, który nie nadaje Setvelocity 0 0, tylko mówi coś o jakimś timetable.
-
To ostanie daj jako:
event jan_osob_g_sem_mem:sent multiple 1 none jan_osob_g_s1 endevent
I stosuj takie coś jako zabezpieczenie za każdym razem gdy używasz komórki sygnalizatora do innych celów. Event wykona się po odczytaniu przez AI komendy podanej wcześniej, a ta będzie tam wisieć do tego czasu na wypadek jakby ai było opóźnione czy coś.
-
Event resetuj ma na celu powrót komórki semafora do normalnej wartości na wypadek, gdyby po nadaniu rozkładu okazało się, że czas odjazdu minął i pociąg by przeciął semafor, który nie nadaje Setvelocity 0 0, tylko mówi coś o jakimś timetable.
To resetowanie powinno być zrobione eventem jan_osob_g_sem_mem:sent, który zostanie dodany do kolejki zaraz po tym, jak AI odbierze rozkład. Jakakolwiek komenda wpisana do sygnalizatora (komórki skanowanej, w której wcześniej było SetVelocity) odpowiada wpisaniu tam Setvelocity 0 0.
-
Czyli jak rozumiem nie ma sensu tego eventu wpisywać do multipla?