🔧 Chapitre 8 · Ton serveur Garry's Mod sur TeamKit

Dépannage : lire les erreurs et les corriger

Mis à jour le 04/10/2026 ·

Un serveur Garry's Mod chargé d'addons produit des erreurs. Ce n'est pas un signe d'échec, c'est le quotidien. La différence entre quelqu'un qui galère et quelqu'un qui s'en sort, ce n'est pas le nombre d'erreurs : c'est de savoir les lire.

Ce chapitre t'apprend à décortiquer une erreur Lua, à trouver la ligne qui compte, à savoir si elle vient de ton serveur ou de l'ordinateur d'un joueur, à débloquer un serveur qui ne démarre pas, et à demander de l'aide avec ce qu'il faut — sans rien laisser fuiter.

La méthode générale (ce qui a changé, la première erreur, retirer, restaurer, demander) est déjà dans le chapitre Dépannage du tuto AMP. Ici, on ne parle que de ce qui est propre à Garry's Mod.


1. Ton meilleur outil : le serveur vide qui marchait #

Au chapitre 1, tu as démarré ton serveur en sandbox sur une carte du jeu, sans aucun addon. Ce démarrage-là est ta référence.

Garde deux réflexes :

  • une chose à la fois : un addon, une carte ou un gamemode ajouté, puis un redémarrage, puis un coup d'œil à la console. Si tu ajoutes dix choses d'un coup, tu ne sauras jamais laquelle a cassé ;
  • revenir à la référence quand tu es perdu : un serveur qui redémarre sain en sandbox te prouve que la machine, les ports et AMP vont bien. Le problème est alors dans ce que tu as ajouté.

✅ À retenir Ajoute une chose, redémarre, lis la console. Si tout est flou, reviens à sandbox sur une carte du jeu pour savoir de quel côté chercher.


2. Anatomie d'une erreur Lua #

Voici une vraie erreur, relevée sur un serveur (le nom du gamemode et du fichier sont remplacés) :

Lua Error: [ERROR] bad argument #3 to 'Add' (function expected, got nil)
  1. Add     - lua/includes/modules/hook.lua:31
  2. unknown - gamemodes/<ton-gamemode>/gamemode/shared/<fichier>.lua:36
  3. include - [C]:-1
  4. unknown - gamemodes/<ton-gamemode>/gamemode/include.lua:60

Elle a deux parties.

Le message #

La première ligne dit ce qui a cassé. Ici, mot à mot : le troisième argument donné à la fonction Add était nil (vide, inexistant) alors qu'elle attendait une fonction.

nil revient très souvent. Il veut dire qu'une chose qui devait exister n'existe pas au moment où le code s'en sert. Garde ce mot en tête : il t'oriente vers « quelque chose n'a pas été chargé » plutôt que vers « le code est faux ».

La pile d'appels #

Les lignes numérotées en dessous disent par où le serveur est passé. Chaque ligne porte un chemin de fichier, puis : et un numéro de ligne dans ce fichier.

  • lua/includes/modules/hook.lua:31 : un fichier de Garry's Mod lui-même ;
  • gamemodes/<ton-gamemode>/gamemode/shared/<fichier>.lua:36 : un fichier du gamemode ;
  • [C]:-1 : un passage par le moteur du jeu, pas par un fichier Lua. Rien à ouvrir ;
  • gamemodes/<ton-gamemode>/gamemode/include.lua:60 : encore un fichier du gamemode.

✅ À retenir Le message dit ce qui a cassé, la pile dit par où. nil = quelque chose qui devait exister n'existe pas.


3. Quelle ligne regarder #

La pile se lit dans les deux sens :

  • la ligne 1 est l'endroit où ça a cassé ;
  • la dernière ligne est l'endroit d'où tout est parti.

Le piège, c'est de foncer sur la ligne 1. Ici, elle pointe dans lua/includes/, le code de Garry's Mod. Ce code-là n'est pas en cause : il a simplement reçu un nil qu'on lui a passé.

La ligne utile est la première qui porte un chemin dans TON contenu — ton gamemode, ton addon. Dans l'exemple, c'est la ligne 2 : le fichier shared/<fichier>.lua, à la ligne 36. C'est là que quelqu'un appelle Add avec quelque chose de vide.

Ouvrir le fichier en cause #

  1. Repère le début du chemin : gamemodes/…, addons/…, lua/….
  2. Ouvre le File Manager et descends dans garrysmod/, puis suis le chemin.
  3. Ouvre le fichier et va au numéro de ligne indiqué.

Ça ne marche que pour ce qui a été déposé à la main. Un gamemode ou un addon venu du Workshop reste dans son .gma, jamais décompressé : tu ne verras pas ses fichiers .lua dans le File Manager (le chapitre 4 explique pourquoi). Dans ce cas, le chemin te sert à identifier l'addon fautif, pas à le corriger toi-même.

Avant de toucher au code #

Une erreur dans un addon que des milliers de serveurs utilisent vient rarement d'une faute de son auteur. Cherche d'abord de ton côté :

  • un doublon : deux exemplaires de la même base (l'officielle et un ré-upload qui l'embarque) provoquent des erreurs Lua. Règle : un seul exemplaire de chaque chose. Le chapitre 4 détaille ce cas vérifié ;
  • une dépendance absente : un gamemode ou un addon qui attend un autre contenu que tu n'as pas installé (voir le chapitre 5) ;
  • une erreur plus haut dans la console, qui a empêché un fichier de se charger : c'est la section suivante.

✅ À retenir Ignore les lignes qui pointent dans lua/includes/. La bonne ligne est la première qui pointe dans ton contenu. Et cherche un doublon avant d'accuser l'auteur.


4. L'effet domino d'un include #

Regarde à nouveau la dernière ligne de l'exemple : include.lua:60. Beaucoup de gamemodes ont un fichier qui en charge d'autres, un par un, avec include. À la ligne 60, ce fichier a chargé shared/<fichier>.lua, qui a planté.

Une erreur dans un fichier inclus interrompt le fichier qui l'incluait. Tout ce qui venait après la ligne 60 n'a jamais été chargé. Sur le serveur où cette erreur a été relevée, ça représentait une dizaine de fichiers, dont trois côté serveur.

Le symptôme est très trompeur :

  • le serveur démarre ;
  • il passe en Running ;
  • tu peux le rejoindre ;
  • mais la moitié du gamemode n'existe pas : des menus absents, des commandes muettes, des fonctions qui ne font rien.

Tu crois avoir dix problèmes. Tu n'en as qu'un.

La conduite à tenir #

  1. Remonte la console (ou le journal, section 7) jusqu'à la toute première erreur Lua du démarrage.
  2. Corrige celle-là, et seulement celle-là.
  3. Redémarre : le code d'un gamemode est chargé au lancement, une correction déposée sur un serveur qui tourne ne change rien tant qu'il n'a pas redémarré.
  4. Relis la console. Bien souvent, les erreurs suivantes ont disparu : elles n'étaient que des conséquences.

✅ À retenir Une erreur dans un include coupe tout ce qui suit. Corrige la première erreur, redémarre, et regarde combien des autres ont disparu toutes seules.


5. Erreur du serveur ou erreur d'un joueur ? #

Le chapitre 2 explique qu'une partie du Lua tourne sur le serveur et une autre sur l'ordinateur de chaque joueur. Les erreurs suivent la même frontière.

Cas vérifié sur un serveur TeamKit : un joueur signalait une erreur qui citait un chemin lua/autorun/… d'un addon. Or cet addon n'était ni parmi les .gma du serveur, ni dans addons/. Le serveur ne l'avait tout simplement pas. L'erreur venait du Garry's Mod du joueur, d'un addon auquel il était abonné de son côté.

Le test #

Quand on t'envoie une erreur, pose-toi une question : est-ce que mon serveur a cet addon ?

  1. Repère le nom de l'addon dans le chemin de l'erreur.
  2. Cherche-le dans garrysmod/addons/ avec le File Manager.
  3. Cherche-le dans ta collection Workshop, puis vérifie qu'il est vraiment descendu dans garrysmod/cache/srcds/ (méthode au chapitre 4).
  4. Regarde si la même erreur apparaît dans ta console AMP.
Ce que tu trouves D'où vient l'erreur
L'erreur est dans la console AMP du serveur : c'est à toi d'agir
L'addon n'est nulle part sur le serveur de l'ordinateur du joueur
L'addon est sur le serveur, l'erreur n'est que chez un joueur côté client d'un addon du serveur : cherche si d'autres joueurs l'ont aussi

Si l'erreur vient de l'ordinateur du joueur, ton serveur n'y peut rien. Le joueur doit regarder du côté des addons auxquels il est abonné lui-même.

✅ À retenir Une erreur qui cite un addon que ton serveur n'a pas vient du joueur, pas de toi. Vérifie avant de chercher pendant une heure.


6. Le serveur bloqué sur « Starting » #

Tu cliques sur Start, l'état passe à Starting… et n'arrive jamais à Running. Trois causes ont été constatées sur les serveurs TeamKit. Vérifie-les dans cet ordre.

Cause 1 : Custom Map ne porte pas le vrai nom du .bsp #

C'est la plus sournoise. Une carte dont la page Workshop s'appelle « Rp_NewExton2 » contient en réalité le fichier maps/rp_newexton2_v4h.bsp. Mettre rp_newexton2 dans Custom Map fait tourner le serveur dans le vide, sans jamais ouvrir sa console, et sans message d'erreur.

Le nom à saisir est celui du fichier, sans .bsp. Le chapitre 5 montre comment le retrouver.

Cause 2 : la collection n'est descendue qu'à moitié #

Sans -authkey dans Additional Command Line Parameters, le serveur télécharge la collection en anonyme, et Steam arrête le téléchargement en cours de route, sans prévenir. Relevé sur deux instances : 8 items sur 17, et 67 sur 88.

Si ta carte ou ton gamemode fait partie de ce qui n'est pas descendu, le serveur ne peut pas le trouver. Le correctif et la vérification sont au chapitre 4.

Cause 3 : des erreurs Lua au chargement #

Lis la console pendant le démarrage. Une erreur Lua n'empêche pas toujours le serveur d'arriver à Running (section 4), mais c'est la première chose à regarder quand le démarrage s'éternise.

La méthode pour trancher #

  1. Clique sur Stop.
  2. Va dans Configuration → Garry's Mod, onglet Server.
  3. Note tes valeurs actuelles de Initial Map, Custom Map, Initial Gamemode et Custom Gamemode.
  4. Remets Initial Map sur une carte de la liste livrée avec le jeu, comme gm_construct.
  5. Démarre, et regarde si le serveur arrive à Running.

Si oui, la carte était en cause : retour à la cause 1 ou 2. Si non, remets aussi le gamemode sur sandbox et recommence : si ça passe, le problème est dans le gamemode (cause 2 ou 3).

✅ À retenir Bloqué sur Starting : vérifie le vrai nom du .bsp, puis que la collection est entièrement descendue, puis les erreurs Lua. Pour trancher, repasse sur une carte du jeu.


7. Les journaux : là où rien ne se perd #

La console AMP est pratique mais elle oublie : un bandeau te rappelle qu'elle n'affiche que les 1 000 dernières lignes. Au démarrage d'un serveur chargé en addons, la première erreur a souvent déjà disparu de l'écran. Les journaux, eux, gardent tout.

Où Ce que tu y trouves
La page Console d'AMP les 1 000 dernières lignes, en direct
garrysmod/logs/ l'historique du jeu, un fichier par démarrage
AMP_Logs/, à la racine de l'instance les journaux d'AMP lui-même

Les journaux du jeu #

Dans garrysmod/logs/, chaque démarrage crée un fichier nommé L-AAAA-MM-JJ-NNN.log : la date, puis un numéro. Le plus récent correspond au dernier démarrage.

On y retrouve les connexions des joueurs avec leur SteamID, le chargement de la carte, et les erreurs Lua.

  1. Ouvre le File Manager et va dans garrysmod/logs/.
  2. Repère le fichier du démarrage qui t'intéresse, par sa date.
  3. Ouvre-le dans l'éditeur, ou télécharge-le pour le lire sur ton PC.
  4. Cherche le mot ERROR et prends la première occurrence.

Les journaux d'AMP #

Le dossier AMP_Logs/ contient ce qu'AMP lui-même a noté sur ton instance. Tu en auras rarement besoin pour une erreur Lua, mais garde en tête qu'il existe : il peut t'être demandé quand on t'aide sur le Discord.

Pour lire la console et les journaux en général, le chapitre Console du tuto AMP complète cette section.

✅ À retenir La console oublie, garrysmod/logs/ se souvient. Un fichier par démarrage, cherche ERROR, prends la première.


8. Demander de l'aide sur le Discord TeamKit #

Tu as cherché, tu bloques. C'est normal, et c'est à ça que sert le Discord TeamKit. La qualité de la réponse dépend surtout de ce que tu fournis.

Ce qu'il faut donner #

  • le jeu : Garry's Mod (ça paraît évident, mais le Discord héberge beaucoup de jeux) ;
  • le gamemode utilisé, et s'il vient du Workshop ou a été déposé à la main ;
  • ce qui a changé juste avant la panne : addon ajouté, réglage modifié, Update ;
  • le bloc d'erreur complet, message et toutes les lignes de la pile, copié en texte plutôt qu'en capture d'écran ;
  • d'où vient l'erreur : ta console AMP, ton journal, ou l'écran d'un joueur ;
  • l'ID de ta collection Workshop, et le nombre de .gma réellement présents dans garrysmod/cache/srcds/ face au nombre d'items de la collection ;
  • ce que tu as déjà essayé, pour qu'on ne te le redemande pas.

Ce qu'il ne faut JAMAIS coller #

⚠️ Un message sur Discord peut être lu, copié, capturé. Ne colle jamais :

  • ton mot de passe AMP (c'est aussi ton mot de passe SFTP) ;
  • le RCON Password et le Server Password ;
  • ton Game Server Login Token (GSLT) ;
  • ta Steam Web API key, celle qui suit -authkey dans Additional Command Line Parameters.

Les pièges classiques :

  • une capture de la page Configuration qui montre la ligne -authkey en clair ;
  • un fichier de configuration collé en entier sans l'avoir relu.

💡 Avant d'envoyer un fichier ou une capture, relis-les et remplace toute valeur de mot de passe, de clé ou de jeton par XXX. Personne n'en a besoin pour t'aider.

✅ À retenir Le jeu, le gamemode, ce qui a changé, l'erreur complète en texte, ce que tu as essayé. Et jamais un mot de passe, un jeton ou une clé.


✅ Checklist du chapitre #


❓ Si ça ne marche pas #

J'ai corrigé le fichier, et l'erreur est toujours là. Le serveur tournait pendant la correction. Le code d'un gamemode est lu au lancement : clique sur Restart, puis relis la console.

Je ne trouve pas le fichier cité par l'erreur dans le File Manager. Il vient sans doute d'un addon ou d'un gamemode du Workshop, qui reste enfermé dans son .gma. Sers-toi du chemin pour identifier l'addon, puis cherche un doublon ou une dépendance manquante (chapitre 4, chapitre 5).

Le serveur se rejoint, mais des pans entiers du gamemode manquent. C'est l'effet domino (section 4). Remonte jusqu'à la toute première erreur Lua du démarrage, dans garrysmod/logs/ si la console ne va pas assez haut.

Un joueur a une erreur que je ne vois jamais. Vérifie si ton serveur possède l'addon cité. S'il ne l'a pas, l'erreur vient d'un addon du joueur lui-même (section 5).

Le serveur reste sur Starting, même avec une carte du jeu et sandbox. Ta référence ne démarre plus : ce n'est donc ni la carte ni le gamemode. Demande sur le Discord TeamKit, en précisant que le serveur ne démarre plus en sandbox sur gm_construct.

La première erreur a disparu de la console. La console n'affiche que les 1 000 dernières lignes. Ouvre le fichier du dernier démarrage dans garrysmod/logs/.

Une étape qui coince ? Ouvre un ticket sur le site ou demande sur le Discord TeamKit. Le bot Guide connaît ces pages.