Communauté Eggdrop

Version complète : set varName ?newValue?
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Bonsoir,

Je voudrais réaliser un petit TCL qui, dans l'idéal Smile, pioche une question dans un fichier texte, jusque là tout va bien, toutes les Xh15mn
j'ai donc fait comme ceci :

Code :
bind time - "15 * * * *" actionquest
bind pubm -|- * reponse

# -> Sélection de l'énigme
proc actionquest { min hour day month year } {
global rep tps_rep
   set nbr_lignes [compte:lignes $::rpg(quest)]
   set num_hasard [expr int(rand()*$nbr_lignes)+(1&&$nbr_lignes)]
   set ligne [read:event $::rpg(quest) $num_hasard]
   set ligne_split [split $ligne "|"]
   set quest [lindex $ligne_split 0]
   set rep [lindex $ligne_split 1]
    putserv "PRIVMSG $::rpg(chan) :$quest"
    puthelp "PRIVMSG $::rpg(chan) :Vous disposez de 30 secondes pour répondre."
set tps_rep "on"
set utimer 30 endquest
}

# -> Fin du temps de réflexion
proc endquest {nick host hand text} {
global tps_rep
   set tps_rep "off"
}

# -> Verification réponse
proc reponse { nick host hand chan arg text } {
global rep tps_rep
set zoom [lrange arg 0 end]
   if { $tps_rep == "off" } { puthelp "NOTICE $nick :Désolé mais le temsp impartit est écoulé"
    return 0
   }
   if { $zoom != $rep } {
    return 0
   }
   if { $zoom == $rep } {
    puthelp "PRIVMSG $::rpg(chan) : Bravo $nick !!"
  }
}
le problème est que j'ai ça en PL :
Code :
Tcl error [actionquest]: wrong # args: should be "set varName ?newValue?"
et là je suis coincé, pouriez-vous m'aider svp ?
Merci !
Je ne vois pas ta procédure compte:ligne, il est possible qu'elle ne renvoit pas toujours une valeur.
J'utilise ceci pour lire et compter :
Code :
# -> Lecture
proc read:event { fichier num_ligne } {
   if { ![file readable $fichier] } { return "\002\0034Erreur\003\002 : impossible de lire le fichier." }
   if { $num_ligne<=0 } { return "\002\0034Erreur\003\002 :  numéro de ligne non valide" }
     set fHnd [open $fichier "r"]
     set counter 0
     set ligne ""
       while { ![eof $fHnd] } {
     set foo [gets $fHnd]
      incr counter
      if { $counter == $num_ligne } {
         set ligne $foo
         break
      }
   }
   close $fHnd
   return $ligne
}

# -> Comptage du nombre de lignes
proc compte:lignes { fichier } {
   if { ![file readable $fichier] } { return 0 }
     set fHnd [open $fichier "r"]
     set counter 0
   while { ![eof $fHnd] } {
      gets $fHnd
      incr counter
   }
   close $fHnd
   return $counter
}
Trouvé...heu...merci Smile
Désolé, j'avais raté ta réponse précédente.
Donc oui, je présume que ton
tcl
set counter 0


était mal placé Wink
En effet oui Smile