Lycanobot/Doc/Global variables

De Wiki.sec.

De par sa forme évenementielle, lycanobot fait appel à un certain nombre de variables globales. Le contenu de bon nombre de ces variables est déjà documenté (en anglais) dans les fichiers sources de lycanobot, dans des longs blocs de commentaires.

Sommaire

$charset_conv

Contient l'instance de Locale::Recode configurée pour convertir le charset des message selon ce qui a été choisi dans le fichier de configuration. Elle est affectée lors du chargement de la configuration.

$conn

Contient l'instance de Net::IRC::Connection. Affectée lors de la connection au serveur IRC, au lancement de lycanobot.

$in_game

Contient 1 si une partie est en cours, ou 0 sinon. Quand le bot attend que les joueurs s'inscrivent à une partie avec la commande play, elle contient aussi 0.

$round

Compte le nombre de tours (jours) effectués dans une partie.

%CFG

  • Définition : config.pl, load_lyca_config_file()

Contient la configuration du bot, lue depuis le fichier de configuration (config.xml). Elle est le résultat un petit peu modifié de ce qu'à lu le parser XML::Simple.

%actions

Contient la définition des actions : le code qui lui est associé, et ses hooks. Elle peut-être complétée par les personnages spéciaux à l'aide de la fonction add_action() (définie dans actions.pl), typiquement appelée dans l'initsub du personnage.

%actions_auth

Contient la définition des règles d'autorisation d'execution des actions de %actions. Elle peut-être complétée par les personnages spéciaux à l'aide de la fonction add_action_auth_rule() (définie dans actions.pl), typiquement appelée dans l'initsub du personnage.

%chanmode

Contient les modes des salons auxquels est connecté le bot. Chaque clé de ce hash est le nom d'un salon (avec le #), et la valeur associée est la chaîne retournée par la commande IRC /mode #<salon>. Elle est mise-à-jour par les fonctions on_mode() et on_chan_modeinfo() de hooks.pl.

%chanusers

Contient les informations d'IRC sur les utilisateurs dans un certain salon. Ce hash est décomposé de la manière suivante : $chanusers{ $salon }{ $nick }{ $cle }, $cle valant voiced ou op, et donnant un booléen disant si l'utilisateur est voicé et/ou opérateur sur le salon.

%cmdlist

Contient la définition de toutes les commandes du bot. Elle peut-être complétée par celles des personnages spéciaux.

%deco_checker

Contient le timer qui, s'il est atteind, fait considérer au bot qu'il a été déconnecté (il tentera alors de se reconnecter). En temps normal, ce compteur est remis à zéro dès qu'un évenement IRC (une des fonctions de hooks.pl) se produit.

%files

Contient les noms des fichiers externes XML de lycanobot. Les fichiers avec lesquels lycanobot synchronise ses données ont dans ce hash leur MD5, qui sert à ne pas réécrire le contenu d'un fichier s'il n'a pas été modifié.

%game_sets

Contient les paramètres du jeu du bot, lus depuis le fichier de settings (settings.xml). Elle est le résultat de ce qu'à lu le parser XML::Simple. Ces données sont synchronisées avec lycanobot.

%games

Contient les descriptions des jeux du bot, lues depuis le fichier de jeux (games.xml). Elle est le résultat de ce qu'à lu le parser XML::Simple.

%last_actions

Contient le résultat des dernières executions de certaines actions. Ce hash est utilisé dans ce qui fait évoluer les phases, pour savoir ce qu'il s'est passé avant. Exemple : dans la phase d'appel à la sorcière, le bot peut y lire le résultat du vote des loups pour la lui annoncer.

Normalement, vous ne devez pas accéder à ce hash directement mais utiliser les fonctions write_last_action_result(), read_last_action_result() et delete_last_action_result() (définies dans actions.pl), qui gèrent les éventuels conflits inter-actions.

%messages

Contient tous les messages que le bot peut dire, dans la langue utilisée.

%phases

Contient la définition de toutes les phases du jeu (même celles qui ne sont pas utilisées). Elle est initialisée par load_game_basics() de basics.pl, et peut-être complétée par celles des personnages spéciaux.

%phs

Contient l'état actuel de l'avancement des phases, des actions et de leur hooks. Cette variable est grandement utilisée par les fonctions de steps.pl qui la font évoluer au fur et à mesure qu'une partie avance.

%players

Contient toutes les informations des joueurs dans la partie en cours. Chacune de ses clés est initialisé par init_player() dans admin.pl.

%send_queue

Contient les files d'attentes des messages à envoyer. Chaque élément de ce hash est la file d'attente d'un destinataire de message (salon ou utilisateur).

%send_queue_time

Contient les pour chaque file d'attente le temps exact où le prochain message de la file sera envoyé. Son contenu varie selon la valeur global_limit du fichier de configuration. Si elle est à 1, ce hash ne contient qu'un temps, celui du prochain message à envoyer (dans la clé 'global'). Sinon, il contient comme %send_queue un temps par file d'attente.

%special_jobs

Contient la définition de tous les personnages spéciaux, y compris ceux qui ne sont pas utilisés. Ce hash est initialisé comme vide par load_game_basics() de basics.pl, et peut-être complété par des personnages spéciaux.

%users

Contient les information d'IRC non relatives à un salon sur les utilisateurs connus par le bot.

%votes

  • Définition : basics.pl, load_game_basics()

Contient les phases dans lesquelles il y a un vote, et dans chacune des informations sur le vote. Cette variable peut-être complété par des personnages spéciaux.

%timers

Contient les IDs des timers utilisés pour diverses choses.

@userlist

Contient les informations permanentes et propres à chaque utilisateur et ses éventuels clones. Il permet au bot de garder une trace des utilisateurs uns fois qu'ils se sont déconnectés, pour les reconnaitre quand ils reviennent, et conserver des informations qui leur sont propres (comme si oui on non ils ont le mode tutorial d'activé). Ces informations sont syncronisées avec le fichier d'utilisateurs (users.dat).