Courseplay: Unload Me permet aux tracteurs de déchargement Courseplay de suivre automatiquement les moissonneuses-batteuses conduites manuellement par le joueur, d'adapter leur vitesse et de les décharger en roulant.
Fonctionnalités :
Déchargez les moissonneuses-batteuses conduites par le joueur en roulant, sans engager l'IA de Courseplay pour la moissonneuse-batteuse.
Le tracteur de déchargement adapte automatiquement sa vitesse à celle de la moissonneuse-batteuse et aligne la remorque sous la goulotte.
Le déploiement de la goulotte de la moissonneuse-batteuse appelle automatiquement le tracteur Courseplay inactif le plus proche.
Le repli de la goulotte sert de commande de renvoi : le tracteur s'écarte en toute sécurité et repart.
Commencer à conduire après l'appel alors que le tracteur était à l'arrêt ne le laissera pas bloqué ; il poursuit la moissonneuse-batteuse et la rattrape.
Maj droite + U : appelle manuellement le tracteur de déchargement le plus proche à la demande.
Maj droite + I : active ou désactive l'appel automatique anticipé lorsque la trémie atteint 80 % de sa capacité.
Nécessite Courseplay pour FS25. Auteur : exekx GitHub : https://github.com/exekx/FS25_CourseplayPlayerUnload
Problèmes / suivi des bugs : https://github.com/exekx/FS25_CourseplayPlayerUnload/issues
Sélection et déploiement à longue distance des véhicules de déchargement
- Extension du rayon de recherche jusqu'à 4 000 mètres pour une gestion fluide des véhicules de déchargement sur les cartes géantes (formats 4x et 16x).
- Ajout d'un système de notation intelligent pour les véhicules candidats, privilégiant les tracteurs desservant déjà la parcelle active.
- Intégration du niveau de remplissage des remorques dans les critères de sélection, favorisant les bennes vides ou partiellement chargées par rapport à celles presque pleines.
- Prise en charge du déploiement de véhicules de déchargement en attente (états `WAITING_FOR_SOMETHING_TO_DO` et `IDLE`).
Détection des moissonneuses et filtrage des remorques
- Vérification stricte des objets de type moissonneuse (`isHarvesterObject`) pour éviter les attributions erronées (faux positifs).
- Correction des erreurs d'identification des remorques et bennes à vis : les bennes à grain, remorques d'ensilage et tonnes à lisier ne sont plus confondues avec des moissonneuses.
- Maintien de la prise en charge spécifique pour les véritables récolteuses traînées (racines et fourrage) équipées de barres de coupe et de goulottes de déchargement.
- Validation de la hiérarchie entre porteurs et outils modulaires pour les configurations complexes.
Andains courbes et suivi de trajectoire dynamique
- Assouplissement de la tolérance d'angle d'alignement (jusqu'à 60 degrés) pour éviter l'abandon de la mission dans les virages serrés ou le long des bordures de champ courbes.
- Augmentation de la tolérance de décalage latéral (jusqu'à 6 mètres) pour assurer un suivi fluide sur terrain accidenté.
- Vérification de proximité (< 30 m) lors de la phase d'approche avant le passage au mode de déchargement actif.
- Amélioration du ciblage anticipé dynamique en fonction du cap en temps réel et de la trajectoire courbe de la moissonneuse.
Gestion de la goulotte et cycle de vie du véhicule de déchargement
- Gestion intelligente de l'annulation liée au repli de la goulotte : les tracteurs en route vers la machine ne sont plus annulés avant de l'avoir atteinte.
- Configuration de l'annulation pour qu'elle ne se déclenche qu'après un déchargement effectif ou lorsque la goulotte est repliée après avoir été ouverte pour le déchargement.
- Libération automatique du véhicule de déchargement lorsque le joueur quitte une ensileuse pendant plus de 20 secondes.
- Réinitialisation propre de l'état au départ du tracteur pour éviter les blocages d'attribution obsolètes.
Gestion des virages pour les ensileuses
- Correction de la signature des arguments pour la fonction `startChopperTurn` de Courseplay afin d'éviter les erreurs d'appel de méthode. - Suppression des routines de direction en boucle ouverte pour éliminer les mouvements erratiques des roues et les saccades du tracteur lors des virages.
- Rétablissement d'une procédure d'attente propre en bout de rang : les tracteurs s'arrêtent bien droits à la fin du rang, laissant à la moissonneuse un espace de manœuvre totalement libre.
- Optimisation de la régulation de vitesse et du suivi dynamique en retrait (marche arrière) lorsque la moissonneuse s'engage dans le nouveau rang.
Stabilité et protections contre les plantages moteur
- Ajout d'une routine de nettoyage récursive pour retirer des tables de suivi actives les véhicules supprimés, vendus ou réinitialisés.
- Ajout de vérifications d'existence de l'entité et de validité du nœud (`isValidNode`, `entityExists`) avant tout calcul spatial.
- Encapsulation des vérifications d'évitement de collision dans des appels protégés (`pcall`) pour éliminer les erreurs de division par zéro et les plantages dus à des références nulles (`nil`).
- Ajout de sécurités pour les liaisons de commandes (input bindings) lorsque les tables de véhicules ou d'appelants ne sont pas initialisées.
- Attente dans les tournières et dégagement de l’espace : les tracteurs de déchargement s’arrêtent proprement sur place à la fin de l’andain pendant les manœuvres de demi-tour de la moissonneuse-batteuse, laissant 100 % de la tournière complètement libre pour permettre à la moissonneuse de manœuvrer sans collision ni encombrement.
- Détection approfondie des demi-tours à facteurs multiples : détecte dynamiquement les demi-tours en tournière à partir de plusieurs paramètres physiques : état relevé de la coupe/du pick-up (getIsLowered), flux de récolte actif dans les compartiments d’alimentation (loadingDelaySlots, isChopperFilling, isDischarging), angle de braquage maximal, vitesse de lacet et marche arrière.
- Fin instantanée du demi-tour et suivi fluide : dès que le joueur abaisse la coupe sur la nouvelle rangée ou recentre la direction, l’état de demi-tour se termine instantanément, sans aucun délai. Le tracteur de déchargement rejoint en douceur la moissonneuse à la vitesse de demi-tour, sans se figer ni se bloquer dans des directions opposées.
- Sélection du côté des andains : lors du ramassage des andains avec des pick-up, les tracteurs de déchargement conservent intelligemment le côté d’approche ou respectent le décalage manuel de Courseplay (+X à gauche, -X à droite).
- Protections de sécurité contre les demi-tours des ensileuses de Courseplay : intercepte les états internes de demi-tour des ensileuses de Courseplay (startChopperTurn, handleChopper180Turn, handleChopperHeadlandTurn) afin de garantir que les tracteurs de déchargement ne restent jamais bloqués à rechercher des points de passage inexistants du travail de l’IA dans les champs (course temporaire --/--).
- Protection contre un bug du moteur GIANTS : intègre un correctif du moteur empêchant la répétition d’erreurs LUA dans la console (AIVehicleUtil.lua:337: attempt to index nil with 'getAttachedImplements') lorsque les tracteurs de déchargement tractent des remorques ou des outils dépourvus d’attelage arrière (p. ex. Krampe SB 30/60).
- Distance de sécurité derrière l’ensileuse : les tracteurs de déchargement maintiennent une distance de sécurité de 5 m derrière la cabine de l’ensileuse, directement sous la goulotte de déchargement.
- Garde latérale dynamique : la trajectoire du déchargeur s’adapte désormais dynamiquement à la largeur de toute barre de coupe/header attelé(e) (des petites barres de coupe de 4 m jusqu’aux énormes barres de 15,2 m et plus), garantissant une distance de sécurité avec les barres de coupe larges tout en centrant la remorque directement sous la goulotte de déchargement.
- Correction du demi-tour en bout de champ : les déchargeurs empruntent exclusivement une trajectoire derrière la moissonneuse-batteuse, éliminant tout risque de passer devant la barre de coupe pendant les virages.
- Rappel manuel instantané (Maj droite + U) : renvoie les déchargeurs déjà affectés vers la position mise à jour de votre machine après les demi-tours en bordure de champ.
- Distance d’approche arrière réaliste : lors de l’approche, les tracteurs de déchargement maintiennent un écart de sécurité confortable de 5 à 7 m derrière le pare-chocs arrière de la moissonneuse-batteuse au lieu de la suivre de trop près.
- Réglage du système de collision : correction des arrêts causés à tort par des collisions avec la moissonneuse-batteuse du joueur et les barres de coupe larges.
- Compatibilité avec le décalage Courseplay : intégration complète du réglage en jeu « Combine offset X/Z » de Courseplay pour des ajustements manuels précis.
- Prise en charge complète de NEXAT et du Modular Carrier (module NexCo) : Ajout de la compatibilité complète avec les porteurs à grande largeur équipés de goulottes de déchargement à droite. Correction du calcul du décalage de la goulotte afin que la remorque s’aligne directement sous le bec verseur sans prendre de retard.
- Anti-collision et approche parallèle fluide : Suppression des changements de direction brusques vers la moissonneuse-batteuse. Les véhicules de déchargement approchent désormais en douceur et de manière strictement parallèle à la machine (angle de convergence maximal de 4°), avec une distance de sécurité garantie par rapport aux chenilles, aux roues et à la cabine.
- Alignement précis à l’arrêt : Lorsqu’une moissonneuse-batteuse s’arrête avec une trémie pleine, le véhicule de déchargement se positionne précisément sous le bec verseur et s’arrête complètement, sans avancer ni dériver vers la moissonneuse-batteuse.
- Corrections de bugs et améliorations : Correction de l’erreur Lua « attempt to call missing method getAIDirectionNode » sur les véhicules ne disposant pas de la spécialisation IA. Unification de l’architecture des nœuds de référence pour un suivi 100 % stable sur les moissonneuses-batteuses standard, les ensileuses et les outils attelés.