FORUM PTT -  Strona Główna
FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy RejestracjaRejestracja  ZalogujZaloguj

Odpowiedz do tematu
Poprzedni temat :: Następny temat
Skrypt taboru
Autor Wiadomość
Sebek07 
super user
Psuję Trainz


Pomógł: 8 razy
Wiek: 30
Dołączył: 18 Sie 2009
Posty: 132
Skąd: Wyszków
Wysłany: 05-08-2026, 12:30   Skrypt taboru

Cześć.
Zaktualizowałem większość taboru po mega aktualizacji na DLS, który działa na jednej bibliotece skryptów.
<kuid2:263713:150034:11> Skrypt taboru v.3.2 - 09.02.2026

Odkryłem, że ET22 od Vicia_007 i ST43 są trafione. Na obydwu czołach świecą wszystkie reflektory, pozwieszane są "ptaszki" w ustawieniach tych loków.
Moja wersja Trainz 22 SP7 (137780).



Niby wszystko jest w porządku wg Menadżera Zawartości, dopóki nie uruchomisz gry.
Przestarzałe dodatki pousuwane, wykonywałem naprawy bazy, usuwałem i wstawiałem ponownie na tor.
_________________
Pasjonaci nieczynnej linii kolejowej Auranowice Kebab - Biała Pendolińska pełodegie.
Ostatnio zmieniony przez Sebek07 05-08-2026, 12:31, w całości zmieniany 2 razy  
 
 
 
Robercik101 
super trainz
Wąskotorowiec.



Pomógł: 4 razy
Wiek: 44
Dołączył: 13 Sie 2009
Posty: 558
Skąd: Bytom-UK.
Wysłany: 05-08-2026, 16:05   

Generalnie to bym sie podpioł pod apel nie mogę dojść problemu skryptu adhd en57 srodkowe człony wywala error
_________________
GKW History Project.
 
 
 
Railwoj 
trainz


Pomógł: 28 razy
Wiek: 50
Dołączył: 05 Mar 2018
Posty: 392
Skąd: Kraków
Wysłany: 05-08-2026, 16:26   

Sebek07 napisał/a:
Odkryłem, że ET22 od Vicia_007 i ST43 są trafione. Na obydwu czołach świecą wszystkie reflektory, pozwieszane są "ptaszki" w ustawieniach tych loków.




Cześć. Poprawka we własnym zakresie według porady Radka, tj. dopisanie w configu loka
korony światła czerwonego:

corona-red <kuid2:149987:59100:1>

Screen także z TRS22 po korekcie w configu loka.
Natomiast faktycznie lokomotywa wymaga aktualizacji na DLS.
Ostatnio zmieniony przez Railwoj 05-08-2026, 16:30, w całości zmieniany 2 razy  
 
 
 
Sebek07 
super user
Psuję Trainz


Pomógł: 8 razy
Wiek: 30
Dołączył: 18 Sie 2009
Posty: 132
Skąd: Wyszków
Wysłany: 05-08-2026, 19:29   

Dzięki. Załatwione. To ciekawe, ze brak jednej corony w configu wysypuje cały skrypt do takiego stopnia, że lok nie jedzie na poleceniach lub nie wyłacza fizyki.
Dlatego obstawiałem, że coś jest po stronie skryptu.
Teraz przydałaby się poprawka na DLS.
_________________
Pasjonaci nieczynnej linii kolejowej Auranowice Kebab - Biała Pendolińska pełodegie.
 
 
 
RBach 
Administrator
Toromistrz


Pomógł: 309 razy
Wiek: 50
Dołączył: 26 Lut 2008
Posty: 4522
Skąd: Gościcino Centralne
Wysłany: 14-08-2026, 08:24   

Sebek07 napisał/a:
Dzięki. Załatwione. To ciekawe, ze brak jednej corony w configu wysypuje cały skrypt do takiego stopnia, że lok nie jedzie na poleceniach lub nie wyłacza fizyki.
Dlatego obstawiałem, że coś jest po stronie skryptu.


Skrypt szuka KUIDów w kuid-table już w momencie inicjalizacji (czyli postawienia pojazdu na tory lub wczytania mapy, gdzie jest użyty), jeżeli nie znajdzie - to nie startuje dalej. A to oznacza, że dodatek zachowuje się jakby w ogóle skryptu nie miał.
_________________
Moje dodatki
Instrukcje kolejowe
KUID:263713
Aktualny release skryptów sygnalizacji:
v5.6:26.12.2025
 
 
Railwoj 
trainz


Pomógł: 28 razy
Wiek: 50
Dołączył: 05 Mar 2018
Posty: 392
Skąd: Kraków
Wysłany: 14-08-2026, 21:19   

Sebek07 napisał/a:
brak jednej corony w configu wysypuje cały skrypt do takiego stopnia, że lok nie jedzie na poleceniach lub nie wyłacza fizyki.
Dlatego obstawiałem, że coś jest po stronie skryptu.


Obserwacja skutków w grze prawdziwa, ale wniosek na temat sypania się skryptu całkowicie błędny. Gdyby z powodu braku korony skrypt się wysypał, to gra już w CM wywaliłaby lokomotywę na czerwono. I oczywiście byłaby figa z zobaczenia jej na podglądzie w CM, nie mówiąc o stawianiu jej na torach w sesji.

Za to, że mimo wszystko tak się nie dzieje, to tak na prawdę wszyscy jesteśmy dłużnikami Radka. W tym konkretnym (niejedynym przecież) przypadku za to, że mądrze zabezpieczył skrypt właśnie przed fikaniem gry z powodu braku np. korony.

Jako totalny abnegat w zakresie języków programowania, ale któremu zdarzało się z powodu Trainza czasem zaglądać do plików .gs, chciałem trochę pomęczyć czat GPT na temat przyczyn opisanej przez Sebka07 sytuacji i jej skutków. Dodajmy, że jest to sytuacja, która może się zdarzyć każdemu z nas po pobraniu jednej (przeoczonej) z setek (poprawionych) lokomotyw, nad których przeskryptowaniem i ponowną publikacją na DLS i TrainzArcie Kilan i Radek wykonali i nadal wykonują tytaniczną pracę.
Poniżej załączam to, czego się dowiedziałem.

(Pytanie:) Ciekawi mnie natomiast, i chciałbym zrozumieć, dlaczego trainzscript w przypadku uniwersalnego skryptu lrcs.client stosowanego w modernizowanych skryptowo polskich lokomotywach w TRS19 i TRS22, nie znajdując numeru kuid dla red-corona ze względu na brak wpisu corona-red w kuid-table w praktyce: ani nie wskazuje błędu lokomotywy na poziomie Content Managera, ani nie pobiera kuidu z linijki texture-kuid, ignorując brak wpisu w kuid-table. Zamiast obu tych skutków lokomotywa wyświetla się w grze bez błędu, jednak świecą się jej wszystkie światła żółte i nie można zmienić lub ustawić żadnej opcji lokomotywy. Dlaczego tak jest?

(Odpowiedź czatu GPT:) "Opisane przez Ciebie zachowanie to klasyczny przypadek "cichego błędu" (silent failure) w logice skryptu oraz specyfiki działania uniwersalnych systemów sterowania (takich jak biblioteki LRCS – Locomotive Remote Control System / Loco Register Control System i ich skrypty klienckie).To, że lokomotywa ładuje się bez błędów w Content Managerze, ale w grze "wisi" (świecą się wszystkie żółte światła, brak interakcji), wynika z trzech precyzyjnych mechanizmów:

1. Dlaczego Content Manager nie widzi błędu?
Content Manager (CM) w TRS19 i TRS22 weryfikuje poprawność pliku config.txt w sposób statyczny. Z punktu widzenia CM, jeśli skrypt kompiluje się bez błędów składniowych, sam zasób jest poprawny.Brak walidacji dynamicznej: CM sprawdza zależności (dependencies) wyłącznie na podstawie tego, co znajduje się w sekcji kuid-table.Skrypt jako czarna skrzynka: Gra nie analizuje kodu tekstowego .gs w poszukiwaniu nazw takich jak "corona-red". Dla CM ta zależność po prostu nie istnieje, dlatego dodatek otrzymuje status "czysty" (brak czerwonych wykrzykników w bazie).

2. Dlaczego skrypt nie sypie błędem (czerwonym wykrzyknikiem) w grze?
Uniwersalne skrypty, takie jak lrcs.client, pisane są z myślą o setkach różnych lokomotyw (EU07, ET22, ST44 itp.). Z tego powodu ich twórcy stosują tzw. programowanie defensywne i konstrukcje zabezpieczające:trainzscript// Przykład zabezpieczenia w uniwersalnym kodzie
KUID coronaRed = GetAsset().LookupKUIDTable("corona-red");
if (!coronaRed) {
Interface.Log("Warning: corona-red not found in kuid-table!");
// Skrypt NIE wywala błędu krytycznego, tylko idzie dalej, zwracając pustą wartość (null)
}
Gdyby autorzy skryptu nie użyli takiego zabezpieczenia, gra wyrzuciłaby natychmiastowy błąd krytyczny wątku (Thread Exception). Dzięki zabezpieczeniu skrypt nie "wywala się" do systemu, ale zwraca pustą wartość (null) do zmiennej odpowiedzialnej za obsługę świateł.

3. Dlaczego świecą się wszystkie żółte światła i brak jest kontroli?
To najważniejsza część problemu – efekt pętli nieskończonej lub przerwania wątku inicjalizacji.Uniwersalne systemy skryptowe w Trainz działają sekwencyjnie podczas startu mapy (w funkcji Init() lub osobnym wątku Main()). Sekwencja startowa wygląda zazwyczaj tak:Zainicjalizuj zmienne i pobierz KUID-y.Skonfiguruj interfejs użytkownika (menu lokomotywy).Uruchom logikę systemów bezpieczeństwa (SHP/CA/PZB).Przejdź do pętli sterowania światłami i fizyką.W przypadku braku KUID-u dla czerwonej korony dzieje się jedna z dwóch rzeczy:Przerwanie wątku bez błędu gry: Skrypt przestał wykonywać kod dokładnie w momencie, gdy próbował odczytać lub przypisać brakujący KUID do obiektu korony. W TrainzScript, jeśli funkcja wewnętrzna ulegnie zawieszeniu lub cichemu zatrzymaniu (np. w pętli oczekującej na załadowanie zasobu), gra nie zgłosi błędu do interfejsu (brak ikony błędu), ale wątek sterujący tą lokomotywą umiera.Stan domyślny (Fallback): Ponieważ wątek inicjalizacji został przerwany w połowie:Menu i opcje nie zdążyły się wygenerować (dlatego nie możesz nic kliknąć).Światła żółte to stan domyślny lokomotywy: Wiele modeli 3D ma domyślnie włączone w pliku .im żółte/białe światła jako bazowe tekstury (lub skrypt ustawia je na starcie jako krok zero). Ponieważ skrypt "zawiesił się" przed wykonaniem procedury wygaszania świateł i dostosowania ich do kierunku jazdy, lokomotywa utknęła w pierwotnym stanie technicznym – z zapalonymi wszystkimi światłami czołowymi.

Podsumowanie: lokomotywa jest "warzywem", ponieważ skrypt lrcs.client bezpiecznie ominął błąd braku KUID-u w CM, ale w samej grze brak tej zmiennej doprowadził do zatrzymania wątku logicznego pojazdu. Skrypt umarł po cichu, zanim zdążył włączyć menu sterowania i ustawić prawidłowe oświetlenie."
I jeszcze dodam od siebie: ...ale mimo to nie wywalił do pulpitu ani całej gry, ani sesji, w tym pozostałego taboru na mapie. Sesja działa w najlepsze, tylko "trefna" lokomotywa sobie spokojnie stoi i czeka na dopisek w configu.
Wielkie dzięki za to dla Radka.
I jeszcze taka refleksja: to pokazuje też, co by się nie znajdowało na liście życzeń, skarg i zażaleń wobec Tereni, że gra jest o lata świetlne dalej niż kiedyś, jeśli chodzi o stabilność.
Ostatnio zmieniony przez Railwoj 14-08-2026, 21:46, w całości zmieniany 8 razy  
 
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group