Aller au contenu

Démarrer une zone depuis un message

Votre plugin d’événements annonce déjà ses lancements dans le chat :

KoTH • Le KoTH Japon vient de commencer !

SomaHider sait lire cette annonce et démarrer la zone tout seul. Il n’y a rien à relier entre les deux plugins : SomaHider regarde simplement passer le chat, et quand un message ressemble à celui que vous lui avez montré, il démarre ou arrête la zone.

Chaque zone accepte deux déclencheurs :

RéglageCe qu’il fait
start_on_chatLe message qui démarre la zone.
stop_on_chatCelui qui l’arrête.

Vous n’avez pas à les écrire à la main : SomaHider peut les construire à partir d’un vrai message.

  1. Lancez l’écoute.

    /sh capture

    SomaHider note maintenant chaque message du chat pendant 60 secondes. Coupez plus tôt avec /sh capture stop si vous avez fini.

  2. Faites apparaître le message.

    Lancez votre événement, ou attendez qu’il démarre de lui-même. Tout ce qui passe dans le chat pendant les 60 secondes est capturé.

  3. Regardez ce qui a été attrapé.

    /sh capture list

    Chaque message est listé avec un numéro devant. En jeu, vous pouvez cliquer directement sur une ligne et sauter l’étape suivante.

  4. Choisissez la ligne et la zone.

    /sh capture use 3 kothjapon start

    Ça se lit ainsi : prends le message numéro 3, et fais-en ce qui démarre la zone kothjapon. Mettez stop à la fin plutôt que start pour le message de fin.

Et c’est tout. La zone démarre désormais dès que ce message apparaît.

Le faire marcher à chaque fois, pas qu’une seule

Section intitulée « Le faire marcher à chaque fois, pas qu’une seule »

Il y a un piège. SomaHider a enregistré le message tel quel, or une annonce d’événement contient presque toujours une partie qui change d’une fois sur l’autre.

Prenons le message de fin :

KoTH • Le KoTH Japon est terminé. La faction Fate remporte l'événement.

La semaine prochaine, le vainqueur ne sera pas Fate. Le message sera donc légèrement différent et la zone ne s’arrêtera pas. Il faut indiquer à SomaHider que cette partie peut être n’importe quoi.

Ouvrez zones.yml, trouvez votre zone, et remplacez la partie qui change par .* :

zones.yml
zones:
kothjapon:
triggers:
start_on_chat: '&6&lKoTH &f• Le KoTH &7Japon &fvient de commencer !'
stop_on_chat: '&6&lKoTH &f• Le KoTH &7Japon &fest terminé\. La faction &6.* &fremporte l''événement\.'

.* signifie « n’importe quoi peut se trouver ici ». Le nom de la faction est devenu &6.*, n’importe quel vainqueur correspond donc maintenant.

Appliquez ensuite :

/sh reload
/sh info kothjapon

Le détail de la zone affiche les déclencheurs enregistrés. S’il en manque un, c’est que SomaHider n’a pas réussi à le lire, et la raison se trouve dans les logs du serveur.

Un déclencheur est comparé à tous les messages du chat, y compris ceux que les joueurs tapent eux-mêmes.

Autrement dit, si votre déclencheur est une phrase toute simple sans la moindre couleur, n’importe quel joueur peut la recopier dans le chat et démarrer ou arrêter votre zone quand ça lui chante.

SomaHider vous prévient quand c’est le cas :

zones.yml: zones.arena: triggers.start_on_chat has no color codes, any player could fire it from chat

Le correctif prend une seconde : gardez au moins un code couleur de l’annonce d’origine dans votre déclencheur. Dans l’exemple plus haut, &6&lKoTH et &f sont des codes couleur. Les joueurs ne peuvent pas taper de couleurs dans le chat, un déclencheur qui en contient est donc infalsifiable.

Si vous les avez supprimés en éditant le fichier, recapturez le message et gardez-en davantage cette fois.

Une zone avec always_on: true tourne en permanence, il n’y a donc rien à démarrer ni à arrêter. SomaHider ignore les déclencheurs sur ce type de zone, le signale dans les logs, et /sh capture use la refuse.