![]() |
|
set varName ?newValue? - Version imprimable +- Communauté Eggdrop (https://forum.eggdrop.fr) +-- Forum : Eggdrop et scripts (https://forum.eggdrop.fr/forumdisplay.php?fid=8) +--- Forum : Scripts (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 :), 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 !!"
}
}Code : Tcl error [actionquest]: wrong # args: should be "set varName ?newValue?"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 :) 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 était mal placé ;) RE: set varName ?newValue? - Garfield - 23/03/2008 En effet oui :) |