1 votes

Détermination du vainqueur basée sur le score de l'équipe pour le mini-jeu PvP.

Créer un mini-jeu pvp sur Java Edition 1.19.3. Rouge contre Bleu. Après 10 minutes, le jeu se termine. J'ai tout le reste mis en place et entièrement fonctionnel. Le seul problème que j'ai est de faire en sorte que le système détermine quelle équipe a un score plus élevé (plus de kills) que l'autre équipe pour ensuite déclencher l'écran titre spécifique. Y a-t-il un moyen meilleur de le faire?

Voici la dernière version de mon code:

/execute if score [team=BLUE] Kills = [team=RED] Kills run summon minecraft:arrow 14 123 -176 
/execute if score [team=RED] Kills > [team=BLUE] Kills run summon minecraft:arrow 12 123 -176
/execute if score [team=BLUE] Kills > [team=RED] Kills run summon minecraft:arrow 10 123 -176

(La flèche déclenche la séquence titre pour le résultat spécifique de l'équipe)

J'ai essayé des variations de la cible telles que:

/execute if score BLUE Kills > RED Kills run summon minecraft:arrow 10 123 -176

Aucune erreur n'apparaît en résultat du code donc je ne comprends pas où il est spécifiquement incorrect.

D'autres choses que j'ai essayées:

/execute if score #red_kills kills matches 50 run title @a title {"text":"Game Over","color":"red"}

J'ai lu les deux liens suivants: https://minecraft.fandom.com/wiki/Commands/execute https://www.digminecraft.com/game_commands/execute_command.php

Mais je ne comprends toujours pas pourquoi le code ne fonctionne pas. Je suppose que c'est à cause de la cible "BLEU/ROUGE" et que la commande execute n'aime pas cibler plusieurs entités comme avec:

"/execute if score @a"

"Une seule entité est autorisée, mais le secteur fourni en autorise plus d'une"

Toute aide ou direction que vous pouvez me donner serait grandement appréciée, merci d'avance!

0voto

BunnyMerz Points 1286

Tout d'abord, une réponse à vos essais : Lorsque vous tapez RED ou BLUE, il cherche les joueurs avec ce nom exact. Comme ils n'existent pas, la commande if est fausse, ne faisant donc rien, plutôt qu'une erreur.

Vous voudrez ajouter le score de tout le monde dans un autre et ensuite les comparer. Pour ce faire, vous voudrez exécuter en tant que chaque joueur dans une équipe et ajouter cela au score d'un joueur fictif (donnant essentiellement un score à un joueur avec un nom impossible à avoir, tel que des caractères spéciaux $ ou #). Vous voudrez également remettre ce score à 0 avant ou après les commandes, pour qu'il n'affecte pas les scores des autres jeux. Voici un code non testé pour cette solution :

/scoreboard players set $BlueTeam Kills 0
/scoreboard players set $RedTeam Kills 0
/execute as @a[team=BLUE] run scoreboard players operation $BlueTeam Kills += @s Kills
/execute as @a[team=RED] run scoreboard players operation $RedTeam Kills += @s Kills

Et maintenant vous pouvez faire ce que vous voulez avec ces scores, tout comme dans les exemples de votre question :

/execute if score $BlueTeam Kills = $RedTeam Kills run ...

Un petit rappel ici, je n'utiliserais pas des choses physiques (comme invoquer des flèches) pour déclencher d'autres commandes. Au lieu de cela, vous pouvez simplement écrire plus de commandes avec cette même déclaration if au début de chaque commande suivante, cela serait un peu fastidieux, mais éviterait les échecs avec de telles commandes d'invocation. Vous pourriez même regarder du côté des datapacks qui sont tout aussi faciles que les blocs de commande, mais vous donnent la possibilité d'exécuter des fonctions et de copier-coller plus facilement.

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