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 Problème commande block

Discussion dans 'Commands blocks & Redstone' créé par Fuama, 21 Déc 2016.

Tags:
  1. Fuama

    Fuama Enter the World

    Inscrit:
    8 Nov 2016
    Messages:
    17
    Points:
    36
    Sexe:
    Homme
    Bonjour,
    Je fais une map event et j'ai un problème pour deux commandes blocks.

    Le premier est que en mettant la commande /spreadplayer donc = /spreadplayers <X Z> <Distance entre les joueurs> <Taille de la zone> <Regroupement par équipe> <Joueurs>
    En mettant la même taille de zone que d'autres commandes telles que give, cela tp hors de cette zone.

    Deuxième problème ou plutôt question : je voudrais savoir s'il est possible de dire au joueur le plus proche du command block le nombre de joueurs exact présent dans une certaine zone et le dire à cette personne en chat.

    Merci d'avance de votre aide, je précise que je suis en minecraft 1.7.10 avec WorldEdit mais que je built pour un serveur en 1.8.8.
     
  2. Calambiel

    Calambiel Résident de l'End

    Inscrit:
    5 Août 2014
    Messages:
    6 595
    Points:
    229
    Il faudrait reformuler ta première question, probablement en donnant les commandes utilisées, car ici ta notion de "zone" n'est pas claire.

    Pour ta deuxième question, il faut utiliser le /stats pour enregistrer dans un score une valeur AffectedEntities testant tous les joueurs que tu veux viser, puis faire un /tellraw donnant ce score au joueur.
     
  3. Fuama

    Fuama Enter the World

    Inscrit:
    8 Nov 2016
    Messages:
    17
    Points:
    36
    Sexe:
    Homme
    Enfaite, je fais une event avec une forme arrondie, avec 25 blocs de haut. Au lancement de l'évent, les joueurs doivent être téléportés à un endroit aléatoire de cette zone. Au bout de 10 secodes, des objets son /give à chaque joueur dans un rayon de 60 blocs autour du centre. Jusque là, c'est normal et les items ne sont donnés que dans ce rayon. Hors, pour le spreadplayers, le rayon que je met dde 60 aussi n'est pas respecté = les joueurs sont quand même téléportés en dehors de la zone.

    Pour le deuxième problème, peut-tu m'écrire la commande si possible.

    Merci d'avance.
     
  4. Calambiel

    Calambiel Résident de l'End

    Inscrit:
    5 Août 2014
    Messages:
    6 595
    Points:
    229
    La distance du spreadplayers n'est pas un rayon mais une aire, les joueurs peuvent être téléportés à 60 blocs de distance en X et en Y tout comme à 10, 20 ou n'importe quelle valeur sur n'importe quel axe. Cela correspond t-il à ce que tu observes ?


    Il n'y a pas une unique commande pour faire cela, le /stats est une commande un peu avancée passant par plusieurs étapes de mise en place, aussi je te conseille de consulter des tutoriels l'utilisant (ici et ici avec une petite application en bonus), si tu as du mal à comprendre il sera ensuite possible de te donner des commandes que tu comprendras plus aisément, directement "à l'aveugle" il y a des gros risques d'erreur.
     
  5. Fuama

    Fuama Enter the World

    Inscrit:
    8 Nov 2016
    Messages:
    17
    Points:
    36
    Sexe:
    Homme
    Oui plus ou moins. Ducoup, comment dois-je faire pour que le spreadplayers téléporte dans la zone voulue équivalente à un rayon de 60 ?
    Pour les 3 liens que tu m'as mis, j'ai justement lus les deux premiers avant que tu ne me les mette. Pour le trosième, j'ai lu à l'instant mais cela ne m'as pas plus aidé.
     
  6. Calambiel

    Calambiel Résident de l'End

    Inscrit:
    5 Août 2014
    Messages:
    6 595
    Points:
    229
    Tu ne peux pas, le spreadplayers téléportera toujours dans une aire, il faut donc choisir de le réduire, ou alors faire ton /give non pas en rayon mais en aire grâce aux sélecteurs x/y/z et dx/dy/dz.



    Bien, ça suffit pour comprendre ce qui va suivre.
    Donc tu vas d'abord poser un command block affectant les joueurs que tu veux compter, il devra être mis sur une /fill clock vu que tu es en 1.8.8.
    Code (cpp):
    /testfor @a
    En mettant bien sur le sélecteur que tu veux.

    Ensuite tu vas exécuter cette commande :
    Code (cpp):
    /stats block <x> <y> <z> set AffectedEntities <Joueur> <Objectif>
    Mettons que le bloc soit en 0,0,0 et que la valeur soit enregistré dans score "Nombre" du joueur "CompteJoueur" (qui est un faux joueur ici, mais cela marche quand même) :
    Code (cpp):
    /stats block 0 0 0 set AffectedEntities CompteJoueur Nombre

    Du fait que ton block testé soit mis à jour par la clock, le score va l'être aussi automatique. Il te suffit donc d'insérer le score dans un tellraw.
     
  7. Fuama

    Fuama Enter the World

    Inscrit:
    8 Nov 2016
    Messages:
    17
    Points:
    36
    Sexe:
    Homme
    Dsl mais qu'est-ce qu'une file clock ? :') Peut-tu me mettre une image stp si possible ^^
     
  8. Calambiel

    Calambiel Résident de l'End

    Inscrit:
    5 Août 2014
    Messages:
    6 595
    Points:
    229
    Une clock est un système permettant d'activer en permanence (enfin, plusieurs fois par seconde), un bloc de commande.

    En 1.9 et supérieur il y a les repeating command block qui remplissent cette fonction. Cependant en 1.8 on a du créer des systèmes en substitution d'une vraie clock automatique, la plus utilisé est la /fill clock qui consiste à placer et retirer dans un même tic un bloc de redstone activant un bloc de commande.

    Ici, pour une commande, place un bloc random.
    Place au-dessus un command block avec cette commande :
    Code (cpp):
    /fill ~ ~-1 ~ ~ ~-1 ~ redstone_block 0 replace
    Et au-dessous :
    Code (cpp):
    /fill ~ ~1 ~ ~ ~1 ~ air 0 replace
    Cole ensuite ta commande sur un coté du bloc, puis remplace celui-ci par un bloc de redstone. La commande s'active maintenant 20 fois par seconde.


    Si ça n'est toujours pas clair, je te laisse chercher sur YouTube, c'est pas les vidéos qui manquent à ce sujet.
     
  9. Fuama

    Fuama Enter the World

    Inscrit:
    8 Nov 2016
    Messages:
    17
    Points:
    36
    Sexe:
    Homme
    upload_2016-12-22_23-54-14.png
    Ducoup je dois bien avoir ca et le bloc à gauche doit donc être le testfor ? Si c'est cela, je dois donc faire en sorte que lorsque j'appuierai sur le bouton pour connaître le nombre de joueurs, les commandes
    /stats block <x> <y> <z> set AffectedEntities <Joueur> <Objectif>
    /stats block 0 0 0 set AffectedEntities CompteJoueur Nombre
    devront s'executer ?
     
  10. Calambiel

    Calambiel Résident de l'End

    Inscrit:
    5 Août 2014
    Messages:
    6 595
    Points:
    229
    C'est bien ça pour la clock.

    En revanche le /stats n'a besoin d'être réalisé qu'une seule fois, il va "lier" la valeur choisie (ici AffectedEntites) à un score, plus besoin de l'exécuter à nouveau à moins d'avoir cassé le bloc.
    Le nombre de joueur se mettra à jour dés que le bloc sera activé, tu as juste à l'afficher à un joueur via tellraw ou autre.
     
  11. Fuama

    Fuama Enter the World

    Inscrit:
    8 Nov 2016
    Messages:
    17
    Points:
    36
    Sexe:
    Homme
    upload_2016-12-23_3-12-54.png


    Pour être sûr du stats, je le mettrais à chaque fois. J'ai mis en commmande :
    _//stats block 66 125 82 set AffectedEntities CompteJoueur Nombre (où 66 125 82 sont les coordonnées du blocs de commande, pas du centre de la zone de laquelle je veux savoir le nombre de joueurs)
    _/tellraw @p {text:"Score : ",extra:[{score:{name:"CompteJoueur",objective:Nombre}}]} (commande que j'ai trouvé ici => http://fr-minecraft.net/commande-tellraw-cmd.html)

    Du coup quand j'appuie sur le bouton situé à gauche (commence par /stats) j'ai dans le chat "score :" sans rien derrière même quand quelqu'un est dans la zone. Pourrais-tu me dire où est l'erreur ducoup ?

    D'ailleurs comme testfor j'ai :
    /testfor @a[x1=69,y1=102,z1=17,r1=59,x2=69,y2=103,z2=17,r2=59,x3=69,y3=104,z3=17,r3=59,x4=69,y4=105,z4=17,r4=59,x5=69,y5=106,z5=17,r5=59,x6=69,y6=107,z6=17,r6=59,x7=69,y7=108,z7=17,r7=59,x8=69,y8=109,z8=17,r8=59,x9=69,y9=110,z9=17,r9=59,x10=69,y10=111,z10=17,r10=59,x11=69,y11=112,z11=17,r11=59,x12=69,y12=113,z12=17,r12=59,x13=69,y13=114,z13=17,r13=59,x14=69,y14=115,z14=17,r14=59,x15=69,y15=116,z15=17,r15=59]
    J'ai mis pleins de valeurs car si je ne met par exemple que pour le point 1, je ne vais pas vérifier la partie haute de l'arène. Et si j'augmente le rayon, cela va aussi prendre en dehors de l'arène.
     
    #11 Fuama, 23 Déc 2016
    Dernière édition: 23 Déc 2016
  12. Calambiel

    Calambiel Résident de l'End

    Inscrit:
    5 Août 2014
    Messages:
    6 595
    Points:
    229
    Par contre tu ne peux prendre qu'un seul ensemble de sélecteurx x/y/z et dx/dy/dz, il n'est pas possible de faire une commande comme tu l'as fait.
    Si tu veux détecter dans plusieurs zones, il te faudra faire plusieurs testfor, ce qui complique un peu la tache étant donné que le /stats ne va concerner qu'un seul bloc de commande. Donc une solution serait de passer par l'attribution de score par plusieurs commandes à des joueurs dans plusieurs zones, puis compter avec le testfor combien ont ce score (sans oublier de leur enlever à chaque cycle bien sur).

    Pour le /stats c'est en partie ma faute, j'ai oublié de préciser qu'il faut donner un score de 0 au joueur visé pour qu'il existe et puisse se mettre à jour :
    Code (cpp):
    /scoreboard players set CompteJoueur Nombre 0
    Par contre il y a un autre problème potentiel, à toi de nous éclairer. Tu es toujours en 1.7.10 ou tu as fais le passage à la 1.8 ? Car le /stats est une commande ajoutée en 1.8 (donc inexistante en 1.7), et celle-ci est particulièrement soumise aux bug lors de l'utilisation d'une version non vanilla.
     
    #12 Calambiel, 23 Déc 2016
    Dernière édition: 23 Déc 2016
  13. Fuama

    Fuama Enter the World

    Inscrit:
    8 Nov 2016
    Messages:
    17
    Points:
    36
    Sexe:
    Homme
    Depuis avant-hier, je commence à build sur le serveur en 1.8.8 sous spigot. Ok, ou autrement je referais 15 fois ce que j'ai mis dans la photo c'est ca ?
    Je dois bien mettre /scoreboard players set CompteJoueur Nombre 0 entre les 2 blocs de la photo ?
     
  14. Calambiel

    Calambiel Résident de l'End

    Inscrit:
    5 Août 2014
    Messages:
    6 595
    Points:
    229
    Aucune idée de si ça peut en être la cause, mais il est totalement possible que Spigot empêche le /stats de fonctionne, tu ne pourras vérifier qu'en vanilla.

    J'avoue ne pas comprendra ta question.
    Tu as créé ta fill clock, qui s'active 20 fois par seconde (tu peux le voir en essayant de casser le bloc de redstone qui doit se replacer tout seul), avec le /testfor qui met à jour le score une fois le /stats exécuté (une seule fois), le score se met tout seul à jour (comme dit plus haut, s'il existe, donc donne lui une valeur random puis il se modifiera seul), tu n'as qu'à l'afficher, pas besoin d'autres commandes.
     
  15. Fuama

    Fuama Enter the World

    Inscrit:
    8 Nov 2016
    Messages:
    17
    Points:
    36
    Sexe:
    Homme
    Vu que mon arène est ronde et haute et que prendre un rayon de 60 ne prends pas toute l'arène, pour "scanner" toute l'arène je dois donc refaire plusieurs fois quelque chose non ? D'ailleurs, comment remplacer le @a avec essential car ducoup mes deux events ne fonctionnent plus puisqu'elles utilisaient en grande partie des command blocs avec des @a dedans.
     

Partager cette page