j'ai DL ce TCL la donner par crazycats il y a un moment d ecela cependant quelque erreur subvienne
tcl
#fréquence en minutesset freq 1
# la fonction d'affichageproc message {}{
puthelp "PRIVMSG #easyfurious :ceci est un message test"list[utimer $::freq message]}
message
voila il est dit
#fréquence en minutes
hors cela et plutôt en second ce qui es assez chiant ^_^
et si possible je voudrais par exemple
mettre une annonce "bienvenue blabla" tous les 5 minutes
Un essai (je n'ai pas testé et il vaudrait mieux utiliser un namespace)
Code :
proc annonce5min { min hour day month year } {
set liste5min { {Voici un message diffusé toutes les 5 min} {Voici un autre message} }
set reply5min [lindex $liste5min [rand [llength $liste5min]]]
putserv "PRIVMSG #chan : ${reply5min}"
}
proc annonce10min { min hour day month year } {
set liste10min { {Voici un message diffusé toutes les 10 min} {Voici un autre message} }
set reply10min [lindex $liste10min [rand [llength $liste10min]]]
putserv "PRIVMSG #chan : ${reply10min}"
}
bind cron - "*/5 * * * *" annonce5min
bind cron - "*/10 * * * *" annonce10min
Remplacer #chan et les messages entres accolades
restart pour tester
Effectivement, il y avait une erreur dans ce bout de code, utimer est en secondes. Ce qui est bien expliqué ici.
Et frakir a raison, depuis la sortie d'eggdrop 1.6.20, il vaut mieux utiliser le bind cron pour ce genre d'action.
Seul petit détail: le set dans la procédure, ça n'est pas top à mon avis.
Je viens de vérifier si des crons qui se déclenchent en même temps ne posent pas de souci, la réponse est non.
Donc, peut-être une erreur dans ton script, peux tu le copier ici stp (sans rien en modifier) ? Merci
Même avec la version d'eggdrop 1.6.20 il et possible de faire un timer en minutes sans utilisé bind cron.
Exemple d'un morceau de code tcl :
tcl
bind EVNT - init-server proc:initje
procproc:initje { type }{
#### salon sur lequel se déroule le timer #####set ::salon"#salon" #### temps minimum entre deux phrases #####set ::temps"60" #### temps aléatoire max à ajouter au temps minimum ####set ::add_temps"5" #### Phrases à faire répéter #####set ::phrases{"blablabla""reblablabla"}set ::active0}
bind pub -|- !active onn
proc onn { nick uhost hand chan arg }{if[info exists ::active]&&($::active==1){
putserv "PRIVMSG $::salon :\0031Les Annonces sont déjà \0034activé\0031, veuillez d'abord les \0034désactivé avant de le relancer !"return}
putserv "PRIVMSG $::salon :\0031Les Annonces sont \0034activé !"
active
}
bind pub o|o !inactive off
proc off { nick uhost hand chan arg }{if![info exists ::active]||($::active==0){
putserv "PRIVMSG $::salon :\0031Les Annonces sont déjà \0034déactivé !"return}
putserv "PRIVMSG $::salon :\0031Les Annonces sont \0034désactivé !"set ::active0foreach t [timers]{if{[lindex$t1] == " active "}{
killtimer [lindex$t2]}}}proc active {}{set ::active1set ::phrase[lindex$::phrases[rand [llength$::phrases]]]
putserv "PRIVMSG $::salon :\0031Annonces : \0034 $::phrase\0031"
timer [expr$::temps + [rand $::add_temps]]{ active }}
bind cron - "*/5 * * * *" active
proc active { min hour day month weekday }{set ::active1set ::phrase[lindex$::phrases[rand [llength$::phrases]]]
putserv "PRIVMSG $::salon :\0031Annonces : \0034 $::phrase\0031"
timer [expr$::temps + [rand $::add_temps]]{ active }}
Si je ne me trompe pas ?
avec le bind cron + le timer tu vas faire exploser ton eggdrop
de plus je ne vois pas de que fait la variable ::active ni pourquoi tu utilises une global pour $phrase