5 votes

Comment téléporter un joueur vers le haut toutes les deux secondes ?

Je veux faire une installation avec des blocs de commande qui, si vous tenez un objet spécifique, vous élèvera de 100 blocs. Par exemple, si vous tenez une perle Ender appelée "Sky Orb", vous serez téléporté 100 blocs plus haut toutes les deux secondes. J'ai déjà les commandes nécessaires :

/scoreboard objectives add Holding dummy
/scoreboard players set @a Holding 0
/scoreboard players set @a Holding 1 {SelectedItem:{id:"minecraft:ender_pearl",tag:{display:{Name:"Sky Orb"}}}}
/tp @a[score_Holding_min=1] ~ ~100 ~ 

En fait, le principal problème est le retard. Vous ne devriez être téléporté que toutes les 2 secondes environ. Quelqu'un connaît-il une solution à ce problème ?

(J'utilise les snapshots de la 1.9)

5voto

MrLemon Points 17073

Pour ce faire, il suffit de faire quelques ajouts à vos commandes, et d'introduire une fonction tableau d'affichage opération :

/scoreboard objectives add Holding dummy
/scoreboard objectives add flyTimer dummy
/scoreboard players set #MATH flyTimer 40

/scoreboard players set @a Holding 0
/scoreboard players set @a Holding 1 {SelectedItem:{id:"minecraft:ender_pearl",tag:{display:{Name:"Sky Orb"}}}}
/scoreboard players set @a[score_Holding=0] flyTimer 0
/scoreboard players add @a[score_Holding_min=1] flyTimer 1
/scoreboard players operation @a flyTimer %= #MATH flyTimer 
/tp @a[score_flyTimer_min=10,score_flyTimer=10] ~ ~100 ~

Tout d'abord, nous ajoutons un autre score appelé flyTimer et définit son score d'un joueur inexistant appelé #MATH à 40. Le caractère dièse garantit qu'il ne s'agit jamais d'un vrai joueur, et il n'apparaîtra pas non plus si vous réglez l'affichage du tableau des scores sur la barre latérale.

Nous utilisons le score d'attente pour augmenter le délai. Ce découplage est nécessaire car nous pouvons "annuler" les scores dans un sélecteur de cible mais pas dans les balises de données. C'est-à-dire que nous avons besoin de pouvoir cibler les joueurs. pas tenant la perle Ender. Notez que le flyTimer réinitialisera immédiatement lors du passage à un autre élément.

Après avoir augmenté le score, nous effectuons une opération modulo sur celui-ci, en utilisant le score de notre #MATH factice. Cela signifie que le score est remis à 0 chaque fois qu'il atteint 40, c'est-à-dire toutes les 2 secondes (pour d'autres temporisations, modifiez le score de l'élément #MATH dummy en conséquence).

Enfin, nous faisons en sorte que la commande de téléportation ne soit exécutée que lorsque le pointage est exactement 10. Ce nombre contrôle le délai de la téléportation après avoir sélectionné l'élément dans votre barre d'outils. Vous pouvez modifier ce nombre en fonction de vos besoins.

0voto

Jaïr Paalman Points 646

J'ai également trouvé moi-même une réponse que je trouve un peu plus facile que les réponses que j'ai reçues jusqu'à présent. J'ai utilisé les 3 commandes suivantes :

/scoreboard players add @a Holding 1 {SelectedItem:{id:"minecraft:ender_pearl",tag:{display:{Name:"Sky Orb"}}}}
/execute @a[score_Holding_min=40] ~ ~ ~ /scoreboard players set @p Holding 0
/tp @a[score_Holding=1] ~ ~100 ~

La première commande ajoute 20 points à votre score chaque seconde, la deuxième commande remet ce score à zéro une fois le score de 40 atteint, et la dernière commande vous téléporte si vous avez un score de 1.

Vous pouvez modifier le nombre de blocs sur lesquels vous êtes téléporté en changeant le "100" de la dernière commande et vous pouvez modifier le délai en changeant le "40" de la deuxième commande. Chaque 20 ticks donne un délai de 1 seconde.

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