Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


Affichage automatique avec précision en terme de jours
#1
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.
#2
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.
Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
#3
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,
#4
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.
Zeolia - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#5
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,
#6
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.
Zeolia - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#7
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
Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
#8
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,


Possibly Related Threads…
Thread Author Replies Views Last Post
  Script affichage automatique protec 6 4,677 20/04/2014, 20:15
Last Post: protec
  Message automatique heretoc 3 3,371 08/03/2013, 22:57
Last Post: aliasangelius
  Sajoin automatique avec une database heretoc 5 4,444 07/05/2010, 22:51
Last Post: heretoc
  Affichage variable sismik 5 4,032 18/11/2009, 21:20
Last Post: sismik
  précision des calculs mika23 3 3,666 10/10/2009, 10:52
Last Post: mika23
  Identification automatique CrazyCat 7 11,141 23/06/2008, 10:17
Last Post: BdS

Forum Jump:


Users browsing this thread: 1 Guest(s)