Il existe déjà un système de Top/Flop ici : https://skript-mc.fr/forum/threads/créer-un-top-flop-de-joueurs-tri-croissant-décroissant.3944/
Mais je vous en propose un autre qui n'a rien à voir et qui est très performant :
Ne nécessite pas d'addon
possibilité de choisir par exemple "de la place 5 à la place 10" (ex: /top Kill 5 10)
Ordre croissant et décroissant (ex: /top Kill 10 5)
inverser l'ordre de lecture : la place 1 à la plus haute valeur/ la plus basse valeur (ex: /top Kill 1 10 /top Kill 1 10 f) /top Kill 10 1 est donc l'équivalent de /top Kill 1 10 f
command /top <text> [<integer=1>] [<integer=5>] [<text>]:
usage: /top <statistique> [debut] [fin] [inverser]
trigger:
set {_now} to now
#---------------------------------------------------------------#
# CODE A MODIFIER #
# OBJECTIF : RECUPERER LA LISTE DES JOUEURS ET LEUR STATISTIQUE #
#---------------------------------------------------------------#
set {_players::*} to yml list "list.allplayers" from file "plugins/PlayerStats/SERVEUR.yml"
loop {_players::*}:
"%loop-value%" is not "SERVEUR"
set {_value} to yml value "%arg-1%" from file "plugins/PlayerStats/%loop-value%.yml" parsed as number
#----------------------------#
# DEBUT DU CODE UTILE #
# NE MODIFIER QUE LES TEXTES #
#----------------------------#
# les 2 lignes en dessous sont 2 sécurités à activer en cas de doute du fonctionnement du code au dessus
# set {_value} to {_value} parsed as number
# {_value} +1 > {_value}
set {_value} to ({_value}*100000 + (random integer between 1 and 99))
set {_list::%{_value}%} to loop-value
delete {_value}
if arg-4 is not set:
send "<gold>Top <white>%arg-1% <gold>a partir de la place <white>%arg-2% <gold>a la place <white>%arg-3%" to player
else:
send "<gold>Top <white>%arg-1% <gold>a partir de la place <white>%arg-2% <gold>a la place <white>%arg-3% <gray>(Inversé)" to player
set {_a} to 1
loop {_list::*}:
set {_result::%{_a}%::%loop-index%} to loop-value
add 1 to {_a}
set {_num} to arg-2
loop (1+ difference between arg-2 and arg-3) times:
if arg-4 is not set:
set {_i} to ({_a} + {_num}*-1)
else:
set {_i} to {_num}
loop {_result::%{_i}%::*}:
send " <gold>%{_num}%- <light green>%loop-value-2% : <white>%(( (loop-index parsed as number) /100000))%" to player
remove 1 from {_num}
if arg-3 > arg-2:
add 2 to {_num}
send "Temps de calcul : %difference between {_now} and now%" to player
Il n'y a que le début du code à changer, par exemple avec quelque chose comme:
#---------------------------------------------------------------#
# CODE A MODIFIER #
# OBJECTIF : RECUPERER LA LISTE DES JOUEURS ET LEUR STATISTIQUE #
#---------------------------------------------------------------#
set {_players::*} to all players
loop {_players::*}:
set {_value} to {%loop-player%.%arg-1%} parsed as number
#----------------------------#
# DEBUT DU CODE UTILE #
# NE MODIFIER QUE LES TEXTES #
#----------------------------#
En faite tout ce qu'il faut faire c'est définir les variables {_players::*} et {_value} !
Le reste du code va se charger de traiter ces variables
* # les 2 lignes en dessous sont 2 sécurités à activer en cas de doute du fonctionnement du code au dessus
# set {_value} to {_value} parsed as number
# {_value} +1 > {_value}
**N’hésitez pas à supprimer le "set {_now} to now" et la dernière ligne de code qui ne sert qu'à montrer la rapidité du code.