Aller au contenu

Laisser certains joueurs se reconnaître

Une zone masque tout le monde vis-à-vis de tout le monde, ce qui est rarement ce qu’on veut. Dans un événement en factions, les joueurs doivent quand même distinguer leur camp de l’ennemi. Sinon ils passent le combat à taper leurs propres coéquipiers.

Une règle de révélation est une exception au masquage. Elles s’écrivent sous reveal, dans la zone.

Vous voulezLa règle à écrire
Que les coéquipiers se reconnaissentsame_placeholder sur un placeholder de faction ou d’équipe
Que le staff voie tout le mondeRien. Donnez-lui soma.hider.bypass et laissez-le utiliser /sh bypass
Qu’une faction précise soit visible de tousmatch sur un placeholder de faction
Que les coéquipiers apparaissent aux couleurs de leur factionsame_placeholder avec un bloc disguise

Tout sauf le cas du staff réclame PlaceholderAPI. Sans lui, SomaHider inscrit un avertissement dans les logs pour cette zone et les joueurs concernés restent simplement masqués.

Faire en sorte que les coéquipiers se reconnaissent

Section intitulée « Faire en sorte que les coéquipiers se reconnaissent »

C’est la règle que vous écrirez le plus souvent.

  1. Trouvez un placeholder qui renvoie la même valeur pour deux coéquipiers.

    Avec Factions, c’est en général %factionsuuid_faction_name%. N’importe quel placeholder convient du moment que deux joueurs du même camp obtiennent la même réponse et que deux ennemis non.

    Testez-le d’abord en jeu avec /papi parse me %factionsuuid_faction_name%.

  2. Ajoutez la règle à votre zone.

    zones.yml
    zones:
    kothjapon:
    world: events
    center:
    x: 1500
    z: 1500
    radius: 150
    reveal:
    - type: same_placeholder
    placeholder: "%factionsuuid_faction_name%"
  3. Appliquez.

    /sh reload

Les membres d’une même faction se voient désormais normalement. Tous les autres continuent de les voir déguisés.

Une règle n’est pas obligée de montrer le vrai joueur. Elle peut le montrer sous une autre identité.

Ajoutez un bloc disguise à la règle, et les joueurs qu’elle sélectionne apparaissent sous ce second déguisement au lieu de leur vraie identité :

zones.yml
reveal:
- type: same_placeholder
placeholder: "%factionsuuid_faction_name%"
disguise:
name:
value: '%factionsuuid_faction_name%'
skin: '%factionsuuid_faction_leader%'

Les coéquipiers se voient maintenant sous le nom de leur faction, avec le skin de leur chef. Les ennemis, eux, continuent de voir le déguisement normal de la zone. Personne ne voit de vrai pseudo à aucun moment.

Une règle a donc deux issues possibles, et ce qui les départage tient uniquement à la présence ou non d’un bloc disguise :

La règle correspond, etL’observateur voit
elle n’a pas de disguiseLe vrai joueur.
elle a un disguiseCe second déguisement.
aucune règle ne correspondLe déguisement normal de la zone.

match compare un placeholder à une valeur de votre choix. Cette valeur peut elle-même être un placeholder, et c’est ce qui lui permet de suivre le jeu :

zones.yml
reveal:
- type: match
placeholder: "%factionsuuid_faction_name%"
equals: "%koth_faction%"

Celui qui tient le KoTH à cet instant est révélé à toute la zone, et la révélation se déplace d’elle- même quand le point change de mains.

equals accepte aussi une valeur fixe, ou une liste :

zones.yml
reveal:
- type: match
placeholder: "%factionsuuid_faction_name%"
equals: ["Fate", "Showry"]

La casse n’entre pas en compte dans la comparaison.

Vous pouvez écrire une règle permission :

zones.yml
reveal:
- type: permission
node: myserver.staff

mais pour la modération, /sh bypass est en général la meilleure réponse. C’est une bascule que chaque membre du staff active et désactive lui-même, elle vaut pour toutes les zones à la fois, et elle ne demande aucune configuration. Accordez soma.hider.bypass et vous avez fini.

Gardez la règle permission pour les cas où un groupe doit toujours voir à travers une zone particulière, sans avoir à y penser.

SomaHider parcourt la liste de haut en bas et s’arrête à la première règle qui correspond. C’est elle qui décide de ce que voit l’observateur, et les suivantes ne sont pas examinées pour ce couple de joueurs.

Placez les règles précises au-dessus des règles générales :

zones.yml
reveal:
- type: match
placeholder: "%factionsuuid_faction_name%"
equals: "%koth_faction%"
- type: same_placeholder
placeholder: "%factionsuuid_faction_name%"
/sh info kothjapon

Les règles effectivement lues apparaissent dans le détail de la zone. Une règle absente de cette liste a été rejetée, et la raison se trouve dans les logs du serveur :

zones.yml: zones.kothjapon: reveal[0] type is required (permission, same_placeholder, relational, match)
zones.yml: zones.kothjapon: reveal[1] placeholder must look like %expansion_params%

Le nombre entre crochets est la position dans votre liste, en comptant à partir de zéro.