Aller au contenu
  • 0

Aide au classement d'un gui (TusKe)


Question

Posté(e) (modifié)

Bonjour, bonsoir ^^ 

Voilà ça fait un petit moment que je traine avec moi un skript "topluck" plus ou moins fait maison.
Son fonctionnement est simple ; il suffit de taper /topluck et ça nous ouvre un menu de ce genre : voir image #1 (On peut voir qu'en jaune apparaît un pourcentage )

-> Mon problème est que j'aimerais rajouter un système lors de l'ouverture du menu qui permet de classer les têtes de joueurs dans l'inventaire gui par ordre décroissant en fonction de la variable du pourcentage*.
Et donc avoir un vrai classement pour éviter de devoir regarder chaque joueur un par un.

J'espère que c'est compréhensible si non je peux rajouter des détails au besoin.
(pour faire fonctionner ce skript j'utilise TusKe, Paper 1.13.2 et Skript-2.3.1)

=> partie du code concernée :

open virtual chest with 5 row named "&4&lTopLuck" to player
set {_slot} to 0
loop all players:
	if {_slot} > 45:
 		message "Erreur, trop de joueur connecté." #bon ça m'ai jamais arrivé mais bon, sait-on jamais ^^
		stop
	if {alarmetopluck.%uuid of loop-player%} is not set:
		set {alarmetopluck.%uuid of loop-player%} to 0
	if {alarmetopluck.%uuid of loop-player%} is 0:
		set {_head} to skull of "%loop-player%" parsed as player named "&a• &6%loop-player%"
	if {alarmetopluck.%uuid of loop-player%} is 1:
		set {_head} to skull of "%loop-player%" parsed as player named "&c• &6%loop-player%"
	set 1st line of lore of {_head} to "&e%{diamond.%uuid of loop-player%}% %% &7&o(%{depassement.%uuid of loop-player%}%x)"
	set 2nd line of lore of {_head} to "&9Afficher plus d'option"
	make gui slot {_slot} of the player with {_head} to close then run player command "/topluck %loop-player%"
	add 1 to {_slot}

*la variable concernée s'appelle ici : {diamond.%uuid of loop-player%}

2019-01-18_02.25.47.png

Modifié par ZombieZone69_

11 réponses à cette question

Messages recommandés

  • 0
Posté(e)

Pourquoi ne pas essayer de faire un système de supériorité ou d'infériorité ?

Je penses que quelque chose du genre :

if {variable} > 10%
    Suite du code

Je penses que cela marcherais 🤔

  • J'aime 1
  • 0
Posté(e)

J'ai un peut essayé avec ça et je n'y arrive pas du tout 😕 .
après réflexion ça ne peux pas fonctionner car dans ce cas ça ne classera pas.

La seul piste que j'ai c'est un système de classement top 8 que j'avais eu ici grace à l'aide de quelqu'un qui me permet de classer les 8 1er joueurs mais seulement sous forme de texte non sous forme de gui.

  • 0
Posté(e)
Il y a 2 heures, ZombieZone69_ a dit :

J'ai un peut essayé avec ça et je n'y arrive pas du tout 😕 .
après réflexion ça ne peux pas fonctionner car dans ce cas ça ne classera pas.

La seul piste que j'ai c'est un système de classement top 8 que j'avais eu ici grace à l'aide de quelqu'un qui me permet de classer les 8 1er joueurs mais seulement sous forme de texte non sous forme de gui.

Si tu l'as sous texte, tu doit pouvoir réussir à le classer sous gui.

 

Sinon, j'avais vu un addons sur skunity qui avait une fonction qui permettait de classer quelque chose juste avec une variable !

Essai de cherche :x j'ai plus le nom!

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

Bonjour, voila ton code. 

Il me manque une partie de ton système pour le pourcentage et les alertes donc je te laisse adapter le code à ton système. 

Il faudra juste que ta variable avec le pourcentage soit rédigée de cette forme {Topluck.Diamond::%player's UUID%}. Utiliser une variable liste permet ensuite de la loop facilement pour faire le classement. La variable pour l'alerte comme ceci {Topluck.Alert::%player's UUID%}
Je ne sais pas si tu souhaites que le pourcentage ne compte que pour la session en cours (le temps qu'il reste connecté) ou qu'il compte pour toujours. 

Dans mon code j'ai fait en sorte qu'il se reset aprés chaque déconnexion. Je te laisse supprimer la partie en question si tu veux l'inverse.
 

command /topluck [<offlineplayer>]:
	trigger:
		if arg 1 is not set:
			open virtual chest with size 6 named "&4Topluck" to player
			loop {Topluck.Diamond::*}:
				set {_copie::%loop-index%} to loop-value
			loop size of {_copie::*} times:
				if loop-number > 53:
					stop loop
				set {_n} to -1
				clear {_p} 
				loop {_copie::*}:
					if {_copie::%loop-index%} > {_n}:
						set {_n} to {_copie::%loop-index%}
						set {_p} to loop-index
				add {_p} to {_ListP::*} 
				add {_n} to {_ListN::*} 
				clear {_copie::%{_p}%}
			loop size of {Topluck.Diamond::*} times:
				if loop-number > 53:
					stop
				if {Topluck.Alert::%{_ListP::%loop-number%}%} is not set:
					set {_Alert} to 0
				else:
					set {_Alert} to {Topluck.Alert::%{_ListP::%loop-number%}%}
				format gui slot (loop-number -1) of player with skull of "%{_ListP::%loop-number%}%" parsed as offline player named "&c%{_ListP::%loop-number%} parsed as offlineplayer%" with lore "||&8&l» &cPourcentage: &e%{Topluck.Diamond::%{_ListP::%loop-number%}%}%%%||||&8&l» &cAlerte(s): &e%{_alert}%||||&2&l» &aClique pour plus d'info" to close then run player command "/topluck %{_ListP::%loop-number%} parsed as offlineplayer%"
		else:
			if {Topluck.Alert::%arg 1's UUID%} is not set:
				set {_Alert} to 0
			else:
				set {_Alert} to {Topluck.Alert::%arg 1's UUID%}
			message "&7[&6TopLuck&7] &c%arg 1% &8&l» &e%{Topluck.Diamond::%arg 1's UUID%}%&e%% &8&l» &e%{_Alert}%&ex"
			message "&cJe ne sais pas exactement ce que tu voulais faire ici :)"

on break:
	if event-block is diamond ore:
		add 1 to {Topluck.Diamond::%player's UUID%}
		
on quit:
	delete {Topluck.Diamond::%player's UUID%}
	delete {Topluck.Alert::%player's UUID%}
	
on join:
	set {Topluck.Diamond::%player's UUID%} to 0

 

Modifié par Soufreur78
  • J'aime 2
  • 0
Posté(e)

@Soufreur78 Alors, après avoir modifié ma variable pour qu'elle puisse être loop facilement, j'ai essayé d'y adapté ton code cependant j'ai été bloqué car d'après ce que je vois ton skript te permet de loop la variable pour tous les joueurs (même déco si je me trompe pas) or j'ai uniquement besoin de ceux qui sont en lignes.

Du coup j'avoue avoir un peut cherché mais mes connaissances en skript étants basiques je n'y suis pas arrivé :s

  • 0
Posté(e) (modifié)

Si j'ai bien compris tu souhaites que seul les joueurs en ligne puissent apparaître dans le menu topluck mais que les variables ne soient jamais delete ? 

Si oui, voici le code

command /topluck [<offlineplayer>]:
	trigger:
		if arg 1 is not set:
			open virtual chest with size 6 named "&4Topluck" to player
			loop {Topluck.Diamond::*}:
				if loop-index parsed as offlineplayer is online:
					set {_copie::%loop-index%} to loop-value
			set {_nbonline} to size of {_copie::*}
			loop size of {_copie::*} times:
				if loop-number > 53:
					stop loop
				set {_n} to -1
				clear {_p} 
				loop {_copie::*}:
					if {_copie::%loop-index%} > {_n}:
						set {_n} to {_copie::%loop-index%}
						set {_p} to loop-index
				add {_p} to {_ListP::*} 
				add {_n} to {_ListN::*} 
				clear {_copie::%{_p}%}
			loop {_nbonline} times:
				if loop-number > 53:
					stop
				if {Topluck.Alert::%{_ListP::%loop-number%}%} is not set:
					set {_Alert} to 0
				else:
					set {_Alert} to {Topluck.Alert::%{_ListP::%loop-number%}%}
				format gui slot (loop-number -1) of player with skull of "%{_ListP::%loop-number%}%" parsed as offline player named "&c%{_ListP::%loop-number%} parsed as offlineplayer%" with lore "||&8&l» &cPourcentage: &e%{Topluck.Diamond::%{_ListP::%loop-number%}%}%%%||||&8&l» &cAlerte(s): &e%{_alert}%||||&2&l» &aClique pour plus d'info" to close then run player command "/topluck %{_ListP::%loop-number%} parsed as offlineplayer%"
		else:
			if {Topluck.Alert::%arg 1's UUID%} is not set:
				set {_Alert} to 0
			else:
				set {_Alert} to {Topluck.Alert::%arg 1's UUID%}
			message "&7[&6TopLuck&7] &c%arg 1% &8&l» &e%{Topluck.Diamond::%arg 1's UUID%}%&e%% &8&l» &e%{_Alert}%&ex"
			message "&cJe ne sais pas exactement ce que tu voulais faire ici :)"

 

Modifié par Soufreur78
  • J'aime 1
  • Haha 1
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.