Détection item inventaire

  • Auteur de la discussion Auteur de la discussion FloxHunt
  • Date de début Date de début

FloxHunt

Mapmaker PVP PVE
29 Juillet 2013
338
32
85
32
Rouen
Salut les gens !!

Je suis en plein préparation d'une nouvelle map et j'aimerais installer un systeme de troc. Hors j'ai besoin de tester l'inventaire du joueur qui troque pour savoir si il a bien tous les éléments nécessaires à l'échange.

J'ai essayé plusieurs techniques ainsi que la fameuse commande /testfor @p {Inventory: ...} mais RIEN ne marche... Même certaines commandes toutes faites que j'ai pu trouver sur certains forums ne marchent pas.

Donc j'aimerais que vous m'aidiez.

Je récapitule. J'ai besoin d'une commande permettant de tester l'inventaire du joueur, pour savoir si il a assez d'un item pour pouvoir exercer une transaction. MAIS je ne veux pas que ce soit une commande centrée sur un slot de l'inventaire.

Merci à ceux qui me répondraient.
 
Si ça peut aussi t'aider :) Enfin bon , je penses que tu as raison pour la technique du villageois qui est plus simple :)

2014-06-18_21.56.42.png
 
slt, j'ai trouvé une autre discussion par rapport à la détection d'objet dans l'inventaire,
allez voir ICI
et
/testfor @p {Inventory:[{id:"minecraft:iron_ingot",Count:3b}]}
va te détecter détecter 3 lingots de fer ( le b après 3 correspond à bytes).

Mais tu peux aussi faire:

/clear @p minecraft:iron_ingot -1 3
pour supprimer tes lingots.

Derrière ce bloc de commande, tu dois absolument placer un comparateur en retour.
Si le command bloc réussit à supprimer 3 lingots de fer de l'inventaire du joueur le plus proche, alors il envoie un courant au comparateur en sortie. Si le joueur a plus de 3 fer, le système supprimera uniquement 3 fer et cela enverra comme même un signal. Si il en a moins, il supprimera ce qu'il y a.

Pour expliquer la commande:
- /clear = La commande
- @p = Le joueur le plus proche
- minecraft:iron_ingot = L'id de l'objet à supprimer
- -1 = Le metatag, mais si ton objet n'est pas renommer ou n'as pas d'enchantement ni rien, laisse -1.
- 3 = Supprime 3 lingots de fer.
En espérant vous aider,

arno 15
 
Bonjour à tous,

Dans la map aventure que je suis en train de créer les joueurs peuvent obtenir de nombreux items et notamment des arcs.
Lorsqu'ils possèdent un des arcs disponibles ils auront un scoreboard (une variable qui leur est attachée)"qu_it_bow" à une valeur supérieure ou égale à 5.
Ces arcs ont l'enchantement infinity qui permet de n'avoir qu'une seule flèche dans leur inventaire et de pouvoir en tirer à l'infini.

Pour ces joueurs qui ont un arc je dois leur mettre au moins une flèche dans leur inventaire.

Voilà comment je m'y prends:

Je crée une variable intermédiaire qui me permet de savoir si ils ont ou non une flèche dans leur inventaire:
Code:
scoreboard objectives add qu_it_arrow dummy

Je crée une fill clock (avec deux commande block en utilisant la command /fill et des blocks de redstone) qui exécutera des command blocs tous les 20èmes de seconde. Je m'intéresse à l'ordre d'exécution de la clock en mettant "/tell @p a", "/tell @p b", "/tell @p c", ... ainsi je peux déterminer l'ordre dans lequel les commande blocs suivants seront affichés. Je m'assure donc que les commandes blocs ci-dessous soient exécutés dans l'ordre dans lequel ils sont écris:

Je commence par mettre à 2 la variable pour les joueurs qui ont un arc:
Code:
scoreboard players set @a[score_qu_it_bow_min=5] qu_it_arrow 2

Ensuite, pour les joueurs qui ont une flèche dans leur inventaire, je la met à 1:
Code:
scoreboard players set @a[score_qu_it_bow_min=5] qu_it_arrow 1 {Inventory:[{id:"minecraft:iron_ingot",Count:1}]}

A ce stade les joueurs qui doivent obtenir une flèche ont le scoreboard qu_it_arrow à 2 donc je leur donne la flèche:
Code:
give @a[score_qu_it_arrow_min=1] minecraft:arrow

Voilà une utilisation relativement simple des scoreboards et des fill blocs.

J'espère avoir été suffisamment clair...

Si vous aimez l'héroïque-fantaisie, les commands blocks, ou même l'écriture ... le projet que je suis en train de réaliser vous intéresse peut-être. Si c'est le cas rejoignez moi sur Minebeuk.

Bonne journée !