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

Résolu Compteur joueur redstone

Discussion dans 'Commands blocks & Redstone' créé par Rethiw, 4 Déc 2018.

  1. Rethiw

    Rethiw Nouveau

    Inscrit:
    4 Déc 2018
    Messages:
    7
    Points:
    4
    Sexe:
    Homme
    Bonjour,
    J'utilise sur mon serveur le système suivant pour compter les joueurs, en attente d'un mini-jeu par exemple.

    Le problème : jusqu'en 1.12.2 la commande était /testfor @a[x=…,y=…,z=…,r=…]
    Depuis la 1.13, le /testfor a été retiré et je ne sais plus comment faire.
    J'ai bien essayé /execute if entity @a[x=…,y=…,z=…,distance=…] mais le système ne fonctionne toujours pas.

    Merci d'avance pour vos réponses.
     

    Fichiers attachés:

  2. rexmine05

    rexmine05 Explorateur

    Inscrit:
    21 Fev 2017
    Messages:
    56
    Points:
    82
    quelle est la commande que tu veux exécuter après avoir obtenu le nombre de joueur?

    si il n'y en a pas, tu peux utiliser un moyen détourné qui consiste a creer un scoreboard inutile et a faire cette commande
    Code (cpp):
    /execute if entity @a[distance=..10,x=,y=,z=] run scoreboard players set @a inutile 0
    Le ..10 c'est pour 10 blocs ou moins
     
  3. Lighar

    Lighar Explorateur

    Inscrit:
    15 Nov 2014
    Messages:
    74
    Points:
    78
    Sexe:
    Homme
    Je suis pas très doué en commande 1.13, mais je pense que le mieux c'est de créer un score, puis de faire que chaque joueur ajoute 1 à ce score :
    1) Création du score :
    Code (cpp):
    /scoreboard objectives add Joueur dummy
    2) On summon une Armor-Stand, nommé Nombre :
    Code (cpp):
    /summon armor_stand ~ ~ ~ {CustomName:"{\"text\":\"Nombre\"}"}
    2) On place un command_block qui remet à 0 le score de cet Armor-Stand :
    Code (cpp):
    /scoreboard players reset @e Joueur
    4) On ajoute un command_block en chaîne qui fait que chaque joueur ajoute 1 au score de l'Armor-Stand dans les conditions voulues :
    Code (cpp):
    /execute positioned <x> <y> <z> as @a[distance=..DistanceAutourDuBlocVoulu] run scoreboard players add @e[name=Nombre] Joueur 1
    5) On peut tester le score avec un execute sur l'armor_stand par exemple :
    Code (cpp):
    /execute as @e[scores={Joueur=10..}] run say a
    J'ai testé, il ne semble pas y avoir de problème,
    En espérant que ça marchera pour toi ;)
     
    #3 Lighar, 4 Déc 2018
    Dernière édition: 4 Déc 2018
  4. Rethiw

    Rethiw Nouveau

    Inscrit:
    4 Déc 2018
    Messages:
    7
    Points:
    4
    Sexe:
    Homme
    Merci de vos réponses, je me suis compliqué la vie avec les command_block les scoreboards ont l'air plus facile à utiliser.

    Mais meme en suivant les étapes de Lighar le test du score ne fonctionne pas...
     
  5. Lighar

    Lighar Explorateur

    Inscrit:
    15 Nov 2014
    Messages:
    74
    Points:
    78
    Sexe:
    Homme
    C'est modifié, je pense que ça venait juste de la commande /execute finale
    Dis moi si c'est bon
     
  6. Rethiw

    Rethiw Nouveau

    Inscrit:
    4 Déc 2018
    Messages:
    7
    Points:
    4
    Sexe:
    Homme
    Non toujours pas :c J'ai très peu de connaissance en scoreboard mais j'ai pourtant bien tout suivi et je me demande /execute positioned <x> <y> <z> c'est les coordonnées de quoi ? J'ai mis celles de l'armor_stand mais ca me parait pas très logique
     
  7. Daminator4113

    Daminator4113 Enter the World

    Inscrit:
    5 Août 2017
    Messages:
    32
    Points:
    52
    Sexe:
    Homme
    Pour faire un compteur de joueur (ou autre) en 1.13, c'est très simple.

    Tu commences par créé un score :
    Code (cpp):
    /scoreboard objectives add PlayerCount dummy
    Puis tu exécutes ces commandes en continue :
    Code (cpp):
    /execute store result score PlayerNumber PlayerCount if entity @a
    /execute if score PlayerNumber PlayerCount matches <nombre de joueurs> run <ta commande>
    Remplaces juste <nombre de joueurs> par le nombre de joueurs max, pour exécuter <ta commande>.

    Par exemple :
    • 10.. signifie "10 joueurs ou plus"
    • 10 signifie "strictement 10 joueurs, pas 9, ni 11"
    • ..10 signifie "10 joueurs ou moins".
     
  8. Lighar

    Lighar Explorateur

    Inscrit:
    15 Nov 2014
    Messages:
    74
    Points:
    78
    Sexe:
    Homme
    J'avais compris que tu voulais dans un rayon autour d'un bloc précis, dû au "@a[x=…,y=…,z=…,distance=…]", x y et z représente les coordonnés de ce bloc.
    Mais le store result de la solution proposé par Daminator4113 est bien plus optimisé que l'utilisation d'un Armor-Stand génère du lag
     
    • J'aime J'aime x 1
  9. Rethiw

    Rethiw Nouveau

    Inscrit:
    4 Déc 2018
    Messages:
    7
    Points:
    4
    Sexe:
    Homme
    Merci encore de vos réponses !
    Je pense qu'on approche de la solution, effectivement en suivant les indications de Daminator4113, j'ai réussi à effectuer un test avec "say a", mais lorsque je rentre les coordonnées dans le sélecteur @a et que je me rends aux coordonnées le "say a" ne fonctionne pus :c
     

    Fichiers attachés:

  10. Lighar

    Lighar Explorateur

    Inscrit:
    15 Nov 2014
    Messages:
    74
    Points:
    78
    Sexe:
    Homme
    Tu peux essayer de rajouter les conditions avant le /execute avec les nouvelles options du /execute :

    Code (cpp):
    /execute positioned [Coordonnées de ton centre de recherche de joueur] as @a[distance=..[Distance dans laquelle tu veux trouver tes joueurs]] run execute store result score PlayerNumber PlayerCount if entity @a
     
  11. Rethiw

    Rethiw Nouveau

    Inscrit:
    4 Déc 2018
    Messages:
    7
    Points:
    4
    Sexe:
    Homme
    Alors alors…
    Les coordonnées du bloc de recherche et le rayon sont bien là mais le jeu continu de m'afficher le "a" meme quand je ne suis plus dans la zone indiquée. Sur le screen j'ai rentré une distance de 50, et meme à plus de 200 blocs des coordonnées le "a" est affiché en continu
     

    Fichiers attachés:

  12. Lighar

    Lighar Explorateur

    Inscrit:
    15 Nov 2014
    Messages:
    74
    Points:
    78
    Sexe:
    Homme
    Il faut remettre le score à 0 après, en créant un commande bloc chaine sur le commande bloc qui donne le score, sinon il restera toujours pareil :
    Code (cpp):
    scoreboard players reset PlayerNumber PlayerCount
    Je pensais que tu avais déjà un commande bloc qui faisait ça, je l'ai donc pas précisé, désolé :/
     
  13. Rethiw

    Rethiw Nouveau

    Inscrit:
    4 Déc 2018
    Messages:
    7
    Points:
    4
    Sexe:
    Homme
    Merci xD, mais le soucis persiste, je pense que c'est des erreurs vraiment bêtes mais je trouve pas...
    La construction ressemble à : CommandBlock Répétition (Actif)
    CommandBlock Chaine (Actif)
    CommandBlock Chaine (Actif)

    Et les commandes dans le meme ordre que les CommandBlock :

    /execute positioned -138 87 190 as @a[distance=50] run execute store result score PlayerNumber PlayerCount if entity @a
    /scoreboard players reset PlayerNumber PlayerCount
    /execute if score PlayerNumber PlayerCount matches 1 run say a

    Et je n'ai pas de a qui apparait dans le tchat
     
  14. Lighar

    Lighar Explorateur

    Inscrit:
    15 Nov 2014
    Messages:
    74
    Points:
    78
    Sexe:
    Homme
    Positionne le commande bloc avec "/execute if score PlayerNumber PlayerCount matches 1 run say a" avant celui qui remets le score à 0 : "/scoreboard players reset PlayerNumber PlayerCount"

    Dans l'odre :
    CommandBlock Répétition (Actif) : /execute positioned -138 87 190 as @a[distance=..50] run execute store result score PlayerNumber PlayerCount if entity @a
    CommandBlock Chaine (Actif) : /execute if score PlayerNumber PlayerCount matches 1 run say a
    CommandBlock Chaine (Actif) : /scoreboard players reset PlayerNumber PlayerCount
    Car là le problème c'est que le score est remis à zéro puis le test s’exécute, il ne peut donc jamais être vrai

    Et pour l'argument "distance" il faut mettre "..50", c'est une nouvelle règle de la 1.13. Un exemple du wiki officiel :
    "Il n'y a plus de valeurs séparées "min" et "max", nous supportons plutôt les intervalles.

      • level=10 est de niveau 10
      • level=10..12 est de niveau 10, 11 ou 12
      • level=5.. est quelque chose de niveau 5 ou plus
      • level=..15 est quelque chose de niveau 15 ou moins"
    Je pense que ça devrais être bon avec ces deux modifications
     
  15. Rethiw

    Rethiw Nouveau

    Inscrit:
    4 Déc 2018
    Messages:
    7
    Points:
    4
    Sexe:
    Homme
    Enfin !!!!!!!!!!!
    Merci beaucoup à vous, en effet c'était juste un probleme d'ordre et le ..50 au lieu de 50.
    Merci encore !
     
    • J'aime J'aime x 1

Partager cette page