Leçon 1.4
Sommaire · 4 sections

Leçon 1.4 · 20 min

Apprendre à utiliser le wiki de Garry's Mod

1Trouver une page

L'adresse est wiki.facepunch.com/gmod. La barre de gauche range tout en trois grands groupes : Player Guides pour les joueurs, Developer Guides pour les tutoriels, et Developer Reference pour la liste de tout ce qui existe en GLua. C'est ce dernier groupe que tu utiliseras : Globals pour les fonctions globales comme print, Classes pour les méthodes des objets comme un joueur ou une entité, Libraries pour les bibliothèques comme net ou hook, Hooks pour les événements du jeu, et Enumerations pour les constantes.

En haut de cette barre, un champ de recherche indique « press / to quick search ». Appuie sur / depuis n'importe quelle page du wiki, tape un nom, et la liste se filtre pendant que tu écris.

2Comprendre le nom d'une page

Le nom d'une page te dit déjà comment écrire l'appel dans ton code.

Le préfixe Global. n'existe que dans le nom de la page : dans ton code, tu écris juste print. Les deux-points de Player:ChatPrint veulent dire qu'on l'appelle sur un joueur précis, rangé dans une variable, ici ply. Et un hook s'écrit GM:PlayerSay sur le wiki, mais tu t'y abonnes avec hook.Add et le nom seul, sans GM:.

3Lire une page de fonction

Ouvre la page Player:ChatPrint. Sous le titre, une ligne résume la fonction : un petit carré de couleur, puis la signature. Le carré, c'est le royaume, l'endroit où la fonction existe.

ChatPrint a le carré partagé. Plus bas, la section Arguments liste ce qu'il faut lui donner : un seul argument, string message, c'est-à-dire un texte. Il n'y a pas de section Returns, donc la fonction ne renvoie rien.

Les pages ont aussi des encadrés colorés. Sur ChatPrint, un encadré Warning prévient que le message est limité à 255 octets. Sur Player:Name, un encadré Deprecated dit de ne plus l'utiliser et de prendre Player:Nick à la place. Lis toujours ces encadrés : c'est là que le wiki note les pièges qu'on a découverts avant toi.

4Lire une page de hook

Un hook, c'est un événement du jeu auquel ton addon s'abonne. La page GM:PlayerSay a le carré bleu : le hook est appelé sur le serveur, chaque fois qu'un joueur envoie un message dans le chat. Ses arguments sont le joueur qui parle, le texte, et un booléen qui dit si c'est le chat d'équipe. Le wiki précise aussi que si tu renvoies une chaîne vide "", le message n'est pas affiché.

Avec ces deux pages, tu peux déjà écrire une commande de chat :

SERVEURlua/autorun/server/sv_premiers_pas.lua
hook.Add("PlayerSay", "premiers_pas_aide", function(ply, texte)    if texte == "!aide" then        ply:ChatPrint("Bienvenue à la mine, " .. ply:Nick())        return ""    endend)

Ligne 1, le premier argument de hook.Add est le nom du hook, le deuxième un identifiant unique à ton addon : si un autre addon utilise le même identifiant, l'un écrase l'autre. Le troisième est la fonction appelée, avec les arguments que la page du hook annonce, dans le même ordre. On ne garde que les deux premiers, le troisième ne nous sert pas.

Ligne 3, Nick renvoie le pseudo du joueur, et ChatPrint l'envoie dans son chat à lui seul. Ligne 4, le return "" cache !aide aux autres joueurs, comme l'indique la page de PlayerSay.

Exercice 1.4 · À compléter

30 XP

La commande !aide

Le fichier contient une commande de chat à moitié écrite : deux noms de méthodes ont été remplacés par ___.

Sur le wiki, trouve la méthode des joueurs qui envoie un message dans le chat d'un seul joueur, et celle qui renvoie son pseudo. Attention à l'encadré Deprecated.

Remplace les deux ___. Quand Kaze tape !aide, il doit recevoir Bienvenue à la mine, Kaze, et son message ne doit pas s'afficher dans le chat.

SERVEURlua/autorun/server/sv_aide.lua
hook.Add("PlayerSay", "cosmos_aide", function(ply, texte)    if texte == "!aide" then        ply:___("Bienvenue à la mine, " .. ply:___())        return ""    endend)

Ce que les tests vérifient

  • Kaze tape !aide et reçoit « Bienvenue à la mine, Kaze » dans son chat
  • Le message !aide n'apparaît pas dans le chat
  • Un autre message passe sans être modifié
Ouvrir l'atelier

L'atelier se fait sur ordinateur : éditeur, console et tests côte à côte. Les indices et la solution commentée t'attendent dans l'atelier.