Puff_Shitlist — File Browser

PuffShitlistv1.0 / PuffShitlistv1.0 / Shitlist / shitlist.mrc

shitlist.mrc — 10.89 KB — Download this file

;Puff_Shitlist by PuffGirl
----------------------------------------------------
;Feel free to rip this code if you want to.
;I don't care.
----------------------------------------------------

;Aliases

alias shithelpfile return $+($shortfn($scriptdir),readme.txt)
alias shitdat return $+($shortfn($scriptdir),shitdata\shitlist.hsh)
alias shconf return $hget(shitlist,$1-)
alias shitset hadd -m shitlist $1-
alias shitdel hdel -m shitlist $1-
alias remuser return $remove($hfind(shitlist,user.*,$1,w).item,user.)
alias shcheck {
  if ($dialog(shitlist)) {
    if ($1 == off) { 
      did -bm $dname 2,3,4,5,6,10,11,12,15,18,20,21,22
    }
    if ($1 == on) {
      did -en $dname 2,3,4,5,6,10,11,12,15,18,20,21,22
    }
  }
}
alias shclear {
  did -u shitlist 10,18,20,21
  did -ra shitlist 3 No Mask Selected
  did -ra shitlist 2 None
  did -c shitlist 2 1
}
alias shit {
  if ($dialog(shitlist)) { 
    dialog -o shitlist
    dialog -n shitlist
  }
  else { dialog -m shitlist shitlist }
}

;dialog

dialog Shitlist {
  title "Shitlist »/shit"
  size -1 -1 154 135
  option dbu
  combo 2, 82 35 50 50, size drop
  edit "", 3, 82 105 66 11, autohs
  combo 4, 82 94 66 50, size drop
  button "+", 5, 133 35 7 10
  button "-", 6, 141 35 7 10
  list 1, 6 37 69 79, size
  button "+", 7, 60 26 7 10
  button "-", 8, 67 26 7 10
  edit "", 9, 6 26 54 11, autohs
  check "All Channels", 10, 82 25 50 10
  box "Ban type/Kick Reason", 11, 79 86 72 33
  box "Channels", 12, 79 18 72 31
  box "Hostmasks", 13, 3 18 75 101
  button "Done", 14, 127 122 23 11, ok
  box "", 17, -3 2 175 15
  text "Select a Hostmask on the left and configure it on the right", 19, 4 7 149 8
  check "Enable", 16, 3 123 30 11
  check "Kick", 18, 82 56 24 10
  check "Ban", 20, 82 65 23 10
  check "Ignore user", 21, 82 74 45 10
  box "Punishment", 22, 79 49 72 37
  button "Apply", 15, 103 122 23 11
}

;dialog events

on *:DIALOG:shitlist:init:0: {
  $iif($shconf(on) == 1,did -c $dname 16)
  didtok $dname 4 32 Default *!user@host $& 
    *!*user@host *!*@host *!*user@*.host $&
    *!*@*.host nick!user@host nick!*user@host $&
    nick!*@host nick!*user@*.host nick!*@*.host
  var %x = 1, %y = $hfind(shitlist,user.*,0,w)
  while (%x <= %y) {
    did -a $dname 1 $remuser(%x)
    inc %x
  }
  shcheck off
  shclear
}
on *:DIALOG:shitlist:sclick:1: {
  if ($did($dname,$did).seltext) {
    shcheck on
    hadd -m shtemp conf.user $+(user.,$did($dname,$did).seltext)
    .signal -n shitlist showset $hget(shtemp,conf.user)
    did -c $dname 2 $did($dname,2).lines
  }
}
on *:DIALOG:shitlist:sclick:5: {
  var %x = $?="Enter Channels to add separated by spaces."
  if (%x) {
    var %w = 1, %y = $numtok(%x,32)
    while (%w <= %y) {
      var %ch = $iif($mid($gettok(%x,%w,32),1,1) == $chr(35),$gettok(%x,%w,32),$chr(35) $+ $gettok(%x,%w,32))
      var %tmp = $addtok(%tmp,%ch,32)
      inc %w
    }
    shitset $hget(shtemp,conf.user) $&
      $puttok($shconf($hget(shtemp,conf.user)),$addtok($gettok($shconf($hget(shtemp,conf.user)),5,46),%tmp,32),5,46)
    did -r $dname 2
    didtok $dname 2 32 $&
      $iif(0* !iswm $gettok($shconf($hget(shtemp,conf.user)),5,46),$v2,$gettok($gettok($shconf($hget(shtemp,conf.user)),5,46),2-,32))
    did -c $dname 2 $did($dname,2).lines
  }
}
on *:DIALOG:shitlist:sclick:6: {
  if ($did($dname,2).sel) {
    did -d $dname 2 $v1
    var %x = $iif($didtok($dname,2,32) > 0,$v1,0)
    shitset $hget(shtemp,conf.user) $puttok($shconf($hget(shtemp,conf.user)),%x,5,46)
    did -c $dname 2 $did($dname,2).lines
  }
}
on *:DIALOG:shitlist:sclick:7: {
  if ($did($dname,9).text) {
    if ($v1 == *!*@*) || ($v1 == *!*?@*) || ($v1 == *!*@?) || ($v1 iswm $str($chr(42),100)) {
      var %err = $input(You are trying to add $v1 to your shitlist $+ . $crlf $&
        That hostmask matches everyone... including yourself $+ . $crlf $&
        So it wont be added.,oiqwh,Invalid hostmask)
      $iif($dialog(shitlist),did -r shitlist 9)
    }
    else {
      var %x = $iif(* isin $v1,$v2,$+($v2,!*@*))
      if (!$hfind(shitlist,user. [ $+ [ %x ] ],1).item) {
        shitset user. [ $+ [ %x ] ] 0.0.0.0.0.0.0
        did -a $dname 1 %x
      }
    }
  }
}
on *:DIALOG:shitlist:sclick:8: {
  if ($did($dname,1).sel) {
    shitdel $+(user.,$did($dname,1).seltext)
    did -d $dname 1 $v1
    shclear
    shcheck off
  }
}
on *:DIALOG:shitlist:sclick:16:$iif($did($dname,$did).state == 1,shitset on 1,shitset on 0)
on *:DIALOG:shitlist:sclick:10:$iif($did($dname,$did).state == 1,did -b $dname 2,did -e $dname 2)
on *:DIALOG:shitlist:sclick:18:$iif($did($dname,$did).state == 1,did -e $dname 3,did -b $dname 3)
on *:DIALOG:shitlist:sclick:20:$iif($did($dname,$did).state == 1,did -e $dname 4,did -b $dname 4)
on *:DIALOG:shitlist:sclick:15: {
  if ($did($dname,3).text) { shitset $hget(shtemp,conf.user) $puttok($shconf($hget(shtemp,conf.user)),$v1,7,46) }
  if ($did($dname,4).sel) { shitset $hget(shtemp,conf.user) $puttok($shconf($hget(shtemp,conf.user)),$v1,6,46) }
  if ($did($dname,10).state == 1) { shitset $hget(shtemp,conf.user) $puttok($shconf($hget(shtemp,conf.user)),1,1,46) }
  if ($did($dname,10).state == 0) { shitset $hget(shtemp,conf.user) $puttok($shconf($hget(shtemp,conf.user)),0,1,46) }
  if ($did($dname,18).state == 1) { shitset $hget(shtemp,conf.user) $puttok($shconf($hget(shtemp,conf.user)),1,2,46) }
  if ($did($dname,18).state == 0) { shitset $hget(shtemp,conf.user) $puttok($shconf($hget(shtemp,conf.user)),0,2,46) }
  if ($did($dname,20).state == 1) { shitset $hget(shtemp,conf.user) $puttok($shconf($hget(shtemp,conf.user)),1,3,46) }
  if ($did($dname,20).state == 0) { shitset $hget(shtemp,conf.user) $puttok($shconf($hget(shtemp,conf.user)),0,3,46) }
  if ($did($dname,21).state == 1) { 
    shitset $hget(shtemp,conf.user) $puttok($shconf($hget(shtemp,conf.user)),1,4,46) 
    if ($remove($hget(shtemp,conf.user),user.) !isignore) { .ignore $v1 }
  }
  if ($did($dname,21).state == 0) { 
    shitset $hget(shtemp,conf.user) $puttok($shconf($hget(shtemp,conf.user)),0,4,46) 
    if ($remove($hget(shtemp,conf.user),user.) isignore) { .ignore -r $v1 }
  }
  shcheck off
}

;main events

on @*:JOIN:#: {
  if ($shconf(on) == 1) {
    var %x = 1, %y = $hfind(shitlist,user.*,0,w)
    while (%x <= %y) {
      if ($remuser(%x) iswm $address($nick,5)) || ($remove($remuser(%x),!*@*) == $nick) {
        if ($istok($gettok($shconf($+(user.,$v1)),5,46),#,32)) || ($gettok($shconf($+(user.,$remuser(%x))),1,46) == 1) {
          var %k = $gettok($shconf($+(user.,$remuser(%x))),2,46), %b = $gettok($shconf($+(user.,$remuser(%x))),3,46)
          var %bt = $iif($gettok($shconf($+(user.,$remuser(%x))),6,46) == 1,$remuser(%x),$calc($v1 -2))
          var %kr = $iif($gettok($shconf($+(user.,$remuser(%x))),7-,46) == 0,Shitlisted,$v1)
          .signal -n shitlist punish $nick $remuser(%x) %k %b %bt # %kr
          .break
        }
      }
      inc %x
    }
  }
}
on *:OP:#: {
  if ($opnick == $me) && ($shconf(on) == 1) {
    var %a = 1, %c = $nick(#,0)
    while (%a <= %c) {
      var %x = 1, %y = $hfind(shitlist,user.*,0,w)
      while (%x <= %y) {
        if ($remuser(%x) iswm $address($nick(#,%a),5)) || ($remove($remuser(%x),!*@*) == $nick(#,%a)) {
          if ($istok($gettok($shconf($+(user.,$v1)),5,46),#,32)) || ($gettok($shconf($+(user.,$remuser(%x))),1,46) == 1) {
            var %k = $gettok($shconf($+(user.,$remuser(%x))),2,46)
            var %b = $gettok($shconf($+(user.,$remuser(%x))),3,46)
            var %bt = $iif($gettok($shconf($+(user.,$remuser(%x))),6,46) == 1,$remuser(%x),$calc($v1 -2))
            var %kr = $iif($gettok($shconf($+(user.,$remuser(%x))),7-,46) == 0,Shitlisted,$v1)
            .signal -n shitlist punish $nick(#,%a) $remuser(%x) %k %b %bt # %kr
          }
        }
        inc %x 
      }
      inc %a
    }
  }
}
on !*:NICK: {
  if ($shconf(on) == 1) {
    var %x = 1, %z = $iif($hfind(shitlist,$+(user.,$newnick,!*@*),1),$true,$null)
    if (%z) {
      while (%x <= $comchan($newnick,0)) {
        var %y = $comchan($newnick,%x)
        if ($comchan($newnick,%x).op) {
          if ($istok($gettok($shconf($+(user.,$newnick,!*@*)),5,46),%y,32)) || ($gettok($shconf($+(user.,$newnick,!*@*)),1,46) == 1) {         
            var %k = $gettok($shconf($+(user.,$newnick,!*@*)),2,46), %b = $gettok($shconf($+(user.,$newnick,!*@*)),3,46)
            var %bt = $iif($gettok($shconf($+(user.,$newnick,!*@*)),6,46) == 1,$+($newnick,!*@*),$calc($v1 -2))
            var %kr = $iif($gettok($shconf($+(user.,$newnick,!*@*)),7-,46) == 0,Shitlisted,$v1)
            .signal -n shitlist punish $newnick $+($newnick,!*@*) %k %b %bt %y %kr
          }
        }
        inc %x
      } 
    }
  }
}
on *:SIGNAL:shitlist: {
  if ($1 == punish) && ($me isop $7) {
    var %bt = $iif($6 isnum && $ial($2),$address($2,$v1),$+($2,!*@*)), %kr = $8-
    if ($5 == 1) && (%bt iswm $address($me,5)) { echo -a »» Auto-Ban Aborted. (Banmask matches you!) }
    else {
      if ($5 == 1) { .raw mode $7 -ov+b $2 $2 %bt }
      if ($4 == 1) { kick $7 $2 %kr }
    }
  }
  if ($1 == showset) && ($dialog(shitlist)) {
    if ($gettok($shconf($2),1,46) == 1) {
      did -c shitlist 10
      did -b shitlist 2
    }
    if ($gettok($shconf($2),1,46) == 0) {
      did -u shitlist 10
      did -e shitlist 2
    }
    if ($gettok($shconf($2),2,46) == 1) {
      did -c shitlist 18
      did -e shitlist 3
    }
    if ($gettok($shconf($2),2,46) == 0) {
      did -u shitlist 18
      did -b shitlist 3
    }
    if ($gettok($shconf($2),3,46) == 1) {
      did -c shitlist 20
      did -e shitlist 4
    }
    if ($gettok($shconf($2),3,46) == 0) {
      did -u shitlist 20
      did -b shitlist 4
    }
    if ($numtok($gettok($shconf($2),5,46),32) > 0) {
      did -r shitlist 2
      didtok shitlist 2 32 $iif(0* !iswm $gettok($shconf($2),5,46),$v2,$gettok($gettok($shconf($2),5,46),2-,32))
    }
    did -c shitlist 4 $gettok($shconf($2),6,46)
    did -ra shitlist 3 $iif($gettok($shconf($2),7-,46) != 0,$v1,Shitlisted)
  }
}
on *:LOAD: {
  $iif(!$hget(shitlist),hmake shitlist 100)
  mkdir $+($shortfn($scriptdir),shitdata)
  write $shitdat
  echo -s ****** (Puff_Shitlist Loaded)
  echo -s ****** For setup type /shit or click on your popup menubar.
}
on *:UNLOAD: {
  $iif($hget(shitlist),hfree shitlist)
  $iif($exists($shitdat),.remove $shitdat)
  ;$iif($exists($shithelpfile),.remove $shithelpfile)
  $iif($isdir($+($shortfn($scriptdir),shitdata)),rmdir $+($shortfn($scriptdir),shitdata))
  echo -s Puff_Shitlist Unloaded.
}
on *:START: {
  $iif(!$hget(shitlist),hmake shitlist 100)
  $iif($exists($shitdat) && $hget(shitlist),hload shitlist $shitdat)
  write -c $shitdat
}
on *:EXIT: {
  $iif($exists($shitdat) && $hget(shitlist),hsave shitlist $shitdat)
  $iif($hget(shitlist),hfree shitlist)
}

;popup

menu menubar {
  -
  Puff_Shitlist
  .Setup:shit
  .Readme:run $shithelpfile
}