2 votes

Sélecteurs de cibles multiples dans la même commande

J'essaie de vérifier si un joueur remplit deux critères différents. L'un des critères ne peut être modifié et est : score_money=5000 . J'ai essayé de trouver d'autres critères pour cibler un joueur très spécifique. Par exemple, j'ai essayé :

/testfor @p[tag=buyHSR,score_money=5000]

/testfor @p[l=30,score_money=5000]

/testfor @p[score_buy=1,score_money=4500]

Le problème, c'est que toutes ces commandes fonctionnent en mode solo, mais pas en mode multijoueur. Ce qui se passe en multijoueur, c'est qu'il teste la fonction score_money=500 du joueur le plus proche et exécute les commandes suivantes malgré le fait que ce même joueur possède ou non le score_buy=1 tag. Donc, si je suis le plus proche des blocs de commande et que je n'ai pas suffisamment money mais mon ami en a assez, qui est plus loin, le sélecteur trouvera mon ami mais exécutera les commandes pour moi. (Ce qui fait que mon money score à atteindre dans les négatifs). En résumé, le sélecteur de cible favorise un critère plutôt que l'autre en fonction de la personne qui possède l'un des critères. J'essaie d'obtenir un sélecteur qui ne réussira que si les deux les critères sont remplis.
J'utilise Minecraft 1.12.2.

1voto

IronAnvil Points 5606

Vos sélecteurs de cible ne privilégient pas un critère par rapport à un autre.

Lorsque vous ajoutez des arguments à la @p variable de sélection de la cible il sélectionne le joueur le plus proche qui remplit tous les critères, même si d'autres joueurs plus proches ne les remplissent pas. En d'autres termes, il ne sélectionne pas uniquement le joueur le plus proche et ne le teste pas pour voir s'il répond aux critères.

Je recommande d'utiliser un rayon o dimensions du volume avec ou sans coordonnées dans le sélecteur de cible.

La solution la plus simple serait d'utiliser un rayon :

/testfor @p[score_money=5000,r=10]

Cela sélectionnera le joueur le plus proche ayant un score d'argent de 5000 ou moins, et se trouvant dans un rayon de 10 blocs de l'exécution de la commande.

Nota : Ce n'est pas un test pour un joueur qui a au moins 5000, mais 5000 ou moins. C'est peut-être la raison pour laquelle vous allez vers des nombres négatifs. Toute personne ayant moins de 5000 dans un rayon de 10 blocs satisfait à cette exigence.

/testfor @p[score_money_min=5000,r=10]

Le test ci-dessus portera sur le joueur le plus proche qui a 5000 ou plus et qui se trouve dans un rayon de 10 blocs.

Comme je l'ai mentionné dans les commentaires, la commande testfor n'est pas une bonne façon de faire la plupart des choses. Dans votre cas, elle trouve tous les joueurs qui répondent à tous les critères et si elle trouve un joueur qui répond à ces critères, un bloc conditionnel s'exécutera après elle. Utilisez plutôt le sélecteur de cible ci-dessus dans ce qui serait la commande suivante.

Disons que vous vendez une pierre pour 5000 dollars, les commandes pourraient être les suivantes :

give @p[score_money_min=5000,r=10] stone 1
scoreboard players remove @p[score_money_min=5000,r=10] money 5000

Une autre façon de le faire, vous pourriez étiquette de tableau d'affichage le joueur le plus proche, puis tester le joueur avec ce tag :

scoreboard players tag @p add Nearest
give @a[score_money_min=5000,tag=Nearest] stone 1
scoreboard players remove @a[score_money_min=5000,tag=Nearest] money 5000
scoreboard players tag @a remove Nearest

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X