Messages : 45
Sujets : 8
Inscription : Apr 2009
Niveau d’avertissement :
0%
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 ?
Messages : 438
Sujets : 17
Inscription : Sep 2008
Niveau d’avertissement :
0%
La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.
Messages : 45
Sujets : 8
Inscription : Apr 2009
Niveau d’avertissement :
0%
j'ai trouvé ce que je cherchais, je vous donne ça au cas où d'autres chercheraient la même chose.
Citation :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
Messages : 438
Sujets : 17
Inscription : Sep 2008
Niveau d’avertissement :
0%
05/07/2009, 16:05
(Modification du message : 05/07/2009, 16:05 par fedora.)
quasi les même explication que l'url que j'ai donné
La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.
Messages : 117
Sujets : 18
Inscription : Jan 2009
Niveau d’avertissement :
0%
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
Messages : 438
Sujets : 17
Inscription : Sep 2008
Niveau d’avertissement :
0%
bonjour,
la fonction " after " peut on l'ajouté sur le Wiki ? pour les personnes qui aimerais en savoir un peut plus sur cet fonction.
La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.
Messages : 117
Sujets : 18
Inscription : Jan 2009
Niveau d’avertissement :
0%
Page After créée sur le Wiki: bin, ici
Messages : 438
Sujets : 17
Inscription : Sep 2008
Niveau d’avertissement :
0%
merci Artix pour le tuto sur wiki
La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.
Messages : 383
Sujets : 7
Inscription : Dec 2007
Niveau d’avertissement :
0%
07/07/2009, 02:11
(Modification du message : 07/08/2009, 13:17 par CrazyCat.)
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}
}
}
}
}
C'est en reconnaissant ses erreurs que l'on progresse
Messages : 383
Sujets : 7
Inscription : Dec 2007
Niveau d’avertissement :
0%
la proc charfilter qui sera nécessaire
Code : proc charfilter {arg} {
string map {"\\" "\\\\" "\{" "\\\{" "\}" "\\\}" "\[" "\\\[" "\]" "\\\]" "\"" "\\\""} $arg
}
ainsi que la proc unixtime
Code : proc unixtime { } {
clock seconds
}
C'est en reconnaissant ses erreurs que l'on progresse
Messages : 10
Sujets : 0
Inscription : Apr 2009
Niveau d’avertissement :
0%
bah voici une petite exemple de timer TCL :
Citation :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
++
Messages : 45
Sujets : 8
Inscription : Apr 2009
Niveau d’avertissement :
0%
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
Messages : 111
Sujets : 20
Inscription : Nov 2007
Niveau d’avertissement :
0%
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 :/ ...
Messages : 45
Sujets : 8
Inscription : Apr 2009
Niveau d’avertissement :
0%
Babytigrou chez moi ca passe nickel
Je sais pas d'où ça pourrais venir.
essai de changer le
TCL utimer 60 { proc_expire }
en
Messages : 43
Sujets : 6
Inscription : Jan 2010
Niveau d’avertissement :
0%
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
DodY
|