Script : Boucle de X phrases espacées par Y secondes
#1
Le sujet a surement déjà été abordé mais je n'ai jamais trouvé de solution valable et vu que je débute je comprend pas tout ...

En fait j'aimerai faire un truc que je pense tout simple, faire des annonces sur le channel IRC en public.
Par exemple : Phrase1 - 5mins - Phrase2 - 5mins - Phrase3 - 5mins - Phrase1 etc ...

J'ai trouvé un script qui pourrai le faire mais les phrases arrivent aléatoirement et ça m'embête. Je ne pense pouvoir le faire avec BindTime mais j'ai pas vraiment comprit le truc.

Merci de votre aide.
Répondre Avertir
#2
Voici la syntaxe de bind time :
TCL
Syntaxe: bind time <flags> <mask> <proc>
Procédure: proc-name <minute> <hour> <day> <month> <year>
Module: core



La théorie, c'est bien, mais la pratique, c'est mieux Razz

TCL
bind time - "?0 * * * *" time:phrase_1
bind time - "?5 * * * *" time:phrase_2
 
proc time:phrase_1 {min hour day month year} {
   puthelp "PRIVMSG #Salon :Ton message 1"
   return 0
}
 
proc time:phrase_2 {min hour day month year} {
   puthelp "PRIVMSG #Salon :Ton message 2"
   return 0
}



Ce code envoie toute les 5 minutes un message sur #Salon.
Là, ce n'est pas tout à fait ce que tu veux, c'est fait ex prêt (ça serait trop facile si non).

Pour faire ce que tu veux, tu as plusieurs solutions, j'en voie deux au moments ou j'écris ce message :

Les deux consistent à lancer la même procédure toute les 5 minutes, donc :
TCL
bind time - "?0 * * * *" time:phrase
bind time - "?5 * * * *" time:phrase



Donc ta procédure ressemblerai a quelque chose comme ça :
TCL
proc time:phrase_1 {min hour day month year} {
   # Instructions
}



A la place de #Instructions, tu aurais deux éventuels système :
- Soit tu génères aléatoirement la phrase que tu veux dires (qui serait contenue dans une variable)
- Soit tu définis un ordre de suite de message, auquel cas il te faut enregistrer le message dit "précédemment" dans une variable (tout en prenant en compte de l'initialisation du robot).


Tu as beaucoup de solutions comme je l'ai dis, je te dis bon courage, et n'hésites pas à utiliser le forum si tu as besoin d'aide Wink


PS : Bienvenue sur le forum Wink
Répondre Avertir
#3
Alors là je dis attention: ce qui est donné par Dav34 se base sur l'horloge de la machine, ce n'est pas un déclenchement toutes les X minutes.
Pour un écart "rond" tel que 2, 5 ou 10 minutes (par exemple) cela peut fonctionner, mais je pense que la meilleur méthode est d'utiliser des timers.
Cela donnerait (grosso-modo):
TCL
#fréquence en minutes
set freq 7

# la fonction d'affichage
proc message {} {
   puthelp "PRIVMSG #canal :ceci est un message"
   list [utimer $::freq message]
}
 
message


La fonction message est appelée au chargement de l'eggdrop et s'appelle seule toutes les 7 minutes (défini par $::freq)
Répondre
#4
CrazyCat a écrit :Alors là je dis attention: ce qui est donné par Dav34 se base sur l'horloge de la machine, ce n'est pas un déclenchement toutes les X minutes.
Pour un écart "rond" tel que 2, 5 ou 10 minutes (par exemple) cela peut fonctionner, mais je pense que la meilleur méthode est d'utiliser des timers.
Cela donnerait (grosso-modo):
TCL
#fréquence en minutes
set freq 7

# la fonction d'affichage
function message {} {
   puthelp "PRIVMSG #canal :ceci est un message"
   list [utimer $::freq message]
}
 
message


La fonction message est appelée au chargement de l'eggdrop et s'appelle seule toutes les 7 minutes (défini par $::freq)

Plutôt :
TCL
proc message {} { 
...
}


Non ?

Bonne idée aussi mais après, il faut savoir gérer les timers, utimers ...


PS : Trop de PHP tue le PHP Razz
Répondre Avertir
#5
Oups Smile post corrigé Very Happy
Répondre
#6
Merci beaucoup, j'essaye ça Smile
Répondre Avertir


Atteindre :


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