All pastes #593937 Raw Edit

Unnamed

public text v1 · immutable
#593937 ·published 2007-06-28 16:53 UTC
rendered paste body
alias 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 } }