Procédure universelle d'affichage de texte
Cette procédure permet d'envoyer un message dans n'importe quelle file d'attente de l'Eggdrop (puthelp, putquick, putnow, putserv, putdcc, putlog ou putloglev), par message privé, public, ou par notice.
Si le paramètre de configuration
monochrome vaut 1 ou que le mode +c est détecté sur le chan cible, alors tous les codes de style seront automatiquement filtrés.
De même si le message est destiné à un utilisateur en partyline et que celui-ci ne possède pas le flag h.
Vous aurez également besoin de la procédure
split_line, qui permet de découper une ligne trop longue en plusieurs lignes.
Variables à déclarer
# Filtrer les codes de style (couleurs, gras, ...) dans tous les affichages du
# script ? (0 = non / 1 = oui)
variable monochrome 0
# Longueur maximum d'une ligne affichable (si la fin de certaines lignes est
# tronquée, cela signifie que vous devez diminuer cette valeur)
variable max_line_length 435
Procédure
###############################################################################
### Affichage d'un texte, filtrage des styles si nécessaire.
### * queue peut valoir help, quick, now, serv, dcc, log ou loglev
### * method peut valoir PRIVMSG ou NOTICE et sera ignoré si queue vaut dcc, log
### ou loglev
### * target peut être un nick, un chan ou un idx, et sera ignoré si queue vaut
### log ou loglev
###############################################################################
proc display_output {queue method target text} {
variable monochrome
variable max_line_length
if {
($monochrome)
|| ((![::tcl::string::first "#" $target])
&& ([::tcl::string::match *c* [lindex [split [getchanmode $target]] 0]]))
|| (($queue eq "dcc")
&& (![matchattr [idx2hand $target] h]))
} then {
regsub -all "\017" [stripcodes abcgru $text] "" text
}
switch -- $queue {
help - quick - now - serv {
foreach line [split_line $text $max_line_length] {
put$queue "$method $target :$line"
}
}
dcc {
foreach line [split_line $text $max_line_length] {
putdcc $target $line
}
}
loglev {
foreach line [split_line $text $max_line_length] {
putloglev o * $line
}
}
log {
foreach line [split_line $text $max_line_length] {
putlog $line
}
}
}
}