1 votes

Détection de l'abandon du joueur

J'essaie de détecter quand un joueur a quitté le serveur, j'ai le tableau d'affichage pour détecter quand un joueur quitte :

/scoreboard objectives add quit minecraft.custom:minecraft.leave_game

Cependant, le reste de mes blocs de commande ne s'active que lorsque le joueur rejoint le monde. J'essaie de mettre les morts des joueurs à 3 lorsqu'ils quittent le monde :

scoreboard players set @a[scores={quit=1}] deaths 3

scoreboard players set @a[scores={quit=1}] quit 0

Existe-t-il un moyen de résoudre ce problème ?

1voto

nisse26a Points 193

Oui, il existe un moyen de le faire.

Pour ce faire, vous pouvez utiliser les opérations du tableau de bord. Vous devez avoir une entité fictive avec le chronomètre global. De temps en temps, vous choisirez un joueur au hasard pour le tester. Commencez par copier le score du joueur dans un score temporaire en utilisant l'opération = : scoreboard players operation temp @s = timer @s. Soustrayez ensuite le score global du chronomètre du score temporaire à l'aide de l'opération -=. Si le résultat est 0, les chronomètres sont synchronisés. Pour synchroniser le chronomètre, il suffit de copier le score global du chronomètre dans le score du chronomètre du joueur (toujours à l'aide de l'opération =).

Je pense que ce qui suit devrait fonctionner :

/scoreboard objectives add Local_Timer dummy
/scoreboard objectives add Global_Timer dummy
/scoreboard objectives add Temp_Timer dummy

execute store result score Global Global_Timer run time query gametime
scoreboard players add @a Local_Timer 1
execute as @a run scoreboard players operation @s Temp_Timer = @s Local_Timer
execute as @a run scoreboard players operation @s Temp_Timer -= Global Global_Timer
execute as @a[scores={Temp_Timer=..-1}] run say hi
execute as @a[scores={Temp_Timer=..-1}] run scoreboard players operation @s Local_Timer = Global Global_Timer```

0voto

Nik3141 Points 2403

J'ai utilisé quelque chose de similaire pour ajouter un message de bienvenue sur un serveur sur lequel je joue, et malheureusement, une fois que le joueur quitte le jeu, son score ne peut pas être incrémenté jusqu'à ce qu'il le rejoigne.

J'ai essayé de trouver une solution à ce problème en utilisant un système d'identification et en vérifiant qui n'est pas en ligne mais marqué comme étant en ligne dans un objectif fictif (en utilisant 1 et 0 comme drapeaux en ligne et hors ligne) et en définissant leur here à 0, mais comme on ne peut pas tester les scores des joueurs qui ne sont pas en ligne sans les nommer explicitement, le système ne fonctionne pas.

J'espère que quelqu'un d'autre pourra trouver une solution différente à votre problème.

-3voto

flowinglinc101 Points 37

Essayez de ne pas utiliser le tableau d'affichage, mais plutôt de rejoindre le serveur. Lorsqu'un joueur quitte le jeu, un message jaune apparaît dans le coin supérieur gauche de l'écran, indiquant que [gamertag] a quitté 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