Je sais pas vous mais moi j'oublie souvent de souhaiter un anniversaire, ce qui s'est d'ailleurs une nouvelle fois produit ce week-end. C'est pourquoi j'ai décidé de créer un petit soft pour mIRC qui gère les anniversaires a ma place...
C'est un petit script qui active une dialog ou divers options sont au choix : ajouter un anniv, en supprimer un, visualiser la date d'anniv d'un contact, faire une sauvegarde des anniversaires, restaurer a une date ultérieure (+/- manuellement), réinitialiser ou désactiver le script.
Une fois les dates d'anniversaire saisies, il se fait oublier (sauf si on l'appelle par la touche F11) et se réveille pour vous prévenir qu'un anniversaire va arriver 3 jours avant la date effective, la veille et le jour meme de l'anniversaire ; le script vérifie la présence d'un anniversaire dans les 3 jours a venir au démarage de mIRC ainsi que toutes les 6h de connexion. Vous pouvez bien evidemment faire a tout moment une recherche manuelle par l'interface principale (F11).
Source / Exemple :
;------------------------------------------------------------------------------------------------
; Birthday mIRC Manager version franaise par Galdinx
; galdinx@teepi.net
; http://www.teepi.net
;------------------------------------------------------------------------------------------------
;-------------------------
;;; GESTION DES EVENTS ;;;
;-------------------------
alias F11 { set %nombranniv $hget(anniv,0) | dialog -m anniv anniv }
on 1:start:{ if ((%annivmanager == 1) && (%loadanniv != 1)) {
.hmake -s anniv 1000
.hload anniv datanniv.hash
verifannivauto
.timerverifanniv 0 21600 verifannivauto
}
}
on 1:load:{ set %loadanniv 1 | dialog -m presentanniv presentanniv }
alias -l verifannivauto {
verifanniv3 $left($date,5)
verifanniv1 $left($date,5)
verifanniv0 $left($date,5)
.timerverif 1 3 if (%detectanniv) unset %detectanniv
}
alias -l verifanniv {
set %detectanniv 3
verifanniv3 $left($date,5)
verifanniv1 $left($date,5)
verifanniv0 $left($date,5)
.timerverif 1 3 if (%detectanniv) unset %detectanniv
}
;------------------------------
;;; GESTION DES HASH TABLES ;;;
;------------------------------
alias -l ajoutanniv {
.hinc anniv 0
var %n $hget(anniv,0)
.hadd anniv $calc(3*$eval(%n) - 2) %n
.hadd anniv $calc(3*$eval(%n) - 1) $1
.hadd anniv $calc(3*$eval(%n)) $2
.hsave anniv datanniv.hash
dialog -x anniv anniv
F11
}
alias -l supprimanniv {
if ($?!="Etes-vous sur de vouloir supprimer $replace($hget(anniv,$calc(3*$eval($1) - 1)),_,$chr(32)) de la liste des anniversaires ?" == $true) {
var %n $hget(anniv,0)
.hadd anniv $calc(3*$eval($1) - 1) $hget(anniv,$calc(3*$eval(%n) - 1))
.hadd anniv $calc(3*$eval($1)) $hget(anniv,$calc(3*$eval(%n)))
.hdel anniv $calc(3*$eval(%n) - 2)
.hdel anniv $calc(3*$eval(%n) - 1)
.hdel anniv $calc(3*$eval(%n))
.hdec anniv 0
.hsave anniv datanniv.hash
dialog -x anniv anniv
F11
}
}
alias -l backupanniv {
mkdir c:/anniv
.hsave anniv c:/anniv/archive_anniv_ $+ $eval($replace($date,/,_))
dialog -m backupinfo backupinfo
}
alias -l revisanniv {
.hfree -s anniv
.hmake -s anniv 1000
.hload anniv datanniv.hash
dialog -x revisanniv revisanniv
dialog -x anniv anniv
F11
}
alias -l reinitanniv {
if ($?!="Etes-vous sur de vouloir réinitialiser la liste de vos anniversaires ?" == $true) {
.hfree -s anniv
.hmake -s anniv 1000
.hadd anniv 0 0
dialog -x anniv anniv
F11
}
}
alias -l desactivanniv {
if ($?!="Etes-vous sur de vouloir désactiver Birthday mIRC Manager ?" == $true) {
unset %annivmanager
.hfree -s anniv
.remove datanniv.hash
dialog -x anniv anniv
dialog -m desactivanniv desactivanniv
}
}
alias -l verifanniv0 {
var %p 1
var %n 0
while (%p <= $hget(anniv,0)) {
if ($hget(anniv,$calc(3*$eval(%p))) == $1) {
set %anniv0 %anniv0 $replace($hget(anniv,$calc(3*$eval(%p) - 1)),_,$chr(32)) et
inc %n
}
inc %p
}
if (%anniv0) set %anniv0 $left(%anniv0,$calc($len($eval(%anniv0)) - 3))
if (%n > 1) dialog -m anniv02 anniv02
elseif (%n == 1) dialog -m anniv01 anniv01
elseif (%n == 0) {
set %detectanniv $calc($eval(%detectanniv) - 1)
if (%detectanniv == 0) { unset %detectanniv | dialog -m noanniv noanniv }
}
}
alias -l verifanniv1 {
if (($left($1,2) >= 1) && ($left($1,2) < 28)) {
var %q $+($calc($eval($left($1,2)) + 1),$right($1,3))
if ($len($eval(%q)) == 4) var %q = 0 $+ $eval(%q)
verifanniv12 %q
}
elseif (($left($1,2) >= 28) && ($left($1,2) < 31) && (($eval($right($1,2)) == 1) || ($eval($right($1,2)) == 3) || ($eval($right($1,2)) == 5) || ($eval($right($1,2)) == 7) || ($eval($right($1,2)) == 8) || ($eval($right($1,2)) == 10) || ($eval($right($1,2)) == 12))) {
verifanniv12 $+($calc($eval($left($1,2)) + 1),$right($1,3))
}
elseif (($left($1,2) >= 28) && ($left($1,2) < 30) && (($eval($right($1,2)) == 4) || ($eval($right($1,2)) == 6) || ($eval($right($1,2)) == 9) || ($eval($right($1,2)) == 11))) {
verifanniv12 $+($calc($eval($left($1,2)) + 1),$right($1,3))
}
elseif ($1 == 31/01) verifanniv12 01/02
elseif ($1 == 31/03) verifanniv12 01/04
elseif ($1 == 30/04) verifanniv12 01/05
elseif ($1 == 31/05) verifanniv12 01/06
elseif ($1 == 30/06) verifanniv12 01/07
elseif ($1 == 31/07) verifanniv12 01/08
elseif ($1 == 31/08) verifanniv12 01/09
elseif ($1 == 30/09) verifanniv12 01/10
elseif ($1 == 31/10) verifanniv12 01/11
elseif ($1 == 30/11) verifanniv12 01/12
elseif ($1 == 31/12) verifanniv12 01/01
elseif (($1 == 28/02) && (4 \\ $right($date,4))) verifanniv12 01/03
elseif (($1 == 28/02) && (4 // $right($date,4))) verifanniv12 29/02
elseif ($1 == 29/02) verifanniv12 01/03
}
alias -l verifanniv12 {
var %p 1
var %n 0
while (%p <= $hget(anniv,0)) {
if ($hget(anniv,$calc(3*$eval(%p))) == $1) {
set %anniv1 %anniv1 $replace($hget(anniv,$calc(3*$eval(%p) - 1)),_,$chr(32)) et
inc %n
}
inc %p
}
if (%anniv1) set %anniv1 $left(%anniv1,$calc($len($eval(%anniv1)) - 3))
if (%n > 1) dialog -m anniv12 anniv12
elseif (%n == 1) dialog -m anniv11 anniv11
elseif (%n == 0) {
set %detectanniv $calc($eval(%detectanniv) - 1)
if (%detectanniv == 0) { unset %detectanniv | dialog -m noanniv noanniv }
}
}
alias -l verifanniv3 {
if (($left($1,2) >= 1) && ($left($1,2) < 28)) {
var %q $+($calc($eval($left($1,2)) + 1),$right($1,3))
if ($len($eval(%q)) == 4) var %q = 0 $+ $eval(%q)
verifanniv32 %q
}
elseif (($left($1,2) >= 28) && ($left($1,2) < 31) && (($eval($right($1,2)) == 1) || ($eval($right($1,2)) == 3) || ($eval($right($1,2)) == 5) || ($eval($right($1,2)) == 7) || ($eval($right($1,2)) == 8) || ($eval($right($1,2)) == 10) || ($eval($right($1,2)) == 12))) {
verifanniv32 $+($calc($eval($left($1,2)) + 1),$right($1,3))
}
elseif (($left($1,2) >= 28) && ($left($1,2) < 30) && (($eval($right($1,2)) == 4) || ($eval($right($1,2)) == 6) || ($eval($right($1,2)) == 9) || ($eval($right($1,2)) == 11))) {
verifanniv32 $+($calc($eval($left($1,2)) + 1),$right($1,3))
}
elseif ($1 == 31/01) verifanniv32 01/02
elseif ($1 == 31/03) verifanniv32 01/04
elseif ($1 == 30/04) verifanniv32 01/05
elseif ($1 == 31/05) verifanniv32 01/06
elseif ($1 == 30/06) verifanniv32 01/07
elseif ($1 == 31/07) verifanniv32 01/08
elseif ($1 == 31/08) verifanniv32 01/09
elseif ($1 == 30/09) verifanniv32 01/10
elseif ($1 == 31/10) verifanniv32 01/11
elseif ($1 == 30/11) verifanniv32 01/12
elseif ($1 == 31/12) verifanniv32 01/01
elseif (($1 == 28/02) && (4 \\ $right($date,4))) verifanniv32 01/03
elseif (($1 == 28/02) && (4 // $right($date,4))) verifanniv32 29/02
elseif ($1 == 29/02) verifanniv32 01/03
}
alias -l verifanniv32 {
if (($left($1,2) >= 1) && ($left($1,2) < 28)) {
var %q $+($calc($eval($left($1,2)) + 1),$right($1,3))
if ($len($eval(%q)) == 4) var %q = 0 $+ $eval(%q)
verifanniv33 %q
}
elseif (($left($1,2) >= 28) && ($left($1,2) < 31) && (($eval($right($1,2)) == 1) || ($eval($right($1,2)) == 3) || ($eval($right($1,2)) == 5) || ($eval($right($1,2)) == 7) || ($eval($right($1,2)) == 8) || ($eval($right($1,2)) == 10) || ($eval($right($1,2)) == 12))) {
verifanniv12 $+($calc($eval($left($1,2)) + 1),$right($1,3))
}
elseif (($left($1,2) >= 28) && ($left($1,2) < 30) && (($eval($right($1,2)) == 4) || ($eval($right($1,2)) == 6) || ($eval($right($1,2)) == 9) || ($eval($right($1,2)) == 11))) {
verifanniv33 $+($calc($eval($left($1,2)) + 1),$right($1,3))
}
elseif ($1 == 31/01) verifanniv33 01/02
elseif ($1 == 31/03) verifanniv33 01/04
elseif ($1 == 30/04) verifanniv33 01/05
elseif ($1 == 31/05) verifanniv33 01/06
elseif ($1 == 30/06) verifanniv33 01/07
elseif ($1 == 31/07) verifanniv33 01/08
elseif ($1 == 31/08) verifanniv33 01/09
elseif ($1 == 30/09) verifanniv33 01/10
elseif ($1 == 31/10) verifanniv33 01/11
elseif ($1 == 30/11) verifanniv33 01/12
elseif ($1 == 31/12) verifanniv33 01/01
elseif (($1 == 28/02) && (4 \\ $right($date,4))) verifanniv33 01/03
elseif (($1 == 28/02) && (4 // $right($date,4))) verifanniv33 29/02
elseif ($1 == 29/02) verifanniv33 01/03
}
alias -l verifanniv33 {
if (($left($1,2) >= 1) && ($left($1,2) < 28)) {
var %q $+($calc($eval($left($1,2)) + 1),$right($1,3))
if ($len($eval(%q)) == 4) var %q = 0 $+ $eval(%q)
verifanniv34 %q
}
elseif (($left($1,2) >= 28) && ($left($1,2) < 31) && (($eval($right($1,2)) == 1) || ($eval($right($1,2)) == 3) || ($eval($right($1,2)) == 5) || ($eval($right($1,2)) == 7) || ($eval($right($1,2)) == 8) || ($eval($right($1,2)) == 10) || ($eval($right($1,2)) == 12))) {
verifanniv34 $+($calc($eval($left($1,2)) + 1),$right($1,3))
}
elseif (($left($1,2) >= 28) && ($left($1,2) < 30) && (($eval($right($1,2)) == 4) || ($eval($right($1,2)) == 6) || ($eval($right($1,2)) == 9) || ($eval($right($1,2)) == 11))) {
verifanniv34 $+($calc($eval($left($1,2)) + 1),$right($1,3))
}
elseif ($1 == 31/01) verifanniv34 01/02
elseif ($1 == 31/03) verifanniv34 01/04
elseif ($1 == 30/04) verifanniv34 01/05
elseif ($1 == 31/05) verifanniv34 01/06
elseif ($1 == 30/06) verifanniv34 01/07
elseif ($1 == 31/07) verifanniv34 01/08
elseif ($1 == 31/08) verifanniv34 01/09
elseif ($1 == 30/09) verifanniv34 01/10
elseif ($1 == 31/10) verifanniv34 01/11
elseif ($1 == 30/11) verifanniv34 01/12
elseif ($1 == 31/12) verifanniv34 01/01
elseif (($1 == 28/02) && (4 \\ $right($date,4))) verifanniv34 01/03
elseif (($1 == 28/02) && (4 // $right($date,4))) verifanniv34 29/02
elseif ($1 == 29/02) verifanniv34 01/03
}
alias -l verifanniv34 {
var %p 1
var %n 0
while (%p <= $hget(anniv,0)) {
if ($hget(anniv,$calc(3*$eval(%p))) == $1) {
set %anniv3 %anniv3 $replace($hget(anniv,$calc(3*$eval(%p) - 1)),_,$chr(32)) et
inc %n
}
inc %p
}
if (%anniv3) set %anniv3 $left(%anniv3,$calc($len($eval(%anniv3)) - 3))
if (%n > 1) dialog -m anniv32 anniv32
elseif (%n == 1) dialog -m anniv31 anniv31
elseif (%n == 0) {
set %detectanniv $calc($eval(%detectanniv) - 1)
if (%detectanniv == 0) { unset %detectanniv | dialog -m noanniv noanniv }
}
}
;--------------------------
;;; GESTION DES DIALOGS ;;;
;--------------------------
dialog presentanniv {
title "Gestionnaire des Anniversaires mIRC"
size -1 -1 180 60
option dbu
text "Bienvenue sur le Birthday mIRC Manager version française par Galdinx.",1,0 5 180 100,center
text "Retrouvez-moi sur irc.teepi.net.",2,0 15 180 100,center
text "Pour accéder aux fonctionnalités du script, cliquez désormais sur F11.",3,0 25 180 100,center
button "Continuer",4,67 40 50 10
}
on *:dialog:presentanniv:init:*:{
set %annivmanager 1
.hmake -s anniv 1000
.hsave anniv datanniv.hash
}
on *:dialog:presentanniv:sclick:4:{
.hadd anniv 0 0
.hsave anniv datanniv.hash
unset %loadanniv
dialog -x presentanniv presentanniv
F11
}
dialog anniv {
title "Gestionnaire des Anniversaires mIRC"
size -1 -1 190 300
option dbu
text "Ajouter un anniversaire :", 1, 5 8 100 17
text "Nom :",2, 5 19 50 10
edit "" 3, 22 17 50 10
text "Date :",4, 80 19 30 10
edit "" 5, 98 17 30 10
button "Ajouter", 6, 140 17 45 10
text "Ex :",7, 5 29 30 10
text "Paul",8, 42 29 30 10
text "07/04",9, 105 29 30 10
box "Liste actuelle",10, 45 40 100 153
text "Cliquez pour sélectionner :",11, 48 50 100 100
list 12, 47 60 96 130, extcel
text "Date :", 13, 55 202 30 99
edit "", 14, 80 200 30 10,read autohs
button "Supprimer",15, 130 200 50 10
button "Vérifier maintenant", 16, 65 220 60 10,
button "Back up",17,30 240 50 10
button "Révision",18,110 240 50 10
button "Réinitialiser",19,30 260 50 10
button "Désactiver",20,110 260 50 10
button "Fermer", 21, 75 280 40 10, cancel
}
on *:dialog:anniv:init:*:{
var %p 1
while (%p <= %nombranniv) {
did -a anniv 12 $replace($hget(anniv,$calc(3*$eval(%p) - 1)),_,$chr(32))
inc %p
}
unset %nombranniv
}
on *:dialog:anniv:sclick:6:{
if (($len($did(anniv,3)) > 0) && ($len($did(anniv,5)) == 5) && (($regex($did(anniv,5),[0-9][0-9]\/[0][0-9])) || ($regex($did(anniv,5),[0-9][0-9]\/[1][0-2])))) ajoutanniv $replace($did(anniv,3),$chr(32),_) $did(anniv,5)
elseif (($len($did(anniv,3)) > 0) || ($len($did(anniv,5)) > 0)) dialog -m ajoutanniverror ajoutanniverror
}
dialog ajoutanniverror {
title "Erreur"
size -1 -1 100 40
option dbu
text " Veuillez vérifier la syntaxe de l'anniversaire à ajouter s'il vous plaît.",1,5 5 90 100
button "Continuer",2,25 25 50 10,cancel
}
on *:dialog:anniv:sclick:12:{
did -r anniv 14
if ($eval($did(anniv,12).sel) > 0) did -a anniv 14 $hget(anniv,$calc(3*$eval($did(anniv,12).sel)))
}
on *:dialog:anniv:sclick:15:if ($did(anniv,12).sel > 0) supprimanniv $did(anniv,12).sel
on *:dialog:anniv:sclick:16:verifanniv
on *:dialog:anniv:sclick:17:backupanniv
dialog backupinfo {
title "Info Backup"
size -1 -1 140 40
option dbu
text "Une archive de vos anniversaires actuels a été crée dans c:\anniv\ . Conservez là précieusement.",1,5 5 130 100,center
button "Continuer",2,45 25 50 10,cancel
}
on *:dialog:anniv:sclick:18:dialog -m revisanniv revisanniv
dialog revisanniv {
title "Réviser votre liste d'anniversaire"
size -1 -1 170 60
option dbu
text Pour restaurer votre liste d'anniversaires telle qu'elle l'était à une date ultérieure $+ $chr(44) veuillez renommer votre fichier d'archive par "datanniv.hash" $+ $chr(44) puis remplacer la version existente dans le répertoire principal de mIRC (par défaut c:\Program Files\mIRC) par celle ci. Cliquez ensuite sur ok. ,1,5 5 160 100,center
button "OK",2,60 45 50 10
}
on *:dialog:revisanniv:sclick:2:revisanniv
on *:dialog:anniv:sclick:19:reinitanniv
on *:dialog:anniv:sclick:20:desactivanniv
dialog desactivanniv {
title "Au revoir"
size -1 -1 150 40
option dbu
text "Birthday mIRC Manager a été désactivé. Pour le réactiver, veuillez taper /load -rs <adresse de votre fichier>.",1,0 5 150 100,center
button "ok",2,58 25 30 10,cancel
}
dialog anniv01 {
title "ANNIVERSAIRE !!"
size -1 -1 200 40
option dbu
text Attention $+ $chr(44) $eval(%anniv0) fête son anniversaire aujourd'hui !! ,1,5 8 190 100,center
button "OK",2,75 25 50 10,cancel
}
dialog anniv02 {
title "ANNIVERSAIRE !!"
size -1 -1 200 40
option dbu
text Attention $+ $chr(44) $eval(%anniv0) fêtent leur anniversaire aujourd'hui !! ,1,5 5 190 100,center
button "OK",2,75 25 50 10,cancel
}
on *:dialog:anniv0?:sclick:2:unset %anniv0
dialog anniv11 {
title "ANNIVERSAIRE DEMAIN !!"
size -1 -1 200 40
option dbu
text Attention $+ $chr(44) $eval(%anniv1) fête son anniversaire demain !! ,1,5 8 190 100,center
button "OK",2,75 25 50 10,cancel
}
dialog anniv12 {
title "ANNIVERSAIRE DEMAIN !!"
size -1 -1 200 40
option dbu
text Attention $+ $chr(44) $eval(%anniv1) fêtent leur anniversaire demain !! ,1,5 5 190 100,center
button "OK",2,75 25 50 10,cancel
}
on *:dialog:anniv1?:sclick:2:unset %anniv1
dialog anniv31 {
title "ANNIVERSAIRE DANS 3 JOURS !!"
size -1 -1 200 40
option dbu
text Attention $+ $chr(44) $eval(%anniv3) fête son anniversaire dans 3 jours !! ,1,5 8 190 100,center
button "OK",2,75 25 50 10,cancel
}
dialog anniv32 {
title "ANNIVERSAIRE DANS 3 JOURS !!"
size -1 -1 200 40
option dbu
text Attention $+ $chr(44) $eval(%anniv3) fêtent leur anniversaire dans 3 jours !! ,1,5 5 190 100,center
button "OK",2,75 25 50 10,cancel
}
on *:dialog:anniv3?:sclick:2:unset %anniv3
dialog noanniv {
title "PAS D'ANNIVERSAIRE !!"
size -1 -1 200 40
option dbu
text Auncun anniversaire trouvé pour aujourd'hui ou demain ou dans 3 jours... ,1,5 8 190 100,center
button "OK",2,75 25 50 10,cancel
}
Conclusion :
Pas de commentaire, le script est simple, il se comprend aisément sans.
Pas de bugs connus, cela gère les années bissextiles et tout (en revanche si vous en trouvez prévenez moi vite)
Pas d'évolution prévue tant que pas de commentaires sur son fonctionnement.
Pour les (rares) utilisateurs du Teepi-Script, pour le serveur irc.teepi.net, un executable adapté au Teepi-Script est en ligne :
http://teepi.net/l/ts
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.