Aller au contenu
  • 0

Problème avec les loop pour classer les factions


Question

Posté(e)

Version de Minecraft : 1.16.3
Version de Skript : 2.5.1

Addons utilisés: skript-gui v1.1.0

Type du skript : faction

Description du script :

Bonjour/Bonsoir je vous demande de l'aide car mon problème persiste depuis 1 semaines. Mon problème est le suivant.
J'essaye de faire une liste qui répertorie tout les factions du serveur depuis leur créations dans un menu gui et j'utilise des loops mais les loop-values me mélange tout 
pour faire simple le joueur a avec la faction b et le joueur b avec la faction a etc..
j'essaye plusieurs solutions sur des forums mais aucun résultat 
.

Voici le code concerné :
 

create a gui with virtual chest inventory with size 4 named "&4&lListe des factions":
	make gui slot 8 with arrow named "&fRetour dans le menu":
		make player execute command "{@FacCommands}"
		set {faction.list.%player's uuid%} to false
	wait a tick 
	set {_slot} to 9
	loop {factionlist::*}:
		set {_facname} to loop-value-1
		loop {factionowner::*}:
			set {_facowner} to loop-value-2
			loop {factiondate::*}:
				set {_facdate} to loop-value-3
				wait a tick
				make gui slot {_slot} with {_facowner}'s skull named "&f&l%{_facname}%" with lore "Chef: %{_facowner}%" and " " and "&fDate: %{_facdate}%"
			add 1 to {_slot}
open last created gui to player

Si vous voulez me contacter !
Mon discord : Damios#1860

7 réponses à cette question

Messages recommandés

  • 0
Posté(e)

Bonjour à toi, 

A vrai dire je ne comprends pas trop ton code car je n'aurais pas fait de cette manière. 

En revanche, peut-être que au lieu de nommer les loop tel que "loop-value-1" tu pourrais remplacer par ceci:

to "%loop-number%"

J'utilise souvent cette possibilité. 

Après comme je te dis, j'aurais utilisé une manière peut être plus simple à mon goût. 

N'hésite pas à revenir si cela n'a pas marché 😉 

  • 0
Posté(e)

Si j'ai bien compris le principe, à la création, tu fais comme cela ? :

add "NOM" to {factionlist::*}
add player to {factionowner::*}
add now to {factiondate::*}

Si oui, tu peux tout simplement faire:

create a gui with virtual chest inventory with size 4 named "&4&lListe des factions":
	make gui slot 8 with arrow named "&fRetour dans le menu":
		make player execute command "{@FacCommands}"
		set {faction.list.%player's uuid%} to false
	wait a tick 
	set {_slot} to 9
	loop size of {factionlist::*} number:
		wait a tick
		make gui slot {_slot} with {factionowner::%loop-number%}'s skull named "&f&l%{factionlist::%loop-number%}%" with lore "Chef: %{factionowner::%loop-number%}%" and " " and "&fDate: %{factiondate::%loop-number%}%"
		add 1 to {_slot}
open last created gui to player

Cela fonctionne normalement, cependant c'est je pense pas une bonne façon de définir les variables

Tu devrais plutôt faire comme cela pour la création (c'est un exemple bien sur):


command /faction_add <text>:
	trigger:
		if {Factions::*} doesn't contain arg-1:	
			add arg-1 to {Factions::*}
			set {Factions::%arg-1%::DATE} to now
			set {Factions::%arg-1%::CHEF} to player
			set {Factions::%arg-1%::DESC} to "Bonsoir" #Si tu veux une description x)
			set {Factions::%arg-1%::MEMBRES} to true
			add player to {Factions::%arg-1%::MEMBRES::*}
		else:
			send "&cExiste déjà"

# Et voila pour la supression :

command /faction_remove <text>:
	trigger:
		if {Factions::*} contain arg-1:	
			delete {Factions::%arg-1%::DATE} to now
			delete {Factions::%arg-1%::CHEF} to player
			delete {Factions::%arg-1%::DESC} to "Bonsoir"
			delete Factions::%arg-1%::MEMBRES::*}
			delete {Factions::%arg-1%::MEMBRES} 
			remove arg-1 from {Factions::*}
		else:
			send "&cn'Existe pas"

Tu pourrais juste faire

{FACTIONS::NOM::PARAMETRE}

pour récupérer une information
Et pour récupérer une information sur toutes les factions :
 

loop {FACTIONS::*}:
    send "%loop-value% %{FACTIONS::NOM::NOW}%"


Après c'est juste ma vision de la chose, tu fais comme tu veux bien sur, et ta méthode n'est pas si mauvaise.

Voici un petit code pour passer de ta méthode à la mienne si jamais x) :

 

command /converter:
	permission: admin
	trigger:
		loop size of {factionlist::*} number:
			add {factionlist::%loop-number%} to {Factions::*}
			set {Factions::%{factionlist::%loop-number%}%::DATE} to {factiondate::%loop-number%}
			set {Factions::%{factionlist::%loop-number%}%::OWNER} to {factionowner::%loop-number%}
		delete {factionlist::*}
		delete {factionowner::*}
		delete {factiondate::*}

 

  • 0
Posté(e)
Il y a 9 heures, Yghore a dit :

Si j'ai bien compris le principe, à la création, tu fais comme cela ? :

add "NOM" to {factionlist::*}
add player to {factionowner::*}
add now to {factiondate::*}

Si oui, tu peux tout simplement faire:


create a gui with virtual chest inventory with size 4 named "&4&lListe des factions":
	make gui slot 8 with arrow named "&fRetour dans le menu":
		make player execute command "{@FacCommands}"
		set {faction.list.%player's uuid%} to false
	wait a tick 
	set {_slot} to 9
	loop size of {factionlist::*} number:
		wait a tick
		make gui slot {_slot} with {factionowner::%loop-number%}'s skull named "&f&l%{factionlist::%loop-number%}%" with lore "Chef: %{factionowner::%loop-number%}%" and " " and "&fDate: %{factiondate::%loop-number%}%"
		add 1 to {_slot}
open last created gui to player

Cela fonctionne normalement, cependant c'est je pense pas une bonne façon de définir les variables

Tu devrais plutôt faire comme cela pour la création (c'est un exemple bien sur):



command /faction_add <text>:
	trigger:
		if {Factions::*} doesn't contain arg-1:	
			add arg-1 to {Factions::*}
			set {Factions::%arg-1%::DATE} to now
			set {Factions::%arg-1%::CHEF} to player
			set {Factions::%arg-1%::DESC} to "Bonsoir" #Si tu veux une description x)
			set {Factions::%arg-1%::MEMBRES} to true
			add player to {Factions::%arg-1%::MEMBRES::*}
		else:
			send "&cExiste déjà"

# Et voila pour la supression :

command /faction_remove <text>:
	trigger:
		if {Factions::*} contain arg-1:	
			delete {Factions::%arg-1%::DATE} to now
			delete {Factions::%arg-1%::CHEF} to player
			delete {Factions::%arg-1%::DESC} to "Bonsoir"
			delete Factions::%arg-1%::MEMBRES::*}
			delete {Factions::%arg-1%::MEMBRES} 
			remove arg-1 from {Factions::*}
		else:
			send "&cn'Existe pas"

Tu pourrais juste faire


{FACTIONS::NOM::PARAMETRE}

pour récupérer une information
Et pour récupérer une information sur toutes les factions :
 


loop {FACTIONS::*}:
    send "%loop-value% %{FACTIONS::NOM::NOW}%"


Après c'est juste ma vision de la chose, tu fais comme tu veux bien sur, et ta méthode n'est pas si mauvaise.

Voici un petit code pour passer de ta méthode à la mienne si jamais x) :

 


command /converter:
	permission: admin
	trigger:
		loop size of {factionlist::*} number:
			add {factionlist::%loop-number%} to {Factions::*}
			set {Factions::%{factionlist::%loop-number%}%::DATE} to {factiondate::%loop-number%}
			set {Factions::%{factionlist::%loop-number%}%::OWNER} to {factionowner::%loop-number%}
		delete {factionlist::*}
		delete {factionowner::*}
		delete {factiondate::*}

 

Juste "loop size of {factionlist::*} number:" marche pas es ce normale ?

  • 0
Posté(e)

Merci @Yghore t'es un beau gosse...
plus sérieusement Merci d'avoir régler le bug et tu m'as fait découvrir des choses en optimisation que je ferai ca quand j'aurai finis le code  
Merci !

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.