Natives mouvement
Le mouvement est la première chose qu'un mod vivant vous apprend : un ped immobile est un accessoire, un ped qui bouge est vivant. Voici les natives qui reviennent partout dans le code de vrais mods – le mien inclus – pour faire marcher, suivre, faire face et stopper des peds.
Marcher vers une entité
TASK_GO_TO_ENTITY(ped, target, timeout, seekRadius, moveBlendRatio, moveState, unk) envoie un ped vers une entité et le stoppe à bonne distance.
Quand en avoir besoin : toute scène où un acteur doit rejoindre une personne ou un véhicule avant que l'action ne démarre — un suspect qui s'avance vers le joueur, un garde qui traverse la rue vers le portail, un secouriste qui s'approche du corps. Ça reste compatible avec une cible mobile : réémettre la tâche quand la cible bouge et le ped suit naturellement.
Function.Call(Hash.TASK_GO_TO_ENTITY, Ped.Handle, _targetVehicle.Handle, -1, 3.0f, 2.0f, 1073741824, 0);
Le piège : un seekRadius trop grand ou un moveBlendRatio trop faible font tourner le ped en rond autour de la cible. Ajustez les deux, et réémettez la tâche dès que la cible se déplace.
Marcher vers des coordonnées
TASK_GO_STRAIGHT_TO_COORD(ped, x, y, z, ...) marche vers des coordonnées brutes ; TASK_FOLLOW_NAV_MESH_TO_COORD utilise la navigation mesh, donc le ped respecte trottoirs et relief.
Quand en avoir besoin : repositionner un acteur à un point précis — traîner un corps vers une planque, faire marcher un suspect jusqu'au point exact du contrôle d'identité, guider un otage vers une position de couverture. Privilégiez la variante navmesh dès que le chemin n'est pas une ligne droite.
Stoppper et réinitialiser
CLEAR_PED_TASKS(ped) annule la file de tâches courante et rend le ped au contrôle ambiant ; TASK_STAND_STILL(ped, ms) fige le ped sur place pour une durée fixe.
Quand en avoir besoin : à chaque sortie d'état. Appelez l'un des deux avant de donner une nouvelle tâche pour que l'ancien ordre ne se batte pas avec le nouveau — le bug classique du ped qui continue de marcher parce qu'on n'a jamais clear l'ancienne tâche.
Se tourner, regarder
TASK_TURN_PED_TO_FACE_ENTITY(ped, target, timeoutMs) fait pivoter le haut du corps vers une entité ; TASK_LOOK_AT_ENTITY(ped, target, timeout, ...) ne tourne que la tête et le regard.
Quand en avoir besoin : tout échange d'attention — l'officier qui se tourne vers le suspect à qui il parle, le témoin qui fixe celui qui radio, la foule qui se tourne vers la menace. Peu coûteux, lisible, et ça vend l'idée que « ces acteurs partagent une scène » instantanément.
Function.Call(Hash.TASK_TURN_PED_TO_FACE_ENTITY, ped.Handle, speaker.Handle, 2000);
Errer sans but
TASK_WANDER_STANDARD(ped, speed, heading) laisse un ped déambuler dans la zone sur les chemins ambiants.
Quand en avoir besoin : foule de remplissage et vie de fond. Vous voulez un quartier vivant sans chorégraphier chaque ivrogne et piéton — laissez-les errer et réservez votre machine à états aux acteurs qui comptent.
Ce qu'il ne faut pas faire
Ne téléportez pas les acteurs visibles. Un ped « snapé » de l'autre côté de la rue casse instantanément la crédibilité du monde ; il existe toujours une tâche animée qui atteint honnêtement la même destination.