[Demande] attendre que l'egg soit posé pour activer un tcl precis
#1
Bonjour,

je viens vers vous car j'ai des eggdrop qui utilisent le principe de "spy.tcl", qui donc loguent tout ce qui est dit/ce passe sur divers salons, les kick,msg privés,notices, modes, changements de pseudos ect ... Bien évidement les egg etant sur pas mal de salons, ils mettent du temps à ce "poser" et commencent donc un flood énorme sur le salon #log . Hors j'aimerait que mon tcl ne demarre en fait qu'a son arrivée sur #log sans tenir compte de la file des msg/modes/topic qu'il a recu lors de sa connexion, à leur arrivée sur les divers salons.

principe:

"lancer l'egg/ charger les tcl et lib / connexion / arrivée sur les salons / et enfin démarrage du tcl de log "

(ps, windrops hébergés sur mes machines)

J'espère avoir eté précis dans ma requête

Cordialement.
Répondre Avertir
#2
Salut,

Simple, dans ton code TCL utilise la fonction timer, voir utimer, pour qu'il lance la procédure du démarage de ton tcl log, lorsque lui arrive sur le salon #log

Donc, lorsque ton eggdrop va rejoindre #log, il lancera le tout.
Mais faut se sois déclarable que sur $::botnick

J'espère t'avoir aider..
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
Répondre Avertir
#3
Je pense que le plus simple, c'est de ne charger les binds qu'une fois que l'eggdrop est bien sur tous les canaux, par exemple en comparant lors des joins de l'eggdrop le nombre de canaux actuels avec le nombre de canaux dans [channels].
Ou encore mieux, ne charger le script qu'une fois cette condition remplie.
Répondre
#4
RE,

l'idée est bonne, mais j'ai pas vraiment envie d'alourdir le code avec des timer utimer partout sur chaque bind, je pensait à un truc du genre set "la tcl" avec timer éventuellement, mais je ne vois pas comment faire.


Cordialemement.
Répondre Avertir
#5
Le timer est très aléatoire, est-ce que tu es vraiment capable de dire au bout de combien de temps l'eggdrop a rejoint tous les canaux ?
Alors qu'un script du genre:
TCL
set nchans [llength [channels]]
set joined 0
bind join - "*" countchan
proc countchan {nick uhost handle chan} {
   if {[string tolower $nick]!=[string tolower $::botnick} { return 0 }
   incr ::joined
   if { $::joined == $::nchans} {
      unbind join - "*" countchan
      source scripts/tonscript.tcl
   }
   return 0
}


Ce bout de script ne sera fonctionnel que le temps que mets l'eggdrop à rejoindre les canaux. En espérant que tu n'en aies pas en +inactive.
Répondre
#6
salut,

J'ai malheuresement des salons en +inactive, que j'aimerait eviter de supprimer. Autre soucis, j'utilise un tcl qui ce charge de charger les tcl ce trouvant dans le dossier scripts (loadall.tcl) ce qui m'evite de de devoir editer lefichier conf a chaque test.Neamoins, je pourrit toujours placer "log.tcl" dans un sous repertoire, et modifier la ligne source scripts/sousrep/tonscript.tcl. Reste donc le soucis des salons en +inactive.

Cordialement.
Répondre Avertir
#7
TCL
set nchans 0
foreach chan [channels] {
   if { [channel get $chan inactive]==0 } { incr ::nchans }
}
set joined 0
bind join - "*" countchan
proc countchan {nick uhost handle chan} {
   if {[string tolower $nick]!=[string tolower $::botnick} { return 0 }
   incr ::joined
   if { $::joined == $::nchans} {
      unbind join - "*" countchan
      source scripts/tonscript.tcl
   }
   return 0
}


Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté