Résolu Détection de la connexion d'un joueur

Bullobily

Aventurier
15 Avril 2016
16
1
4
25
Bonjour,
Pour un projet de création de mini-jeu, je cherche le moyen de détecter la connexion d'un joueur sur le serveur, via un scoreboard notamment. J'utilise déjà des scoreboards pour le sneak et la course, mais je n'en ait pas trouvé pour la connexion.
Je vous explique mon contexte : j'ai créé une mégaclock, qui permet de faire fonctionner 3 sorts (pour l'instant, si je trouve la solution à mon problème, je pourrais en mettre bien plus). L'un d'eux est un sort de vol. Une fois le sort lancé, vous vous retrouvez en vol pour une certaine durée. Mais, si le joueur se déconnecte puis se reconnecte, le serveur lui enlève automatiquement le fly. Mais le système de sort, n'ayant pas détecté cela, va à nouveau faire un /fly au joueur, en le mettant ainsi en fly de manière permanente !

Il me faut donc trouver un moyen soit de détecter la connexion d'un joueur, pour lui retirer tous les effets de sorts, soit une autre commande, permettant d'activer/désactiver le vol, peu importe l'état initial du joueur.

Merci de votre aide !
PS : il m'est impossible de toucher aux fichiers config du serveur.
 
Il te faut un command-bloc en mode impulse, activé par une clock, avec la commande:
Code:
/testfor @p[tag=TagDuJoueur]
Il te faut ensuite un comparateur en sortie avec un repeteur, puis un double inverseur. Normalement, le système aura une output allumée quand le joueur se connecte, et éteinte quand il n'est pas là.
 
  • J'aime
Reactions: Oromis
Ça fonctionnerais, mais ce n'est pas exactement ce que je recherche : il faudrait exécuter une action particulière (ici, modifier un scoreboard) uniquement à la connexion du joueur, et uniquement sur ce joueur, donc une seule fois à chaque connexion.
 
L'output restant allumée lorsque le joueur est connecté, si tu met le command-bloc exécutant la commande en "Need Redstone" et "Impulse", le commande s'effectuera uniquement à la connexion du joueur.
 
Exact, je suis bête... Mais comment faire avec un grand nombre de joueur ? Je ne pourrais pas créer un command block pour chaque joueur :/
 
Salut,

Je ne sais pas si ton problème est toujours d'actualité.

Pour détecter la première connexion d'un joueur tu peux créer un scoreboard nommé "hasJoin" de type dummy. Puis lancer ceci en boucle (je te suggère d'utiliser une clock lente, inutile de noyer ton serveur) :
Code:
/scoreboard players add @a hasJoin 0
Ceci aura pour effet d'initialiser la variable hasJoin si le joueur ne l'a pas déjà.

Ensuite il ne te reste qu'à tester la valeur.
  • Si hasJoin vaut 0
  • [ici, les actions]
  • mettre hasJoin à 1

Pour détecter la reconnexion, tu peux créer un scoreboard de type stat.leaveGame. Lorsque le joueur se déconnecte le serveur ajoute automatiquement 1 au compteur.
  • si compteur > 0
  • [ici, les actions]
  • mettre compteur à 0
Astuce : tu peux utiliser stat.leaveGame pour remettre hasJoin à 0, ça évite de dupliquer le système (si compteur > 0, mettre hasJoin à 0).
 
Dernière édition par un modérateur:
  • J'aime
Reactions: Bullobily
Salut,

Je ne sais pas si ton problème est toujours d'actualité.

Pour détecter la première connexion d'un joueur tu peux créer un scoreboard nommé "hasJoin" de type dummy. Puis lancer ceci en boucle (je te suggère d'utiliser une clock lente, inutile de noyer ton serveur) :
Code:
/scoreboard players add @a hasJoin 0
Ceci aura pour effet d'initialiser la variable hasJoin si le joueur ne l'a pas déjà.

Ensuite il ne te reste qu'à tester la valeur.
  • Si hasJoin vaut 0
  • [ici, les actions]
  • mettre hasJoin à 1

Pour détecter la reconnexion, tu peux créer un scoreboard de type stat.leaveGame. Lorsque le joueur se déconnecte le serveur ajoute automatiquement 1 au compteur.
  • si compteur > 0
  • [ici, les actions]
  • mettre compteur à 0
Astuce : tu peux utiliser stat.leaveGame pour remettre hasJoin à 0, ça évite de dupliquer le système (si compteur > 0, mettre hasJoin à 0).
Tu peux mettre toute les commandes à faire stp ? Je n'ai pas compris ._. j'aimerais faire la meme chose sur mon monde