Classement

Corween Messages postés 73 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 31 juillet 2008 - 11 mai 2007 à 19:40
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
Bonjour, pour votre plus grand plaisir : LA question de Corween ^_^

Donc en fait c'était pour savoir si vous conaissiez un site avec un tuto pour pouvoir faire un classement ( genre un top10 ) ou si c'est pas trop compliquer, m'expliquer :s

J'ai regardé dans quelques bots comment il été fait, mais j'me perd dans toutes les lignes :x
J'ai cherch& aussi sur Google, bah il veux po être mon ami aparement aujourd'hui, il m'donne rien du tout :'(

Vala, merci :p

4 réponses

cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
11 mai 2007 à 19:59
j'avais fait un alias il a quelque temps pour qqun qui voulait faire la meme chose que toi, je te le laisse ici, je peux le commenté si tu veux, il marche pour des variables, tout les variables commence par le même nom %bla, il gère aussi les scores egaux

alias getpoint {
  .echo -q $regex($1-,/(?:^|\s)(\d+)\.+/g) | var %a = 1, %d = $regml(0), %c  while (%a <%d) { %c %c $regml(%a) | inc %a } | return %c
}

alias top6 {
  Var -s %a 1 ,%b = $var(%bla*,0)
  while (%a <= %b) {    var %v $var(%bla*,%a).value ,%vv $var(%bla*,%a)
    if ($findtok($getpoint(%s),%v,32)) var -s %s = $puttok(%s,$+(%v,.,$token($token(%s,$ifmatch,32),2,46),/,$remove($token($var(%bla*,%a),2,46),%bla)),$ifmatch,32)
    else var -s %s = %s $+($var(%bla*,%a).value,.,$remove($token($var(%bla*,%a),2,46),%bla))
    inc %a
  }  var %ss $sorttok(%s,32,nr) ,%c 1 ,%d = $numtok(%ss,32)
  while (%c <= %d) { echo -a $+(%c,.) $replace($token($token(%ss,%c,32),2,46),/,$+($chr(44),$chr(32))) - $token($token(%ss,%c,32),1,46) dollar(s) - | inc %c }
}

Si ton code n'utilise pas les variables ou si tu ne compte pas classé par variables, détails un peu plus ce que tu veux avec des exemples ;)
0
Corween Messages postés 73 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 31 juillet 2008
11 mai 2007 à 21:37
xD huhu j'comprend rien au code, donc j'pourrais pas te dire si c'est ça que je recherche en fait ^_^

Je cherche un truc du genre, j'fais un jeu avec des points comptés en variable, et si je tappe !top10 ya les 10 premier vec leurs points et si jtape !classement ya tous les joueurs classé du plus fort au moins fort vec les points toujours ( un truc du genre quoi )

Mais j'pensais que c'était plus simple que ça xD 'fin merci beaucoup en tout cas, je garde ^^ mais il fait quoi e nfait ce code ? il donne le top6 ?
0
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
11 mai 2007 à 21:54
Oui ok en variable mais t'es variable se présente comment ?
Montre moi un exemple...
Est ce que c'est dans ce genre là :
%score_pseudo1 score1
%score_pseudo2 score2
0
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 ^^
0
Rejoignez-nous