Communauté Eggdrop
set varName ?newValue? - Version imprimable

+- Communauté Eggdrop (https://forum.eggdrop.fr)
+-- Forum : Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum : Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4)
+--- Sujet : set varName ?newValue? (/showthread.php?tid=171)



set varName ?newValue? - Garfield - 06/03/2008

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 !


RE: set varName ?newValue? - CrazyCat - 06/03/2008

Je ne vois pas ta procédure compte:ligne, il est possible qu'elle ne renvoit pas toujours une valeur.


RE: set varName ?newValue? - Garfield - 06/03/2008

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
}



RE: set varName ?newValue? - Garfield - 22/03/2008

Trouvé...heu...merci Smile


RE: set varName ?newValue? - CrazyCat - 22/03/2008

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


RE: set varName ?newValue? - Garfield - 23/03/2008

En effet oui Smile