URL: https://linuxfr.org/forums/programmationautre/posts/am%C3%A9lioration-dun-plugin-pour-amsn Title: Amélioration d'un plugin pour aMSN Authors: mc_arnaud Date: 2006年07月19日T20:01:11+02:00 Tags: Score: 0 Bonjour, Avant toute chose je tiens à signaler que je ne connais rien en langage de programmation, en dehors du VBA et du HTML. C'est pour cela que j'ai posté dans le forum programmation/autre. J'ai téléchargé le plugin _Invisibility_ pour aMSN, disponible ici : [http://amsn.sourceforge.net/plugins.php](http://amsn.sourceforge.net/plugins.php) Ce plugin ne m'a pas apporté entière satisfaction et j'ai décidé de le modifier. A la base, quand un contact passe du statut "connecté" au statut "déconnecté", le plugin bloque le contact, et inversement, quand le contact passe du statut "déconnecté" au statut "connecté", le plugin le débloque. Le problème était que ce plugin ne prenait pas en charge les statuts "parti déjeuner", "occupé", "au téléphone", "absent"... J'ai donc réussit à faire en sorte que quand un contact passe de n'importe quel statut au statut "déconnecté" il soit bloqué et que quand il passe du statut "déconnecté" à n'importe quel autre statut, il soit débloqué. Voila ce que donne le plugin tel que je l'ai modifié (cadeau) : ############################################ # ::Invisibility by Anto Cvitic # # ::modified by Renald # ========================================== # Invisibility will block contacts when they go offline # and unblock them when they change their state to online ############################################ namespace eval ::Invisibility { £spaces£ £/spaces£proc Init { dir } { £spaces£ £/spaces£::plugins::RegisterPlugin "Invisibility" £spaces£ £/spaces£plugins_log "Invisibility" "Registered plugin" £spaces£ £/spaces£::plugins::RegisterEvent "Invisibility" ChangeState blockContact # ::plugins::RegisterEvent "Invisibility" UserConnect unBlockContact £spaces£ £/spaces£plugins_log "Invisibility" "Registered events" £spaces£ £/spaces£} £spaces£ £/spaces£proc blockContact { event evpar } { £spaces£ £/spaces£upvar 2 user user £spaces£ £/spaces£upvar 2 substate substate £spaces£ £/spaces£plugins_log "Invisibility" "user is: $user and substate is: $substate" £spaces£ £/spaces£#puts "user: $user and substate: $substate" £spaces£ £/spaces£if {$substate == "FLN"} { £spaces£ £/spaces£set name [::abook::getNick ${user}] £spaces£ £/spaces£::MSN::blockUser ${user} [urlencode $name] £spaces£ £/spaces£after 500 ::Event::fireEvent contactStateChange protocol $user £spaces£ £/spaces£plugins_log "Invisibility" "blocked $user" £spaces£ £/spaces£} £spaces£ £/spaces£if {$substate == "NLN"} { £spaces£ £/spaces£after 1000 £spaces£ £/spaces£set name [::abook::getNick ${user}] £spaces£ £/spaces£::MSN::unblockUser ${user} [urlencode $name] £spaces£ £/spaces£after 500 ::Event::fireEvent contactStateChange protocol $user £spaces£ £/spaces£plugins_log "Invisibility" "unblocked $user" £spaces£ £/spaces£} £spaces£ £/spaces£if {$substate == "BSY"} { £spaces£ £/spaces£after 1000 £spaces£ £/spaces£set name [::abook::getNick ${user}] £spaces£ £/spaces£::MSN::unblockUser ${user} [urlencode $name] £spaces£ £/spaces£after 500 ::Event::fireEvent contactStateChange protocol $user £spaces£ £/spaces£plugins_log "Invisibility" "unblocked $user" £spaces£ £/spaces£} £spaces£ £/spaces£if {$substate == "IDL"} { £spaces£ £/spaces£after 1000 £spaces£ £/spaces£set name [::abook::getNick ${user}] £spaces£ £/spaces£::MSN::unblockUser ${user} [urlencode $name] £spaces£ £/spaces£after 500 ::Event::fireEvent contactStateChange protocol $user £spaces£ £/spaces£plugins_log "Invisibility" "unblocked $user" £spaces£ £/spaces£} £spaces£ £/spaces£if {$substate == "AWY"} { £spaces£ £/spaces£after 1000 £spaces£ £/spaces£set name [::abook::getNick ${user}] £spaces£ £/spaces£::MSN::unblockUser ${user} [urlencode $name] £spaces£ £/spaces£after 500 ::Event::fireEvent contactStateChange protocol $user £spaces£ £/spaces£plugins_log "Invisibility" "unblocked $user" £spaces£ £/spaces£} £spaces£ £/spaces£if {$substate == "LUN"} { £spaces£ £/spaces£after 1000 £spaces£ £/spaces£set name [::abook::getNick ${user}] £spaces£ £/spaces£::MSN::unblockUser ${user} [urlencode $name] £spaces£ £/spaces£after 500 ::Event::fireEvent contactStateChange protocol $user £spaces£ £/spaces£plugins_log "Invisibility" "unblocked $user" £spaces£ £/spaces£} £spaces£ £/spaces£if {$substate == "PHN"} { £spaces£ £/spaces£after 1000 £spaces£ £/spaces£set name [::abook::getNick ${user}] £spaces£ £/spaces£::MSN::unblockUser ${user} [urlencode $name] £spaces£ £/spaces£after 500 ::Event::fireEvent contactStateChange protocol $user £spaces£ £/spaces£plugins_log "Invisibility" "unblocked $user" £spaces£ £/spaces£} £spaces£ £/spaces£if {$substate == "BRB"} { £spaces£ £/spaces£after 1000 £spaces£ £/spaces£set name [::abook::getNick ${user}] £spaces£ £/spaces£::MSN::unblockUser ${user} [urlencode $name] £spaces£ £/spaces£after 500 ::Event::fireEvent contactStateChange protocol $user £spaces£ £/spaces£plugins_log "Invisibility" "unblocked $user" £spaces£ £/spaces£} £spaces£ £/spaces£} £spaces£ £/spaces£proc deInit { } { £spaces£ £/spaces£::plugins::UnRegisterEvents "Invisibility" £spaces£ £/spaces£plugins_log "Invisibility" "plugin unregistered" £spaces£ £/spaces£} } Mais il reste un problème : quand je ferme aMSN et que je me reconnecte, les contacts qui étaient connectés à la fermeture de aMSN et qui ne sont plus connectés au moment ou je me reconnecte ne sont pas bloqués. J'ai pensé à deux parades pour palier à ce manquement : La première consiste à bloquer TOUS mes contacts à la fermeture de aMSN et de ne débloquer que ceux qui ne sont pas "déconnecté" au lancement de aMSN. La deuxième consiste à bloquer les contacts "déconnecté" et débloquer les autres au démarrage de aMSN. Je ne vous cache pas que la première me parrait plus appropriée à l'utilisation commune. Seulement voila : ca je ne sais pas faire. Donc si quelqu'un pouvait se pencher sur le problème et le publier sur le forum, ce serait intéressant pour toute la communauté, et s'il y a besoin de plus d'informations sur l'usage du plugin, je suis là. Merci. Rénald.