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
}