1 votes

Comment créer un système d'embouteillage XP en utilisant des blocs de commande ?

Ce que je veux faire : Si un joueur tient un glass_bottle et que vous vous tenez à 2 pâtés de maisons de quelques orbes d'XP, il va /kill 3 XPOrb, donner au joueur 1 experience_bottle et enlever 1 glass_bottle de l'inventaire

Voici ce que j'ai comme installation jusqu'à présent :

Travail, sur des blocs de commande répétitifs :

scoreboard players set @a NotHoldingItem 0 {SelectedItem:{id:minecraft:glass_bottle}}

scoreboard players set @a NotHoldingItem 1

enter image description here enter image description here

La partie qui ne fonctionne pas, celle pour laquelle j'ai besoin d'aide - je ne sais pas si c'est la bonne façon de procéder de toute façon (encore une fois sur les blocs de commande répétés) :

execute @a[score_NotHoldingItem=0,r=2] ~ ~ ~ /scoreboard players add @e[type=XPOrb] 1 xp   

(ajouter un score à l'xp dans le rayon de 2 blocs du joueur tenant une bouteille)

execute @e[score_xp=4] ~ ~ ~ give @p[score_NotHoldingItem=0] minecraft:experience_bottle

-->(Chaîne) :

kill @e[score_xp_min=4,c=3]

-->(Chaîne) :

clear @p[score_NotHoldingItem=0] minecraft:glass_bottle 1

Merci.

0 votes

Voulez-vous que le joueur n'obtienne la bouteille que s'il y a 3 orbes d'XP ou plus à proximité ?

2voto

SirBenet Points 27779

(Répéter) exécuter @a[score_NotHoldingItem=0,r=2] ~ ~ ~ /scoreboard joueurs ajouter @e[type=XPOrb] 1 xp (ajouter le score aux xp à portée de 2 blocs du joueur tenant une bouteille)

r=2 sélectionnera les joueurs situés dans un rayon de deux blocs du bloc de commande (ou de tout autre bloc qui exécute la commande) pour l'exécuter. Vous devez déplacer le r=2 au deuxième sélecteur afin d'ajouter le score à XPOrbs dans un rayon de 2 blocs d'un joueur détenant la bouteille :

<count> vient aussi avant <objective> en scoreboard players add de la syntaxe :

execute @a[score_NotHoldingItem=0] ~ ~ ~ /scoreboard players add @e[type=XPOrb,r=2] xp 1

(Répéter) exécuter @e [score_xp=4] ~ ~ ~ donner @p [score_NotHoldingItem=0] Minecraft:experience_bottle

Cela s'exécutera même s'il n'y a qu'un seul orbe XP près du joueur. Si vous voulez qu'il ne s'active que lorsqu'il y a au moins 3 orbes d'XP, alors vous devrez configurer un compte.

Créez un objectif fictif appelé par exemple "NearbyXp" ( /scoreboard objectives add NearbyXp dummy ) puis ajoutez les commandes suivantes à votre horloge, avant cette commande give :

scoreboard players set @a[score_NearbyXp_min=1] NearbyXp 0
execute @e[type=XPOrb] ~ ~ ~ scoreboard players add @a[score_NotHoldingItem=0,r=2] 1 NearbyXp

Cela rend toutes les orbes XP ajouter 1 NearbyXp aux joueurs détenant des bouteilles dans un rayon de 2 blocs autour d'eux. Par exemple, si 7 orbes d'XP se trouvent près de vous, elles ajouteront chacune 1 à votre XP. NearbyXp en le fixant à 7.

Ensuite, sur vos commandes telles que celle-ci où vous donnez la bouteille d'expérience, vous devez changer le sélecteur de joueur en @p[score_NotHoldingItem=0,score_NearbyXp_min=3] pour que seuls les joueurs ayant 3 orbes d'XP autour d'eux obtiennent la bouteille.

Après avoir fait cela, vous devriez également être en mesure de vous débarrasser de toute commande liée à la xp car cela permettra de détecter si les joueurs ont 3 orbes d'XP autour d'eux.


tuer @e [score_xp_min=4,c=3]

Cette commande doit être exécutée depuis le joueur si vous voulez retirer les 3 orbes d'XP les plus proches du joueur, plutôt que les 3 plus proches du bloc de commande.


clear @p[score_NotHoldingItem=0] Minecraft:glass_bottle 1

Cela efface toutes les bouteilles en verre dont la valeur des données est 1, plutôt qu'une seule bouteille en verre comme je suppose que vous le voulez ici.


Pour garantir que l'ordre d'exécution des commandes reste le même, vous ne devriez utiliser qu'un seul bloc de commandes répétées et les autres chaînes.

Vos commandes à la fin devraient ressembler à quelque chose comme :

scoreboard players set @a NotHoldingItem 1
scoreboard players set @a NotHoldingItem 0 {SelectedItem:{id:minecraft:glass_bottle}}
scoreboard players set @a[score_NearbyXp_min=1] NearbyXp 0
execute @e[type=XPOrb] ~ ~ ~ scoreboard players add @a[score_NotHoldingItem=0,r=2] NearbyXp 1
give @p[score_NotHoldingItem=0,score_NearbyXp_min=3] minecraft:experience_bottle
execute @a[score_NotHoldingItem=0,score_NearbyXp_min=3] ~ ~ ~ kill @e[type=XPOrb,c=3]
clear @a[score_NotHoldingItem=0,score_NearbyXp_min=3] minecraft:glass_bottle 0 1

Seul le premier doit être répété, les autres doivent être des chaînes qui se suivent, comme ceci :

Command block setup


Prenez note que :

  1. Les orbes d'XP varient en valeur, donc quelqu'un pourrait mettre en bouteille 3 expérience ou 7431 expérience et obtenir la même bouteille.
  2. Il est difficile de se tenir à moins de deux blocs de plusieurs orbes d'XP sans en ramasser, je recommande d'augmenter le nombre de ces orbes. r=2 a r=5

0voto

shefles Points 13

Pour tous ceux qui sont intéressés par ce module, et cette commande a été mise à jour pour fonctionner dans la version 1.12 maintenant. (Peu de choses ont été changées cependant)

Tout d'abord, créez deux tableaux d'affichage.

  • /scoreboard objective add NotHoldingItem dummy
  • /scoreboard objective add NearbyXp dummy

Maintenant les commandes à mettre dans les blocs de commandes respectifs, (même ordre que ci-dessus)

  • joueurs du tableau d'affichage set @a NotHoldingItem 1
  • scoreboard players set @a NotHoldingItem 0 {SelectedItem:{id : "Minecraft:glass_bottle"}}
  • les joueurs du tableau d'affichage fixent @a[score_NearbyXp_min=1] NearbyXp 0
  • execute @e[type=xp_orb] ~ ~ ~ scoreboard players add @a[score_NotHoldingItem=0,r= 2 ] NearbyXp 1
  • donner à @p[score_NotHoldingItem=0,score_NearbyXp_min=3] Minecraft:experience_bottle
  • exécuter @a[score_NotHoldingItem=0,score_NearbyXp_min=3] ~ ~ ~ tuer @e[type=xp_orb,c=3]
  • clear @a [score_NotHoldingItem=0,score_NearbyXp_min=3] Minecraft:glass_bottle 0 1

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