petite astuce pour les binds pub/msg indentique
#1
il est parfois utile d avoir des binds pub et msg qui font la même chose
exemple: !op et /msg bot op #salon
il convient de faire une procédure par bind puisque celles ci n'acceptent pas le même nombre d arguments
tcl
bind pub o !op pub:op
bind msg o op msg:op
 
proc pub:op {nick host hand chan arg} {
    putserv "MODE $chan +o $nick"
}
 
proc msg:op {nick host hand arg} {
    set chan [lindex $arg 0]
    if ![validchan $chan] {
        putserv "NOTICE $nick :salon invalide."
        return
    }
    putserv "MODE $chan +o $nick"
}



seulement ça peut devenir extrêmement lassant de devoir copier/coller les procs alors que l'on peut gérer ca directement avec tcl
ici on déclarera seulement "args" pour la procédure (qui admet un nombre illimité d argument)
tcl
bind pub o !op test:op
bind msg o op test:op
 
proc test:op args {
    set arg [lassign $args nick host hand chan]
    if {[llength $chan]>1} {
        set arg [lassign $chan chan]
        if ![validchan $chan] {
            putserv "NOTICE $nick :salon invalide."
            return
        }
    }
    putserv "MODE $chan +o $nick"
}



on vas maintenant créer une proc qui gère l'assignement des arguments histoire de ne pas devoir tout réécrire pour chaques commandes
tcl
proc arg_assign {} {
    uplevel 1 {
        set arg [lassign $args nick host hand chan]
        if {[llength $chan]>1} {
            set arg [lassign $chan chan]
        }
    }
}
 
bind pub o !op test:op
bind msg o op test:op
 
proc test:op args {
    arg_assign
    if ![validchan $chan] {
        putserv "NOTICE $nick :salon invalide."
        return
    }
    putserv "MODE $chan +o $nick"
}



voila, en espérant que ça pourra vous être utile Wink
C'est en reconnaissant ses erreurs que l'on progresse Wink
Répondre Avertir


Messages dans ce sujet
petite astuce pour les binds pub/msg indentique - par djkenny - 12/03/2011, 10:35

Atteindre :


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