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

[Commande] Panneau Cliquable

Discussion dans 'Commands blocks & Redstone' créé par WindiePanda, 30 Avr 2015.

  1. WindiePanda

    WindiePanda Mineur de Fer

    Inscrit:
    10 Oct 2014
    Messages:
    524
    Points:
    96
    Sexe:
    Femme
    Bonsoir à tous !
    J'ai créée un panneau avec cette commande : http://pastebin.com/0hCi1ZM3
    Le but étant de donner au joueur le plus proche un plastron en diamant en échange de 50 Gold Nuggets, cependant quand je clique sur le panneau et que je n'ai pas les 50GN je reçois quand même la pièce d'armure.

    Sauriez-vous m'aider ? :)

    Merci d'avance :D
     
  2. The_Murmex

    The_Murmex Mineur de Fer

    Inscrit:
    4 Jan 2015
    Messages:
    654
    Points:
    71
    Sexe:
    Homme
    Il faudrait que tu mette une setblock de bloc de redstone quelque part dans ton panneau tout en mettant un scoreboard Echange (dummy) à 1.
    Ensuite il te faudra construire un petit système autour du block de redstone:
    [​IMG]
    1. On détruit le bloc de redstone pour que le système soit réutilisable :
    Code (cpp):
    /setblock ~ ~1 ~ air
    2.On reset le /stats appliqué sur les joueur pour éviter les surcharges (facultatif ou peut être mis à la fin) :
    Code (cpp):
    /stats entity @a[score_Echange_min=1] clear AffectedItems
    3.On met le score Nuggets du/des joueurs (si plusieurs appuient en même temps) à 0 :
    Code (cpp):
    /scoreboard players set @a[score_Echange_min=1] Nuggets 0
    4.On applique un /stats sur le/les joueurs sur eux-même dans la scoreboard Nuggets :
    Code (cpp):
    /execute @a[score_Echange_min=1] ~ ~ ~ stats entity @p set AffectedItems @p Nuggets
    5.On test le nombre d'Item dans l'inventaire :
    Code (cpp):
    /clear @a[score_Echange_min=1] gold_nugget 0 0
    6 et 7. On donne l'armure et on enlève les pépites :
    Code (cpp):
    /give @a[score_Echange_min=1,score_Nuggets_min=50] diamond_chestplate
    Code (cpp):
    /clear @a[score_Echange_min=1,score_Nuggets_min=50] gold_nugget 0 50
    8 et 9.On reset les scores :
    Code (cpp):
    /scoreboard players reset @a[score_Nuggets_min=1] Nuggets
    Code (cpp):
    /scoreboard players reset @a[score_Echange_min=1] Echange
    Il faut au préalable déclarer les scoreboard Nuggets et Echange qui sont des dummy.
    Si tu fais ça plusieurs fois avec des Items différent il faudra créer plusieurs scoreboards Echange, "EchangePlastron" par exemple.

    En espérant t'avoir aidé ;)
     
  3. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 694
    Points:
    180
    Sexe:
    Homme
    Je laisse la solution que j'ai envoyé hier par MP ici (en sachant qu'il y a toujours un problème de longueur de chaîne, il faut penser à répartir le texte sur les 4 lignes):
    Code (cpp):
    give @p minecraft:sign 1 0 {display:{Name:"SignShop"},BlockEntityTag:{Text4:"{\"clickEvent\":{\"action\":\"run_command\",\"value\":\"clear @p[r\u003d4,score_GN_min\u003d50] minecraft:gold_nugget -1 50\"},\"text\":\"--\"}",CommandStats:{AffectedItemsObjective:"GN",AffectedItemsName:"#shop"},Text3:"{\"clickEvent\":{\"action\":\"run_command\",\"value\":\"give @p[r\u003d4,score_GN_min\u003d50] minecraft:diamond_chestplate 1 0\"},\"extra\":[{\"translate\":\"item.goldNugget.name\"}],\"text\":\"VS 50 \"}",Text2:"{\"clickEvent\":{\"action\":\"run_command\",\"value\":\"scoreboard players operation @p[r\u003d4] GN \u003d #shop GN\"},\"translate\":\"item.chestplateDiamond.name\"}",id:"Sign",Text1:"{\"clickEvent\":{\"action\":\"run_command\",\"value\":\"clear @p[r\u003d4] minecraft:gold_nugget -1 0\"},\"text\":\"--\"}"}}
    Il faut au préalable utiliser les deux commandes suivantes:
    Code (cpp):
    /scoreboard objectives add GN dummy Gold Nuggets
    /scoreboard players set #shop GN 0
    En cas de shops multiples, par sécurité, il faut soit mettre une horloge (de préférence une horloge "lente", mais une rapide devrait fonctionner aussi) avec cette commande:
    Code (cpp):
    /scoreboard players set @a GN 0
    Ou alors
    Créer un objectif différent par pancarte (GN1, GN2.. pour que la monnaie utilisée par un panneau soit différenciée de celle utilisée par le panneau voisin)

    Si les différents panneaux sont légèrement éloignés les uns des autres, ça ne devrait pas trop poser de problème même sans ces sécurités.
     
    #3 Mlakuss, 30 Avr 2015
    Dernière édition: 30 Avr 2015

Partager cette page