hello ...

Voilà, on fait que me parler des table hash, alors je me suis décider a tenter,

Je me suis armé de tutos sur les hash et des explications de C-dryk (qui m'ont permis de uand même comprendre le fonctionnement ...)

Donc voilà, le but est de creer un code pour faire un "top 3"

je vais detaillé ce que j'ai fait comme ça si dans mon raisonnement je me gourre, quelqu'un pourra surement le voir wink.gif

CODE
;Tout d'abord, je mets la création de la table à l'ouverture du script...
+, je verifie si elle existe quand le script s'ouvre pour ne pas 'écraser et la charger si elle est existente  ( merci les tutos :p)

on *:start:{
  hmake sysant 1
  if ($exists(sysant.hash)) hload -b sysant sysant.hash
}
; Quand je quitte le script, je la sauvegarde (je donne ses infos pour monrer que j'ai pas omis de la creer lol)
on *:exit:{ if ($hget(sysant)) hsave -bo sysant sysant.hash }


; Là, je crée un alias ou j'incremente mes valeurs sur la table (j'aurais pu faire il me semble hadd mais honnetement, je vois pas trop la subtilité :p) et bien sur dans un evenement genre on texte je rajoute inc.score $nick pour que ça fonctionne lol
alias inc.score { hinc sysant $+(score.,$nick) }

; je pose une condition que si la table existe pas ......

; là je fais une boucle pour prendre dans toute ma table les infos qu'il me faut

;et je crée une variable en fonction de mon tri

;j'utilise le $sorttok pour trier (dejà là si ça se trouve je me plante dans la methode de tri..)

;le $gettok pour prendre juste ce dont j'ai besoin là je ne pense pas me planter, je prends de 1 à trois delimité par un espace dans mon tri..)

; je refais une boucle pour cette fois choisir exactement les 3 premiers que je cherche (je peux me planter là aussi :d)
et je set une variable qui devrait représenter ce que je veux...

alias top3 {
  if (!$hget(sysant)) return
  var %i = 1,%top3
  while $hfind(sysant,score.*,%i) {
    %top3 = $gettok($sorttok(%top3 $+($hget(sysant,$v1),.,$v1),32,nr),1-3,32)
    inc %i
  }
  var %i = 1,%top
  while %i < 4 {
    tokenize 46 $gettok(%top3,%i,32)
    %top = %top $3 ( $+ $1 $+ )
    inc %i
  }
  msg $msn.get($cid,fullroom)  %top  on *:start:{
  hmake sysant 1
  if ($exists(sysant.hash)) hload -b sysant sysant.hash
}
on *:exit:{ if ($hget(sysant)) hsave -bo sysant sysant.hash }
alias inc.score { hinc sysant $+(score.,$nick) }
alias top3 {
  if (!$hget(sysant)) return
  var %i = 1,%top3
  while $hfind(sysant,score.*,%i) {
    %top3 = $gettok($sorttok(%top3 $+($hget(sysant,$v1),.,$v1),32,nr),1-3,32)
    inc %i
  }
  var %i = 1,%top
  while %i < 4 {
    tokenize 46 $gettok(%top3,%i,32)
    %top = %top $3 ( $+ $1 $+ )
    inc %i
  }
  msg $msn.get($cid,fullroom) %top

}

}



Au bout du compte, ça marche pas :-( , ça me retourne simplement : () () ()

Je me suis gourré quelque part c'est clair lol mais où????

Et si ça se trouve je me suis aussi compliqué la vie pour rien ...

Si quelqu'un a une idée ...

Merci wink.gif