[1.21] Détecter et appliquer un score à tous les joueurs qui ne se trouvent pas dans une zone

ChatEmPotee

Architecte en herbe
6 Mai 2017
2
0
62
20
Bonjour à toutes et tous,
Je poste ici car je ne trouve pas la réponse sur internet et sur le blog.

Je cherche actuellement une commande qui me permettrait d'appliquer un certain score à tous les joueurs qui ne se trouvent PAS dans une certaine zone, et ce de manière individuelle. En effet, je sais faire en sorte qu'une fois entré dans une zone, cela applique un certain score, et une fois sorti, cela applique un autre score, cependant, je n'arrive à le faire que pour moi-même et pas dans un serveur multijoueur.

Voici la commande que j'ai utilisé pour détecter les joueurs qui se trouvent dans la zone donnée :

-> execute at @a[x,y,z,dx,dy,dz] run scoreboard players set @a[x,y,z,dx,dy,dz] "score" 1

Maintenant, il faudrait que je trouve une commande qui applique à tout joueur @a ne se trouvant pas dans cette zone le score 0. Dans les tests que j'ai pu effectuer en multijoueur, il m'était possible de détecter tout joueur se trouvant dans la zone et d'indiquer cela dans la sidebar. En revanche, quand un joueur quittait la zone, la commande que j'avais précedemment mis en place ne mettait pas le score du joueur à 0 hormis si tous les joueurs déjà présents dans la zone la quittaient.
Voici la commande en question :

-> execute unless entity @a[x,y,z,dx,dy,dz] run scoreboard players set @a "score" 0

Je suppose que la commande ci-dessus ne fonctionne pas à cause de l'utilisation du sélecteur "@a", cependant, je ne sais pas comment modifier la commande pour que cela fonctionne.
Techniquement, bien que cela ne fonctionne pas, il faudrait que la commande ait cet effet : "execute at !@a[x,y,z,dx,dy,dz] run ...". Sinon, auriez-vous des suggestions à me proposer pour contourner le problème ?

Je vous remercie d'avance pour toute réponse, et souhaite vivement que l'on me dise si ce que je souhaite faire est possible.
 
Bonsoir,

Essaye cette commande :
Code:
/execute as @a unless @s[x,y,z,dx,dy,dz] run scoreboard players @s "score" 0
         ~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          (1)             (2)                            (3)

Tu peux mettre autant de sous-commandes que tu veux, tant que la dernière est un run ;
Code:
/execute run say Hi !
Et donc voir la commande comme étant trois /execute.

Cordialement,
ShE3py
 
  • J'aime
Reactions: ChatEmPotee
Bonsoir,

Essaye cette commande :
Code:
/execute as @a unless @s[x,y,z,dx,dy,dz] run scoreboard players @s "score" 0
         ~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          (1)             (2)                            (3)

Tu peux mettre autant de sous-commandes que tu veux, tant que la dernière est un run ;
Code:
/execute run say Hi !
Et donc voir la commande comme étant trois /execute.

Cordialement,
ShE3py
Merci beaucoup pour ta réponse. En effet, j'ignorai qu'on pouvait mettre autant de sous commandes. Je testerai très prochainement si cette commande fonctionne correctement en multijoueur et donc répond à mes attentes.

Bien cordialement,

Quarras (ancien pseudo : ChatEmPotee)

;)