Aller au contenu

Question

Posté(e)

Version de Minecraft : 1.8.9
Version de Skript : 2.1.2 (si vous connaissez une version plus récente stable qui fonctionne avec la 1.8.9 je suis preneur)

Addons utilisés: Pas d'addon

Type du skript : Script de /friends

Bonjour,

Je suis actuellement en train de développer un skript de /friend, pour cela j'utilise des boucles pour récupérer les informations des joueur stocké dans des variables list. Mais les boucles sont imbriqué les une dans les autres et j'ai donc une erreur qui me dit qu'il faut que je spécifie les numéro des boucles, mais je n'y arrive pas... quelqu'un peut-il m'aider ? Merci d'avance

Je vous joint le skript ci-dessous:

command /friend [<text>] [<text>]:
	aliases: /friends, /f
	trigger:
		if arg 1 is "invite" or "add":
			loop {all.player.list::*}:
				if loop-value = arg 2:
					exit loop
					set {_arg.2} to loop-index
					loop {online.player.list::*}:
						if loop-index = {_arg.2}:
							exit loop
							loop {f.list.%uuid of player%::*}:
								if loop-value = {_arg.2}:
									exit loop
									send "Vous êtes déjà ami avec ce joueur !" to player
									stop
							loop {f.wating.list.%uuid of player%::*}:
								if loop-value = {_arg.2}:
									exit loop
									send "Vous êtes désormais ami avec %arg 2 %" to player
									send "%player% a accepté votre demande d'ami(e) !" to arg 2 parsed as a player
									add uuid of player to {f.list.%{_arg.2}%::*}
									add {_arg.2} to {f.list.%uuid of player%::*}
									remove {_arg.2} from {f.wating.list.%uuid of player%::*}
									stop
							loop {f.wating.list.%{_arg.2}%::*}:
								if loop-value = uuid of player:
									exit loop
									send "Vous avez déjà envoyé une demande d'ami à ce joueur !" to player 
									stop
							send "Le joueur %player% vous a demandez en ami(e) !" to arg 2 parsed as a player
							send "Votre demande a bien été envoyé !" to player
							add uuid of player to {f.wating.list.%{_arg.2}%::*}
							stop
					loop {f.list.%uuid of player%::*}:
						if loop-value = {_arg.2}:
							exit loop
							send "Vous êtes déjà ami avec ce joueur !" to player
							stop
					loop {f.wating.list.%uuid of player%::*}:
						if loop-value = {_arg.2}:
							exit loop
							send "Vous êtes désormais ami avec %arg 2 %" to player
							add "%player% a accepté votre demande d'ami(e) !" to {f.message.offline.%{_arg.2}%::*}
							add uuid of player to {f.list.%{_arg.2}%::*}
							add {_arg.2} to {f.list.%uuid of player%::*}
							remove {_arg.2} from {f.wating.list.%uuid of player%::*}
							stop
					loop {f.wating.list.%{_arg.2}%::*}:
						if loop-value = uuid of player:
							exit loop
							send "Vous avez déjà envoyé une demande d'ami à ce joueur !" to player 
							stop
					send "Votre demande a bien été envoyé !" to player
					add uuid of player to {f.wating.list.%{_arg.2}%::*}
					stop

 

4 réponses à cette question

Messages recommandés

  • 0
Posté(e)

Bonjours,

Effectivement dans ton skript tu précise pas qu'elle boucle correspond aux "loop-value". pour cela tu dois compter toutes les boucles ou ton "loop-value" est incrémenté et ce peu importe le type de boucle (tant que sa reste un loop les while ne compte pas). Comme tu peux voir à l'image ce qui est entouré en rouge ce sont les loops et ce qui est entouré en vert c'est ta condition. Ta condition est incrémenté dans 3 boucles loop donc ta condition sera ""if loop-value-3 = {_arg.2}. Pour les autres loop comme "loop-index" ou "loop-number" ou "loop-player" etc... ils marche de manière différentes par rapport au "loop-value" mais marche de la même manière entre eux. Exemple:

command /loop:
	trigger:
		loop {Test::Skript::*}:
			loop 3 times:
				loop {Test::Log::*}:
					if loop-value-3 = 6:		
						send "OK"
command /loops:
	trigger:
		loop 3 times:
			loop {Test::FR::*}:
				loop 3 times:
					if loop-number-2 = 3:
						send "OK"

 

Comme tu peux le voir dans la première commande quelque soit la boucle le "loop-value" prend en compte toutes les boucles dans lequel il est incrémenté en l'occurrence dans la première commande y'a 3 boucle donc à la fin je met "loop-value-3"

 

Pour la deuxième commande le "loop-number" prend en compte toutes les boucles qui lui sont approprié c'est-à-dire la boucle "loop 3 times" comme tu peux le voir sur la deuxième commande il y a 2 "loop 3 times" donc à la fin tu met "loop-value-2" il ne prend pas en compte la troisième boucle qui est "loop {Test::FR::*}:" et ceci marche pour "loop-player" affilié à "loop all players" - "loop-number" affilié à "loop <number> times" - "loop-block" affilié à "loop all blocks" etc...

 

Bon voila point compréhension du coup je te règle ton problème. Voici le code ci-dessous

command /friend [<text>] [<text>]:
	aliases: /friends, /f
	trigger:
		if arg 1 is "invite" or "add":
			loop {all.player.list::*}:
				if loop-value = arg 2:
					exit loop
					set {_arg.2} to loop-index
					loop {online.player.list::*}:
						if loop-index-2 = {_arg.2}:
							exit loop
							loop {f.list.%uuid of player%::*}:
								if loop-value-3 = {_arg.2}:
									exit loop
									send "Vous êtes déjà ami avec ce joueur !" to player
									stop
							loop {f.wating.list.%uuid of player%::*}:
								if loop-value-3 = {_arg.2}:
									exit loop
									send "Vous êtes désormais ami avec %arg 2 %" to player
									send "%player% a accepté votre demande d'ami(e) !" to arg 2 parsed as a player
									add uuid of player to {f.list.%{_arg.2}%::*}
									add {_arg.2} to {f.list.%uuid of player%::*}
									remove {_arg.2} from {f.wating.list.%uuid of player%::*}
									stop
							loop {f.wating.list.%{_arg.2}%::*}:
								if loop-value-3 = uuid of player:
									exit loop
									send "Vous avez déjà envoyé une demande d'ami à ce joueur !" to player 
									stop
							send "Le joueur %player% vous a demandez en ami(e) !" to arg 2 parsed as a player
							send "Votre demande a bien été envoyé !" to player
							add uuid of player to {f.wating.list.%{_arg.2}%::*}
							stop
					loop {f.list.%uuid of player%::*}:
						if loop-value-2 = {_arg.2}:
							exit loop
							send "Vous êtes déjà ami avec ce joueur !" to player
							stop
					loop {f.wating.list.%uuid of player%::*}:
						if loop-value-2 = {_arg.2}:
							exit loop
							send "Vous êtes désormais ami avec %arg 2 %" to player
							add "%player% a accepté votre demande d'ami(e) !" to {f.message.offline.%{_arg.2}%::*}
							add uuid of player to {f.list.%{_arg.2}%::*}
							add {_arg.2} to {f.list.%uuid of player%::*}
							remove {_arg.2} from {f.wating.list.%uuid of player%::*}
							stop
					loop {f.wating.list.%{_arg.2}%::*}:
						if loop-value-2 = uuid of player:
							exit loop
							send "Vous avez déjà envoyé une demande d'ami à ce joueur !" to player 
							stop
					send "Votre demande a bien été envoyé !" to player
					add uuid of player to {f.wating.list.%{_arg.2}%::*}
					stop

 

J'espère que j'ai été claire c'est compliqué d'expliquer à l'écrit. En espérant t'avoir aidé.

 

Cordialement

loop.PNG

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.