Project

Profile

Help

Channels » History » Sprint/Milestone 1

Vincent Le Goff, 12/15/2017 08:15 AM

1 1 Vincent Le Goff
h1. Les canaux dans CocoMUD
2
3
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.
4
5
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 [[Triggers|les triggers]], ce qui n'est évidemment pas une coïncidence.
6
7
{{toc}}
8
9
h2. Créer un nouveau canal
10
11
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.
12
13
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@ .
14
15
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 [[Triggers|la documentation des triggers]] avant de continuer.
16
17
h2. Nourrir un canal avec des triggers
18
19
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 :
20
21
Quand on envoie un message sur le canal "hrp", on pourrait voir quelque chose comme :
22
23
<pre>
24
[hrp] Vous dites : mon message
25
</pre>
26
27
Si c'est quelqu'un d'autre qui parle sur ce canal, vous pourriez voir :
28
29
<pre>
30
[hrp] Quelqu'un dit : mon message
31
</pre>
32
33
Voyons ce qui reste identique et ce qui diffère entre ces deux lignes :
34
35
* Et bien, d'abord, on a "[hrp]"(c'est-à-dire "hrp"entouré de crochets) suivi d'un espace ;
36
* Ensuite il y a le nom de l'auteur du message, soit "Vous" soit "Quelqu'un" ;
37
* Il y a ensuite le mot "dit" après un nouvel espace... ha bien non, si on écrit, le mot est "dites", si c'est un autre, c'est "dit". Que faire ?
38
* Un nouvel espace, un signe deux points (@:@), un espace et le message.
39
40
Pour résoudre notre problème entre dit/dites, on a deux solutions :
41
42
* On peutécrire un seul trigger qui se déclenche dans les deux cas, en incluant dans le déclencheur "dit*". Cela voudra dire "dit" suivi de n'importe quoi ;
43
* On peut aussi créer deux triggers distincts, l'un pour la première ligne et l'un pour la seconde.
44
45
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 :
46
47
h3. Un seul trigger
48
49
Voyons notre déclencheur pour un seul trigger. Vous êtes prêt ?
50
51
<pre>
52
[hrp] * dit*: *
53
</pre>
54
55
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.
56
57
Pour créer ce trigger en passant par l'interface :
58
59
* Ouvrez la barre de menu, *Jeu* -> *Triggers* ;
60
* Cliquez sur *Ajouter* pour créer un trigger ;
61
* Entrez le déclencheur @[hrp] * dit*: *@ avant d'appuyer sur Tab ;
62
* Sélectionnez "Envoie un message dans un canal" ;
63
* Cliquez sur le bouton *Ajouter l'action* ;
64
* Dans le nom du canal dans lequel envoyer le message, écrivez @hrp@ ;
65
* Dans le message à envoyer au canal, entrez :
66
<pre>
67
$1: $3
68
</pre>
69
* Cliquez sur *OK* plusieurs fois pour fermer la boîte de dialogue en sauvegardant.
70
71
bq. Qu'est-ce que c'est que @$1 $3@?
72
73
@$1@ contient l'auteur du message (vous ou quelqu'un).  @$3@ contient le message envoyé. Quand on reçoit la ligne :
74
75
<pre>
76
[hrp] Jamie dit : bien joué !
77
</pre>
78
79
Notre canal CocoMUD devrait recevoir le message :
80
81
<pre>
82
Jamie: bien joué !
83
</pre>
84
85
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.
86
87
Vous pourriez avoir fait la même chose en utilisant une seule ligne de SharpScript:
88
89
<pre>
90
#trigger {[hrp] * dit*: *} {#feed hrp {$1: $3}}
91
</pre>
92
93
C'est peut-être un peu plus dur à comprendre en SharpScript, mais si vous êtes habitué à la syntaxe, c'est définitivement plus rapide.
94
95
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 :
96
97
<pre>
98
#trigger {[hrp] * dit*: *} {
99
    #feed hrp {$1: $3}
100
    #play sounds/public.wav
101
}
102
</pre>
103
104
h3. Deux triggers distincts
105
106
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.
107
108
Nos deux déclencheurs seraient donc :
109
110
<pre>
111
[hrp] Vous dites : *
112
[hrp] * dit : *
113
</pre>
114
115
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 :
116
117
<pre>
118
#trigger {[hrp] Vous dites : *} {#feed hrp {Vous : $1}}
119
#trigger {[hrp] * dit : *} {
120
    #feed hrp {$1 : $2}
121
    #play sounds/public.wav
122
}
123
</pre>
124
125
Choisissez la méthode qui vous para^8it la plus simple, en fonction du contexte.
126
127
h2. Associer un macro à un canal
128
129
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 :
130
131
Commencez par créer un macro comme d'habitude. Dans l'interface du client :
132
133
* Ouvrez la barre de menu *Jeu* -> *Macros*.
134
* Cliquez sur *Ajouter* pour ajouter un nouveau macro.
135
* Appuyez sur les touches à associer à ce macro. Par exemple : @CTRL + H@.
136
* Tabulez deux fois pour trouver la liste des actions possibles. Dans cette liste, vous devriez trouver l'action "Crée ou affiche un canal".
137
* Tabulez une fois pour ajouter cette action. Le client vous demande le nom du canal à afficher. Entrez @hrp@ dans cet exemple.
138
* Fermez ces boîtes de dialogue en appuyant plusieurs fois sur *OK* pour enregistrer. Vous pouvez à présenter entrer le raccourci @CTRL + H@ pour afficher le canal HRP. Victoire !
139
140
h2. Supprimer un canal
141
142
On peut supprimer un canal en utilisant la même interface :
143
144
* Ouvrez la barre de menu *Jeu* -> *Canaux*.
145
* Tabulez jusqu'à trouver le bouton *Supprimer*. Le client vous demandera quel canal supprimer. Sélectionnez-en un, tabulez de nouveau pour le supprimer. Si vous validez en appuyant sur *OK* ensuite, le canal sera retiré de votre configuration.
146
147
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.