Aller au contenu
  • 0

Classer les joueurs selon leurs score


Question

Posté(e)

Bonjour ! Dans un de mes minijeux, j'ai créé une variable {kill.%player's uuid%} qui est incrémentée à chaque kill du joueur. J'aimerai pouvoir classer ces joueurs selon leur kill. par exemple pour les afficher dans un scoreboard, après avoir loop tout les joueurs dans la région de l'arène, avec une présentation de ce genre :

Player1 : {kill.%player1's uuid%}

Player2 : {kill.%player2's uuid%}

Player3 : {kill.%player3's uuid%}

.....

et ainsi de suite.

(à noter que je ne demande pas comment faire un scoreboard, ça, je sais faire)

15 réponses à cette question

Messages recommandés

  • 0
Posté(e)

Je ne te donne pas une solution à ton problème, seulement un conseil pratique :

 

Quand tu dois utiliser un nombre de variable qui ont la même fonction il est préférable d'utiliser un type list car c'est plus efficace d'utiliser par la suite les %loop-index% et %loop-value% ce qui te permet d'être beaucoup plus souple dans ton code.

 

{kill::%player's UUID%}

  • 0
Posté(e)

J'ai trouvé une instruction bien plus simple avec random SK.

Sauf que... bah comme toujours c'est pas foutu de marcher :/

Le serveur crashe si j'utilise un event ou une condition de RandomSk...

 

Et dans le cas de l'agorithme, comment faire quand on souhaite classer des chiffres associés à des pseudos par exemple ?

 

Si à la place de

loop 20 times:
           set {_z} to a random integer between 1 and 100
           add {_z} to {_list::*}

 

Ou souhaiterait

 

        set {_list::noob} to 1
       set {_list::wola} to 8
       set {_list::hey} to 3
       set {_list::hell} to 2
       set {_list::pro} to 100
       set {_list::plane} to 18

  • 0
Posté(e)

Parce que hormis une liste de chiffres, l'algorithme permet rien d'autre du moins dans sa forme actuelle, et je n'ai pas les connaissances suffisantes pour le modifier :/

  • 0
Posté(e)

Je remercie @minouis55 pour cette solution :

 

command /trie:
   trigger:
       set {_list::*} to {playerlist::*}
       while size of {_list::*} isn't 0:
           set {_best_value} to 0
           set {_best_player} to ""
           loop {_list::*}:
               if {kill.%loop-value%} > {_best_value}:
                   set {_best_value} to {kill.%loop-value%}
                   set {_best_player} to loop-value
           loop {_list::*}:
               if "%loop-value%" is "%{_best_player}%":
                   remove loop-value from {_list::*}
                   add loop-value to {_finallist::*}
       message "%{playerlist::*}%"

Qui permet d'ailleurs d'utiliser des variables normales pour les kills des joueurs.

  • 0
Posté(e)
Pour les tops, je pense que le plus simple reste d'utiliser le number sorting de randomsk

Déjà essayé

Ne marche malheureusement pas sur mon serveur, ainsi que chez de nombreux autres, sinon je n'aurais pas demandé à @minouis55 cet algorithme.

×
×
  • 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.