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 Détecter quel block à été le plus posé

Discussion dans 'Mapping' créé par JulienML, 8 Août 2015.

  1. JulienML

    JulienML Enter the World

    Inscrit:
    20 Juil 2015
    Messages:
    49
    Points:
    62
    Sexe:
    Homme
    Bonjour/Bonsoir,
    Voilà, j'aimerais que, grâce à un command block on puisse détecter quel block a été le plus posé (voir screenshot en dessous). J'ai regardé rapidement le /help et j'ai pensé que la commande /testforblocks pour m'être utile sauf que, voilà le problème, je ne sais pas l'utiliser, pouvez-vous m'aider svp ?
    Screenshot : http://www.noelshack.com/2015-32-1439032369-2015-08-08-13-12-05.png
    Ne faites pas attention au command blocks au dessus c'est pour une autre chose ;)
    Merci d'avance !
    JulienML

    PS : Faites attention c'est la commande /testforblocks et non pas /testforblock !
     
  2. The_Murmex

    The_Murmex Mineur de Fer

    Inscrit:
    4 Jan 2015
    Messages:
    654
    Points:
    71
    Sexe:
    Homme
    Je ne crois pas que cette commande te soit utile, je pense plutôt à un /stats et un /fill
     
  3. JulienML

    JulienML Enter the World

    Inscrit:
    20 Juil 2015
    Messages:
    49
    Points:
    62
    Sexe:
    Homme
    Peux-tu me dire la commande stp ?
    Dsl pour le double post
     
  4. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 694
    Points:
    180
    Sexe:
    Homme
    Ce sera soot un testforblocks soit un /fill. Dans les deux cas, pour obtenir un nombre (que tu pourras ensuite comparer pour retrouver le plus grand), il faut utiliser un /stats (y a un petit tutoriel sur cette commande dans la section suscitée).
    Il te faudra faire un /fill ou un /testforblocks par type de bloc à compter (et un /stats en plus à chaque fois).
    Pour le testforblocks, il te faudra créer des zones témoins et utiliser l'argument masked.
    Pour connaître le plus élevé, il faut utiliser l'opérateur > (/scoreboard players operation Most objectif > * objectif).
     
    • J'aime J'aime x 1
  5. JulienML

    JulienML Enter the World

    Inscrit:
    20 Juil 2015
    Messages:
    49
    Points:
    62
    Sexe:
    Homme
    En fait, je crée une map qui ressemble un peu au jeu Splatoon et à la fin de la partie j'aimerais savois quelle équipe (rouge ou bleue) a colorié le plus de blocks par terre.
    Peux-tu me mettre les commandes si ça ne te dérange pas ? :)
     
    • Informatif Informatif x 1
  6. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 694
    Points:
    180
    Sexe:
    Homme
    Si je ne donne pas les commandes dès le début, c'est que ça se complexifie assez vite. Je te laisse un exemple fonctionnel, mais il ne remplira peut-être pas à 100% ton cahier des charges.
    Tu peux télécharger la map Splatoon de Sethbling si tu as besoin d'une map exemple.

    Si tu ne fais le test qu'en fin de partie, on peut imaginer ceci :
    Arène en laine grise avec une coloration rouge ou bleu possible
    Un bloc de commande A avec la commande suivante:
    Code (cpp):
    /fill X Y Z X' Y' Z' minecraft:wool 7 replace minecraft:wool 14
    Un bloc de commande B avec la commande suivante:
    Code (cpp):
    /fill X Y Z X' Y' Z' minecraft:wool 7 replace minecraft:wool 11
    Avec X Y Z et X' Y' Z' les coordonnées de deux points opposés.
    L'avantage, c'est que tu as un reset de l'arène intégré.

    Ensuite, il faut créer un objectif:
    Code (cpp):
    /scoreboard objectives add compteur dummy
    Ensuite, il faut appliquer les /stats (à faire une seule fois, la commande peut être tapée dans le chat)
    Code (cpp):
    /stats block xa ya za set AffectedBlocks Rouge compteur
    /stats block xb yb zb set AffectedBlocks Bleu Compteur
    xa, ya et za les coordonnées du bloc A (même chose pour B)

    Quand les /fill s'exécuteront, ça "calculera" le nombre de bloc pour chaque équipe.
    Maintenant, obtenir le meilleur des deux. Il faut juste une suite de bloc de commande avec, dans le bon ordre :
    Code (cpp):
    /scoreboard players operation #top compteur > * compteur
    /tellraw @a [{text:"Il y a "},{score:{objective:"compteur",name:"Rouge"}},{text:" blocs rouges et "},{score:{objective:"compteur",name:"Bleu"}},{text:" blocs bleus."}]
    /scoreboard players operation * compteur -= #top compteur
    /scoreboard players test Rouge compteur 0 0
    /scoreboard players test Bleu compteur 0 0
    Un petit comparateur devant les deux derniers blocs et celui qui s'allume correspond à l'équipe ayant eu le meilleur score.

    Inconvénients : les tests sont destructifs (l'arène est réinitialisée et on perd la valeur du meilleur score), mais il est possible de bidouiller un peu avec des entités de test ou en changeant les commandes utilisées si c'est dérangeant. Le tellraw est optionnel, mais peut servir pour vérifier le bon déroulement du process.
     
    • J'aime J'aime x 1
    #6 Mlakuss, 8 Août 2015
    Dernière édition: 8 Août 2015
  7. JulienML

    JulienML Enter the World

    Inscrit:
    20 Juil 2015
    Messages:
    49
    Points:
    62
    Sexe:
    Homme
    Wow, t'es vraiment super fort !
    Merci beaucoup, j'essaierais demain et je te tien au courant.
    Encore merci, JulienML
     
    • J'approuve J'approuve x 1
  8. JulienML

    JulienML Enter the World

    Inscrit:
    20 Juil 2015
    Messages:
    49
    Points:
    62
    Sexe:
    Homme
    Ca ne marche pas... :(
    Les 2 derniers blocks de commande (ceux avec les comparateurs) me mettent : "Pas de score compteur trouvé pour Rouge" et "Pas de score compteur trouvé pour Bleu".
    Je pense savoir d'où vient le problème mais j'ai une question : Quand tu dis : "xa, ya et za les coordonnées du bloc A (même chose pour B)", tu parles des blocks de commandes ??
    JulienML
     
    • Informatif Informatif x 1
  9. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 694
    Points:
    180
    Sexe:
    Homme
    Oui, le /stats va ajouter un nouveau tag, invisible en jeu, au bloc de commande.
    Si tu veux vérifier que cela a bien fonctionné, essaye ceci:
    Code (cpp):
    /blockdata xa ya za {}
    Et postes ici le message d'erreur (tu dois normalement avoir une liste de tout les tags).
     
    • J'approuve J'approuve x 1
  10. JulienML

    JulienML Enter the World

    Inscrit:
    20 Juil 2015
    Messages:
    49
    Points:
    62
    Sexe:
    Homme
    Ca me met bien la liste de tous les tags mais ça ne change rien :(
    Juste.... petite question qui n'a rien à voir : comment tu fais les "code (cpp)"
     
    • Informatif Informatif x 1
  11. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 694
    Points:
    180
    Sexe:
    Homme
    "Et tu postes ici le message d'erreur", si tu ne le fais pas, je ne peux pas vérifier si le /stats a fonctionné ou non.
    La balise pour les codes, c'est [ code ] (sans les espaces).
     
    • J'approuve J'approuve x 1
  12. JulienML

    JulienML Enter the World

    Inscrit:
    20 Juil 2015
    Messages:
    49
    Points:
    62
    Sexe:
    Homme
    • Informatif Informatif x 1
  13. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 694
    Points:
    180
    Sexe:
    Homme
    Le /stats est correctement appliqué, mais j'ai oublié de mettre les commandes d'initialisation des joueurs Rouge et Bleu
    Code (cpp):
    /scoreboard players set Rouge compteur 0
    /scoreboard players set Bleu compteur 0
    À faire juste une fois.
     
    • J'approuve J'approuve x 1
  14. JulienML

    JulienML Enter the World

    Inscrit:
    20 Juil 2015
    Messages:
    49
    Points:
    62
    Sexe:
    Homme
    Ca marche mais, par exemple si l'équipe bleue a colorié 2 blocks et l'équipe rouge un seul ça me met "le chiffre 2 n'est pas dans l'intervalle de 0 à 0"....
     
    • Informatif Informatif x 1
  15. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 694
    Points:
    180
    Sexe:
    Homme
    Il faut que ces deux commandes se fassent avant le test:
    Code (cpp):
    /scoreboard players operation #top compteur > * compteur
    /scoreboard players operation * compteur -= #top compteur
    La première commande permet de dire "le score compteur de #top doit prendre la plus haute valeur possible parmi tout les joueurs ayant un score compteur" et la seconde "retirez à tout le monde le meilleur score".
    Au final, tu dois avoir le meilleur score à 0 et tout les autres en négatif.
     
    • J'approuve J'approuve x 1

Partager cette page