Index by title

Les alias dans CocoMUD

Les alias sont une fonctionnalité des clients MUD afin d'abréger une ou plusieurs commandes. Un alias est en vérité une commande, mais au lieu d'être envoyée au serveur, elle est d'abord analysée par le client, qui peut la modifier et la transmettre au serveur si besoin. Il est même possible de créer des alias qui n'ont de sens que pour le client et ne sont pas envoyés au serveur du tout.

Ce document décrit le concept d'alias et explique la façon de les créer et les gérer dans CocoMUD.

Ajouter un alias

Vous pouvez créer un alias via l'interface ou en utilisant la syntaxe du SharpScript. L'interface étant plus intuitive, elle sera décrite en premier.

Création grâce à l'interface

Dans la barre de menu, sélectionnez Jeu -> Alias. Vous vous trouverez dans une boîte de dialogue listant les alias existants pour cet univers. Notez que les alias sont généralement propres à un univers et partagés par les personnages de cet univers, ce qui changera dans les prochaines versions.

Dans cette boîte de dialogue, vous pouvez ajouter, éditer et supprimer des alias. Par défaut, la liste des alias de cet univers sera probablement vide, vous pouvez cliquer sur Ajouter pour en ajouter un.

Vous devrez ensuite choisir le nom de l'alias que vous voulez créer. C'est le nom de la commande que vous devrez entrer pour exécuter l'alias. Dans cet exemple, nous allons créer un alias "tts" qui permet d'activer ou de désactiver le TTS (text-to-speech).

Entrez donc "tts" dans ce champ de texte, puis appuyez sur la tabulation. Vous vous trouvez ensuite dans une liste d'actions possibles à lier à cet alias. Par exemple, vous pourriez vouloir créer un alias "rs" qui envoie deux commandes au serveur quand exécuté : "reload" et "shoot". Dans ce cas, vous devrez sélectionner l'action "Envoie une ou plusieurs commandes au serveur".

Poursuivant notre exemple, nous devrons choisir "Active/Désactive le TTS", puisque c'est ce que devrait faire notre alias "tts" quand exécuté. Sélectionnez donc ce choix et faites tabulation pour cliquer sur le bouton Ajouter l'action.

Vous vous trouverez dans une nouvelle boîte de dialogue vous demandant des informations supplémentaires. Dans le cas de cette action, il n'y en a aucune, appuyez donc sur "OK" pour ajouter l'action.

La nouvelle action a bien été ajoutée. Le curseur se trouvera sur la liste des actions actuellement liées à cet alias. Vous pouvez lier un alias à plusieurs actions, si besoin lier un alias à la même action plusieurs fois (pour par exemple jouer différents sons en même temps, même si cela n'est peut-être pas bien utile).

La liste des actions liées à cet alias fait un peu peur. Elle ne contient que les informations en résumé. Si vous avez choisi "Active/Désactive le TTS", la ligne d'action #tts sera créée. C'est un raccourci, une ligne d'action décrite en utilisant la syntaxe du SharpScript. Vous n'avez pas vraiment besoin de vous en inquiéter, à moins de vouloir toucher au scripting dans CocoMUD.

Pour résumer le contenu de cette boîte de dialogue quand vous ajoutez ou éditez un alias, vous avez:

Vous devriez vous habituer autant que possible à cette boîte de dialogue, car elle sera présente pour la plupart des fonctionnalités incluant du SharpScript dans CocoMUD. Il s'agit en fait de l'éditeur de SharpScript, qui vous permet d'éditer la configuration avancée du client sans ouvrir le fichier de configuration. Vous verrez bien d'autres exemples dans le reste de la documentation.

Pour enregistrer cet alias, n'oubliez pas de sélectionner "OK" plusieurs fois pour bien refermer toutes les boîtes de dialogues ouvertes.

Si dans le client, vous entrez "tts", vous devriez voir :

TTS off.

Entrez cette commande de nouveau pour l'activer. Le TTS (text-to-speech) sera donc activé ou désactivé en entrant cet alias.

Syntaxe du SharpScript

Vous pouvez aussi ajouter un alias en éditant un fichier de configuration. Cette solution sera peut-être préférée par certains.

Le fichier de configuration lié à cet univers se trouve dans le dossier "worlds", sous-dossier portant le nom de votre univers, fichier "config.set". Vous pouvez ouvrir ce fichier avec un éditeur simple, comme bloc-notes.

Pour ajouter un alias, utilisez l'action #alias avec deux paramètres :

Si vous voulez créer un alias "tts" qui active ou désactive le TTS (text-to-speech), écrivez dans votre fichier de configuration :

#alias tts #tts

Si vous voulez lier votre alias à plusieurs actions, n'hésitez pas à l'écrire sur plusieurs lignes :

#alias go {
    #play sounds/go.wav
    #say {C'est parti !}
}

Pour une explication plus détaillée de la syntaxe du SharpScript, référez-vous à la section consacrée au SharpScript.

Editer un alias

A tout moment, que vous ayez créé l'alias depuis l'interface ou depuis le fichier de configuration, vous pouvez l'éditer. Si vous l'avez créé via le fichier de configuration, vous pouvez l'éditer via l'interface, et réciproquement.

Souvenez-vous : la configuration est chargée quand l'univers est sélectionnée, vraisemblablement à l'ouverture du programme. Si vous modifiez le fichier de configuration, redémarrez le programme pour voir ces modifications.

Supprimer un alias

Vous pouvez retirer un alias depuis l'interface ou le fichier de configuration. Souvenez-vous de bien quitter l'interface en cliquant sur "OK" même après avoir supprimé un alias, sans quoi la modification ne sera pas sauvegardée.

Les alias avec variables

CocoMUD offre une gestion des variables. On peut les utiliser n'importe où dans les scripts du client, incluant dans toutes les fonctionnalités qui utilisent le moteur du SharpScript (comme les alias, macros ou triggers).

Les variables peuvent être très utiles pour les alias, pour créer des raccourcis de commande avec des paramètres inconnus. Par exemple :

Je voudrais créer un alias qui commence par =. Ce qui vient après le signe égal doit être envoyé au serveur comme une commande say. Si j'entre "=coucou !", la commande "say coucou !" devrait être envoyée au serveur.

Dans ce cas, on devra utiliser des variables. L'alias doit commencer par un signe égal (=), mais on ne sait pas ce qui vient après. Comment l'indiquer au client ? On va utiliser le signe * dans notre alias qui veut dire "n'importe quoi, de n'importe quelle longueur".

Si on entre =* comme alias, CocoMUD l'interprétera comme "n'importe quelle commande commençant par un signe égal".

Cependant, on n'a pas seulement besoin de déclencher cet alias. On doit récupérer ce que l'utilisateur a entré après le signe égal. Voici le détail de la création de cet alias, pas à pas, en utilisant l'interface :

Si vous écrivez dans le client :

=Coucou !

L'alias enverra "say Coucou !" au serveur.

Ce qui se passe est assez simple :

La variable s'appelle $1 car vous pouvez créer de nombreuses variables. Si vous entrez l'alias :

-*+*

Vous pourrez entrer comme actions liés à cet alias :

remove $1
wear $2

Et utiliser cet alias ainsi :

-cape+armure

Les variables en SharpScript sont davantage expliquées dans la documentation consacrée au SharpScript.


Fonctionnalités basiques de CocoMUD

CocoMUD est un client MUD conçu pour être accessible et agréable avec un lecteur d'écran. Il supporte nativement un système de TTS (Text-to-Speech) pour la plupart des lecteurs d'écran sous Windows, ainsi que la gestion de plages tactiles.

Ce document décrit les fonctionnalités basiques de CocoMUD, savoir ce qu'il permet et comment l'utiliser, avec des exemples. Certaines fonctionnalités plus complexes sont décrites dans des documents à part.

À l'ouverture de CocoMUD

Quand vous ouvrez CocoMUD, vous devriez voir une liste de serveurs configurés (ou d'univers, dans le vocabulaire du client). C'est une liste, vous pouvez sélectionner un autre univers avec les flèches ou vous déplacer plus rapidement en entrant les premières lettres de l'univers en question. Il est possible que le serveur de jeu auquel vous souhaitez vous connecter ne soit pas présent dans la configuration par défaut : pour cela, il vous faut l'ajouter avant de continuer.

Quand vous avez sélectionné l'univers auquel vous souhaitez vous connecter, appuyez sur Entrée (ou cliquez sur le bouton se connecter).

La fenêtre principale du client

La fenêtre principale de CocoMUD est aussi simple que possible. Elle ne contient qu'une seule zone de texte, dans laquelle vous pouvez vous déplacer en utilisant les flèches, sélectionner et copier du texte, vous déplacer au début ou à la fin de la fenêtre, etc.

Quand vous écrivez dans ce champ de texte, le curseur est automatiquement déplacé en bas de la fenêtre. Vous pouvez considérer cette zone de texte comme une zone en lecture seule, à l'exception de la dernière ligne. Vous pouvez envoyer votre commande en appuyant sur Entrée comme d'habitude. Vous pourrez ensuite remonter avec les flèches pour voir la réponse du serveur. Cette navigation peut sembler assez étrange de prime abord, mais elle devient très intuitive après quelques essais seulement.

Quand vous appuyez sur Entrée après avoir sélectionné un univers, CocoMUD essaye de se connecter au serveur. Si tout se passe bien, le client se connecte et le message d'accueil du jeu s'affiche dans la zone de texte (vous pouvez le lire en utilisant les flèches). Le message d'accueil devrait également être envoyé au lecteur d'écran (et, si vous avez une plage tactile, le message devrait apparaître dessus également). La plupart des MUD vous demanderont un nom d'utilisateur et un mot de passe.

Historique des commandes

Quand vous appuyez sur Entrée pour envoyer une commande, elle est ajoutée à votre historique de commandes. Vous pouvez naviguer dans cette historique de commande pour envoyer de nouveau une commande ou bien la modifier si nécessaire. Il existe deux façons d'utiliser l'historique des commandes :

Auto-complétion

CocoMUD propose une fonctionnalité d'auto-complétion. Quand vous commencez à écrire un mot, vous pouvez appuyer sur la touche de tabulation, le client essayera de trouver la fin du mot que vous étiez en train de taper, en se basant sur le texte que vous avez reçu du serveur. Par exemple, si vous écrivez "po" dans le client, puis appuyez sur la touche de tabulation, le client écrira "porte", "portail" ou "potion" ou autre, en fonction des mots les plus fréquents qu'il a reçu. Les mots apparaissant le plus souvent sont proposés en premier.

Quand vous appuyez sur la touche de tabulation, le mot est écrit juste avant le curseur. Vous pouvez continuer à écrire votre commande ou l'envoyer telle qu'elle. Si le mot trouvé par l'auto-complétion n'est pas le bon, vous pouvez de nouveau appuyer sur la touche de tabulation : le client cherchera un autre mot en se basant sur les premières lettres que vous aviez écrites. Vous pouvez appuyer sur la touche de tabulation autant de fois que nécessaire pour trouver votre mot : la sélection se base sur la fréquence (le plus souvent un mot apparaît, les meilleures chances il a d'être choisi pour l'auto-complétion). Si le client ne trouve plus de résultat, il vous remettra les lettres initialement écrites et vous devrez finir le mot vous-même.

Commandes multiples

L'envoi de commandes multiples (command stacking en anglais) est une fonctionnalité permettant d'envoyer plusieurs commandes à la fois. Par exemple :

say sounds;say good

Cette syntaxe est identique à :

say sounds
say good

Envoyer plusieurs commandes à la fois peut être utile dans certains cas. Par défaut, le délimiteur pour les commandes multiples est le point virgule (;), mais vous pouvez le modifier dans les options, onglet commandes. Si vous voulez retirer la fonctionnalité des commandes multiples, supprimez simplement le délimiteur dans les options.

Vous pouvez entrer le délimiteur plusieurs fois pour l'envoyer dans vos commandes. Si vous avez laissé le délimiteur par défaut (;) par exemple :

say une commande;say une autre commande avec un clin d'oeil ;;)

Cette commande enverra :

say une commande
say une autre commande avec un clin d'oeil ;)

Quand le délimiteur est présent plus d'une fois, il est ignoré par le système des commandes multiples. Ainsi :

Commande Équivalent
say ;;) say ;)
say ;;;) say ;;)
say ;;;;) say ;;;)

La barre de menu

Certaines options sont accessibles dans la barre de menu. Dans Fichier -> Options, vous verrez plusieurs options que vous pouvez modifier pour rendre votre expérience avec CocoMUD plus agréable.

Les options

Quand vous sélectionnez Fichier -> Options dans la barre de menu, ou entrez Alt + Entrée, vous devriez voir une boîte de dialogue avec plusieurs onglets. L'onglet sélectionné par défaut est général. Pour l'heure, il ne contient que le réglage de la langue de CocoMUD. Le client devrait être dans la langue de votre système, si une traduction existe dans le logiciel, ou bien anglais si ce n'est pas le cas.

Dans l'onglet affichage, vous pouvez sélectionner un encodage différent. Par défaut, CocoMUD utilise un encodage Latin, mais vous pouvez le changer si besoin est.

Dans l'onglet commandes, vous pouvez modifier le caractère utilisé pour l'envoi de commandes multiples (command stacking en anglais).

Dans l'onglet accessibilité se trouvent plusieurs options qui modifient le comportement d'accessibilité du client. Les voici plus en détail :

Ajouter un univers

Si vous voulez ajouter un univers (un serveur de jeu), dans la sélection des univers (à l'ouverture du client), cliquez sur le bouton Ajouter. Une boîte de dialogue s'ouvrira, vous demandant trois informations :

Le nom de l'univers, nom d'hôte du serveur et numéro de port peuvent être modifiés après coup. Cependant, le nom du serveur est celui donné à son dossier, où les options de connexion et autres informations seront conservées. Changer le nom ne changera pas le nom du dossier.

Une fois créé, vous verrez l'univers dans la liste et pourrez vous y connecter.


h1. Quoi de neuf dans les récents builds

Cette page décrit les changements apportés par chaque build. Vous pouvez naviguer entre builds en utilisant la navigation par titre.

Build 51

Note : ces fonctionnalités utilisent le moteur SharpScript lui-même ainsi que l'interface correspondante. Elles ont été abondamment testées. Peu d'utilisateurs ont encore inclus Python directement dans leur configuration. Pour ceux qui l'ont fait cela dit, sachez qu'un gros travail de documentation et de développement est en cours pour rendre l'écriture de configuration en Python plus intuitive.

Build 50

Build 49

Build 48

Build 47

Build 46

Build 45

Build 44

Build 43

Build 42

Build 41

Build 40

Build 39

Build 38

Build 37

Build 36

Build 35

Build 34

Build 33

Build 32

Build 31

Build 30

Build 29

Build 28

Build 27

Build 26

Build 25

Build 24

Build 23


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.


Configuration des personnages dans CocoMUD

CocoMUD permet de configurer un ou plusieurs personnages par univers. Un personnage configuré offre plusieurs avantages :

Quand vous choisissez un univers auquel se connecter, vous pouvez choisir plus spécifiquement un des personnages configurés sur cet univers. Cependant, vous pourrez toujours, peu importe le nombre de personnages configurés, demander à CocoMUD de vous connecter au jeu sans utiliser un personnage.

Ajouter un personnage à un univers

Par défaut, vous n'avez aucun personnage configuré sur vos univers. Pour ajouter un personnage, il vous faut vous connecter à l'univers pour commencer. Quand vous ouvrez CocoMUD et que vous vous trouvez sur la liste des univers configurés, choisissez-en un et appuyez sur ENTRÉE pour s'y connecter.

CocoMUD essayera alors de se connecter à cet univers. Il n'entrera aucune information automatiquement. Pour créer un personnage, ouvrez la barre de menu, sélectionnez Jeu -> Changer les options de ce personnage....

Une boîte de dialogue s'ouvrira alors, vous demandant plusieurs informations :

Cliquez sur OK pour confirmer vos options. Vous pouvez ensuite fermer l'onglet et le ré-ouvrir : sur l'écran de connexion, sélectionnez l'univers avec les flèches. Appuyez sur la touche de tabulation: vous devriez vous retrouver sur une seconde liste, qui est la liste des personnages associés à cet univers. Le premier élément en haut de la liste est "aucun personnage", un choix qui vous permet de vous connecter au jeu sans entrer les commandes spécifiques à un personnage. Si vous avez configuré un personnage par défaut, le curseur sera sur ce choix automatiquement. Utilisez les flèches pour naviguer dans la liste des personnages et appuyez sur ENTRÉE pour se connecter à l'univers en utilisant ce personnage.

Quand vous vous déplacez dans la liste des univers (la liste sur laquelle vous vous trouvez quand CocoMUD s'ouvre), si vous sélectionnez un univers avec les flèches, son personnage par défaut sera automatiquement sélectionné. Nul besoin de faire tab pour le sélectionner. Vous pouvez appuyez sur ENTRÉE après avoir sélectionné l'univers si vous souhaitez vous connecter au personnage par défaut.

Changer la configuration du personnage

Si vous avez changé le mot de passe du personnage sur le jeu ou une autre information, vous pouvez vous connecter sur ce personnage et retourner dans la barre de menu, Jeu -> Changer les options de ce personnage.... La boîte de dialogue s'ouvrira de nouveau avec les options déjà renseignées pour ce personnage. Vous pouvez les modifier et cliquez sur OK.

Ajouter plusieurs personnages à un univers

Ajouter plusieurs personnages est assez semblable à ajouter un seul personnage : l'astuce ici est dans la façon de se connecter à l'univers. Vous devez sélectionner l'univers sur l'écran de connexion et tabuler une fois pour sélectionner "aucun personnage", ce qui veut dire qu'aucun personnage associé à cet univers ne sera choisi. De nouveau, rendez-vous dans la barre de menu, Jeu -> Changer les options de ce personnage.... La prochaine fois que vous vous trouverez sur l'écran de connexion, vous verrez que le nouveau personnage est bel et bien présent dans la liste. Souvenez-vous, vous ne pouvez avoir qu'un seul personnage par défaut configuré par univers. Tous les personnages sont affichés dans l'ordre alphabétique, vous pouvez aisément naviguer entre le personnage par défaut et d'autres personnages configurés.

Une note concernant la configuration

Pour l'instant, la configuration est seulement propre à l'univers. Cela signifie que tous les personnages configurés sur un univers partageront les mêmes alias, triggers ou canaux.


Commandes multiples

L'envoi de commandes multiples (command stacking en anglais) est une fonctionnalité permettant d'envoyer plusieurs commandes à la fois. Par exemple :

say sounds;say good

Cette syntaxe est identique à :

say sounds
say good

Envoyer plusieurs commandes à la fois peut être utile dans certains cas. Par défaut, le délimiteur pour les commandes multiples est le point virgule (;), mais vous pouvez le modifier dans les options, onglet commandes. Si vous voulez retirer la fonctionnalité des commandes multiples, supprimez simplement le délimiteur dans les options.

Vous pouvez entrer le délimiteur plusieurs fois pour l'envoyer dans vos commandes. Si vous avez laissé le délimiteur par défaut (;) par exemple :

say une commande;say une autre commande avec un clin d'oeil ;;)

Cette commande enverra :

say une commande
say une autre commande avec un clin d'oeil ;)

Quand le délimiteur est présent plus d'une fois, il est ignoré par le système des commandes multiples. Ainsi :

Commande Équivalent
say ;;) say ;)
say ;;;) say ;;)
say ;;;;) say ;;;)

Télécharger et installer CocoMUD

CocoMUD est prêt à l'emplois sous Windows, dans une version portable. Vous n'avez pas besoin de l'installer sur votre système, juste le télécharger sous forme d'archive (voir les liens ci-dessous), l'extraire et lancer cocomud.exe. La procédure est détaillée dans les sections suivantes de ce document.

Télécharger CocoMUD

Build Windows
51 CocoMUD pour Windows

Si vous utilisez un autre système d'exploitation que Windows, vous pourriez vouloir installer CocoMUD depuis les sources. CocoMUD fonctionne sous Linux et Mac OS, bien qu'il n'existe pas encore de version prête à l'emplois pour ces systèmes.

Si vous accédez à ces informations depuis une version déjà installée de CocoMUD, les liens donnés ci-dessus pourraient ne pas être à jour. Il vous est recommendé de vous rendre sur la documentation en ligne pour avoir les liens de téléchargement à jour.

Installer CocoMUD

Une fois l'archive téléchargée, vous devez l'extraire dans un dossier. CocoMUD n'a pas besoin de s'installer pour fonctionner, il tourne en version portable (vous pourriez même le mettre sur une clé USB pour l'emporter avec vous si vous voulez).

  1. Commencez par extraire l'archive CocoMUD.zip dans le dossier que vous voulez. CocoMUD ne pourra pas se lancer directement depuis l'archive, et même si il y arrive, il ne pourra pas écrire dedans.
  2. Dans le dossier où vous avez extrait l'archive, vous devriez trouver un dossier CocoMUD. Ouvrez-le.
  3. Dedans se trouve un fichier cocomud.exe (parmi beaucoup d'autres). Pour lancer CocoMUD, il suffit de lancer ce fichier cocomud.exe. CocoMUD devrait s'ouvrir sur son écran de connexion.
  4. Si vous appréciez CocoMUD, n'hésitez pas à faire un raccourci menant au fichier cocomud.exe, cela vous simplifiera la vie.

Pour apprendre à utiliser CocoMUD, vous devriez lire un aperçu des fonctionnalités basiques de CocoMUDD. Ce petit tutoriel est fait pour apprendre à utiliser les fonctionnalités les plus simples de CocoMUD. D'autres documents sont disponibles pour apprendre à utiliser les fonctionnalités plus avancées du client.

Mettre à jour CocoMUD

CocoMUD possède un updater intégré pour se mettre à jour automatiquement. Cet updater se lancera avec CocoMUD. Si il trouve une version plus récente de CocoMUD sur le site officiel, il vous proposera de l'installer. Si vous répondez "oui", CocoMUD sera refermé pendant que l'updater télécharge et installe la nouvelle version. Si tout va bien, CocoMUD s'ouvrira tout seul après la mise à jour.

Vous pouvez vérifier à tout moment si il y a des mises à jour. Dans le menu Aide de CocoMUD, choisissez Vérifier les mises à jour disponibles. La réponse pourrait se faire attendre quelques secondes, car CocoMUD regarde les mises à jour sur le site officiel. CocoMUD va vérifier si il existe des mises à jour et vous dire si il y en a. Si c'est le cas, il vous proposera de mettre à jour.

La mise à jour automatique pourrait ne pas s'exécuter correctement dans certains cas. Le pare-feu de Windows, Windows Defender, un logiciel antivirus ou un logiciel conçu pour protéger votre système pourraient élever des objections à la mise à jour automatique de CocoMUD.

Si la mise à jour rencontre des erreurs, CocoMUD pourrait devenir corrompu (c'est-à-dire que CocoMUD pourrait ne pas se lancer, ou bien générer de nombreuses erreurs au lancement). Si cela se produit, il y a plusieurs moyens de résoudre le problème :

  1. Forcer la mise à jour : dans certains cas, CocoMUD essaye de se mettre à jour, mais certains fichiers ou dossiers ne sont pas modifiés. Un logiciel qui essaye de protéger votre système pourrait augmenter les risques qu'une telle situation se produise. Le pare-feu Windows et Windows defender ne semblent pas causer ce problème. Si vous cliquez sur cocomud.exe et que rien ne se passe, ou bien que CocoMUD se lance en générant de nmbreuses erreurs, vous pouvez forcer la mise à jour de CocoMUD. Pour ce faire, exécutez le fichier dbg_updater.exe dans votre dossier CocoMUD. dbg indique debug, et cette version de l'updater se veut aussi légère que possible. Même si il semble que votre version de CocoMUD soit à jour, le dbg_updater va télécharger et installer la version la plus récente depuis le site officiel, en gardant votre configuration. Ce fichier devrait ouvrir une console avec une barre de progression, mais vous n'avez pas besoin de vous en inquiéter : laissez-le travailler, télécharger et installer CocoMUD. Si tout va bien, CocoMUD sera ouvert automatiquement dans sa nouvelle version. Si cela ne change rien, essayez de lancer dbg_updater une nouvelle fois avant de passer à l'étape 2.
  2. Mise à jour manuelle : parfois, CocoMUD est tellement corrompu que dbg_updater ne peut même pas se lancer, ou bien qu'il n'arrive pas à faire grand chose. Si cela se produit, vous devrez réinstaller CocoMUD manuellement. Téléchargez la version la plus récente de CocoMUD (voir les liens ci-dessus). Décompressez l'archve dans un nouveau dossier. Pour conserver votre configuration, rendez-vous dans votre ancien dossier. Copiez les dossiers settings et worlds et placez-les dans votre nouveau dossier CocoMUD. Vous devriez ensuite pouvoir lancer CocoMUD normalement.

Si vous rencontrez toujours des erreurs, n'hésitez pas à contacter l'équipe des développeurs en créant un rapport de bug .

Nous vous souhaitons l'expérience de jeu la plus agréable possible avec CocoMUD !


Features


Macros

CocoMUD propose un système de macros comme la plupart des autres clients MUD, qui permet de relier une touche de raccourci avec une action (comme une commande à envoyer au serveur. Ce document explique la création de macros simples et plus complexes.

Fonctionnalité basique

Dans sa version la plus simple, un macro fait le lien entre une touche de raccourci et une commande : par exemple, si vous appuyez sur Ctrl + F1, CocoMUD pourrait envoyer la commande "regarder" au serveur de jeu. Dans cette documentation, nous verrons comment créer un macro reliant la touche F1 avec la commande "nord".

Ajouter un macro

Il existe deux moyens d'ajouter un macro. L'interface étant l'alternative la plus simple, ce moyen sera décrit en premier.

Via l'interface

Dans la barre de menu, cliquez sur Jeu -> Macro. Une boîte de dialogue devrait s'ouvrir, contenant la liste des macros actuellement configurés. Cette liste sera probablement vide la première fois que vous ouvrirez cette interface. Cliquez sur le bouton Ajouter.

Une autre boîte de dialogue devrait s'ouvrir pour ajouter un nouveau macro. Le curseur devrait se trouver sur une zone de texte, mais il ne vous est pas demandé d'entrer du texte ici : à la place, appuyez sur la combinaison de touches que vous souhaitez associer à ce macro. Par exemple, appuyez sur la touche F1.

Dans la zone de texte devrait apparaître le nom du raccourci, "F1" dans notre cas. Vous pouvez utiliser de nombreuses touches de raccourci pour vos macros. Par exemple, appuyez sur la touche Ctrl, maintenez-la enfoncée, appuyez sur la touche I et relâchez les deux touches. Dans la zone de texte devrait apparaître :

Ctrl + I

Vous pouvez utiliser Shift, Ctrl ou Alt dans vos macros. En pratique, ce n'est pas conseillé d'utiliser Alt, qui est une touche réservée pour les menus (Alt + F ouvre le menu fichier, par exemple). Il y a malgré tout un grand nombre de raccourcis possibles, par exemple :

Shift + Backspace
Ctrl + F12
Ctrl + Shift + O
Ctrl + PavNum8

Si vous voulez connecter un macro à une touche du pavé numérique, vous devez activer ce dernier avant de cliquer sur le bouton Ajouter, ou bien naviguer dans une autre partie de la fenêtre pour ce faire. Sinon, CocoMUD va associer la touche du verrouillage de pavé numérique avec le macro, ce qui n'est pas souvent souhaitable.

Après avoir entré le raccourci voulu, appuyez sur la touche de tabulation. Le second champ de cette boîte de dialogue est également un champ de texte, celui-ci devant contenir la ou les commandes à envoyer au serveur de jeu quand on presse le raccourci renseigné précédemment. En poursuivant notre exemple, après avoir sélectionné Ajouter, appuyé sur la touche F1, puis sur la touche de tabulation, vous pouvez maintenant écrire "nord".

La zone suivante est une liste d'actions à associer à ce macro. Cette fonctionnalité sera détaillée plus bas, elle n'est pas nécessaire pour les macros simples. Tabulez jusqu'à trouver le bouton OK et validez. Vous devriez voir le macro que vous avez ajouté dans la liste.

Si vous voulez changer la ou les commandes à envoyer au serveur quand le macro est activé, vous devez l'éditer (en le sélectionnant dans la liste, et tabuler jusqu'à trouver le bouton Editer). Cependant, si vous souhaitez changer le raccourci associé à un macro, il vous suffit de le sélectionner et de tabuler une fois. Vous devriez voir une zone de texte (ou plutôt, une zone d'édition du raccourci). Appuyez sur la nouvelle combinaison de touches que vous souhaitez associer à ce macro, puis tabulez jusqu'à trouver le bouton OK. Si vous quittez cette boîte de dialogue sans cliquer sur OK, vos modifications seront perdues (cela inclut le macro que vous avez ajouté).

De retour dans la fenêtre principale de CocoMUD, appuyez sur F1. La commande "nord" est envoyée (silencieusement) au serveur de jeu qui devrait vous répondre, en fonction de l'univers. Pour moi, je reçois le message :

Vous ne pouvez aller par là...

Via le SharpScript

Vous pouvez aussi ajouter un macro via une syntaxe du scripting SharpScript. En fait, c'est comme ça que vos triggers, macros et alias sont enregistrés dans votre fichier config.set (une configuration par univers).

Pour créer un macro, utilisez l'action #macro. Elle prend deux paramètres :

Dans notre exemple, on aurait pu créer notre macro en entrant l'instruction SharpScript suivante :

#macro F1 nord

Vous pouvez coller cette instruction directement dans CocoMUD et appuyez sur Entrée, comme pour envoyer une commande. CocoMUD voit que cette commande commence par un seul signe dièse et l'envoie à l'interpréteur SharpScript. Si vous ajoutez un macro de cette manière (et si vous n'avez pas fait d'erreurs de syntaxe), le macro sera visible instantanément dans la barre de menu Jeu -> Macro.

Si l'un des paramètres contient des espaces, n'oubliez pas de l'entourer d'accolades :

#macro {Ctrl + Shift + O} {dire c'est plutôt une longue commande.}

Les accolades ne sont absolument nécessaires que si le paramètre contient des espaces. Mais vous pouvez mettre des accolades autour des paramètres même si ils n'ont pas d'espaces, le moteur SharpScript les retirera sans faire d'histoire.

Editer un macro

Nous avons vu plus haut comment éditer un macro. Il n'y a rien de très compliqué, en vérité. L'important à retenir, c'est que si vous voulez changer le raccourci associé à un macro, vous devez juste le sélectionner et faire Tab pour entrer le nouveau raccourci. Si vous souhaitez changer la ou les commandes associées à ce macro, cependant, vous devez le sélectionner et cliquer sur le bouton Editer. La boîte de dialogue est identique à celle pour ajouter un macro, décrite précédemment.

Supprimer un macro

Supprimer un macro se fait des plus simplement. Dans la boîte de dialogue (menu Jeu -> Macro), sélectionnez le macro que vous voulez supprimer, et tabulez jusqu'à trouver le bouton Supprimer. Une confirmation de suppression sera affichée. N'oubliez pas de validez en cliquant sur le bouton OK, sans quoi le macro ne sera pas complètement supprimé.

Macros un peu plus complexes

Les macros relient souvent une touche de raccourci à une ou plusieurs commandes à envoyer au serveur. Cependant, vous pouvez aussi relier un raccourci clavier avec une action plus complexe, comme jouer un son, afficher un message (avec variables, éventuellement) ou afficher un canal. L'intérêt de telles action n'est pas forcément apparent tout d'abord. Un exemple de macro plus complexe peut se trouver dans l'utilisation des prompts sonores.

Le principe d'un prompt sonorisé est que la barre de prompt (contenant vos points de vie, magie et mouvement, par exemple) est interceptée par un trigger et n'apparaît plus. Votre vie, magie et mouvement actuels sont conservés dans des variables à part. Ceci dépasse le cadre de cette documentation, mais l'important est qu'un macro peut être créé pour afficher ces variables. Par exemple, si vous appuyez sur Ctrl + J, vous pourriez voir votre vie actuelle.

Nous avons utilisé la seconde zone de texte pour préciser quelles commandes envoyer au serveur de jeu quand on entre le raccourci indiqué. En vérité, on peut entrer des instructions SharpScript dans cette zone de texte. Mais puisque écrire les instructions SharpScript à la main n'est pas le plus facile, on peut passer par l'éditeur SharpScript. Cela n'est vraiment pas compliqué : dans l'interface d'ajout ou d'édition d'un macro, laissez le second champ de texte vide, et tabulez une fois pour vous trouver sur la liste des actions. Sélectionnez une action, par exemple "Affiche un message et l'envoie au lecteur d'écran". Cliquez sur le bouton Ajouter l'action. On vous demandera d'entrer d'autres informations (dans notre cas, le message à afficher, et des informations sur comment l'afficher). Validez une fois ces informations renseignées. N'oubliez pas d'appuyer sur OK pour fermer la boîte de dialogue en sauvegardant les modifications.


Scripting in CocoMUD client

CocoMUD client offers a simple yet easily-extendable scripting language. This language can be used to describe macros, aliases or triggers, or more complex features in the MUD.

This document describes the syntax of SharpScript, gives examples and provides frequent questions at the bottom of each section. If you want the answer to one of these questions, just click on the question, the answer will appear on the next line.

The SharpScript logic

The logic of the SharpScript can be summarized in two main ideas:

As you will see, the syntax of the SharpScript is pretty light, but it already allows interesting features. Should you need more, Python is here, and it's not exactly a limited alternative.

Basic syntax

The SharpScript finds its name in its syntax. As most MUD clients, a SharpScript command begins with a sharp symbol (#). It can already feel like a constraint of some type, but maintaining the difference between commands to the server and to the clients is important. Unlike most MUD clients, CocoMUD client tries to not force symbol in user input. If you want to send a message beginning with the sharp symbol, you can do so, unless you configure your client to interpret SharpScript as input.

Commands

SharpScript features are kept in commands (or functions). Both terms refer to the same thing in this documentation. These commands can ask to create a macro, an alias, a trigger, send some message to the server, display some message to the client, prompt the client with a question, store some information about a character and so on.

Here's a single example:


#say Hello!

If you try this piece of SharpScript in an input that accepts SharpScript syntax, the client should display "Hello!" at the bottom of your screen. The text should also be sent to the screen reader, spoken by it and displayed on a Braille display, if supported.

The #say command that we have used is very simple: It expects one argument, one information, which is the message to be displayed.

Frequent questions:

How to send a command with a sharp symbol (#) in it?

Arguments with spaces

If you try to display a message with spaces, it will not work:


#say This character isn't feeling so well.

Some commands take more than one argument, and to separate them, they use the space (we will see examples a little below). Therefore, if you want to have spaces in your argument, you should surround it by braces ({}) :


#say {This character isn't feeling so well.}

Surrounding arguments by braces is only necessary if this argument contains spaces. Consider the following example, to create a macro:


#macro F1 north

This time, the #macro command expects two arguments:

Here, when we press F1, the client will send "north" to the server.

Remember to enclose the arguments containing spaces, however:


#macro {Ctrl + F1} north

This time, the shortcut is Ctrl + F1. Because there are spaces in this argument, we enclose it in braces.


#macro F8 {say Greetings!}

When we press F8, the client will send "say greetings!" to the server.


#macro {Ctrl + Shift + K} {look into backpack}

Since both arguments contain spaces, we enclose them both.

Notice that if you have a doubt, use braces. It will work regardless:


#macro {F1} {north}

Multi-line scripts

By default, SharpScript expects every command to be on a different line. This is not always a good thing for readability's sake, and sometimes it can get really complicated.

Let's say we want to create the alias as follows: When we enter "victory", the client plays a sound and sends a few commands to the server:


#alias victory {

    #play victory.wav

    say I've done it!

    north

    #wait 3

    sheathe sword

}

The second argument is split on several lines, because it's much more readable. Notice here that the argument contains SharpScript commands (beginning with a sharp symbol) and commands to be sent to the server. The lines not beginning with a sharp symbol (#) are sent as it to the server. This is the case for the line 3 (say I've done it!) for instance.

For readability, the second argument is indented a little on the right: Each command in this second argument stands 4 space on the right. This is not mandatory, it just makes things easier to understand. Since Python relies on indentation however, it might be a good thing to get used to it, regardless of its being necessary or not.

Frequent questions:

Can I put several instructions on a single line?

Flags

Some commands support flags: Flags are here to influence the behavior of a function in some way. The best example available at this time is the #say command we have seen. By default, it displays the provided text, sends it to the screen reader to be spoken, and to the Braille display to be displayed. There are three flags that control that:

You can change flags given to a command at the end of the SharpScript line (or instruction). To set a flag on, write its name after a plus sign (+). If you want to set this flag off, write its name after a minus sign (-).


#say {I don't want it to be displayed.} -screen

#say {And that shouldn't be spoken nor displayed in Braille.} -speech -braille

#say {This may be displayed on screen and on the Braille display.} +screen -speech +braille

Notice that the flags "screen" and "braille" are not necessary in the last example: Both are on by default. This example is here to illustrate the syntax.

Embedding Python into SharpScript

Sometimes, what we want to do is a bit too complex in SharpScript. It's possible to extend its syntax and bring new commands into it, but it's better to keep it simple and to learn to do more complex things with Python, which is a highly-readable language without few limitations. It's still a good thing to keep your script readable, not only for you (although it might be handy, should you modify it), but to potential users.

To add Python code, use the syntax for long arguments (with braces), but after the left brace, add a plus sign (+). This tells the client that what follows between the braces isn't SharpScript, but Python code.

If we want to write a script that plays different sounds depending on the XP we receive, we might do it that way:


#trigger {You received {xp} XP.} {+

    # The 'xp' variable contains the received XP

    # It might be a number, but we have to convert it

    if xp.isdigit():

        if xp > 200:

            play("victory.wav")

        elif xp > 100:

            play("notbad.wav")

        elif xp > 10:

            play("notalot.wav")

}

This trigger will wait for the line "You received *** XP." and will put whatever XP in the 'xp' variable, before passing it to the Python script. The Python script will convert the XP (if it's a number) and will play a different sound:

Notice that nothing happens if you receive less than 10 XP in this example.

It's very useful to embed Python code into SharpScript that way. It makes for clear and readable scripts that are almost limitless. Keep the indentation in this example, as it will be used by Python to determine blocks.

Frequent questions:

Which functions are available in embedded Python?

What variables are available in embedded Python?


Les triggers dans CocoMUD

Il est possible que les triggers soient la fonctionnalité la plus puissante de tout client MUD. CocoMUD propose un système simple et flexible de triggers, qui sera présenté ici avec de nombreux exemples.

Qu'est-ce qu'un trigger ?

Normalement, si vous entrez une commande dans le client, le serveur devrait vous "répondre" en envoyant une ou plusieurs lignes. Cette réponse est constituée en grande partie (sinon en totalité, à l'exception des couleurs) de texte, tout comme votre commande.

Les triggers peuvent intercepter une ligne particulière et réagir en fonction, en faisant quelque chose. C'est l'expression la plus simple d'un trigger : je surveille le texte envoyé par le serveur, je réagis si je rencontre une certaine ligne et je fais quelque chose en retour.

Les triggers étant potentiellement puissants, leur configuration a été répartie dans différentes couches de complexité : vous n'avez pas besoin de comprendre (ni même de connaître l'existence) des types de triggers les plus avancés pour utiliser cette fonctionnalité. Cette documentation va décrire dans l'ordre la mise en place, pas à pas, des triggers les plus simples jusqu'aux triggers les plus complexes.

Créer un trigger

Commençons par quelque chose de simple : un trigger qui joue un son quand quelqu'un (n'importe qui) parle sur un canal du jeu.

Cet exemple sera différent sur différents MUDs, bien entendu, n'hésitez donc pas à l'adapter en fonction de vos besoins. Pour notre exemple, admettons que nous pouvons utiliser la commande "hrp" pour envoyer un message sur le canal "hrp", comme ceci :

hrp bonjour à vous !

Et si tout va bien, le MUD devrait répondre avec :

[hrp] Vous dites : bonjour à vous !

Ou bien, si quelqu'un d'autre parle sur le canal "hrp", vous pourriez voir un message comme ceci :

[hrp] Aaron dit : coucou

En bref, si nous voulons créer un trigger qui intercepte ces lignes, il nous faut un trigger qui intercepte les lignes qui commencent par "[hrp]" ("hrp" entouré de crochets).

Pourquoi intercepter ces messages ?

Si vous êtes nouveau dans l'utilisation des triggers, vous pourriez vous demander à quoi ils servent. La réponse dans ce cas précis pourrait être que, quand on reçoit un message sur le canal "hrp", le client joue un son. C'est sur cela que nous allons travailler.

Nous allons donc voir comment créer un trigger qui :

Comme la plupart des fonctionnalités sur CocoMUD, on peut créer des triggers en passant par l'interface ou par une instruction SharpScript. La première étant la plus facile pour commencer, nous allons la voir d'abord.

Depuis l'interface

Pour ajouter, éditer ou suppriemr un trigger depuis l'interface de CocoMUD, ouvrez la barre de menu, Jeu -> Triggers.

Vous devriez vous trouver dans une boîte de dialogue listant les triggers actuellement configurés sur cet univers. Il est très possible que cette liste soit vide la première fois que vous ouvrez cette boîte de dialogue. Pour créer un trigger, cliquez sur le bouton Ajouter.

Une nouvelle boîte de dialogue s'ouvre alors. Le curseur devrait se trouver dans une zone d'édition, où l'on vous demande d'entrer le trigger (c'est-à-dire, son déclencheur, la partie qui va indiquer à CocoMUD quoi surveiller).

Pour notre exemple, nous avons déterminé que notre trigger devrait s'exécuter quand le client reçoit une ligne commençant par [hrp]. Vous pouvez écrire [hrp] dans cette zone de texte, mais ne la quittez pas encore : si vous créez un trigger déclenché par [hrp], le trigger ne sera exécuté que si le client envoie une ligne ne contenant que [hrp]. Ce n'est pas ce que l'on veut faire ici : nous voulons que le trigger réagisse à une ligne commençant par [hrp] . La solution est de mettre un signe astérisque (*) après {hrp}, pour dire au client que [hrp] peut être suivi de n'importe quoi.

Peut-être reconnaissez-vous cette syntaxe : c'est la même que pour créer des alias avec variables, et ce n'est pas une coïncidence, nous verrons plus tard pourquoi.

Pour l'instant, vous pouvez écrire dans ce champ de texte :

[hrp]*

Si vous appuyez sur Tab, vous devriez vous trouver dans une liste d'actions que l'on peut associer à ce trigger. Dans notre exemple, nous voudrions jouer un son quand ce trigger se déclenche : parcourez la liste jusqu'à trouver l'action :

Joue un son

Et cliquez sur le bouton suivant : Ajouter l'action.

On vous demande maintenant de configurer cette action (dans notre cas, choisir le fichier sonore à jouer quand ce trigger se déclenche). Vous avez un bouton "Parcourir" qui vous permet de trouver le fichier sonore sur votre disque dur. Le bouton "Test" permet de vérifier que CocoMUD parvient bien à lire et jouer ce fichier (CocoMUD lit les fichiers .wav et .ogg). Si tout se passe bien, cliquez sur OK. L'action sera ajoutée au trigger. vous vous trouverez dans la liste des actions liées à ce trigger :

#play mon_fichier.wav

Bien sûr, "mon_fichier.wav" sera remplacé par le chemin et le nom du fichier que vous avez sélectionné. La représentation de l'action est en version courte (version SharpScript), cela explique pourquoi vous voyez #play mon_fichier.wav. Ne vous en inquiétez pas trop, c'est surtout un point de repère pour vérifier que l'action a bien été ajoutée, ainsi qu'un moyen de l'éditer, si vous voulez par exemple jouer un autre fichier sonore à la place.

Ces deux listes et les quelques boutons qui l'entourent forment l'éditeur SharpScript, permettant de configurer des actions assez complexes sans toucher au SharpScript de près ou de loin. Cette fenêtre peut s'avérer un peu intimidante au premier abord, voici donc un résumé de ce qu'elle contient. Notez que vous trouverez la même hiérarchie pour configurer les alias ou les macros et d'autres fonctionnalités de CocoMUD dépendantes du SharpScript :

Nous avons créé notre trigger [hrp]* connecté à une action pour jouer un son : vous pouvez donc cliquer sur OK. Vous devriez vous retrouver dans la liste des triggers actuels, sur le trigger que vous venez d'ajouter. Appuyez de nouveau sur OK pour fermer la boîte de dialogue en sauvegardant. Si vous quittez la boîte de dialogue autrement, le trigger ne sera pas ajouté.

Pour vérifier que notre nouveau trigger marche correctement, essayons d'envoyer un message sur le canal "hrp" :

hrp Est-ce que ça marche ?

Si tout va bien (et partant du principe que le serveur répond comme on l'attend), on devrait recevoir la ligne :

[hrp] Vous dites : est-ce que ça marche ?

Et vous devriez entendre le son que vous avez sélectionné à l'étape précédente. Voilà ! Ce n'était pas si difficile, si ?

Depuis le SharpScript

Comme toujours, l'interface permet de manipuler des options potentiellement complexes, mais elles sont toutes converties en SharpScript à la fin, même si vous n'avez pas vraiment besoin de vous en occuper. Créer le trigger de notre exemple en SharpScript est assez facile : vous pouvez entrer cette ligne directement dans votre client, ou bien dans le fichier "config.set".

#trigger [hrp]* {#play mon_fichier.wav}

C'est une instruction SharpScript. De gauche à droite, nous avons :

Ajouter un trigger en SharpScript est peut-être bien plus rapide, mais le système ne vous pardonnera pas facilement si vous faites des erreurs de syntaxe. L'interface nécessite d'avantage d'étapes, mais elle est généralement plus sûre.

Editer un trigger

Dans la boîte de dialogue des triggers (menu Jeu -> Triggers), vous pouvez éditer un trigger. Vous aurez besoin d'éditer un trigger dans deux cas : si vous voulez changer son déclencheur (la partie qui indique au trigger quel morceau de texte surveiller) on ses actions (la partie qui décrit quoi faire quand ce trigger se déclenche).

Supprimer un trigger

Supprimer un trigger peut se faire depuis l'interface également. Cliquez simplement sur le bouton Supprimer après avoir sélectionné un trigger existant. Confirmez que vous voulez supprimer ce trigger. N'oubliez pas de fermer la boîte de dialogue en cliquant sur OK, sans quoi votre trigger ne sera pas effacé.

Utiliser des variables dans les triggers

Il est tant de regarder plus attentivement le signe astérisque (*) que nous avons utilisé plus haut. Ce n'est pas un hasard si vous reconnaissez cette syntaxe depuis la documentation des alias, puisqu'il s'agit de la même chose : l'astérisque veut dire "tout et n'importe quoi".

Voici une liste des syntaxes possibles, pour vous donner une idée :

Syntaxe Signifie
Bienvenue* N'importe quelle ligne commençant par Bienvenue .
*classe N'importe quelle ligne finissant par classe .
*passage* N'importe quel ligne contenant (au début, à la fin ou au milieu) passage. Notez que ce trigger sera aussi déclenché si la ligne contient passager, par extension.
* passage * N'importe quelle ligne contenant le mot passage entouré d'espaces. Le mot passager ne déclenchera plus ce trigger cette fois.
Vous gagnez * crédits en *. Des lignes comme Vous gagnez 80 crédits en combat. ou Vous gagnez 10 crédits en management. déclencheront ce trigger. La ligne Vous gagnez un certain nombre de crédits en quelque chose. déclenchera le trigger également.

En bref, un signe astérisque veut dire n'importe quoi : une lettre, un chiffre, un mot, un nombre, un espace, un signe de ponctuation, un message assez long... voire rien du tout.

Un mot de mise en garde : la syntaxe de vos déclencheurs est très importante, et vous devriez vérifier avec soin les lignes que vous souhaitez intercepter.

*table*

Ce trigger se déclenchera quand le mot table se trouve dans une ligne, au début, au milieu ou à la fin. Ce trigger se déclencherait donc avec les lignes suivantes :

~ un tableau noir (commande board) se trouve ici
Dans l'angle nord-est de la cour se trouve un long bâtiment de bois peint en rouge, probablement une étable.

Souvenez-vous qu'un trigger est autant facile à restrindre que facile à déclencher. Il vous faut trouver le bon équilibre entre les deux.

Retournons aux variables. Le signe astérisque (*) fait deux choses :

Utilisons le même exemple, avec notre trigger [hrp[*. Qu'arrive-t-il lorsque vous recevez une ligne comme celle-ci :

[hrp] Edgar dit : je n'y comprend rien, quelqu'un pourrait-il m'aider ?

D'abord, le trigger [hrp]* est déclenché, puis la partie après [hrp] (celle décrite par le signe astérisque) est capturée dans une variable. Les variables permettent de conserver des informations, et c'est justement ce qu'elles font ici. Les variables sont numérotées en partant de $1, $2, $3 et ainsi de suite. Donc dans notre exemple, si on reçoit la ligne suivante, le trigger va créer une variable $1 contenant la partie après [hrp] :

 Edgar dit : je n'y comprend rien, quelqu'un pourrait-il m'aider ?

Que peut-on faire avec cette variable ? Beaucoup de choses. Chaque paramètre de nos actions liées au trigger peuvent utiliser les variables du trigger. Nous verrons des exemples concrets un peu plus bas, mais pour l'heure, nous pouvons commencer par l'afficher. Vous pouvez entrer l'instruction suivante dans votre client :

#say $1

Qui devrait vous afficher :

 Edgar dit : je n'y comprend rien, quelqu'un pourrait-il m'aider ?

Pourquoi la ligne commence par un espace ?

Si vous vous posez cette question, essayez d'écrire le déclencheur du trigger et la ligne reçue l'un à côté de l'autre, cela devrait vous aider à comprendre :

Vous avez trouvé ? La ligne reçue par le client commence par "hrp" entre crochets, un espace puis le nom de la personne qui parle... alors que notre déclencheur capture tout ce qu'il y a après le crochet fermant de "[hrp]", ce qui inclue notre signe espace dans ce cas.

La solution : modifier quelque peu notre déclencheur.

[hrp] *

Cette fois, on met un espace entre le crochet fermant et le signe astérisque. Si l'on reçoit la ligne :

[hrp] Edgar dit : je n'y comprend rien, quelqu'un pourrait-il m'aider ?

Et qu'on affiche $1, on devrait voir :

Edgar dit : je n'y comprend rien, quelqu'un pourrait-il m'aider ?

Les espaces dans les déclencheurs pourraient bien être l'une des erreurs principales quand on crée ses propres triggers la première fois. Le meilleur conseil que je puisse vous donner est de regarder avec attention les lignes que vous voulez surveiller à l'aide de triggers, et de n'utiliser le signe astérisque (*) que quand vous n'avez pas de moyen de savoir ce qui s'y trouve.

Les canaux CocoMUD dans les triggers

CocoMUD offre un système assez puissant de canaux. Cette fonctionnalité est à différencier des canaux en jeu, qui sont dépendants du jeu où vous vous connectez. Les canaux CocoMUD sont des listes d'`'evènements dans lesquels vous mettez ce que vous voulez. Ce n'est pas obligatoire de mettre des canaux en jeu dans des canaux CocoMUD, c'est juste plus comfortable. Nous allons voir cela (pourquoi l'utiliser et comment faire).

Vous trouverez plus d'informations sur ce concept et leur utilisation avec triggers en lisant la documentation des canaux.

Les triggers muets

Dans certains cas, quand on reçoit une certaine ligne, on ne veut pas l'afficher sur le client.

Cela arrive vraiment ?

Parfois. Par exemple, certains MUD envoient des messages d'ambiance régulièrement (toutes les 3-5 secondes) quand vous vous trouvez dans une certaine situation. Ce peut être agréable pour mettre dans l'ambiance, mais pas toujours avec un lecteur d'écran.

Un noeud dans le bois éclate en une pluie d'étincelles.

Joli et, bien il faut le reconnaître, près d'un feu de camp il est normal qu'il pétille, lance des étincelles et craque de temps en temps en temps. Mais avec un lecteur d'écran, ce n'est pas le plus utile. Nous allons donc retirer cette ligne de l'affichage.

Pour ce faire, créez un nouveau trigger. En passant par l'interface :

Si le client reçoit cette ligne, il ne l'affichera plus.

Créer ce trigger en SharpScript est assez simple :

#trigger {Un noeud dans le bois éclate en une pluie d'étincelles.} {} +mute

Notez que le second paramètre (définissant la liste d'actions associées à ce trigger) est vide dans notre exemple. Le troisième paramètre quant à lui est un flag, commençant par + ou - et suivi du nom du flag (ici mute pour créer un trigger muet).

Vous pouvez très bien avoir un trigger muet qui exécute cependant des actions, cela n'est pas du tout incompatible.

Les triggers marqués

Les triggers marqués peuvent être utiles pour l'accessibilité. Quand un trigger marqué se déclenche, il place le curseur directement sur la ligne ayant déclenché ce trigger. Vous pourriez avoir un trigger sur la ligne décrivant les sorties d'une salle, par exemple. Si ce trigger est marqué, quand vous explorerez plusieurs salles, le curseur sera toujours déplacé sur la listes des sorties, plutôt que ramené en bas de la fenêtre, où vous devrez appuyez plusieurs fois sur la flèche haut pour lire les sorties disponibles.

C'est le même principe pour créer ce trigger :

La prochaine fois que vous recevrez une ligne commençant par Sorties : , le curseur sera déplacé automatiquement dessus.

Créer ce trigger avec une instruction SharpScript donne :

#trigger {Sorties : *} {} +mark

Les triggers avec substitution

Dans certains cas, quand un trigger s'exécute, on veut modifier la ligne qui a déclenché le trigger. L'un des exemples les plus fréquents est pour réduire une ligne un peu longue. Certains MUDs ont de longues lignes de texte et mettent l'information importante à la fin, ce qui n'est pas super pratique avec un lecteur d'écran. Par exemple :

Quelqu'un parle publiquement sur le canal 'hrp' avec une petite voix inquiète : c'est sans danger ?

Bien que cette ligne de texte en apprenne beaucoup, l'information vraiment importante (le message) se trouve tout à la fin. Ce pourrait être bien de raccourcir un petit peu cette ligne de texte, et peut-être changer l'ordre des informations.

[hrp] Quelqu'un : c'est sans danger ? (une petite voix inquiète)

Pour faire cela, il faut créer un trigger, et créer une ligne de substitution. Quand le trigger est appelé, la ligne de substitution s'affichera à la place de la ligne d'origine qui a déclenché le trigger.

Créer le même trigger en SharpScript serait :

#trigger {* parle publiquement sur le canal '*' avec * : *} {} {[$2] $1 : $4 ($3)}

Note importante : nous avons trois arguments ici, dans notre action #trigger. Le premier contient toujours le déclencheur du trigger, le second la liste d'actions (vide ici). Le troisième contient la chaîne de substitution. Si il n'y a pas de troisième paramètre, ou que le paramètre est vide, la ligne est affichée telle qu'elle (c'est le cas dans tous nos exemples précédents).

Les triggers déclenchés par expressions régulières

Cette section et celles qui suivent sont un peu plus avancées.

Le symbole astérisque (*) est très pratique. Mais il n'est pas très précis. CocoMUD permet d'écrire des expressions régulières . Le but ici n'est pas de décrire la syntaxe de ces expressions, c'est un sujet à part entière, mais vous trouverez de nombreuses ressources (à commencer par le lien ci-dessus).

Pour utiliser des expressions régulières dans des déclencheurs de trigger, il suffit de commencer le trigger avec le signe ^. CocoMUD comprend que ce déclencheur doit être une expression régulière. Par exemple :

^Vous recevez \d+ XP.$

Ce trigger sera déclenché si vous recevez la ligne "Vous recevez ... XP.", avec ... étant un ou plusieurs chiffres. Ce trigger ne sera pas déclenché par la ligne : "Vous recevez un peu d'XP."

Une chose importante à garder à l'esprit quand on utilise des triggers avec expressions régulières, cependant, est que si on veut capturer des informations, il faut utiliser des groupes de capture (des parenthèses).

^Vous recevez (\d+) XP.$

Ici, le nombre d'XP sera mis dans $1. Vous pouvez aussi utiliser des groupes nommés et y faire référence avec $nom_du_groupe.

Des triggers avancés en Python

Le moteur SharpScript est léger et puissant, mais ce reste un langage de script qui ne permet pas tout. Et qui ne permettra pas tout : il est censé resté léger et optimisé. Ce n'est pas un langage de programmation. Mais Python en est un, et CocoMUD est développé en Python. Le moteur SharpScript a une syntaxe particulière pour envoyer du code à Python directement, ce qui permet d'outre-passer les limites du moteur SharpScript de façon assez définitive. Depuis le code Python, on peut toujours utiliser les fonctions SharpScript, ce qui rend l'élaboration de triggers plus complexes assez simple, dès lors que l'on connaît Python.

Nous allons prendre un exemple, comme toujours, mais souvenez-vous qu'il n'y a pas de réelle limite à ce que vous pouvez faire, tant que Python le permet.

Admettons que le jeu envoie une ligne quand on reçoit de l'XP mais précise aussi le nombre d'XP nécessaire pour passer au niveau suivant.

Par exemple :

Vous recevez 37 XP et avez besoin de 500 pour passer au niveau suivant.

On va vouloir extraire ces deux nombres et afficher un pourcentage à la place : xp / total * 100. Ce n'est pas possible en utilisant simplement du SharpScript.

Pour l'instant, ce n'est pas possible d'utiliser l'interface pour manipuler du code Python. Vous devrez faire les essais en éditant directement le fichier "config.set".

#trigger {Vous recevez * XP et avez besoin de * pour passer au niveau suivant.} {+
    # $1 contient le nombre d'XP gagné
    # $2 contient le total pour passer au niveau suivant
    xp = args["1"]
    total = args["2"]

    # On convertit ces deux nombres
    try:
        xp = int(xp)
        total = int(total)
    except ValueError:
        # La conversion n'a pas marché, mais on ne fait rien
        pass
    else:
        pourcent = xp * 100.0 / total
        say("Vous recevez {}/{} XP ({}%).".format(xp, total, int(pourcent)))
}

Voilà du trigger plutôt avancé ! Quelques explications :

Bien... je ne suis pas vraiment satisfait par le trigger que je viens de créer... on pourrait le raccourcir un petit peu, et le rendre plus lisible. Il ne faut pas toujours chercher la concision, mais ça aide. Si on était sûr que nos variables contiennent des nombres, on aurait moins de code à faire :

#trigger {^Vous recevez (\d+) XP et avez besoin de (\d+) pour passer au niveau suivant.$} {+
    # $1 contient le nombre d'XP gagné
    # $2 contient le total pour passer au niveau suivant
    xp = int(args["1"])
    total = int(args["2"])
    pourcent = xp * 100.0 / total
    say("Vous recevez {}/{} XP ({}%).".format(xp, total, int(pourcent)))
}

Utiliser les expressions régulières ici ajoute un peu de complexité au déclencheur, mais ça rend le code bien plus lisible je trouve.

Si vous voulez plus d'informations sur l'utilisation de code Python dans les instructions SharpScript, vous trouverez une section détaillée dans la documentation du SharpScript.


CocoMUD

CocoMUD est un client MUD qui se veut simple et accessible avec un lecteur d'écran. Son but est de proposer autant de fonctionnalités que n'importe quel client MUD disponible, mais en étant plus accessible. Une des fonctionnalités basiques du client est un Text-To-Speech (TTS) permettant d'envoyer du texte pour être lu par le lecteur d'écran, ou affiché par une plage braille.

Accueil Téléchargement Premiers pas

CocoMUD dans d'autres langues: Anglais.

Utiliser CocoMUD

Pour télécharger le client CocoMUD, rendez-vous sur la page de téléchargement. Si c'est la première fois que vous utilisez CocoMUD, vous pourriez vouloir lire les premiers pas avec CocoMUD pour apprendre à utiliser les fonctionnalités basiques du client.

Fonctionnalités basiques

Les fonctionnalités suivantes servent de base à la planification du développement du client, en suivant sa feuille de route (road map). Vous pouvez cliquer sur l'une de ces fonctionnalités pour voir son avancement (en anglais).

Licence

CocoMUD est distribué sous la licence 3-clause BSD. Son code source est disponible dans son dépôt Github . Malgré tout, la majorité du projet (discussions, bugs, suggestions, forums, documentation) est hébergé par PlanIO.