Jak dodać sobie kasę w Euro Truck Simulator 2 na Linuksie (bez Windowsa i modów)

14 godzin temu

www.czarnaowca.it

Euro Truck Simulator 2 to świetny symulator jazdy tirem, a od niedawna – również i autobusem. Ale nie jest to tanie, bo pojazdy są drogie, a nie każdy ma tyle siły i samozaparcia, by przejechać setki tysięcy kilometrów na zleceniach, by kupić swój pierwszy pojazd. Może sobie dodamy tej kasy? Tylko jak?

Klasyczny poradnik do ETS2 mówi: „zmień g_save_format na 2 w config.cfg, zrób zapis i wyedytuj game.sii w Notatniku”. W praktyce na nowoczesnym Linuksie, ze Steamem i aktywną (lub wcześniej używaną) synchronizacją Steam Cloud, ta ścieżka potrafi rzucić pod koła kilka niespodzianek. Poniżej opisuję realny proces krok po kroku – od znalezienia adekwatnego folderu zapisu po odszyfrowanie binarki ScsC i BSII w czystym TypeScripcie.

Pułapka 1: Gdzie faktycznie leżą zapisy gry?

Domyślnie na Linuksie katalog główny ETS2 znajduje się w ~/.local/share/Euro Truck Simulator 2/. Znajdziesz tam plik config.cfg oraz foldery profiles i steam_profiles.

Problem w tym, iż jeżeli Twój profil był kiedykolwiek synchronizowany ze Steam Cloud, samo odznaczenie chmury we adekwatnościach gry na Steamie nie przenosi plików do ~/.local/share/Euro Truck Simulator 2/profiles. Gra przez cały czas czyta i zapisuje profil bezpośrednio w katalogu userdata Steama:

~/.local/share/Steam/userdata/<ID_KONTA_STEAM>/227300/remote/profiles/<HEX_NAZWY_PROFILU>/

(gdzie 227300 to AppID Euro Truck Simulator 2, a nazwa folderu profilu to zakodowana heksadecymalnie nazwa kierowcy).

Wewnątrz tego katalogu znajdziesz podfolder save/ z kolejnymi slotami (1, 2, autosave, autosave_job itd.) oraz plikami game.sii.

Ważna uwaga dla graczy World of Trucks: Konto WoTr przechowuje w chmurze wyłącznie statystyki zleceń zewnętrznych i osiągnięcia z eventów – sam stan konta w euro siedzi lokalnie w game.sii. Upewnij się jednak, iż nie masz aktywnego zlecenia zewnętrznego podczas edycji zapisu – w przeciwnym razie gra wykryje rozbieżność z serwerem WoTr i odrzuci zapis przy wczytywaniu.

Pułapka 2: Dlaczego g_save_format "2" czasem nie wystarcza?

Ustawienie uset g_save_format "2" w ~/.local/share/Euro Truck Simulator 2/config.cfg powinno wymusić zapis pliku game.sii w czytelnym formacie tekstowym (SiiNunit). W nowszych wersjach ETS2 (1.50+) profil potrafi jednak nadpisywać to ustawienie własnym plikiem config.cfg w userdata lub przez cały czas zapisywać pliki w kontenerze ScsC.

Sprawdzenie nagłówka pliku zapisu (head -c 16 game.sii | xxd) od razu pokazuje, z czym mamy do czynienia:

00000000: 5363 7343 80ba f75f 380b 2e5b 614a abff ScsC..._8..[aJ..

Nagłówek ScsC (53 63 73 43) oznacza plik zaszyfrowany algorytmem AES-256-CBC i skompresowany przy pomocy zlib. Co więcej, po odszyfrowaniu i rozpakowaniu ScsC, w środku nie znajduje się czysty tekst, ale binarny format BSII, który wymaga osobnego zdekodowania do składni SiiNunit.

Rozwiązanie: Dekodowanie ScsC + BSII dzięki sii-decrypt-ts

Zamiast uruchamiać narzędzia z Windowsa przez Wine lub kompilować stare binarki C++, można użyć czystej biblioteki TypeScript: Trucky/sii-decrypt-ts. Obsługuje ona pełny potok: deszyfrowanie AES (ScsC), dekompresję zlib oraz serializację binarnego BSII do czystego tekstu SiiNunit.

Krok 1: Wyłącz grę i zlokalizuj najnowszy zapis

Upewnij się, iż ETS2 jest całkowicie zamknięty, a następnie przypisz ścieżkę do swojego folderu save w userdata:

SAVE_DIR="$HOME/.local/share/Steam/userdata/<ID_STEAM>/227300/remote/profiles/<ID_PROFILU>/save" export LATEST_SAVE=$(find "$SAVE_DIR" -name "game.sii" -printf "%T@ %p\n" | sort -nr | head -n 1 | cut -d' ' -f2-) echo "Najnowszy zapis: $LATEST_SAVE"

Krok 2: Skompiluj dekryptor w /tmp

cd /tmp && \ git clone --depth 1 https://github.com/Trucky/sii-decrypt-ts.git /tmp/ets2_dec && \ cd /tmp/ets2_dec && \ npm install --silent && \ npx tsc

Krok 3: Zrób backup, zdekoduj zapis i zmień money_account

Biblioteka udostępnia klasę SIIDecryptor. Wywołanie SIIDecryptor.decrypt(sciezka, true) zwraca obiekt wyniku, w którym gotowy, czytelny tekst znajduje się we adekwatności string_content.

Poniższy jednolinijkowiec tworzy kopię zapasową .bak, dekoduje plik i podmienia wartość money_account na 2000000 (2 mln €):

cd /tmp/ets2_dec && node -e ' const fs = require("fs"); const { SIIDecryptor } = require("./dist/index.js"); const savePath = process.env.LATEST_SAVE; if (!savePath) throw new Error("Ustaw najpierw zmienna LATEST_SAVE!"); if (!fs.existsSync(savePath + ".bak")) { fs.copyFileSync(savePath, savePath + ".bak"); } const res = SIIDecryptor.decrypt(savePath, true); if (!res.success || !res.string_content) { throw new Error("Blad dekodowania: " + JSON.stringify(res)); } const updated = res.string_content.replace(/(money_account:\s*)\d+/, "$12000000"); if (updated === res.string_content) { throw new Error("Nie znaleziono pola money_account!"); } fs.writeFileSync(savePath, updated, "utf8"); console.log("Sukces! Nowy stan konta:", updated.match(/money_account:\s*\d+/)[0]); '

Krok 4: Wczytanie zapisu w grze i synchronizacja ze Steam Cloud

ETS2 bez problemu wczytuje pliki zapisu zapisane w czystym tekście (SiiNunit) – nie trzeba ich ponownie szyfrować do ScsC.

  1. Uruchom grę przez Steam. jeżeli pojawi się okno konfliktu synchronizacji Steam Cloud, wybierz Pliki lokalne (Prześlij do chmury), aby Steam nie nadpisał zmodyfikowanego pliku starą kopią z serwera.
  2. Wczytaj manualnie edytowany zapis. W menu głównym gry wejdź w Zapisz i wczytaj -> Wczytaj grę i wybierz konkretny slot (np. najnowszy Autosave), który modyfikowałeś.
  3. Posprzątaj pliki tymczasowe. Gdy potwierdzisz w grze, iż 2 000 000 € pojawiło się na koncie, utwórz nowy standardowy zapis z poziomu gry, a następnie usuń katalog /tmp/ets2_dec oraz kopię game.sii.bak.

Kilka słów na koniec

Cała ta operacja dobrze pokazuje, jak bardzo pod maską zmieniły się zapisy w grach SCS Software. Kiedyś wystarczyło dopisać jedną linijkę w config.cfg i otworzyć plik w dowolnym edytorze – dziś, przy wielowarstwowym formacie (ScsC + BSII) oraz agresywnej synchronizacji Steam Cloud w userdata, prosta edycja zamienia się w małą sesję inżynierii wstecznej.

Warto też zachować umiar z samą kwotą. Wpisanie na konto astronomicznych 50 czy 100 milionów euro na starcie potrafi błyskawicznie zabić sens rozgrywki – rozbudowa garaży, spłata kredytów czy dobieranie bardziej opłacalnych tras przestają mieć jakiekolwiek znaczenie. Zastrzyk rzędu 2 milionów euro to złoty środek: pozwala od razu kupić wymarzoną ciężarówkę (albo autokar z DLC Coaches), rozbudować pierwszą bazę i zatrudnić kierowców, ale przez cały czas zostawia motywację do kręcenia kolejnych kilometrów po Europie.

Dodatkowo, to gra na Steam, ale nie tak dawno – GOG ogłosił GOG Galaxy na Linux. Warto sprawdzić, co pisałem przed ogłoszeniem!

Idź do oryginalnego materiału