Aller au contenu
ZombieZone69_

Top X d'un variable

Messages recommandés

Bonjour, mon niveau en skript étant assez bas et après avoir chercher un peut partout, je m'adresse directement ici pour essayer de résoudre mon problème.
j'ai une variable "{pointvote::*}" qui liste des points propre à chaque joueurs et classée par uuid.
De cet variable j'aimerais faire un classement du type "Top 5" qui classe du plus élevé au plus bas des 5 premiers joueurs.
Cependant j'aimerais ne pas utiliser RandomSK et après mes recherches j'ai essayé avec ça, mais sans succès

Si quelqu'un si entend et a un peut de temps ça serait sympa 😉
Bonne journée

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 5 heures, PlayScripts a dit :

Salut. J'ai fait une fonction simple d'utilisation permettant cela. Le lien est ici.

Merci de la réponse rapide 😉
J'ai essayé ta fonction, qui marche bien le problème est que ça me classe que les points et pas à qui appartiennent ses points

Modifié par ZombieZone69_

Partager ce message


Lien à poster
Partager sur d’autres sites

comment les joueurs et les points sont stockés dans ta liste?

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 4 heures, Roma a dit :

comment les joueurs et les points sont stockés dans ta liste?

Comme ceci :
{pointvote::%uuid of player%} => value

Partager ce message


Lien à poster
Partager sur d’autres sites

Voilà, j'ai testé sur mon serveur il marche! (Rip mon matin xD)

command /topvote:
    trigger:
        loop {pointvote::*}:
            set {_split1::*} to loop-value split at " => "
            set {_number} to {_split1::2} parsed as number
            add "%{_split1::1}%:%{_number}%" to {pointvotenumber::*}
        loop {pointvotenumber::*}:
            set {spl::*} to loop-value split at ":"
            set {spli::2} to {spl::2} parsed as number
            if {test1} exist:
                set {spl1::*} to {test1} split at ":"
                set {spli1::2} to {spl1::2} parsed as number
            if {test2} exist:
                set {spl2::*} to {test2} split at ":"
                set {spli2::2} to {spl2::2} parsed as number
            if {test3} exist: 
                set {spl3::*} to {test3} split at ":"
                set {spli3::2} to {spl3::2} parsed as number
            if {test4} exist:
                set {spl4::*} to {test4} split at ":"
                set {spli4::2} to {spl4::2} parsed as number
            if {test5} exist:
                set {spl5::*} to {test5} split at ":"
                set {spli5::2} to {spl5::2} parsed as number
            if {test1} doesn't exist:
                set {test1} to loop-value
            else if {spli::2} <= {spli1::2}:
                if {test2} exist:
                    if {spli::2} > {spli2::2}:
                        set {test5} to {test4}
                        set {test4} to {test3}
                        set {test3} to {test2}
                        set {test2} to loop-value
                    else if {test3} exist:
                        if {spli::2} > {spli3::2}:
                            set {test5} to {test4}
                            set {test4} to {test3}
                            set {test3} to loop-value
                        else if {test4} exist:
                            if {spli::2} > {spli4::2}:
                                set {test5} to {test4}
                                set {test4} to loop-value
                            else if {test5} exist:
                                if {spli::2} > {spli5::2}:
                                    set {test5} to loop-value
                            else:
                                set {test5} to loop-value
                        else:
                            set {test4} to loop-value
                    else:
                        set {test3} to loop-value
                else: 
                    set {test2} to loop-value
            else if {spli::2} > {spli1::2}:
                if {test2} exist:
                    if {test3} exist:
                        if {test4} exist:
                            set {test5} to {test4}
                            set {test4} to {test3}
                            set {test3} to {test2}
                            set {test2} to {test1}
                        else:
                            set {test4} to {test3}
                            set {test3} to {test2}
                            set {test2} to {test1}
                    else:
                        set {test3} to {test2}
                        set {test2} to {test1}
                else:
                    set {test2} to {test1}
                set {test1} to loop-value
        broadcast "Top voteurs:"
        broadcast ""
        broadcast "&c&l1er : &b&l%{test1}%"
        broadcast "&c2è : &b&l%{test2}%"
        broadcast "&c3è : &b&l%{test3}%"
        broadcast "&c4è: &b%{test4}%"
        broadcast "&c5è : &b%{test5}%"
        clear {pointvotenumber::*}
        clear {test1}
        clear {test2}
        clear {test3}
        clear {test4}
        clear {test5}

 

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Franchement merci beaucoup d'avoir pris du temps pour ça mais je l'ai essayé et il ne fonctionne pas pour moi ça retourne que des "<none>" pour le broadcast de chaque ligne :s

Partager ce message


Lien à poster
Partager sur d’autres sites

ça veut dire que tes joueurs et les points ne sont pas stockés comme tu m'as dis.

 

J'ai compris: "%player% => %points%"

 

Est-ce exact ?

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 21 heures, Roma a dit :

ça veut dire que tes joueurs et les points ne sont pas stockés comme tu m'as dis.

 

J'ai compris: "%player% => %points%"

 

Est-ce exact ?

Voici un exemple dans variable.cvs :
pointvote::40d72472-fabd-46e6-ac79-f38eb76e04fa, long, 0000000000000000

Partager ce message


Lien à poster
Partager sur d’autres sites

Si le nombre c'est le "long", Essaie cela:

 

command /topvote:
    trigger:
        loop {pointvote::*}:
            set {_split1::*} to loop-value split at ", "
            set {_split2::*} to {_split1::1} split at "::"
            set {_number} to {_split1::2} parsed as number
            add "%{_split2::2}%:%{_number}%" to {pointvotenumber::*}
        loop {pointvotenumber::*}:
            set {spl::*} to loop-value split at ":"
            set {spli::2} to {spl::2} parsed as number
            if {test1} exist:
                set {spl1::*} to {test1} split at ":"
                set {spli1::2} to {spl1::2} parsed as number
            if {test2} exist:
                set {spl2::*} to {test2} split at ":"
                set {spli2::2} to {spl2::2} parsed as number
            if {test3} exist: 
                set {spl3::*} to {test3} split at ":"
                set {spli3::2} to {spl3::2} parsed as number
            if {test4} exist:
                set {spl4::*} to {test4} split at ":"
                set {spli4::2} to {spl4::2} parsed as number
            if {test5} exist:
                set {spl5::*} to {test5} split at ":"
                set {spli5::2} to {spl5::2} parsed as number
            if {test1} doesn't exist:
                set {test1} to loop-value
            else if {spli::2} <= {spli1::2}:
                if {test2} exist:
                    if {spli::2} > {spli2::2}:
                        set {test5} to {test4}
                        set {test4} to {test3}
                        set {test3} to {test2}
                        set {test2} to loop-value
                    else if {test3} exist:
                        if {spli::2} > {spli3::2}:
                            set {test5} to {test4}
                            set {test4} to {test3}
                            set {test3} to loop-value
                        else if {test4} exist:
                            if {spli::2} > {spli4::2}:
                                set {test5} to {test4}
                                set {test4} to loop-value
                            else if {test5} exist:
                                if {spli::2} > {spli5::2}:
                                    set {test5} to loop-value
                            else:
                                set {test5} to loop-value
                        else:
                            set {test4} to loop-value
                    else:
                        set {test3} to loop-value
                else: 
                    set {test2} to loop-value
            else if {spli::2} > {spli1::2}:
                if {test2} exist:
                    if {test3} exist:
                        if {test4} exist:
                            set {test5} to {test4}
                            set {test4} to {test3}
                            set {test3} to {test2}
                            set {test2} to {test1}
                        else:
                            set {test4} to {test3}
                            set {test3} to {test2}
                            set {test2} to {test1}
                    else:
                        set {test3} to {test2}
                        set {test2} to {test1}
                else:
                    set {test2} to {test1}
                set {test1} to loop-value
        broadcast "Top voteurs:"
        broadcast ""
        broadcast "&c&l1er : &b&l%{test1}%"
        broadcast "&c2è : &b&l%{test2}%"
        broadcast "&c3è : &b&l%{test3}%"
        broadcast "&c4è: &b%{test4}%"
        broadcast "&c5è : &b%{test5}%"
        clear {pointvotenumber::*}
        clear {test1}
        clear {test2}
        clear {test3}
        clear {test4}
        clear {test5}

 

Partager ce message


Lien à poster
Partager sur d’autres sites

je ne comprends pas le stockage de ta variable, donne moi un exemple avec un vrai nombre (genre 1) stp.

Partager ce message


Lien à poster
Partager sur d’autres sites
if {_votetext.3} is "1":
	set {derniervote.3.%uuid of arg player%} to now
	add 5 to {pointvote::%uuid of arg player%} ##ici par exemple
	play "ENTITY_VILLAGER_YES" to arg player at volume 0.3
	send "&aVous avez reçu &65 &apoints." to arg player

Voici un exemple de comment ça ajoute les points à la variable

Partager ce message


Lien à poster
Partager sur d’autres sites

Mets ça dans un skript:

 

command /testpourRoma:
    permission: *
    trigger:
        loop {pointvote::*}:
            send "%loop-value%" to sender #A ce moment là, tu me montre ce qu'a donné le message en jeu

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Ok. Donc c'est impossible si ta variable est stocké comme ça.

 

Stocke là de la façon à se qu'il y ait le nom du joueur et ses points.

 

Bien cordialement,

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×

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.