1. Le forum de Minecraft-France va définitivement fermer ses portes. Celui-ci restera en lecture seule mais vous ne pourrez plus y apporter de nouveaux topics. Nous vous invitons à nous rejoindre sur le Discord de Minecraft-France qui permet de présenter vos projets, discuter avec la communauté etc.. Merci à tous d'avoir fait vivre ce forum de nombreuses années. Pour nous rejoindre sur Discord, Cliquez ici

Detection d'un joueur HORS d'une zone (1.15)

Discussion dans 'Redstone & Commands blocks' créé par AlphaHero, 25 Mar 2020.

  1. AlphaHero

    AlphaHero Nouveau

    Inscrit:
    25 Mar 2020
    Messages:
    2
    Points:
    0
    Sexe:
    Homme
    Bonjour,

    J'aimerais faire une sorte d'arene en multijoueur.
    En fait, il faudrait que dès que les joueurs rentrent dans la zone de combat, ceux-ci soit équipé immédiatement avec armure, armes, etc... Pour cela, j'utilise les scoreboard (qui me semblait les plus appropiées mais d'autres idées sont les bienvenues) qui donne, à tout joueur étant dans la zone, une valeur de 1, de tel manière a pouvoir déterminer qui équiper... Jusqu'ici tout va bien, mais il me faudrait savoir comment déséquiper les joueurs qui quittent l'arène, donc trouver un moyen de detecter les joueurs qui sont hors de la zone.
    Ce qui me bloque est le selecteur a appliquer mais il y a peut-etre un meilleur moyen d'utiliser un /execute...
    Voici la commande qui donne une valeur de 1 aux joueurs dans la zone: (la zone est petite étant donné que se sont encore des tests et "zone" étant l'objectif utilisé ici dans les scoreboards)
    Code (cpp):
    /execute if entity @a[x=-16,y=50,z=8,dx=6,dy=3,dz=7] run scoreboard players set @a[x=-16,y=50,z=8,dx=6,dy=3,dz=7] zone 1
    Et maintenant, reste a trouver un moyen de selectionner les joueurs qui sortent de la zone, j'ai reussi a le faire en solo, mais cela car j'étais seul, en fait, en multijoueur, la commande que j'utilisais aurait redonné une valeur de 0 à tous les joueurs même si seulement un seul sort de la zone... la voici:
    Code (cpp):
    execute unless entity @a[x=-16,y=50,z=8,dx=6,dy=3,dz=7] run scoreboard players set @a[x=-16,y=50,z=8,dx=6,dy=3,dz=7] zone 0
    Et donc ici, je ne sais pas quel selecteur mettre/modifier pour arriver a selectionner tous les joueurs SAUF ceux dans la zone...

    J'espère avoir été clair

    Merci d'avance pour votre aide
     
  2. Agraod

    Agraod Nouveau

    Inscrit:
    23 Août 2015
    Messages:
    5
    Points:
    65
    Sexe:
    Homme
    Hello,

    Dans un premier temps je te conseillerais d'utiliser le target selector "@s" pour éviter d'avoir à réécrire @a[coordonnéesXYZ,DxDyDz] quand tu "run" le scoreboard dans tes 2 commandes car ça prend en compte la/les dernière(s) entité(es) à avoir exécuté la commande.

    Pour la solution, je pense qu'il faudrait que tu rajoutes le score "zone" dans le target selector pour que le jeu évite de sélectionner tout les joueur quand une seule personne sort de l'arène.

    Ce qui devrait donner ceci :

    Code (cpp):
    /execute if entity @a[x=-16,y=50,z=8,dx=6,dy=3,dz=7] run scoreboard players set @s[scores={zone=0}] zone 1
    Code (cpp):
    execute unless entity @a[x=-16,y=50,z=8,dx=6,dy=3,dz=7] run scoreboard players set @s[scores={zone=1}] zone 0
    En gros, pour la dernière ligne de commande ils se passe ceci :

    Executer sauf si les joueurs ne sont plus aux coordonnées [x=-16,y=50,z=8,dx=6,dy=3,dz=7] alors, pour ces derniers, ET qui ont un score zone=1, mettre ce score zone à 0.
     
  3. AlphaHero

    AlphaHero Nouveau

    Inscrit:
    25 Mar 2020
    Messages:
    2
    Points:
    0
    Sexe:
    Homme
    Merci pour l aide mais je me suis renseigné sur la commande execute entre temps et j y ai trouvé la solution a mon probleme comme tu me le montre ici ^^ cette commande est vraiment completes et tres utile pour faire des système d arrangement de joueurs d ailleurs!
     

Partager cette page