RCA ArKanis
Messages postés
1287
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
21 février 2009
12 mai 2007 à 11:19
Une solution simple, c'est de mettre le classement sous cette forme :
score1:nick1 score2:nick2 ...
Pour ajouter quelqu'un dans le classement :
var %top = $classement_actuel (à toi de le donner)
auquel tu rajoutes le score du nouveau (même s'il ne rentre pas dans le top 10)
var %top = $instok(%top,$+(%score_du_gars,:,%nick_du_gars),-1,32)
que tu tries :
var %top = $sorttok(%top,32,nr)
et tu ne gardes que les 10 premiers :
var %top = $gettok(%top,1-10,32)
Ce qui te donne au final :
var %top = $gettok($sorttok($instok($classement_actuel,$+(%score_du_gars,:,%nick_du_gars),-1,32),32,nr),1-10,32)
Si tu veux avoir sa place (pour un éventuel /msg), il te faudra alors :var %n $+(%score_du_gars,:,%nick_du_gars), %top $gettok($sorttok($instok($classement_actuel,%n,-1,32),32,nr),1-10,32)
say $iif($findtok(%top,%n,1,32),Position : $+($ifmatch,e),Non classé)
En n'oubliant pas de sauvegarder le top 10 (.ini ou hashtable). Exemple avec .ini :var %n $1, %top $gettok($sorttok($instok($readini(Classement.ini,Top,Top10),%n,-1,32),32,nr),1-10,32)
say Position de %nick_du_gars : $iif($findtok(%top,%n,1,32),$+($ifmatch,e),Non classé)
writeini -n Classement.ini Top Top10 %top
Puis si tu en as besoin :
ON *:TEXT:!top*:#:{
var %n = $remove($1-,!top)
if (%n isnum 1-) msg $chan Classement : $gettok($readini(Classement.ini,Top,Top10),$+(1-,%n),32)
}
Si tu comptes faire plus que 10, du genre une infinité avec ton !classement, ça risque de ne pas fonctionner puisque la ligne sera trop longue ^^