2 votes

Flèches à double vitesse

J'essaie de faire en sorte que chaque fois qu'une flèche est tirée, elle vole à une vitesse double sans tomber. La partie sans chute était facile, il suffisait de faire execute as @e[type=arrow] run data merge entity @s {NoGravity:1} et ça a fait l'affaire.

L'autre partie est le vrai problème. Si je comprends bien, je dois

  • execute as @e[type=arrow] store success entity @s Motion double
  • en quelque sorte doubler cette valeur
  • run data merge entity @s {Motion: (whatever I got earlier) } sur cette flèche

Je peux stocker les données sans problème, mais le problème est que je ne sais absolument pas comment doubler cette valeur, la récupérer et la fusionner simultanément.

J'ai envisagé de créer un score individuel pour chaque valeur et de les doubler puisque c'est la seule façon que je connaisse, mais je n'ai vraiment pas compris comment fonctionne la commande du tableau d'affichage.

1voto

Fabian Röling Points 19325

Vous pouvez utiliser un facteur pour lire ou écrire le NBT. Et comme vous avez affaire à des nombres à virgule flottante et que les tableaux d'affichage ne peuvent contenir que des entiers, vous devriez le faire de toute façon. Ainsi, vous pouvez par exemple multiplier la valeur par 2000000 en lecture et la diviser par 1000000 en écriture :

/execute as @e[type=arrow,tag=!speedy] store result score @s motion run data get entity @s Motion[0] 2000000
/execute as @e[type=arrow,tag=!speedy] store result entity @s Motion[0] double 0.000001 run scoreboard players get @s motion
/execute as @e[type=arrow,tag=!speedy] store result score @s motion run data get entity @s Motion[1] 2000000
/execute as @e[type=arrow,tag=!speedy] store result entity @s Motion[1] double 0.000001 run scoreboard players get @s motion
/execute as @e[type=arrow,tag=!speedy] store result score @s motion run data get entity @s Motion[2] 2000000
/execute as @e[type=arrow,tag=!speedy] store result entity @s Motion[2] double 0.000001 run scoreboard players get @s motion
/tag @e[type=arrow] add speedy

La balise est là pour que vous ne doubliez pas la vitesse à chaque tic. Assurez-vous d'utiliser result pour enregistrer la valeur, et non success comme dans votre question.

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