1 votes

Comment vérifier quelque chose à chaque tick, mais n'exécuter une commande qu'une seule fois lorsque la condition est remplie ?

Je fais un datapack pour Minecraft 1.16 et j'ai besoin de vérifier si un joueur est dans un certain endroit. Je veux vérifier cette condition à chaque tick et ensuite lancer une fonction quand elle est remplie.

J'utilise actuellement cette commande : execute as @a[x = 10, y = 56, z = 42, dx = 8, dy = 10, dz = 0] run say Passed
Le problème est que, lorsque la condition est remplie, la run say Passed s'exécute également à chaque tic, ce qui n'est pas ce que je veux.

Lorsque la condition est remplie, je veux que cette commande ne soit exécutée qu'une seule fois, et non pas à chaque tick, tout en continuant à vérifier la condition à chaque tick. Mais Je veux aussi que la commande puisse être relancée au bout d'une seconde environ.

Pourrais-je le faire en vérifiant la condition à chaque tic, puis en exécutant une fonction qui a une minuterie qui n'exécute une commande que si elle a été exécutée précédemment il y a 1 seconde ou plus ?

0 votes

Si je comprends bien, vous voulez qu'il vérifie chaque tick mais pas qu'il s'exécute à chaque tick où la condition est remplie ?

0 votes

Vous voulez donc vérifier continuellement si la condition est remplie jusqu'à ce que la condition soit remplie, puis reprendre la vérification lorsque la condition n'est plus remplie ?

0 votes

Si vous faisiez une carte d'aventure ou quelque chose de cette nature, je vous conseillerais de relier un bloc de commande à un circuit de redstone monostable. Mais je ne pense pas que vous puissiez faire cela dans un pack de données. Je soupçonne que la réponse que vous cherchez implique des tableaux de bord d'une manière ou d'une autre, mais je ne sais pas assez comment ils fonctionnent pour fournir une réponse plus spécifique.

1voto

jklw10 Points 311

Vous pourriez faire un tableau d'affichage qui stocke un minuteur, qui compte jusqu'à 0 et une fois que ce 0 est atteint, la commande peut être exécutée à nouveau configuration :

/scoreboard objectives add Timers dummy

pour que vous exécutiez ces fonctions à chaque tic :

execute if score FunctionX Timers matches 1.. run scoreboard players remove FunctionX Timers 1
execute if score FunctionX Timers matches 0 run execute as @a[x = 10, y = 56, z = 42, dx = 8, dy = 10, dz = 0] run function <namespace>:passed

et dans passed.mcfunction

scoreboard players add FunctionX Timers 20
say passed

ceci fera en sorte que la commande ne soit exécutée que tous les 20 jeux.

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