> ## Documentation Index
> Fetch the complete documentation index at: https://docs.humalike.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Systèmes de gameplay

> Actions des PNJ, suivi, véhicules, blessures, métiers, inventaire, dispatch, actions définies par le serveur et comptoir.

Humalike transforme les décisions de conversation en actions FiveM validées. Les
actions intégrées couvrent le comportement courant des personnages ; les
fournisseurs connectent l'inventaire, le dispatch et les systèmes de gameplay
propres au serveur.

## Actions intégrées

| Action                | Résultat                                                                                                                                          |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `wave`                | Jouer un bref salut de la main.                                                                                                                   |
| `start_dancing`       | Commencer une danse prolongée.                                                                                                                    |
| `interrupt_animation` | Interrompre l'animation en cours.                                                                                                                 |
| `kneel`               | Prendre une pose agenouillée prolongée.                                                                                                           |
| `hands_up`            | Lever les mains.                                                                                                                                  |
| `punch`               | Tenter un coup de poing à courte portée.                                                                                                          |
| `stand_up`            | Quitter un état assis ou à terre.                                                                                                                 |
| `follow_player`       | Suivre le joueur qui le demande.                                                                                                                  |
| `stop_following`      | Arrêter de suivre.                                                                                                                                |
| `hold_position`       | Rester à la position actuelle.                                                                                                                    |
| `release_movement`    | Rendre le contrôle du déplacement au comportement IA normal.                                                                                      |
| `enter_vehicle`       | Monter dans un siège libre du véhicule de quelqu'un d'autre : celui du joueur, ou le plus proche à portée.                                        |
| `enter_own_vehicle`   | Retourner au véhicule dans lequel le PNJ est arrivé, prendre le volant et partir. Proposée uniquement tant que ce véhicule se trouve à proximité. |
| `exit_vehicle`        | Quitter le véhicule actuel.                                                                                                                       |
| `walk_away`           | S'éloigner et s'arrêter à une distance sûre.                                                                                                      |
| `run_away`            | Fuir en sprintant loin de la personne et hors de la scène.                                                                                        |

`give_item` devient disponible lorsqu'un fournisseur d'inventaire est
sélectionné. Les fournisseurs d'actions personnalisés peuvent ajouter des clés
d'action propres au serveur.

## Suivi et véhicules

Seule la relation avec le joueur concerné est utilisée pour prioriser un PNJ qui
suit. Le PNJ ajuste son allure lorsqu'il prend du retard et peut monter dans des
véhicules ou en descendre par des actions explicites. L'état de suivi et de
véhicule influence aussi le
[ciblage vocal](/fr/ai-npc/voice).

## Inventaire

Les fournisseurs d'inventaire implémentent une remise d'objets faisant autorité
côté serveur. Humalike valide l'action et délègue l'opération finale sur l'objet
au fournisseur sélectionné. Un fournisseur d'inventaire personnalisé ne doit
renvoyer `true` qu'après avoir accepté l'objet.

Ne faites jamais confiance aux noms d'objets, quantités ou métadonnées provenant
d'un événement client non validé. Appliquez des listes d'autorisation propres au
serveur dans votre pont si nécessaire.

## Blessures et mort

Lorsque c'est activé, les dégâts subis par un PNJ produisent des blessures
structurées. Un PNJ peut entrer dans un état blessé, nécessiter un traitement ou
mourir selon la configuration du serveur. Les métiers de médecin et de police
autorisés reçoivent des interactions via le fournisseur d'interaction
sélectionné.

Le traitement est validé sur le serveur d'après l'identité du joueur, le métier,
l'état de service, la distance et l'état actuel du PNJ. Avec le fournisseur
joueur `standalone`, les métiers sont des autorisations ACE
(`humalike.job.<name>`) ; un fournisseur joueur personnalisé évalue les métiers
lui-même. Voir
[Métiers sans framework](/fr/ai-npc/configuration#métiers-sans-framework).

## Dispatch

Les incidents médicaux peuvent appeler le fournisseur de dispatch sélectionné
après un délai et une probabilité configurés. Humalike fournit un type et une
charge utile neutres ; le pont les traduit pour la ressource de dispatch du
serveur.

## Actions définies par le serveur

Une ressource d'intégration peut déclarer ses propres actions, chacune
conditionnée par des faits que le serveur signale. Le contrat se trouve dans
[Actions définies par le serveur](/fr/ai-npc/integrations/custom-actions).

* Seules les observations signalées débloquent une action, et uniquement pour le
  joueur auquel le PNJ répond. Ce qu'un joueur dit ne compte pas.
* Tant qu'une condition n'est pas remplie, l'action reste listée, la balise
  n'est pas acceptée et le PNJ est informé de ce qui doit se produire d'abord.
  Rien n'atteint le serveur.
* Les conditions sont revérifiées lorsque le modèle écrit la balise, de sorte
  qu'un fait expiré pendant sa réponse ne passe pas.
* Un acte accompli est écrit dans la transcription du PNJ comme un événement du
  monde nommant les faits qu'il a consommés. Les faits consommés sont perdus
  pour tout autre acte et pour le comptoir.
* Le contrôle lit la conversation récente du PNJ ainsi que ses événements du
  monde les plus récents dans l'espace de noms du serveur, quel que soit leur
  âge, de sorte qu'un PNJ très sollicité n'oublie ni une commande impayée ni un
  fait consommé.
* Un acte rejeté (`RunAction` a renvoyé `false`) n'est pas retenté. Le modèle
  peut réécrire la balise dans une réponse ultérieure comme un nouvel acte avec
  un nouvel identifiant d'invocation.

## Comptoir

Un fournisseur d'actions doté d'un `Catalog` transforme un PNJ en boutique.
Humalike prend la commande, la chiffre, suit le paiement et appelle le serveur
pour remettre les marchandises ou rendre l'argent. Le modèle ne rédige jamais un
prix, une quantité livrée ou un montant remboursé.

1. Le modèle commande en une seule balise : `[myserver:order water=10 pistol=1]`.
   Humalike vérifie le stock et les limites par article, chiffre la commande et
   indique le total au PNJ.
2. Le paiement est l'observation de paiement signalée dans la devise du
   catalogue, en unités entières.
3. Une fois que l'argent couvre le total, Humalike appelle `deliver` à la
   prochaine réponse du PNJ à ce joueur, enregistre la vente et retire les
   lignes du stock.
4. `[myserver:cancel_order]` appelle `refund` avec ce qui se trouve sur le
   comptoir. Il l'emporte sur une livraison en attente dans la même réponse.

| Cas                                                                           | Résultat                                                                                                         |
| ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| Sous-payé                                                                     | Rien ne bouge. Le PNJ est informé du montant dû.                                                                 |
| Commande refusée (article non vendu, pas de stock, limite dépassée)           | Enregistrée avec sa raison. Le PNJ la lit à son prochain tour.                                                   |
| `deliver` renvoie `false`                                                     | Rien n'est enregistré. La commande et l'argent restent. Retenté à la prochaine réponse à ce joueur.              |
| Stock épuisé avant `deliver`                                                  | Non tenté. Le PNJ est informé et peut annuler pour un remboursement.                                             |
| `refund` renvoie `false`                                                      | Retenté à la prochaine réponse. Les marchandises ne sortent pas entre-temps.                                     |
| `deliver` ou `refund` sans réponse                                            | Ni nouvelle tentative ni annulation tant qu'il n'a pas répondu. Le PNJ est informé que la remise est en attente. |
| Nouvelle commande alors qu'une est ouverte                                    | La remplace. L'argent sur le comptoir compte pour le nouveau total.                                              |
| Commande de plus d'une heure                                                  | Expire. L'argent reste sur le comptoir jusqu'à ce qu'un `deliver` ou un `refund` le consomme.                    |
| Commande par menu (`PlaceOrder`) alors qu'une commande payée attend sa remise | Refusée et enregistrée comme `order_refused` avec la raison `order_open`.                                        |

Les nouvelles tentatives de `deliver` conservent le même identifiant
d'invocation tant que la même commande tient, même après un complément de
paiement. Un `refund` est identifié par la commande qu'il annule, ou par les
paiements lorsqu'aucune commande n'est ouverte. Le tableau de bord affiche le
stock actuel du PNJ en lecture seule.

## Comportement personnalisé

Conservez les récompenses, les changements d'économie, les animations propres au
serveur, les codes de dispatch et les règles de métier dans une ressource
d'intégration séparée. Voir l'[API des fournisseurs](/fr/ai-npc/integrations/provider-api).

## Suite

* [Configurer le gameplay médical](/fr/ai-npc/configuration#gameplay-des-blessés-et-médical).
* [Construire un pont personnalisé](/fr/ai-npc/integrations/custom-bridge).
* [Ajouter un fournisseur d'actions personnalisé](/fr/ai-npc/integrations/provider-api#descripteur-dactions).
* [Déclarer des actions définies par le serveur et un comptoir](/fr/ai-npc/integrations/custom-actions).
