Lycanobot/Doc/Messages

De Wiki.sec.

Sommaire

Principe

Tous les messages envoyés par le bot sont paramétrables selon le language que l'on souhaite qu'il parle. Ainsi, les messages de lycanobot sont stockés dans des fichiers du type <fichier>-<langue>.pl, et selon la langue choisie dans le fichier de configuration, le fichier de messages approprié sera chargé. Par exemple si la langue choisie est le français (fr), pour charger le fichier message foo, il charge foo-fr.pl. Ainsi le bot ne peut parler qu'une langue à la fois, car il lui arrive souvent de parler à tous les joueurs à la fois.

Les fichiers messages

Il y a deux familles de messages : ceux qui sont intégrés dans lycanobot et ceux qui sont relatif à un personnage spécial.

Messages intégrés

Ceux intégrés dans lycanobot sont dans le dossier messages/, dans les fichiers du type messages-<langue>.pl. Ils sont une simple liste d'affectation de chaînes dans le hash %messages.

Le fichier template-messages.pl est un fichier de référence aux autres fichiers langues. Il contient toutes les variables messages du bot, avec des chaines vides comme messages, le tout en commentaires. Vous pouvez vous en servir comme base pour créer une nouvelle langue. Lorsque vous trouvez une chaîne vide "", celà signifie que vous devez placer un et un seul message. Si c'est une chaîne vide dans un tableau [ "" ], alors vous pouvez placer plusieurs messages dans le tableau.

Messages externes

Ceux-là sont dans le dossier jobs/messages/, dans les fichiers du type <nom personnage>-<langue>.pl. Ils contiennent des appels aux fonctions d'ajouts de messages (définies dans speech.pl), qui sont les suivantes :

  • add_job_name_message($msg) → affecte $msg dans $messages{'jobs_name'}{$job}
  • add_job_help_message($msg) → affecte $msg dans $messages{'jobs_help'}{$job}
  • add_generic_messages(%msgs) → affecte %msgs dans $messages{'jobs'}{$job}
  • add_phase_messages("nom", %msgs) → affecte %msgs dans $messages{'phases'}{'nom'}
  • add_cmd_messages("nom", %msgs) → affecte %msgs dans $messages{'cmds'}{'nom'}

Dans les trois premières fonctions $job est automatiquement déduit du nom du fichier de personnage spécial depuis lequel la fonction est appelée. Exemple : depuis bar-en.pl, $job vaudra "bar".

Il est important d'utiliser ces fonctions plutôt que d'affecter directement dans %messages les messages, car :

  • Toutes ces fonctions testent d'abord l'existence de la clé dans %messages, pour éviter les conflits entre personnages spéciaux.
  • Les messages en question sont réinitialisés à chaque fin de partie, afin de ne pas laisser trainer dans %messages d'éventuels messages inutilisés en cas de modification du fichier messages sans reboot du bot.
  • Si le fonctionnement interne des messages de lycanobot change, les fichiers messages resterons compatibles.

Caractères spéciaux

Les messages peuvent comporter les caractères spéciaux suivants :

  • %s → Sera remplacé par une variable passée en paramètre à la fonction say(), à la manière de printf()
  • \n (le caractère de retour à la ligne) → Divise le message en plusieurs messages dits à la suite
  • \c (deux caractères : '\' et 'c') → Sera remplacé par le préfixe des commandes (par défaut le point d'exclamation)
  • \B, \U, \I (deux caractères : '\' et la lettre) → Sera remplacé par les séquences MIRC pour respectivement le gras, le soulignage et l'italique
  • \Cnn (quatre caractères : '\', 'C' et deux chiffres) → Sera remplacé par les séquences MIRC pour la couleur nn

Prenez garde avec les guillemets : les doubles interprêtent le backslash et les simples non. Par exemple :

  • '\n' n'ira pas car c'est une chaine de deux caractères '\' et 'n', alors que le retour à la ligne "\n" conviendra.
  • "\b" n'ira pas car c'est une chaine de un caractère d'échappement (de code hexa 08), alors que "\\b" ou '\b' conviendra.

Encodage

Dans le fichier de message, vous devez utiliser le système d'encodage de caractères UTF-8, quelque soit celui utilisé sur IRC. Pour changer l'encodage de caractères du bot lorsqu'il parle sur IRC, il faut modifier la variable "charset" du fichier de configuration, le bot fera tout seul la conversion.

Messages par défaut

Par défaut, le bot charge les messages en anglais, puis il charge le language désiré. De cette façon, si le language choisi est incomplet, les messages manquants seront en anglais, ce qui laisse le bot compréhensible. Il est d'ailleurs recommendé de construire les languages petit à petit en testant de temps en temps, pour voir si tout marche bien. Si le fichier de la langue choisie comporte des erreurs de syntaxe, le bot ne pourra pas le charger et sera en anglais.

Conversion en PHP

Il y a un script qui converti tous les messages de lycanobot dans une syntaxe PHP, sous la forme d'une déclaration d'un gigantesque tableau avec tous les messages dedans. Ce script est lancé tous jours à 8h du matin et génère le fichier all_messages.php.inc que vous pouvez utiliser pour faire ce que vous voulez.