Symulator EU07 (i nie tylko) > Na warsztacie
Exe od wersji 470
Siecool:
OK, chyba już rozumiem mechanizm - nie dopatrzyłem się jednego eventu. Wygląda to tak, że na stację wjeżdża pociąg i mija po drodze event1, który w pewnym momencie wpisuje do komórki skanowanego semafora komendę "Shunt 0 0" (odpięcie lokomotywy). Na exe 472 powoduje to, że skład zatrzymuje się przed semaforem (bo każda taka komenda jest traktowana jako S1), następnie odpina się i po podaniu sygnału manewrowego jedzie dalej. Tymczasem na exe 473 wpisanie komendy "Shunt 0 0" jest traktowane jako komenda nieznana i powoduje, że semafor jest ignorowany. Wygląda zatem na to, że trzeba się przyjrzeć kryteriom uznawania komend za nieznane, bo chyba nie uwzględniają one np. Shunt. Używam też semaforów do przesyłania rozkładów (komenda Timetable z parametrami), więc dobrze, żeby i ona nie była ignorowana. Wyobrażam też sobie wykorzystanie semaforów do przesyłania innych komend np. Change_direction, Prepare_engine itp.
firleju:
Przywróciłem poprzednie zachowanie w tym względzie. Próbowałem to obejść na kilka różnych sposób, np. zapamiętywanie poprzedniego sygnału bo jestem w stanie sobie wyobrazić, że ktoś to robi na jadącym pociągu bez zatrzymania. Niestety jest pewien problem z przechodzeniem między kabinami i w niektórych przypadkach nie potrafi przejść do komendy Connect gdyż nadpisuje ją Obey_train.
W załączniku exe 474 w obu wersjach. Nie załączam tym razem bibliotek pythonowych więc proszę sobie ściągnąć z którejś poprzedniej wersji.
Siecool:
Opisany powyżej problem znikł, zauważyłem jednak inną ciekawostkę - nie wiem, czy to pokłosie tej wersji exe czy było już wcześniej. Można to nazwać AI z wypranym mózgiem - polega to na tym, że w tabelce ma wszystkie wpisy "Empty" i jedzie przed siebie, ale nie skanuje torów (aczkolwiek reaguje np. na putvalues każące trąbić przed przejazdem). Jechałem sobie swoim pociągiem i prawie zderzyłem się z ST45, prowadzonym przez AI. Z analizy wyszło mi, że AI przerżnęło semafor na poprzedniej stacji (rozjazd był rozpruty), ale postanowiłem tą teorię jeszcze sprawdzić. Wycofałem swój skład, licząc, że AI sobie pojedzie dalej i faktycznie - jak się oddaliłem ruszyło i turlało się dalej 40 km/h nie widząc nic. Niestety, gdy zbliżyło się do stacji program się wysypał - nie wiem jednak, czy jest to pokłosie tego błędu (bo właściwie czemu nie wywaliło się już wcześniej?) czy czegoś innego. Losowe wysypy exe notuję niestety od jakiegoś czasu na swojej scenerii i nie mam jeszcze dobrej teorii odnośnie przyczyn. Zdążyłem jeszcze strzelić tylko screena poniżej.
Tak z innej beczki to jadąc śledziłem tabelkę swojego pociągu i ta też wzbudzała pewien mój niepokój. Czasami tabelka jest pełna i są w niej wszystkie ograniczenia z torów itp., co jakiś czas następuje jednak całkowite jej wyczyszczenie (znikają minięte ograniczenia, ale nie pojawiają się nowe). Niemniej jednak wraz ze zbliżaniem się np. do stopinfo czy sem_info nagle skanowanie pojawiało się ponownie i znowu tabelka się zapełniała. Nie wiem, czy to błąd, być może jest to jakiś sposób optymalizacji (na pewno analogicznie tabelka działała jeszcze za czasów Ra), ale nieco mnie to zachowanie jednak niepokoi.
firleju:
Exe jest zdecydowanie niestabilne ;) Wczoraj też mi się wysypało. Problem leży gdzieś w funkcji czyszczenia tabelki po przełożeniu przeskanowanej zwrotnicy. Dzisiaj rano testując też miałem same "empty" chociaż teoretycznie po usunięciu zbędnych wpisów używam funkcję czyszczenia. Narazie próbuję znaleźć miejsce, w którym się sypie.
firleju:
@Sieciool: też się spotkałem z takim brakiem czyszczenia tabelki. Szukałem po kodzie i stwierdziłem, że w jednym jedynym przypadku może zajść sytuacja, że program stwierdza zatkaną tabelkę i nie robi z tym nic. Wpada pętlę i wychodzi z niej dopiero po zmianie kierunku.
W załączeniu testowe exe, które powinno rozwiązać ten problem. Znalazłem też powód wysypów (moja wina, próbowałem używać funkcji na NULL).
Dobrych Świąt.
Nawigacja
[#] Następna strona
Idź do wersji pełnej