1 votes

Comment faire précéder les nombres de 0 s'ils sont inférieurs à 10 dans le chat ?

Je suis en train de créer un système de minuterie utilisant le tableau d'affichage.

Je voudrais que la minuterie s'affiche sur le titre de la barre d'action au format HH:MM:SS.

Actuellement, j'ai déjà des algorithmes de commande qui déterminent le nombre d'heures, de minutes et de secondes à partir du nombre total de secondes.

C'est la commande que j'utilise pour sortir l'heure :

/tellraw @a [{"score":{"name":"hrs","objective":"time"}}, {"text":":"}, {"score":{"name":"mins","objective":"time"}}, {"text":":"}, {"score":{"name":"secs","objective":"time"}}]

Bien que cette commande puisse paraître longue, il s'agit simplement de concaténer chaque valeur et de les séparer par des deux points.

Cependant, lorsque les heures, les minutes ou les secondes sont inférieures à 10, elles sont affichées comme suit : 0:4:13 .

J'aimerais faire précéder d'un 0 toutes les valeurs inférieures à 10, de manière à ce qu'elles s'affichent comme suit : 00:04:13 .

La seule façon de procéder est de tester spécifiquement chaque cas où les valeurs sont inférieures à 10, et de les faire précéder d'un 0 avant la sortie.

Mais cela va devenir répétitif car il y a beaucoup de combinaisons différentes, et je pense que je vais devoir inclure un test pour chaque combinaison dont les valeurs sont inférieures à 10.

Je pense qu'il existe peut-être un moyen plus simple que je ne connais pas. Quelle est-elle, le cas échéant ?

1voto

Fabian Röling Points 19325

Votre idée est déjà proche de ce que vous pouvez faire de mieux.
Il peut être utile de stocker des chaînes partielles comme " 01: "De cette façon, vous n'obtiendrez pas un nombre exponentiel de combinaisons à vérifier lorsque vous obtiendrez plus d'éléments. Mais pour vos 3 éléments et 8 combinaisons, cela n'en vaut peut-être pas la peine.

1voto

Richie Frame Points 1800

J'ai moi-même trouvé une solution. Cette solution utilise un signe pour combiner les trois parties séparément :

Pour chaque partie (heures, minutes et secondes), nous ajoutons une ligne distincte de signe à la valeur, et nous ajoutons un 0 au début si nécessaire :

execute if score #hrs time matches ..9 run data modify block <sign> Text1 set value '["0",{"score":{"name":"#hrs","objective":"time"}}]'
execute if score #hrs time matches 10.. run data modify block <sign> Text1 set value '{"score":{"name":"#hrs","objective":"time"}}'

execute if score #mins time matches ..9 run data modify block <sign> Text2 set value '["0",{"score":{"name":"#mins","objective":"time"}}]'
execute if score #mins time matches 10.. run data modify block <sign> Text2 set value '{"score":{"name":"#mins","objective":"time"}}'

execute if score #secs time matches ..9 run data modify block <sign> Text3 set value '["0",{"score":{"name":"#secs","objective":"time"}}]'
execute if score #mins time matches 10.. run data modify block <sign> Text3 set value '{"score":{"name":"#secs","objective":"time"}}'

Ensuite, nous avons juste /tellraw les trois parties en même temps, grâce à la nbt de la composante.

tellraw @a [{"block":"<sign>","nbt":"Text1","interpret":true}, ":",{"block":"<sign>","nbt":"Text2","interpret":true}, ":",{"block":"<sign>","nbt":"Text3","interpret":true}]

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