# Débogage & Erreurs

Ce chapitre regroupe les problèmes les plus courants et l'outil de diagnostic intégré.

## Le mode debug

Passez **`Config.Debug = true`** dans `config/config.lua` et redémarrez la ressource. MasterLadder écrit alors tout ce qu'il fait :

- **console serveur** : vérification de la licence (requête et réponse), chaque action reçue d'un joueur et son résultat, **chaque refus avec sa raison précise** (distance, phase de l'échelle, place occupée, permission, grade…), chaque changement d'état de l'échelle ;
- **console F8** (client) : synchronisation, places, commandes, montée, target, extras, props manquants, interface, performances.

Exemples de lignes :

```
[ML:deny] mladder:enter ← Jean #12 : pied de l'échelle à 6.2 m (max 5.0 m)
[ML:deny] mladder:set ← Jean #12 : déploiement : pente 9.4° (véhicule 9.1°) > 8.0° max
[ML:deny] mladder:control ← Jean #12 : « control » : pompier grade 0 < 1 requis
[ML:state] EPAN 42 tl (rév 18) : occ.b1: 0 → 12
```

**Commandes de diagnostic**
- `mldebug` (console serveur) : état complet de chaque échelle (phase, opérateur, places, valeurs, propriétaire réseau). `mldebug 42` pour une seule.
- `/mldebug` (F8) : état côté client et **surimpression 3D** au-dessus des échelles. Retapez la commande pour la masquer.

Pour ne garder qu'une partie du journal : `Config.DebugCategories = { "license", "deny", "perm" }`.

⚠️ Remettez `Config.Debug = false` une fois le problème trouvé.

## Problèmes fréquents

**« Licence MasterMods refusée : script inactif »**
- La console affiche un rapport : clé envoyée (masquée), d'où elle a été lue, et la raison donnée par le serveur.
- « Clé inconnue » : vérifiez la saisie (copier-coller depuis le portail, sans espace).
- « Aucune clé personnelle trouvée » : la clé n'est ni dans `server.cfg` (`set mastermods_key`) ni dans `Config.MasterModsKey`.
- Clé bloquée : elle a été utilisée sur plus de 3 serveurs différents en 24 h ; elle se débloque seule au bout d'un jour.

**« API MasterMods injoignable (code 0) »**
- Le serveur ne peut pas joindre `ressources.mastermods.dev` (pare-feu, DNS, hébergeur qui bloque les connexions sortantes). Le script reste actif pendant environ 1 h 30 avant de se couper.

**Les props de l'échelle n'apparaissent pas**
- La console F8 affiche « Props non chargés ». Vérifiez que la ressource du véhicule est démarrée **avant** MasterLadder et que les noms de `props` dans `config/ladders.lua` sont exacts. En mode debug, les modèles manquants sont listés.

**Rien ne se passe en visant le véhicule**
- `Config.TargetSystem` ne correspond pas à votre target, ou celui-ci démarre après MasterLadder. La console F8 l'indique ; le script passe alors aux touches.

**« Pente trop forte » / déploiement refusé**
- Déplacez le véhicule sur un sol plus plat, ou augmentez `maxSlope` de l'échelle.

**Impossible de replier**
- Le message précise ce qui manque : rotation, inclinaison, longueur ou bras pas en position de route, ou quelqu'un encore à bord.

**Le joueur est mal placé sur l'échelle** (dans les barreaux, flotte, penché en arrière)
- Ajustez `Config.ClimbOffset` (par pas de `0.05`) et `Config.ClimbTilt` (voir [Configuration générale](configuration-generale)).

**Un joueur est bloqué** (attaché, figé)
- Le joueur tape `/mlexit`. Un administrateur peut aussi utiliser `/mladmin evict cl`.

**Les portes du véhicule se referment toutes seules**
- Corrigé depuis la 5.0.0 : mettez la ressource à jour.

## Support

Si le problème persiste, passez sur [discord.mastermods.dev](https://discord.mastermods.dev) avec :
- la version de MasterLadder (dans `fxmanifest.lua`) ;
- les lignes de la console avec `Config.Debug = true` au moment du problème.

⚠️ Ne partagez jamais votre MasterKey en entier : les journaux l'affichent toujours masquée.