2 votes

Dialogue branching in Minecraft en utilisant un scoreboard de joueur, un déclencheur, tellraw et une chaîne de blocs de commande?

Je suis en train de mettre en place un système de dialogue en arborescence en utilisant des blocs de commande, un scoreboard, un objectif déclencheur et une chaîne de blocs de commande.

Les cinq premiers blocs de commande fonctionnent correctement. Je peux voir que le quatrième et le cinquième bloc de commande mettent à jour mon score. Cependant, les sixième, septième et huitième blocs de commande ne fonctionnent pas. Je ne sais pas pourquoi. J'utilise les mêmes commandes que j'ai utilisées pour le cinquième bloc de commande. Pour une raison quelconque, elles ne s'activent pas.

Premier bloc de commande (défini en impulse, inconditionnel, a besoin de redstone et déclenché par une plaque de pression).

/scoreboard objectives add dialoguetrigger trigger

Deuxième bloc de commande (défini en chaîne, inconditionnel, toujours actif).

/scoreboard players enable @p dialoguetrigger

Troisième bloc de commande (défini en chaîne, inconditionnel, toujours actif).

scoreboard objectives setdisplay sidebar dialoguetrigger

Quatrième bloc de commande (défini en chaîne, inconditionnel, toujours actif).

scoreboard players set @p dialoguetrigger -1

Cinquième bloc de commande (défini en chaîne, inconditionnel, toujours actif).

execute if score @p dialoguetrigger matches -1 run tellraw @p ["",{"text":"Bartholomé: Souhaitez-vous que je vous parle? Entrez dans le chat et cliquez sur "},{"text":"PARLER. ","color":"gold","clickEvent":{"action":"run_command","value":"/trigger dialoguetrigger set 3"}},{"text":"Vous pouvez aussi demander le "},{"text":"SILENCE.","color":"gold","clickEvent":{"action":"run_command","value":" /trigger dialoguetrigger set 2"}}]

Sixième bloc de commande (défini en chaîne, inconditionnel, toujours actif).

execute if score @p dialoguetrigger matches 2 run tellraw @p ["",{"text":"Bartholomé: Je vous laisse à vos pensées."}]

Septième bloc de commande (défini en chaîne, inconditionnel, toujours actif).

execute if score @p dialoguetrigger matches 1 run tellraw @p ["",{"text":"Bartholomé: Les salles sont devenues chaotiques en votre absence. Des portes derrière des portes. "},{"text":"[...]","color":"gold","clickEvent":{"action":"run_command","value":"/trigger dialoguetrigger set 3"}}]

Huitième bloc de commande (défini en chaîne, inconditionnel, toujours actif).

execute if score @p dialoguetrigger matches 3 run tellraw @p ["",{"text":"COMMENT OSEZ-VOUS LAISSER CELA ARRIVER!!! ","color":"gold","clickEvent":{"action":"run_command","value":"/trigger dialoguetrigger set 4"}},{"text":" OU "},{"text":"OÙ SONT LES JARDINS?","color":"gold","clickEvent":{"action":"run_command","value":"/trigger dialoguetrigger set 5"}}]

3voto

Fabian Röling Points 19325

Vous définissez dialoguetrigger sur -1 et vérifiez immédiatement différentes valeurs. Il ne sera jamais que -1 et seule la commande qui vérifie -1 s'exécutera.

L'initialisation du scoreboard (création, setdisplay, valeurs initiales) devrait normalement être effectuée une seule fois dans le processus de création d'une carte et ne pas être placée dans un bloc de commande. Ou vous pouvez avoir un endroit qui initialise tout, mais cela ne devrait s'exécuter que lorsque la carte est lancée, pas à plusieurs reprises pendant le jeu.

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