Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


Annonce X minutes
#1
bonjour / bonsoir

j'ai DL ce TCL la donner par crazycats il y a un moment d ecela cependant quelque erreur subvienne


tcl
#fréquence en minutes
set freq 1
 
# la fonction d'affichage
proc 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

et "recherche de webmaster" tous les 10 minutes

etc...

si quelqu’un peux m'aider cela serais gentil

d'avance merci
#2
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
#3
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.
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#4
bonjour / bonsoir

merci a vous deux cela a l'air de fonctionner je vous tiens au courant si deventuel erreur survienne

juste peut être une erreur mais => set reply10min [lindex $liste10min [rand [llength $liste5min]]]

ne serais pas => set reply10min [lindex $liste10min [rand [llength $liste10min]]] ????
#5
Si :)
Un copié/collé malencontreux de frakir, je n'ai pas tout vérifié.

De toutes manières, les codes donnés ici ne sont pas à recopier tel quel mais à comprendre, ce que tu sembles avoir fait.
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#6
bonjour / bonsoir

merci :)

cependant le timer de 10 minutes ne fonctionne pas :x

ps: aucune erreur en pl :x
#7
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
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#8
bonjour / bonsoir

voici le tcl
#9
Dans ta liste de messages "10 minutes", tu oublies de fermer une accolade.
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#10
Bonjour,

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
proc proc: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 ::active 0
}
 
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 ::active 0
    foreach t [timers] {
        if {[lindex $t 1] == " active "} {
            killtimer [lindex $t 2]
        }
    }
}
 
proc active {} {
    set ::active 1
    set ::phrase [lindex $::phrases [rand [llength $::phrases]]]
    putserv "PRIVMSG $::salon :\0031Annonces : \0034 $::phrase\0031"
    timer [expr $::temps + [rand $::add_temps]] { active }
}

#11
CrazyCat Wrote:Et frakir a raison, depuis la sortie d'eggdrop 1.6.20, il vaut mieux utiliser le bind cron pour ce genre d'action.

alias_angelius Wrote:Même avec la version d'eggdrop 1.6.20 il et possible de faire un timer en minutes sans utilisé bind cron.

"Il vaut mieux" ne veut pas dire "il est imopssible".
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#12
Oui,

Donc sa donnerais en exemple comme ceci :


tcl
bind cron - "*/5 * * * *" active
proc active { min hour day month weekday } {
set ::active 1
    set ::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 ?
#13
Comme a dit uto sur #eggdrop: "Heu."
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#14
alias_angelius Wrote:Oui,

Donc sa donnerais en exemple comme ceci :


tcl
bind cron - "*/5 * * * *" active
proc active { min hour day month weekday } {
set ::active 1
    set ::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 :x
de plus je ne vois pas de que fait la variable ::active ni pourquoi tu utilises une global pour $phrase
C'est en reconnaissant ses erreurs que l'on progresse ;)
Away
#15
Et je ne vois pas l'intérêt de chercher ce qu'il faudrait faire alors que frakir a déjà donné le code.
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away


Possibly Related Threads…
Thread Author Replies Views Last Post
Question TCL annonce KeeViiNou 8 2,041 31/03/2022, 06:00
Last Post: ZarTek
  Crontab d'annonce samdine62 3 1,826 17/03/2020, 10:59
Last Post: CrazyCat
  [Abandon] devoice auto au bout de X minutes Alucard`68 4 4,012 12/02/2017, 02:46
Last Post: Alucard`68
  Petit soucis avec un script d'annonce de la saint du jour, etc... loulou7593 3 5,983 19/11/2011, 14:53
Last Post: CrazyCat
  Annonce lancement de jeux Darfus 5 5,595 01/07/2011, 20:00
Last Post: aliasangelius
  VDM.tcl qui publie toutes les X minutes alanfollow 15 11,967 15/05/2010, 07:32
Last Post: fedora
  bannir une annonce a repetiton bewess 5 5,475 18/10/2009, 09:30
Last Post: bewess
  Kickban Annonce a repetition bewess 0 3,953 12/05/2008, 09:02
Last Post: bewess

Forum Jump:


Users browsing this thread: 1 Guest(s)