Courseplay: Unload Me umożliwia ciągnikom rozładunkowym Courseplay automatyczne śledzenie kombajnów prowadzonych ręcznie przez gracza, dopasowywanie prędkości i rozładunek podczas jazdy.
Funkcje:
Rozładunek kombajnów prowadzonych przez gracza podczas jazdy, bez zatrudniania AI Courseplay do obsługi kombajnu.
Ciągnik rozładunkowy automatycznie dopasowuje prędkość do kombajnu i ustawia przyczepę pod rurą wysypową.
Rozłożenie rury wysypowej kombajnu automatycznie przywołuje najbliższy bezczynny ciągnik Courseplay.
Złożenie rury działa jako polecenie oddalenia: ciągnik bezpiecznie odjeżdża i opuszcza miejsce pracy.
Rozpoczęcie jazdy po wezwaniu, gdy ciągnik stał, nie pozostawi go w tyle; będzie on ścigał kombajn i go dogoni.
Prawy Shift + U: ręczne przywołanie najbliższego ciągnika rozładunkowego na żądanie.
Prawy Shift + I: włącza lub wyłącza wcześniejsze automatyczne przywołanie, gdy zbiornik osiągnie 80% pojemności.
Wymaga Courseplay dla FS25. Autor: exekx GitHub: https://github.com/exekx/FS25_CourseplayPlayerUnload
Problemy / zgłaszanie błędów: https://github.com/exekx/FS25_CourseplayPlayerUnload/issues
Wybór pojazdu odbierającego i dysponowanie na duże odległości
- Zwiększono promień wyszukiwania do 4000 metrów, umożliwiając płynne kierowanie pojazdów odbierających na rozległych mapach w formatach 4x i 16x.
- Wprowadzono inteligentny system oceny kandydatów, faworyzujący ciągniki już obsługujące dane pole.
- Uwzględniono stopień wypełnienia przyczepy przy wyborze ciągnika, preferując pojazdy puste lub częściowo załadowane nad tymi, które są już niemal pełne.
- Dodano obsługę wysyłania pojazdów odbierających znajdujących się w stanach oczekiwania (`WAITING_FOR_SOMETHING_TO_DO` oraz `IDLE`).
Wykrywanie kombajnów i filtrowanie przyczep
- Wprowadzono ścisłą weryfikację obiektów typu kombajn (`isHarvesterObject`), eliminując błędne przypisania.
- Naprawiono błędy w identyfikacji przyczep i wozów przeładowczych: przyczepy zbożowe, do kiszonki czy beczkowozy nie są już mylone z kombajnami.
- Zachowano specjalną obsługę dla ciągnionych kombajnów do roślin okopowych i zielonki, wyposażonych w zespoły tnące i rury wyładowcze.
- Dodano walidację hierarchii nośników i modułowych narzędzi dla złożonych zestawów maszynowych.
Zakrzywione pokosy i dynamiczne śledzenie trasy
- Zwiększono tolerancję kąta ustawienia do 60 stopni, aby zapobiec przerywaniu pracy pojazdu odbierającego na ostrych zakrętach i przy zakrzywionych granicach pola.
- Rozszerzono tolerancję przesunięcia bocznego do 6 metrów, zapewniając płynną jazdę równoległą w trudnym terenie.
- Dodano weryfikację bliskości (poniżej 30 m) w fazie zbliżania, przed przejściem do aktywnego trybu rozładunku.
- Ulepszono dynamiczne celowanie z wyprzedzeniem, uwzględniające bieżący kierunek jazdy kombajnu i zakrzywioną trasę.
Sterowanie rurą wyładowczą i cykl pracy pojazdu odbierającego
- Zoptymalizowano logikę anulowania zadania przy składaniu rury: ciągniki w drodze do maszyny nie są już odwoływane przed dotarciem do celu.
- Skonfigurowano anulowanie zadania tak, by następowało dopiero po faktycznym rozładunku lub po złożeniu rury użytej wcześniej do opróżniania zbiornika.
- Dodano funkcję automatycznego zwalniania pojazdu odbierającego, gdy gracz opuści sieczkarnię na dłużej niż 20 sekund.
- Zapewniono prawidłowy reset stanu po odjeździe ciągnika, eliminując problem zablokowanych przypisań.
Obsługa nawrotów sieczkarni
- Poprawiono sygnaturę argumentów dla funkcji `startChopperTurn` w modyfikacji Courseplay, eliminując błędy wywołania metody. - Usunięto procedury sterowania w pętli otwartej, aby wyeliminować nieregularne ruchy kół i drgania ciągnika podczas skręcania.
- Przywrócono płynne oczekiwanie na koniec pokosu: ciągniki zatrzymują się prosto na końcu pokosu, dając kombajnowi 100% swobody manewru.
- Udoskonalono płynne dopasowanie prędkości i dynamiczne odsunięcie do tyłu, gdy kombajn wjeżdża w nowy rząd.
Zabezpieczenia przed zderzeniem z silnikiem i stabilnością
- Dodano rekurencyjną procedurę czyszczenia, usuwającą pojazdy usunięte z aktywnych tabel śledzenia, sprzedane lub zresetowane.
- Dodano sprawdzanie istnienia encji i poprawności węzła (`isValidNode`, `entityExists`) przed wszystkimi obliczeniami przestrzennymi.
- Zapakowano sprawdzanie unikania kolizji w wywołania chronione (`pcall`), aby wyeliminować błędy dzielenia przy zerowej prędkości i awarie z powodu zerowego odniesienia.
- Dodano zabezpieczenia dla powiązań akcji wejściowych, gdy tabele pojazdu lub wywołującego są niezainicjowane.
- Oczekiwanie na uwrociu i zwalnianie miejsca: ciągniki rozładowujące zatrzymują się w miejscu na końcu pokosu podczas manewrów zawracania kombajnu, pozostawiając 100% uwrocia całkowicie wolne, aby kombajn mógł manewrować bez kolizji i tłoku.
- Zaawansowane wykrywanie zawracania na podstawie wielu czynników: dynamicznie wykrywa zawracanie na uwrociu na podstawie kilku parametrów fizycznych: stanu podniesienia hedera/podbieracza (getIsLowered), aktywnego przepływu plonów przez sloty podawania (loadingDelaySlots, isChopperFilling, isDischarging), maksymalnego skrętu kół, prędkości kątowej oraz jazdy do tyłu.
- Natychmiastowe zakończenie zawracania i płynne podążanie: w chwili, gdy gracz opuści heder na nowy rząd lub wyprostuje kierowanie, stan zawracania kończy się natychmiast, bez żadnego opóźnienia. Ciągnik rozładowujący płynnie wraca do kombajnu z prędkością zawracania, bez zawieszania się ani blokowania przy przeciwnych kierunkach jazdy.
- Wybór strony pokosu i wału: podczas zbierania pokosów za pomocą podbieraczy ciągniki rozładowujące inteligentnie utrzymują stronę najazdu lub respektują ręczne przesunięcie Courseplay (+X w lewo, -X w prawo).
- Zabezpieczenia Courseplay podczas zawracania sieczkarni: przechwytuje wewnętrzne stany zawracania sieczkarni Courseplay (startChopperTurn, handleChopper180Turn, handleChopperHeadlandTurn), dzięki czemu ciągniki rozładowujące nigdy nie utkną podczas wyszukiwania nieistniejących punktów trasy pracy AI na polu (tymczasowa trasa --/--).
- Zabezpieczenie przed błędem silnika GIANTS: zintegrowana poprawka silnika zapobiega powtarzającym się błędom LUA w konsoli (AIVehicleUtil.lua:337: attempt to index nil with 'getAttachedImplements'), gdy ciągniki rozładowujące holują przyczepy lub narzędzia bez tylnych zaczepów (np. Krampe SB 30/60).
- Bezpieczny odstęp za sieczkarnią: ciągniki rozładowujące utrzymują bezpieczny odstęp 5 m za kabiną sieczkarni, bezpośrednio pod rurą wyrzutową.
- Dynamiczny boczny odstęp: trasa pojazdu rozładowującego dynamicznie dopasowuje się teraz do szerokości każdego podłączonego hedera (od małych hederów o szerokości 4 m aż po ogromne hedery o szerokości 15,2 m i większej), zapewniając bezpieczny odstęp od szerokich hederów i jednocześnie ustawiając przyczepę centralnie pod rurą wysypową.
- Poprawka zawracania na uwrociu: pojazdy rozładowujące poruszają się wyłącznie za kombajnem, eliminując ryzyko wyjechania przed heder podczas zawracania.
- Natychmiastowe ręczne ponowne wezwanie (prawy Shift + U): ponownie wysyła już przypisane pojazdy rozładowujące do zaktualizowanej pozycji Twojej maszyny po zawróceniu na skraju pola.
- Realistyczny odstęp podczas podjeżdżania od tyłu: ciągniki rozładowujące utrzymują podczas podjazdu komfortowy odstęp bezpieczeństwa wynoszący 5–7 m za tylnym zderzakiem kombajnu, zamiast jechać tuż za nim.
- Dostosowanie systemu kolizji: naprawiono nieuzasadnione zatrzymywanie się na skutek kolizji z kombajnem gracza i szerokimi hederami.
- Kompatybilność z przesunięciem Courseplay: pełna integracja z dostępnym w grze ustawieniem Courseplay „Combine offset X/Z”, umożliwiającym precyzyjne ręczne korekty.
- Pełna obsługa NEXAT i Modular Carrier (moduł NexCo): Dodano pełną kompatybilność z nośnikami o dużej szerokości, wyposażonymi w rury wysypowe po prawej stronie. Poprawiono obliczenia przesunięcia rury, dzięki czemu przyczepa ustawia się bezpośrednio pod wysypem, bez pozostawania w tyle.
- Unikanie kolizji i płynne równoległe podjeżdżanie: Wyeliminowano ostre skręty w kierunku kombajnu. Pojazdy rozładowujące podjeżdżają teraz płynnie i ściśle równolegle do maszyny (maksymalny kąt zbieżności 4°), z gwarantowanym bezpiecznym odstępem od gąsienic, kół i kabiny.
- Dokładne ustawianie podczas postoju: Gdy kombajn zatrzyma się z pełnym zbiornikiem, pojazd rozładowujący podjeżdża dokładnie pod wysyp i całkowicie się zatrzymuje, bez pełzania do przodu ani zjeżdżania w stronę kombajnu.
- Poprawki błędów i ulepszenia: Naprawiono błąd Lua „attempt to call missing method getAIDirectionNode” występujący w pojazdach bez specjalizacji AI. Ujednolicono architekturę węzłów referencyjnych, zapewniając w 100% stabilne śledzenie w standardowych kombajnach, sieczkarniach polowych i dołączonych narzędziach.