Ajout pour trivia.tcl
#1
Sur le forum anglophone, un utilisateur a demandé s'il était possible de mettre un voice automatique lorsqu'une personne du top 3 entrait sur le canal du jeu.
Voici le bout de code que j'ai pondu et qui peut en intéresser certains, pas tellement par sa fonctionnalité mais plutôt par son utilisation des options de lsort et lsearch

tcl
proc tgvonjoin {nick uhost handle chan} {
   set tmp [list]
   for {set i 0} {$i<[llength $::tgscore]} {incr i} {
      lappend tmp [split [lindex $::tgscore $i] ,]
   }
   set tmp [lrange [lsort -decreasing -integer -index 2 $tmp] 0 2]
   if {[lsearch -nocase -index 0 $tmp $nick]>-1} {
      pushmode $chan +v $nick
   }
}
bind join - "$tgchan *" tgvonjoin



lsort
Que fait la partie lsort -decreasing -integer -index 2 $tmp ?
La liste tmp contient des sous-listes composées du pseudo (index 0), de l'heure du score (index 1) et de la valeur du score (index 2). Je dis donc de trier les sous-listes sur son 2ème index (le score) en le traitant comme un entier et dans l'ordre décroissant.

lsearch
lsearch (lsearch -nocase -index 0 $tmp $nick) fonctionne de la même manière, avec l'option -index il va travailler dans les sous-listes, mais là ce qui nous intéresse est l'index 0 (le pseudo).



J'ai ajouté un exemple sur la page wiki de lsort, voici le rendu de l'exécution du code :
Code :
tclsh test.tcl
order by names
albert as 45 words and 8 lines
gwenaelle as 84 words and 18 lines
hector as 4 words and 2 lines
myriam as 64 words and 4 lines
order by words
hector as 4 words and 2 lines
albert as 45 words and 8 lines
myriam as 64 words and 4 lines
gwenaelle as 84 words and 18 lines
order by lines
hector as 4 words and 2 lines
myriam as 64 words and 4 lines
albert as 45 words and 8 lines
gwenaelle as 84 words and 18 lines
Répondre


Messages dans ce sujet
Ajout pour trivia.tcl - par CrazyCat - 10/03/2025, 15:10

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté