Communauté Eggdrop

Version complète : autovoice
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Bonjour,

On ma demander un autovoice activable sur salon
Donc qui nécessite pas de mettre #salon dans un (set salon blabla "#chan")

Alors je le mets ici des fois qu'il pourrait être utile à des personnes qui cherchent ce type de code.

PS : sur salon pour l'activé suffit de tapez : !von
Pour le désactivé tapez : !voff

Voici le code :

tcl
namespace eval ::autov {
setudef flag VV
 
bind pub o "!von" [namespace current]::von
proc von { nick host hand chan arg } {
    if {[channel get $chan VV] == 0} {
         channel set $chan +VV
         putquick "PRIVMSG $chan :Auto-Voice Activé !"
         foreach von [chanlist $chan] { if [isop $von $chan] continue; pushmode $chan +v $von }
    } else {
         putquick "PRIVMSG $chan :Auto-Voice déjà Activé !"
    }
}
 
bind pub o "!voff" [namespace current]::voff
proc voff { nick host hand chan arg } {
    if {[channel get $chan VV] != 0} {
         channel set $chan -VV
         putquick "PRIVMSG $chan :Auto-Voice Désactivé !"
         foreach voff [chanlist $chan] { if [isop $voff $chan] continue; pushmode $chan -v $voff }
    } else {
         putquick "PRIVMSG $chan :Auto-Voice déjà Désactivé !"
    }
}
 
bind join - "*" [namespace current]::autovoice
proc autovoice { nick uhost handle chan } {
if {[channel get $chan VV]==0} { return; }
      pushmode $chan +v $nick
    }
}


Tu as suivi mon conseil et ajouté le (de)voice des personnes présentes, c'est bien.
Par contre, je ne comprends pas l'intérêt des "::" devant le nom du namespace lors du namespace eval.
Oui j'ai suivi ton conseil ta vus :p

Heu oui j’avais dans l'idée de faire le code autrement lors des appels de procédure donc j’avais mis le :: mais bon après j'ai laissé comme ça sans les retiré désolé.

Donc oui les retiré serait aussi bien car ils servent à rien Smile
salut,
Citation :Par contre, je ne comprends pas l'intérêt des "::" devant le nom du namespace lors du namespace eval.
sur ce coup la il a raison de mettre les :: , le namespace que tu crées n'est pas forcément chargé dans le namespace global, tout dépend ou tu le source. Avec l'ajout des :: tu es sure qu'il soit chargé, dans tous les cas, dans le namespace global
imaginons que tu es:
tcl
namespace eval machin {
    namespace eval truc {
...
    }
}


le chemin de truc sera ::machin::truc
alors que
tcl
namespace eval machin {
    namespace eval ::truc {
...
    }
}


le chemin de truc sera ::truc
Bonjour,
Mise à jour du code incluant plusieurs choses qu'ont ma demandé sur irc.
Voici le lien :
Téléchargement ici.