Aller au contenu

Question

Posté(e)

Version de Minecraft : 1.9.4
Version de Skript : 24.1

Type du skript : Classement de clan

Description du script :

Bonjour,  j'ai fais un skript de clan et j'aimerais y ajouter un classement selon chaque clan, Chaque personne des clans se voit attribué des points avec la commande /setplayerpoint seulement voila:

lorsque je loop ma double liste "clan::nom du clan::joueurs" pour additioner les points des joueurs rien ne se fait, aucune erreur dans la console et aucune durant le sk reload voici le Skript 

command /initclassement:
	trigger:
		delete {point.clan::*}

command /setplayerpoint <player> <integer>:
	trigger:
		send "Le nombre de point est passé de %{point.clan::%arg-1%}% à"
		set {point.clan::%arg-1%} to arg-2
		send "%{point.clan::%arg-1%}%"




command /joueurclass:
	trigger:
		set {_5p} to "Personne" 
		set {_4p} to "Personne" 
		set {_3p} to "Personne" 
		set {_2p} to "Personne" 
		set {_1p} to "Personne" 
		set {_5} to 0
		set {_4} to 0
		set {_3} to 0
		set {_2} to 0
		set {_1} to 0
		loop {point.joueur::*}:
			if {point.joueur::%loop-index%} > {_1}:
				set {_5} to {_4}
				set {_5p} to {_4p}
				set {_4} to {_3}
				set {_4p} to {_3p}
				set {_3} to {_2}
				set {_3p} to {_2p}
				set {_2} to {_1}
				set {_2p} to {_1p}
				set {_1} to loop-value
				set {_1p} to loop-index
			else if {point.joueur::%loop-index%} > {_2}:	
				set {_5} to {_4}
				set {_5p} to {_4p}
				set {_4} to {_3}
				set {_4p} to {_3p}
				set {_3} to {_2}
				set {_3p} to {_2p}
				set {_2} to loop-value
				set {_2p} to loop-index
			else if {point.joueur::%loop-index%} > {_3}:
				set {_5} to {_4}
				set {_5p} to {_4p}
				set {_4} to {_3}
				set {_4p} to {_3p}
				set {_3} to loop-value
				set {_3p} to loop-index
			else if {point.joueur::%loop-index%} > {_4}:
				set {_5} to {_4}
				set {_5p} to {_4p}
				set {_4} to loop-value
				set {_4p} to loop-index
			else if {point.joueur::%loop-index%} > {_5}:
				set {_5} to loop-value
				set {_5p} to loop-index
		set {_5p} to player from {_5p} 
		set {_4p} to player from {_4p}
		set {_3p} to player from {_3p}
		set {_2p} to player from {_2p}
		set {_1p} to player from {_1p}
		message "&aClassement par &ePoint &a: "
		message "   &b1 ➽ &6%{_1p}% - &c%{_1}%"
		message "   &b2 ➽ &6%{_2p}% - &c%{_2}%"
		message "   &b3 ➽ &6%{_3p}% - &c%{_3}%"
		message "   &b4 ➽ &6%{_4p}% - &c%{_4}%"
		message "   &b5 ➽ &6%{_5p}% - &c%{_5}%"


command /clanclass:
	trigger:
		loop {clan::*}:
			loop {clan::%loop-value%::*}:
				loop {point.joueur.%loop-value-2%::*}:
					set {point.clan::%loop-value-1%} to {point.clan::%loop-value-1%} + loop-value-3 
					set {_5p} to "Personne"
					set {_4p} to "Personne"
					set {_3p} to "Personne"
					set {_2p} to "Personne"
					set {_1p} to "Personne"
					set {_5} to 0
					set {_4} to 0
					set {_3} to 0
					set {_2} to 0
					set {_1} to 0
					loop {point.clan::*}:
						if {point.clan::%loop-index-1%} > {_1}:
							set {_5} to {_4}
							set {_5p} to {_4p}
							set {_4} to {_3}
							set {_4p} to {_3p}
							set {_3} to {_2}
							set {_3p} to {_2p}
							set {_2} to {_1}
							set {_2p} to {_1p}
							set {_1} to loop-value-1
							set {_1p} to loop-index-1
						else if {point.clan::%loop-index-1%} > {_2}:	
							set {_5} to {_4}
							set {_5p} to {_4p}
							set {_4} to {_3}
							set {_4p} to {_3p}
							set {_3} to {_2}
							set {_3p} to {_2p}
							set {_2} to loop-value-1
							set {_2p} to loop-index-1
						else if {point.clan::%loop-index-1%} > {_3}:
							set {_5} to {_4}
							set {_5p} to {_4p}
							set {_4} to {_3}
							set {_4p} to {_3p}
							set {_3} to loop-value-1
							set {_3p} to loop-index-1
						else if {point.clan::%loop-index-1%} > {_4}:
							set {_5} to {_4}
							set {_5p} to {_4p}
							set {_4} to loop-value-1
							set {_4p} to loop-index-1
						else if {point.clan::%loop-index-1%} > {_5}:
							set {_5} to loop-value-1
							set {_5p} to loop-index-1
					send "&aClassement par &epoint &a: " to player
					send "   &b1 ➽ &6%{_1p}% - &c%{_1}%" to player
					send "   &b2 ➽ &6%{_2p}% - &c%{_2}%" to player
					send "   &b3 ➽ &6%{_3p}% - &c%{_3}%" to player
					send "   &b4 ➽ &6%{_4p}% - &c%{_4}%" to player
					send "   &b5 ➽ &6%{_5p}% - &c%{_5}%" to player

3 réponses à cette question

Messages recommandés

  • 0
Posté(e)
Il y a 23 heures, Kilterra a dit :

Salut,

Comment est défini ta variable liste {clan::*} ?

Elle est définie lors de la création d'un clan 

on chat:
	if {defineclanname.%player%}:	
		set {clanname.%player%} to message
		cancel event
		if {clanname.%player%} != "!":
			loop all players:
				if loop-player is not player:
					if {clanname.%loop-player%} = {clanname.%player%}:
						send "{@tag}: &cDésolé mais ce nom est déjà pris !"
						send "{@tag}: &cEssayez-en un différent"
						delete {clanname.%player%}
						stop
			if length of {clanname.%player%} > 20:
				send "{@tag}: &cLe nom de clan : &6%{clanname.%player%}% &cest trop long !"
				send "&aVeuillez &2écrire &ale nom de votre futur clan !"
				stop
			delete {defineclanname.%player%}
			set {_p.%player%} to player's name
			add {_p.%player%} to {clan::%{clanname.%player%}%::*}
			set {isowner.%player%} to true
			broadcast "{@tag}: &6%player% &avient de créer le clan &e%{clanname.%player%}% &a!"
		else:
			send "{@tag}: &aVous avez bien annulé la création du clan !"
			delete {defineclanname.%player%}
			delete {clanname.%player%}

 

  • 0
Posté(e)
Le 30/05/2020 à 21:21, Kilterra a dit :

Bonsoir,
J'ai plusieurs choses à expliquer sur ton code, certaines résoudront sûrement ton problème, d'autre t'aideront pour la suite.

Premièrement, ta liste {clan::*} ne contiens aucune valeurs. En fait elle contient juste des listes donc si tu parcours toutes les valeurs de {clan::*} en fait tu n'en parcours aucune, ce qui fais que ton programme ne fonctionne pas. Pour pallier à ce problème, je te conseille de mettre dans une nouvelle liste par exemple {clanName::*} tout les noms de clans.

Ensuite, tu utilises beaucoup les variables à point. Je te les déconseilles fortement sauf pour certaines situations, passe plutôt par des variables listes. Par exemple : {defineclanname.%player%} pourrais devenir {defineclanname::%player%}. C'est beaucoup plus simple et plus optimisé si tu souhaite par exemple parcourir tout les joueurs qui sont en train de créer un clan.

Enfin, la façon dont tu vérifie si un clan existe déjà à quelques failles, je m'explique tu parcours tout les joueurs actuellement en ligne, cependant, si un joueur A par exemple créé un clan qui n'a nommé "test". Lorsqu'il se déconnecte, un autre joueur, le joueur B, décide de créer un clan avec le même nom. Ton code va donc parcourir tout les joueurs connectés, mais A n'est pas connecté, donc il ne détectera pas que le clan existe déjà, et il y aura donc 2 clan avec le même nom. Pour pallier à ce problème, tu pourrai utiliser le premier point et regarder si le nom est déjà dans la liste, si c'est le cas, alors le clan existe déjà, sinon le clan peut être créer maintenant.

Bien cordialement
Kilterra
 

Merciii c'est bon ca fonctionne j'ai bien créé une liste {clanname::*} et ca a régler mon problème

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.