Communauté sur les Eggdrops - Community about Eggdrops
Timer TCL - Printable Version

+- Communauté sur les Eggdrops - Community about Eggdrops (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)
+--- Thread: Timer TCL (/showthread.php?tid=447)

Pages: 1 2


Timer TCL - BlackNight - 05/07/2009

Bonjour à toutes et à tous.

Je rencontre actuellement un petit blocage pour le développement d'un tcl.

j'aimerai pouvoir faire des "timer" dans certaines actions.
je connais la procédure en mirc


Code:
timer <nb exec> <temps en sec> <commande>
timer 0 5 msg $chan salut tout le monde !
mais en tcl, je ne connais pas du tout la procédure.
Pourriez vous m'expliquer ?


RE: Timer TCL - fedora - 05/07/2009

bonjour,
essaye de voir ici http://www.eggdrop.fr/Timers_Utimers


RE: Timer TCL - BlackNight - 05/07/2009

j'ai trouvé ce que je cherchais, je vous donne ça au cas où d'autres chercheraient la même chose.

Quote:timer <minutes> <tcl-command>

Description: executes the given Tcl command after a certain number of minutes have passed

Returns: a timerID

Module: core
utimer <seconds> <tcl-command>

Description: executes the given Tcl command after a certain number of seconds have passed

Returns: a timerID

Module: core
timers

Returns: a list of active minutely timers. Each entry in the list contains the number of minutes left till activation, the command that will be executed, and the timerID.

Module: core
utimers

Returns: a list of active secondly timers. Each entry in the list contains the number of minutes left till activation, the command that will be executed, and the timerID.

Module: core

source: http://www.tclscript.com/docs/tcl-commands.html



RE: Timer TCL - fedora - 05/07/2009

quasi les même explication que l'url que j'ai donné :)


RE: Timer TCL - Artix - 06/07/2009

Il faut savoir que timer et utimers sont gérés par eggdrop
Au niveau TCL il existe aussi after pour executer une commande après un nombre de millisecondes données


RE: Timer TCL - fedora - 06/07/2009

bonjour,
la fonction " after " peut on l'ajouté sur le Wiki ? pour les personnes qui aimerais en savoir un peut plus sur cet fonction.


RE: Timer TCL - Artix - 06/07/2009

Page After créée sur le Wiki: bin, ici


RE: Timer TCL - fedora - 06/07/2009

merci Artix pour le tuto sur wiki :)


RE: Timer TCL - djkenny - 07/07/2009

salut,

pour ceux que ça intéresserais voila le utimer de eggdrop recodé entièrement en tcl pur avec after (comprend le killutimer et utimers)

tcl
proc timer {time proc} {
 variable timers
  set timerid [after [expr $time*1000] $proc]
  lappend timers "[expr [unixtime] + $time] $proc $timerid" 
  set after($timerid) [after [expr $time*1000] "[namespace current]::unsettimers {[expr [unixtime] + $time] $proc $timerid}"] 
  return $timerid
}
 
proc unsettimers {id} {
 variable timers
  if {[info exists timers] && $timers!=""} {
    set find [lsearch -exact $timers "$id"]
    if {$find!="-1"} {
      set timers [lreplace $timers $find $find]
    }
  }
}
 
proc timers { } {
 variable timers
  if {[info exists timers] && $timers!=""} {
    foreach u $timers {
      set u [charfilter $u]
      set t [lindex $u 0]
      set t [expr $t - [unixtime]]
      lappend ut "$t {[join [lrange $u 1 [expr [llength $u] - 2]]]} [lindex $u end]"
    }
    return $ut
  }
  return
}
 
proc killtimer {timerid} {
 variable timers
  if {[info exists timers] && $timers!=""} {
    foreach u $timers {
      if {[lindex $u end]==$timerid} {
        unsettimers $u
        catch {after cancel $timerid}
      }
    }
  }
}




RE: Timer TCL - djkenny - 07/07/2009

la proc charfilter qui sera nécessaire

Code:
proc charfilter {arg} {
  string map {"\\" "\\\\" "\{" "\\\{" "\}" "\\\}" "\[" "\\\[" "\]" "\\\]" "\"" "\\\""} $arg
}
ainsi que la proc unixtime

Code:
proc unixtime { } {
  clock seconds
}



RE: Timer TCL - David - 18/07/2009

bah voici une petite exemple de timer TCL :

Quote:
Code:
bind time - "*0 * * * *" message
bind time - "*5 * * * *" message
proc message {min hour day month year} {
putfast "privmsg #tonsalon le message qui sera envoyé toutes les 5 minutes"
}


je c pas c sa que vous cherche
++


RE: Timer TCL - BlackNight - 09/08/2009

Merci à tous pour votre aide, j'ai réussi à m'en sortir depuis le temps.
Et je vous fait donc part, en remerciement, du code qui en a découlé.

Je vous demanderai à tous, de respecter les conditions d'utilisation de ce code si vous décidez de vous en servir.


tcl
####################################################################
#        Script de demande d'animateurs par BlackNight             #
# ---------------------------------------------------------------- #
# Le principe est simple, vous avez plusieurs salons, des          #
# animateurs un peu partout, mais un salon a besoin d'animateur    #
# car celui du salon concerné s'absente, il peux donc se faire     #
# remplacer, en tapant !demande #salon , sur le salon du staff     #
# ---------------------------------------------------------------- #
# Requiert:                                                        #
#           - une Oline avec le flag netadmin pour l'eggdrop       #
# ---------------------------------------------------------------- #
# Conditions d'utilisation:                                        #
# Vous pouvez redistribuer ce code comme bon vous semble, le       #
# modifier, l'améliorer librement, tant que vous me faites part    #
# de ces modifications, et que vous mettiez ce code à disposition  #
# de tous, sans aucunes restrictions.                              #
# ---------------------------------------------------------------- #
# BlackNight : <magic.boss6@gmail.com>                             #
####################################################################
 
 
###configuration###
#salon où seront effectuées les demandes
set staff "#staff"
#liste de vhost autorisée a faire les demandes
set vhostniv0 {
	*@NetAdmin.domaine.tld
	*@ChanAdmin.domaine.tld
	*@ChanOp.domaine.tld
	*@Op.domaine.tld
	*@TechAdmin.domaine.tld
	*@IrcOp.domaine.tld
	*@global.domaine.tld
	*@anim.domaine.tld
}
 
 
 
 
## Ne modifiez rien ci-dessous sans connaisance du langage TCL ##
 
set chandemande "null"
bind pub - !demande demandestaff
proc demandestaff { nick host handle channel arg } {
 
global vhostniv0 staff chandemande
   if ![string compare -nocase $channel "$staff"] {
foreach vhostdemstaff $vhostniv0 {
 
  if [string match -nocase $vhostdemstaff $host]  {
      if ![string compare -nocase $chandemande "null"] {
 
  set chandemande "[lindex $arg 0]"
putquick "PRIVMSG $channel : Un animateur est demandé sur $chandemande par $nick. Tapez !ok pour accepter. Demande valable 1 minute."
putquick "NOTICE $channel : Un animateur est demandé sur $chandemande. Tapez !ok pour accepter. Demande valable 1 minute."
bind pub - !ok demandestaff:ok
utimer 60 { proc_expire }
 
		} else { putquick "PRIVMSG $channel :KO. Une demande est déjà en cours." }
 
	}
   }
 }
 
 }
 
 
proc proc_expire {} {
global staff chandemande 
set staffchan $staff
set demandechan $chandemande
if { $demandechan != "null" } {
   putquick "PRIVMSG $staffchan :La demande pour $demandechan à expirée. vous pouvez formuler une nouvelle demande."
set chandemande "null"
}
}
 
proc demandestaff:ok { nick host handle channel arg } {
 
global vhostniv0 staff chandemande
set staffchan $staff
set demandechan $chandemande
 
   if ![string compare -nocase $channel "$staffchan"] {
foreach vhostdemstaffok $vhostniv0 {
 
  if [string match -nocase $vhostdemstaffok $host]  {
if {$demandechan != "null"} {
 
  putquick "SAJOIN $nick $demandechan"
  putquick "PRIVMSG cerbere halfop $demandechan $nick"
  putquick "PRIVMSG $channel :$nick accèpte la demande sur $demandechan."
  putquick "PRIVMSG $channel :Vous pouvez formuler une nouvelle demande."
set chandemande "null"
 
		} else { putquick "PRIVMSG $channel :KO. Auncune demande n'est en cours." }
}
}
}
}
 
 
putlog "Demande.tcl Dévellopé par BlackNight"




Je n'ai par contre pas mit de vérifications des salons concernés par les demandes, par manque de temps sans doutes, aussi ne sachant pas vraiment comment faire.


Merci à la communauté d' Eggdrop.fr


RE: Timer TCL - Babytigrou16 - 09/08/2009

Merci BlackNitgh, Mais malheuresement le temps d'expire ne fonctionne pas ... car regarde ....

-12:09:40- ‹~Dragon061› !demande #Radio
-12:09:40- ‹~Nemesis› Un animateur est demandé sur #Radio par Dragon061. Tapez !oui pour accepter. Demande valable 1 minute.
-12:11:45- ‹~Dragon061› !oui

Cela fesait plus que 2 minute et 5 seconde que le temps étais écouler :/ ...


RE: Timer TCL - BlackNight - 09/08/2009

Babytigrou chez moi ca passe nickel :)

Je sais pas d'où ça pourrais venir.
essai de changer le

tcl
utimer 60 { proc_expire }


en


tcl
timer 1 { proc_expire }




RE: Timer TCL - DodY - 13/02/2010

Bonsoir

J'aimerais savoir comment faire pour que lorsque la personne rentre sur le salon, le message de bienvenue apparaisse que 10 sc après qu'il est join le salon par exemple.
J'ai regarder dans le forum et les tutos de timers mais cela me donne que pour dire un message toutes les X minutes.

Par avance merci