# Intégrations (Pour les moddeurs)

Ce document liste tous les exports et événements disponibles pour intégrer le StretcherMod avec vos propres scripts (menus radiaux, context menus, dispatch, MDT, etc.).

<p class="callout danger">Si vous utilisez vos propres menus via ces exports, n'oubliez pas de désactiver le système de ciblage intégré en mettant `<span class="editor-theme-code">Config.TargetSystem = "none"</span>` dans votre `<span class="editor-theme-code">config.lua</span>` pour éviter les conflits et les erreurs dans la console !</p>

<p class="callout info">Les exemples ci-dessous utilisent `<span class="editor-theme-code">MasterStretcher</span>` comme nom de ressource — c'est le nom recommandé après avoir renommé le dossier téléchargé (voir chapitre Installation). Si vous avez gardé un autre nom de dossier, remplacez `<span class="editor-theme-code">MasterStretcher</span>` par celui-ci dans chaque appel `<span class="editor-theme-code">exports[...]</span>`.</p>

---

## 💻 EXPORTS CLIENT

Vous pouvez appeler ces fonctions depuis n'importe quel script client.

La plupart de nos exports retournent deux valeurs : `<span class="editor-theme-code">success</span>` (boolean) et `<span class="editor-theme-code">message</span>` (string ou boolean selon le cas) pour vous permettre de gérer vos erreurs proprement (ex: si le joueur n'a pas le bon métier).

*Note : Si vous ne précisez pas d'entité en paramètre, le script ciblera automatiquement le brancard ou l'ambulance la plus proche du joueur.*

### 🛠️ Actions

**1. Pousser / Lâcher un brancard**

```lua
local success, action = exports['MasterStretcher']:TogglePush(entity)
-- action retourne "pushed" ou "dropped"
```

**2. Ouvrir le menu de gestion du brancard**

```lua
local success, reason = exports['MasterStretcher']:OpenMenu(entity)
```

**3. Ranger le brancard dans l'ambulance** *(Vérifie automatiquement que les portes requises de l'ambulance sont ouvertes)*

```lua
local success, reason = exports['MasterStretcher']:StowStretcher(ambulanceVehicle)
```

**4. Sortir le brancard de l'ambulance**

```lua
local success, reason = exports['MasterStretcher']:UnstowStretcher(ambulanceVehicle)
```

**5. Ouvrir le menu du brancard depuis l'intérieur de l'ambulance**

```lua
local success, reason = exports['MasterStretcher']:OpenAmbulanceMenu(ambulanceVehicle)
```

**6. Bloquer / Débloquer les freins**

```lua
local success, isBraked = exports['MasterStretcher']:ToggleBrakes(entity)
-- isBraked retourne le nouvel état des freins (true = bloqué)
```

### 🔍 Lecture d'informations (Getters)

**Savoir si le joueur pousse actuellement un brancard :**

```lua
local isPushing = exports['MasterStretcher']:IsPushingStretcher() -- Retourne true/false
```

**Récupérer l'entité du brancard tenu par le joueur :**

```lua
local stretcherEntity = exports['MasterStretcher']:GetAttachedStretcher() -- Retourne l'entité ou nil
```

**Savoir si un brancard est occupé (Joueur ou PNJ) :**

```lua
local isOccupied = exports['MasterStretcher']:IsStretcherOccupied(entity) -- Retourne true/false
```

---

## 📡 ÉVÉNEMENTS CLIENT (Hooks)

Le script diffuse ces événements en local. Vous pouvez les écouter dans vos autres scripts pour déclencher actions automatiques (ex: allumer les gyrophares quand on sort le brancard, envoyer un message radio, etc.).

- **`<strong class="editor-theme-bold editor-theme-code">stretchermod:onPushStart</strong>`**(entity) : Se déclenche quand le joueur attrape le brancard.
- **`<strong class="editor-theme-bold editor-theme-code">stretchermod:onPushStop</strong>`**(entity, position) : Se déclenche quand le joueur lâche le brancard (`<span class="editor-theme-code">position</span>` = 'debout' ou 'couche').
- **`<strong class="editor-theme-bold editor-theme-code">stretchermod:onStretcherStowed</strong>`**(ambulanceEntity, stretcherEntity) : Se déclenche quand un brancard est rangé dans un véhicule.
- **`<strong class="editor-theme-bold editor-theme-code">stretchermod:onStretcherUnstowed</strong>`**(ambulanceEntity, stretcherEntity) : Se déclenche quand un brancard est sorti d'un véhicule.

*Exemple d'utilisation :*

```lua
AddEventHandler('stretchermod:onStretcherStowed', function(ambulance, stretcher)
    print("Un brancard vient d'être chargé dans l'ambulance !")
    -- Insérez ici votre code pour fermer les portes arrière automatiquement, par exemple.
end)
```