Les canaux dans CocoMUD

CocoMUD offre la fonctionnalité des canaux. Un canal CocoMUD est, tout simplement, une liste de messages. Vous pouvez alimenter cette liste comme bon vous semble. Il est courant d'associer un ou plusieurs canaux du jeu avec un ou plusieurs canaux CocoMUD : quand un message est reçu provenant de l'un de ces canaux (comme public ou hrp), il est capturé automatiquement dans un canal CocoMUD. Un raccourci clavier peut être associé à un canal pour afficher la liste des messages qu'il contient. Cette fonctionnalité s'avère très pratique en cas d'exploration ou de combat dans le jeu, quand on ne souhaite pas nécessairement être interrompu par ce type de messages mais désirons les conserver pour les lire plus tard.

Nous utiliserons cet exemple tout au long de la documentation : essayons de capturer le contenu du canal hrp dans un canal CocoMUD. Cet exemple est le même que celui donné pour les triggers, ce qui n'est évidemment pas une coïncidence.

Créer un nouveau canal

La première chose à faire est de créer un canal CocoMUD, une liste vide qui pourra recevoir certains messages. Pour l'exemple, nous allons créer un canal "hrp". Souvenez-vous, les canaux CocoMUD peuvent contenir tout type d'information, bien qu'ils soient souvent utilisés pour capturer des canaux du jeu.

Dans la barre de menu du client, sélectionnez Jeu -> Canaux. Vous vous retrouvez dans une boîte de dialogue listant les canaux existants. Cette liste est probablement vide pour l'instant. Tabulez jusqu'à trouver le bouton Ajouter et validez. Le client vous demande le nom du canal à créer. Un nom court et explicite est préférable : ici, nous l'appellerons hrp .

On peut maintenant envoyer des messages à ce canal en utilisant [[Triggers|des triggers]. Si vous n'êtes pas familier du concept des triggers, il est recommandé de lire la documentation des triggers avant de continuer.

Nourrir un canal avec des triggers

Premier réflexe quand il s'agit de créer un trigger, regardons les lignes qui devraient le déclencher. Il y en a deux dans notre cas :

Quand on envoie un message sur le canal "hrp", on pourrait voir quelque chose comme :

[hrp] Vous dites : mon message

Si c'est quelqu'un d'autre qui parle sur ce canal, vous pourriez voir :

[hrp] Quelqu'un dit : mon message

Voyons ce qui reste identique et ce qui diffère entre ces deux lignes :

Pour résoudre notre problème entre dit/dites, on a deux solutions :

J'ai tendance à préférer la seconde solution, mais je sais que certains préféreront la première, Nous verrons donc les deux ici :

Un seul trigger

Voyons notre déclencheur pour un seul trigger. Vous êtes prêt ?

[hrp] * dit*: *

Trois astérisques ! Le premier capturera le nom de l'auteur du message. Le second capturera rien ou "es" (en fonction de si c'est vous ou un autre qui parle). Nous ne l'utiliseront pas. Le troisième capturera le message.

Pour créer ce trigger en passant par l'interface :

Qu'est-ce que c'est que $1 $3?

$1 contient l'auteur du message (vous ou quelqu'un). $3 contient le message envoyé. Quand on reçoit la ligne :

[hrp] Jamie dit : bien joué !

Notre canal CocoMUD devrait recevoir le message :

Jamie: bien joué !

Vous pouvez entrer #channel hrp pour voir la liste des messages sur ce canal. Il est possible de relier cette action à un macro, pour afficher le canal quand on presse une touche de raccourci.

Vous pourriez avoir fait la même chose en utilisant une seule ligne de SharpScript:

#trigger {[hrp] * dit*: *} {#feed hrp {$1: $3}}

C'est peut-être un peu plus dur à comprendre en SharpScript, mais si vous êtes habitué à la syntaxe, c'est définitivement plus rapide.

Un dernier mot concernant ce trigger : vous aurez peut-être remarqué qu'on ne joue pas de son si ce trigger se déclenche. Rien ne vous empêche de le faire au travers de l'interface (d'avoir deux actions liés à un trigger). La même chose peut se faire en SharpScript :

#trigger {[hrp] * dit*: *} {
    #feed hrp {$1: $3}
    #play sounds/public.wav
}

Deux triggers distincts

Comme dit plus haut, il y a deux façons de régler le problème posé par dit/dites. L'une de ces solutions est de créer deux triggers, l'un pour quand on est l'auteur, l'autre pour les autres. Cela demandera un peu plus de configuration, mais cela reste plus lisible, je trouve. Parfois il sera impossible de faire autrement, cela dépend de la langue dans laquelle le MUD se trouve.

Nos deux déclencheurs seraient donc :

[hrp] Vous dites : *
[hrp] * dit : *

Je ne peux pas dire pour vous, mais ça me semble personnellement bien plus clair. Le premier trigger ne se déclenche que quand on est l'auteur du message (peut-être qu'on ne jouera pas de son à ce moment), le second se déclenche quand c'est quelqu'un d'autre qui parle sur le canal. Voici les instructions SharpScript pour créer ces triggers, mais comme d'habitude, vous pouvez le faire via l'interface :

#trigger {[hrp] Vous dites : *} {#feed hrp {Vous : $1}}
#trigger {[hrp] * dit : *} {
    #feed hrp {$1 : $2}
    #play sounds/public.wav
}

Choisissez la méthode qui vous para^8it la plus simple, en fonction du contexte.

Associer un macro à un canal

Envoyer des messages à un canal est certainement utile, sous réserve de pouvoir l'afficher. La plupart du temps, on crée un macro pour afficher le contenu du canal. C'est assez facile à faire :

Commencez par créer un macro comme d'habitude. Dans l'interface du client :

Supprimer un canal

On peut supprimer un canal en utilisant la même interface :

Gardez à l'esprit cependant qu'un ou plusieurs triggers peuvent toujours essayer d'alimenter ce canal. Cela ne marchera pas, le canal n'existant plus, mais le trigger existera toujours car il pourrait faire d'autres choses.