Communauté sur les Eggdrops - Community about Eggdrops
Affichage automatique avec précision en terme de jours - 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: Affichage automatique avec précision en terme de jours (/showthread.php?tid=609)



Affichage automatique avec précision en terme de jours - Haribo - 10/02/2010

Bonjour,

Je crée actuellement un script TCL relatant les départs, arrivées et dessertes des trains d'une gare.
De ce fait, j'ai besoin d'aide au niveau d'un point.

Certains trains ne circulent pas tous les jours ou que certains jours donc je ne peux pas utiliser "00 00 * * *" (bind time sans option supplémentaire) pour eux.

Que devrais-je rajouter au script ci-dessus pour que :
- certains messages soient affichés que certains jours ?
- certains messages ne doivent pas être affichés que certains jours ?

Vous trouverez, ci-joint à ce message, un exemple.

Je vous remercie par avance.
Cordialement,
Haribo.


RE: Affichage automatique avec précision en terme de jours - MenzAgitat - 10/02/2010

Petit extrait de code du Motus :

tcl
# effacer les scores automatiquement chaque semaine (0 = non, 1 = oui)
# remarque : il est nécessaire que le bot soit en fonction au jour et
# à l'heure choisis pour que la remise à zéro puisse avoir lieu.
variable clearscoresweekly "1"
# si l'effacement automatique des scores chaque semaine est activé,
# quel jour aura-t-il lieu ?
variable clearscores_day "lundi"
# à quelle heure ?
# (format 24h, mettez un 0 devant les valeurs inférieures à 10)
# exemples : "05h15" = 5h15    "00h00" = minuit     "17h05" = 17h05
variable clearscores_time "05h15"
 
(...)
 
variable clearscores_time [split $motus::clearscores_time "h"] 
if { $motus::clearscoresweekly } { bind time - "[lindex $motus::clearscores_time 1] [lindex $motus::clearscores_time 0] * * *" motus::clear_scores_weekly }
 
(...)
 
##### Effacement des scores chaque semaine
proc motus::clear_scores_weekly {min hour day month year} {
	if { [lindex [ctime [unixtime]] 0] == [string map -nocase {lundi Mon mardi Tue mercredi Wed jeudi Thu vendredi Fri samedi Sat dimanche Sun} $motus::clearscores_day] } {
		motus::archive_scores
		variable scores ""
		motus::ecrit_scores
		set current_time [split [lindex [ctime [unixtime]] 3] ":"]
		if { [channel get $motus::motus_chan motus] == 1 } { puthelp "PRIVMSG $motus::motus_chan :[color warning]\002Remise à zéro hebdomadaire des scores du Motus." }
	}
}


Ce système me permet d'effacer les scores chaque lundi; il est facile de l'adapter afin d'inclure/exclure d'autres jours.


RE: Affichage automatique avec précision en terme de jours - Haribo - 10/02/2010

Bonjour MenzAgitat,

Merci de votre participation.
Cependant, cela ne m'aide guère à trouver comment créer le code (ou proc...) afin que le bot fasse ce que je souhaite.

Cordialement,


RE: Affichage automatique avec précision en terme de jours - CrazyCat - 10/02/2010

Je t'ai fait une petite version avec des exemples simples d'exclusion de jours.

Par contre, j'ai viré tes codes couleurs qui ne correspondent pas à la mise en forme tcl normalisée.


RE: Affichage automatique avec précision en terme de jours - Haribo - 10/02/2010

Bonsoir CrazyCat,

Dans ton second code, tu veux dire que ce train ne circule pas le dimanche ?
Et que faire pour les trains circulent du lundi au vendredi ? Et ceux ne circulant que le lundi et le samedi ?

Oui, j'ai vu ça pour les codes coloratifs.

Cordialement,


RE: Affichage automatique avec précision en terme de jours - CrazyCat - 10/02/2010

Non, dans la seconde procédure (le code est l'ensemble du fichier), le train ne circule que le dimanche: on sort de la procédure si on est pas le 7ème jour de la semaine (!= signifie différent de)

Les trains qui ne circulent que du lundi au vendredi, c'est la troisième procédure: ils ne circulent donc pas le week-end.

Pour ceux qui ne circuleraient que le lundi et le samedi, il faudrait:

tcl
if { [clock scan %u] != 1 && [clock scan %u] != 6 } {
	# Ne circule que lundi et samedi
	return 0
}

Note bien l'utilisation du ou logique (||) et du et logique (&&) selon le résultat à obtenir, et la manière de tester.


RE: Affichage automatique avec précision en terme de jours - MenzAgitat - 10/02/2010

Haribo Wrote:Merci de votre participation.
Cependant, cela ne m'aide guère à trouver comment créer le code (ou proc...) afin que le bot fasse ce que je souhaite.
Je n'ai fait que te donner une piste en te montrant une technique pour forcer un bind time à n'agir que certains jours de la semaine, il ne fallait pas y voir du code prêt à c/c dans ton script ^^

T'as de la chance que notre bon CrazyCat soit toujours prêt à faire ce que je ne suis prêt qu'à guider :p


RE: Affichage automatique avec précision en terme de jours - Haribo - 10/02/2010

Je l'avais compris. Cela ne change rien, je vous remercie tout de même de votre participation.

Oui, j'ai la chance que CrazyCat soit là, prêt à partager ses connaissances, car, honnêtement, je n'ai pas la moindre idée de comment faire.

Cordialement,