Aller au contenu
  • 0

Cancel de loop lors d'un mouvement


Question

Posté(e)

Bonsoir la commu, je viens vers vous ce soir car j'ai un problème que je n'arrive pas a régler sur mon skript.

 

Je suis en train de faire un système de logout "anti fuite" pour mon skript, et pour cela j'ai une loop qui se met en place lorsqu'on tape une commande comme ceci:

command /quit:
	trigger:
		set {_count} to 15
		loop 15 times:
			send "{@Logo} §cDéconnection dans %{_count}% §csecondes"
			add -1 to {_count}
			wait 1 seconds
		kick the player due to "§cVous avez bien été déconecté ! §6A bientôt !"

Pour stopper la loop je devrais faire un "stop loop" ou un "cancel loop" normalement ca devrait marcher.

Jusque là pas de problèmes, mais pour rajouter la detection du mouvement je suis obligé d'utiliser ca:

on any move:
	#action a effectuer (ici stopper la loop)

Cette fonction fonctionne nickel mais impossible de la lier a la loop, et je ne vois pas vraiment de façon de le faire, alors je compte sur vous pour m'aider 😅

 

Merci d'avance !

 

Version de Minecraft : 1.15
Version de Skript : bensku 2.4

5 réponses à cette question

Messages recommandés

  • 0
Posté(e) (modifié)

n'utilise pas le on any move (cet event est appelé trop fréquemment) , lors du /quit tu créer une variable qui enregistre la position du joueur, et a chaque boucle tu vérifie que la position actuel du joueur et la même que celle de la variable. Si ce n'est pas le cas tu lui affiche un message pour dire qu'il a bougé et tu stop le code.

 

Ne fait pas non plus de add -1 , mais plutot remove 1 from {}

Modifié par Anarchick
  • J'aime 1
  • 0
Posté(e) (modifié)

Merci beaucoup, ca m'enlève une grosse épine du pied, mais maintenant j'ai un autre problème, c'est que si le joueur bouge ça le déconnecte directement.

command /quit:
	trigger:
		set {_count} to {@CoolDownLogOut}
		set {%player%.logout.coord} to player's location
		loop {@CoolDownLogOut} times:
			send "{@Logo} §cDéconnection dans %{_count}% §csecondes."
			remove 1 from {_count}
			if {%player%.logout.coord} != player's location:
				stop loop
			wait 1 seconds
		kick the player due to "§cVous avez bien été déconecté ! §6A bientôt !"

Je penses que c'est juste un problème de décalage ou de condition que je dois régler, ça doit pas être très compliqué.

 

Edit: J'ai essayé de rajouter ça à la fin de ma loop pour tester et ça a fonctionné ducoup problème résolu !

if {_count} > 0:
			broadcast "deconnexion annulée"
		else:
			kick the player due to "§cVous avez bien été déconecté ! §6A bientôt !"

Merci !

Modifié par Xenakiff
  • 0
Posté(e) (modifié)

"stop" au lieu de "stop loop", 

le stop loop te fait sortir de la loop tout en continuant le code, alors que le "stop" arrête complètement le code

Tu n'es pas obligé d'utiliser une variable global pour {%player%.logout.coord} , tu peux utiliser {_loc} tout court (si tu ne réutilise pas la variable)

Modifié par Anarchick
  • 0
Posté(e)
il y a 2 minutes, Anarchick a dit :

"stop" au lieu de "stop loop", 

le stop loop te fait sortir de la loop tout en continuant le code, alors que le "stop" arrête complètement le code

Tu n'es pas obligé d'utiliser une variable global pour {%player%.logout.coord} , tu peux utiliser {_loc} tout court (si tu ne réutilise pas la variable)

J'utiliserais la variable ailleurs pour d'autres choses, et j'essayerais le stop au lieu d'utiliser la méthode que j'ai trouvé. Merci de ton aide !

 

Je passe le sujet en résolu.

Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.