rendered paste bodyalias bkacs {
var %b = 0,%i = $chan(0)
while (%i) {
var %cc = $ccontrol($chan(%i)),%k = $nick($chan(%i),0)
while (%k) {
if (%cc) && ($nick($chan(%i),%k) != $me) && ($hfind(black,$address($nick($chan(%i),%k),5),1,W)) {
.timer 1 %b black.punish $chan(%i) $nick($chan(%i),%k) $v1
inc %b
}
dec %k
}
dec %i
}
}
alias black.kick.all {
var %i = 1
while (%i <= $nick($1,0)) {
if ($nick($1,%i) != $me) && ($hfind(black,$address($nick($1,%i),5),1,W)) { .timer 1 %i black.punish $1 $nick($1,%i) $v1 }
inc %i
}
}
alias black.kick { if ($2 != $me) && ($hfind(black,$address($2,5),1,W)) { black.punish $1-2 $v1 } }
alias black.punish {
if ($2 ison $1) {
var %r = $hget(black,$3)
.raw mode $1 -o+b $+($2-3,$crlf,kick $1-2 :,$iif(%r && %r != n/a,%r $+ $chr(44) blacklisted,Blacklisted)) $kc
inc %black.kicked
}
}
alias black.edit {
tokenize 9 $did(black,5).seltext
set %black.edit $wd($1,6-) $wd($2,5-)
noop $dialog(black.add,black.add,-4)
if (%black.addy) && (%black.comm) {
hdel black $wd($1,6-)
hadd black %black.addy %black.comm
did -oc $dname 5 $did(5).sel 0 + 0 0 0 %black.addy $+ + 0 0 0 %black.comm
hsave -ob black script\tables\black.tbl
scon -at1 bkacs
}
unset %black.comm %black.addy
}
dialog black {
title "Blacklist [/black]"
size -1 -1 320 200
option pixels
icon script\pics\nntray.ico
list 5, 2 2 316 166, size extsel
button "&Ok", 3, 236 172 80 24, ok
menu "&File", 8
item "&Close", 11, 8
menu "&Edit blacklist", 9
item "&Add entry", 12, 9
item break, 13, 9
item "&Edit entry", 14, 9
item break, 15, 9
item "&Remove entry", 16, 9
item "&Clear list", 17, 9
menu "&Information", 10
item "&Show blacklist info", 18, 10
}
dialog black.add {
title "Edit blacklist"
size -1 -1 234 90
option pixels
icon script\pics\nntray.ico
text "Address", 1, 6 8 60 16
text "Comment", 2, 6 30 60 16
edit "", 3, 70 4 160 22, autohs limit 100
edit "", 4, 70 26 160 22, autohs limit 50
box "", 5, -10 48 250 8
button "&Cancel", 7, 66 62 80 24, cancel
button "&Ok", 6, 150 62 80 24
}
alias black.loadlist {
did -r black 5
var %i = $hget(black,0).item
if (!%i) { did -b black 17 }
while (%i) {
did -a black 5 0 + 0 0 0 $hget(black,%i).item $+ + 0 0 0 $hget(black,%i).data
dec %i
}
did -b black 14,16
}
on *:dialog:black:*:*:{
if ($devent == init) {
mdx SetControlMDX $dname 5 ListView report showsel rowselect > script\dlls\views.mdx
did -i $dname 5 1 headerdims 160:1 120:2
did -i $dname 5 1 headertext + 0 Mask + 0 Comment
black.loadlist
if (!%ialupdate) { idialog Warning: the feature that gets all user addresses when you join a channel is currently disabled. Only this feature ensures that all blacklisted users will be kicked after you join/get opped on a channel. If you want to enable it enter /setup and go to "Miscellaneous", "Part II". }
}
elseif ($devent == sclick) {
if ($did == 5) {
sortmdx $dname $did
did $iif($did($did).sel,-e,-b) $dname 14,16
if (rclick * iswm $did($did,1)) {
popdll.new popup
popdll.add popup + 0 0 &Add entry $cr black.add
popdll.add popup
popdll.add popup $iif(!$did($did).sel,+d,+) 0 0 &Edit entry $cr black.edit
popdll.add popup
popdll.add popup $iif(!$did($did).sel,+d,+) 0 0 &Remove entry $cr black.remsel
popdll.add popup $iif($did($did).lines == 1,+d,+) 0 0 &Clear list $cr black.clear
popdll.disp popup
}
}
}
elseif ($devent == menu) {
if ($did == 17) { black.clear }
elseif ($did == 18) { idialog Blacklist entries: $hget(black,0).item $+ Blacklist kicks: %black.kicked }
elseif ($did == 14) { black.edit }
elseif ($did == 16) { black.remsel }
elseif ($did == 12) { black.add }
elseif ($did == 11) { dialog -c $dname }
}
elseif ($devent == dclick) && ($did == 5) { black.edit }
}
alias black { nndlg -m black }
alias black.clear {
if ($ydialog(Do you really want to clear the blacklist?)) {
did -r black 5
hdel -w black *
hsave -ob black script\tables\black.tbl
did -b black 14,16,17
}
}
alias black.add {
noop $dialog(black.add,black.add,-4)
if (%black.addy) && (%black.comm) {
if (%black.addy == *!*@*) { errdialog please be more specific. You can't blacklist everyone! }
elseif (%black.addy iswm $address($me,5)) { errdialog you cannot add yourself to the list! }
else {
hadd black %black.addy %black.comm
hsave -ob black script\tables\black.tbl
scon -at1 bkacs
if ($dialog(black)) {
did -a black 5 0 + 0 0 0 %black.addy $+ + 0 0 0 %black.comm
did -e black 17
}
else { idialog %black.addy has been added to the blacklist. }
}
unset %black.addy %black.comm
}
}
alias black.remsel {
while ($did(black,5).sel) {
hdel black $cell(black,5,1)
did -d black 5 $did(black,5).sel
}
did -b black 14,16
if ($did(black,5).lines == 1) { did -b black 17 }
hsave -ob black script\tables\black.tbl
if (!$did(black,5).lines) { did -b black 6 }
}
on *:dialog:black.add:*:*:{
if ($devent == init) {
unset %black.addy %black.comm
if (%black.edit) {
tokenize 32 $v1
did -a $dname 3 $1
did -a $dname 4 $2-
unset %black.edit
}
}
elseif ($devent == sclick) {
if ($did == 6) {
if (!$did(3)) { errdialog you did not enter an address! }
else {
set %black.addy $c.add($did(3))
set %black.comm $iif($did(4),$did(4),n/a)
dialog -c $dname
}
}
}
}
alias black.remuser {
if ($1) {
var %x = 0
while ($hfind(black,$1,1,Ww)) {
hdel black $v1
inc %x
}
if ($dialog(black)) { black.loadlist }
idialog %x user(s) removed from the blacklist.
}
else { errdialog insufficient parameters. }
}
alias black.adduser {
set %black.edit $1-
black.add
}
raw 315:*:{ if ($ccontrol($2)) { black.kick.all $2 } }
on *:op:#:{ if ($opnick == $me) { black.kick.all $chan } }
on *:help:#:{ if ($hnick == $me) { black.kick.all $chan } }