Ban Channel Protection ( %expbanchan )
dialog expbanchan {
title Ban Channel Protection
size -1 -1 700 400
icon graphics\ban.ico, 0
text "Enter or remove channels to protect." 222, 10 5 100 90,flat
list 1,2 92 135 325
button "Add", 2, 5 45 55 18,flat
button "Remove", 3, 80 45 55 18,flat
edit "", 4, 2 65 135 20, autohs limit 40
text "Opscript", 2005, 635 5 65 18,flat disable
tab "Triggers", 5, 150 5 545 390,flat
tab "Exempt Nick or Address", 6, 150 5 545 390,flat
box "", 7, 155 35 535 350,tab 5
text "Channel:",8,165 50 45 15, tab 5
edit "", 9, 210 48 195 20, autohs limit 50, tab 5
button "Close",10,631 48 50 18,tab 5,flat,cancel
edit "", 11, 631 69 50 20, autohs limit 6, tab 5
text "Kick Msg:",12,165 70 50 15, tab 5
edit "", 13, 210 68 360 20, autohs limit 350, tab 5
text "Ban Sec:",24, 580 70 50 15, tab 5
list 14, 160 88 525 300, tab 5
button "Save", 15, 575 48 50 18, tab 5,flat
; button "Edit", 16, 480 135 50 18, tab 5,flat
button "Delete", 16, 520 48 50 18, tab 5,flat
button "Enable", 25, 410 48 50 18, tab 5,flat
button "Disable", 26, 465 48 50 18, tab 5,flat
box "Add Nick or Address", 17, 155 35 535 350, tab 6
text "Address:",18,165 52 45 15, tab 6
edit "", 19, 215 49 355 20, autohs limit 350, tab 6
text "Note: Address must be in form of *!*@*", 20, 165 75 200 14, tab 6
list 21, 160 88 525 300, tab 6
button "Save", 22, 632 50 50 18, tab 6,flat
button "Delete", 23, 578 50 50 18, tab 6,flat
}
;Aliases **************************************************************************
alias expbanchan.HashMake if (!$hget($1)) hmake $1-
alias expbanchan.mdx.load { dll $expbanchan.mdx SetMircVersion $version | dll $expbanchan.mdx MarkDialog $dname }
alias expbanchan.x`dll return dll $expbanchan.mdx $1 $dname $replace($2,$chr(42),$chr(44)) $3-
alias expbanchan.LoadChanList {
var %i 0 ,%dn = $dname,%dList = $expbanchan.get(banchanControlList)
did -r %dn 1
while %i < $numtok(%dList,44) {
inc %i
did -i %dn 1 1 cb root
did -a %dn 1 + 1 1 $gettok(%dList,%i,44)
}
}
alias expbanchan dialog -dmn expbanchan expbanchan
alias expbanchan.set hadd -m expbanchan $1-
alias expbanchan.add hadd -m expbanchan $1 $addtok($expbanchan.get($1),$2,44)
alias expbanchan.del hadd -m expbanchan $1 $remtok($expbanchan.get($1),$2,44)
alias expbanchan.rem hdel -m expbanchan $1
alias expbanchan.get return $hget(expbanchan,$1)
alias expbanchan.Istok return $istok($hget(expbanchan,$1),$2,44)
alias expbanchanPref return $iif($1,$iif($left($1,1) = $chr(35),$1,$+($chr(35),$1)))
alias expbanchan.LoadSaveFile {
var %fn = $expbanchan.FilePref(expbanchan.op)
if ($istok($1-,exist,32)) && (!$exists(%fn)) write %fn
if ($istok($1-,make,32)) && (!$hget(expbanchan)) hmake expbanchan 10
if ($istok($1-,save,32)) hsave -o expbanchan %fn
if ($istok($1-,load,32)) hload expbanchan %fn
}
alias expbanchan.FilePref if ($1) return $+($shortfn($scriptdir),$1)
alias expbanchan.mdx return $expbanchan.FilePref(mdx.dll)
alias expbanchan.views return $expbanchan.FilePref(views.mdx)
alias expbanchanAddToList {
expbanchan.Add banchanControlList $1
if (!$hget(expbanchan,$+($1,.ListOfbanchan))) hadd expbanchan $+($1,.ListOfbanchan)
did -r $dname 4
expbanchan.LoadChanList
}
alias expbanchanDelFromList {
expbanchan.Del banchanControlList $1
var %i 0,%tntf = $hget(expbanchan,$+($1,.ListOfbanchan))
while %i < $numtok(%tntf,44) {
inc %i
expbanchan.del $+($1,.ListOfbanchan) $gettok(%tntf,%i,44)
expbanchan.rem $+($1,.KickMsgFor.,$gettok(%tntf,%i,44) )
expbanchan.rem $+($1,.BanTimeFor.,$gettok(%tntf,%i,44) )
}
hdel expbanchan $+($1,.ListOfbanchan)
did -r $dname 4,9,11,13,14
expbanchan.LoadChanList
}
alias expbanchan.SpecificListLoad {
var %tnt = $expbanchan.get($+($2,.ListOfbanchan))
did -r $dname 14
var %i 0
while %i < $numtok(%tnt,44) {
inc %i
var %tnt1 = $gettok(%tnt,%i,44)
did -a $1 14 %tnt1 $expbanchan.tab $+($expbanchan.get($+($2,.BanTimeFor.,%tnt1)),$chr(160)) $expbanchan.tab $+($expbanchan.get($+($2,.KickMsgFor.,%tnt1)),$chr(160))
}
}
alias expbanchan.ReloadExceptions {
did -r $1 19,21
var %i 0
while %i < $hfind(expbanchan,$+($2,.Exceptional×.*),0,w) {
inc %i
did -a $1 21 $+($chr(160),%i) $expbanchan.tab $expbanchan.get($hfind(expbanchan,$+($2,.Exceptional×.*),%i,w))
}
}
alias expbanchan.ExceptionDel {
did -r $1 9,11,13,14,19,21
hdel -sw expbanchan $+($2,.Exceptional×.*)
}
alias expbanchan.tab if (!$1-) return $chr(9) $+ 0 | var %list, %n = 1 | while (%n <= $0) { %list = $instok(%list, $ [ $+ [ %n ] ] ,0,9) | inc %n } | if (%list) return %list
;Remotes ************************************************************************
on *:start:expbanchan.HashMake expbanchan 10 | expbanchan.LoadSaveFile exist make load
on *:dialog:expbanchan:sclick:*:{
if ($did == 25) { .enable #expbanchan ON | echo -a $asctime([HH:nn]) * 10Ban Channel Protection Is Now 15«4Enable15» }
if ($did == 26) { .disable #expbanchan Off | echo -a $asctime([HH:nn]) * 10Ban Channel Protection Is Now 15«4Disable15» }
expbanchan.HashMake expbanchan 10
var %dc = $expbanchanPref($did(4).text)
if (%dc) {
if $did = 22 && *!*@* iswm $did(19).text {
expbanchan.set $+(%dc,.Exceptional×.,$did(19).text) $did(19).text
expbanchan.ReloadExceptions $dname %dc
expbanchan.LoadSaveFile exist make save load
}
if $did = 23 && $did(21).seltext {
hdel expbanchan $+(%dc,.Exceptional×.,$gettok($did(21).seltext,-1,32))
expbanchan.ReloadExceptions $dname %dc
expbanchan.LoadSaveFile exist make save load
}
if $did = 14 {
var %tnt1 = $gettok($gettok($did($did).seltext,1,9),-1,32)
did -ra $dname 9 %tnt1
did -ra $dname 11 $remove($expbanchan.get($+(%dc,.BanTimeFor.,%tnt1)),$chr(160))
did -ra $dname 13 $remove($expbanchan.get($+(%dc,.KickMsgFor.,%tnt1)),$chr(160))
}
var %dcTemp = $expbanchanPref($did(9).text)
if (%dcTemp) && ($did(11).text) && ($did(13).text) && ($did(11).text isnum 0-999999) && $istok(15 16,$did,32) {
var %it = %dc %dctemp
if $did = 15 {
expbanchan.add $+(%dc,.ListOfbanchan) %dcTemp
expbanchan.set $+(%dc,.KickMsgFor.,%dcTemp) $did(13).text
expbanchan.set $+(%dc,.BanTimeFor.,%dcTemp) $did(11).text
expbanchan.LoadSaveFile exist make save load
}
if $did = 16 {
expbanchan.del $+(%dc,.ListOfbanchan) %dcTemp
expbanchan.rem $+(%dc,.KickMsgFor.,%dcTemp)
expbanchan.rem $+(%dc,.BanTimeFor.,%dcTemp)
expbanchan.LoadSaveFile exist make save load
}
did -r $dname 9,11,13
expbanchan.SpecificListLoad $dname %it
}
}
if ($istok(2 3,$did,32)) {
if (%dc) {
if $did = 2 {
if (!$expbanchan.Istok(banchanControlList,%dc)) {
expbanchanAddToList %dc
expbanchan.LoadSaveFile exist make save load
}
}
else {
if ($expbanchan.Istok(banchanControlList,%dc)) {
expbanchanDelFromList %dc
expbanchan.ExceptionDel $dname %dc
expbanchan.LoadSaveFile exist make save load
}
}
}
}
if $did = 1 {
did -r $dname 9,11,13,14,19,21
.tokenize 32 $did(1,1,1)
var %dnt = $gettok($expbanchan.get(banchanControlList),$calc($4 - 1),44)
if (%dnt) {
did -ra $dname 4 %dnt
if ($numtok($hget(expbanchan,banchanControlList),44) = 1) expbanchan.LoadChanList
expbanchan.SpecificListLoad $dname %dnt
expbanchan.ReloadExceptions $dname %dnt
}
}
}
on *:dialog:expbanchan:init:*:{
expbanchan.HashMake expbanchan 10
; var %dn = $dname,%d1 = 51400,%d2 0
var %dn = $dname,%d1 = 0,%d2 = $rgb(255,255,255)
;rgb(94,115,145)
;$rgb(74,96,125)
$expbanchan.mdx.load
$expbanchan.x`dll(SetControlMDX,1 treeview haslines hasbuttons rowselect singleexpand nohscroll> $expbanchan.views)
$expbanchan.x`dll(SetControlMDX,14*21, listview rowselect grid single flatsb showsel report sortascending nosortheader> $expbanchan.views)
did -i $dname 14 1 headerdims 140:1 70:2 280:3
did -i $dname 21 1 headerdims 30:1 490:2
did -i $dname 14 1 headertext + 0 $+($chr(35),Channel) $expbanchan.tab Ban Time $expbanchan.tab Kick message
did -i $dname 21 1 headertext + 0 $chr(35) $expbanchan.tab Exceptional Addresses
$expbanchan.x`dll(SetColor,4*9*11*13*19, background %d2)
$expbanchan.x`dll(SetColor,4*9*11*13*19, text %d1)
$expbanchan.x`dll(SetColor,4*9*11*13*19, textbg %d2)
did -i %dn 1 1 setcolor bkg %d2 | did -i %dn 1 1 setcolor line 30720 | did -i %dn 1 1 setcolor text %d1
expbanchan.LoadChanList
}
#expbanchan off
on @*:join:#:{
if ( %expbanchan == Disable ) || ( %expbanchan == $null ) || ($nick isop #) { return }
if ($nick == ChanServ || $nick == NickServ || $nick == MemoServ) { return }
if ($istok($expbanchan.get(banchanControlList),$chan,44)) && (!$expbanchan.FindUser($chan,$address($nick,5))) {
expbanchan.WhoisAdd $nick $chan
}
}
alias expbanchan.WhoisAdd {
hadd -m expbanchanWhois $1 $addtok($expbanchan.get($1),$2,44)
if (!$timer(expbanchanWhoisCount)) .expReadWhoisQue
}
alias expReadWhoisQue {
var %tn expbanchanWhois
if $hget(%tn,1).item {
whois $hget(%tn,1).item
}
}
raw *:*:{
if ($istok(311 319 312 317 318 307 301 313 406 369 314 000 310 309 338 320,$numeric,32)) {
if ($hget(expbanchanWhois,$2)) {
if $numeric = 319 {
var %tnt = $replace($3-,@#,$chr(35),+#,$chr(35))
var %i = $comchan($2,0)
while (%i) {
var %tntTemp = $comchan($2,%i)
if ($istok($expbanchan.get(banchanControlList),%tntTemp,44)) {
var %o 0,%oo = $expbanchan.get($+(%tntTemp,.ListOfbanchan))
while %o < $numtok(%oo,44) {
inc %o
var %dcTemp = $gettok(%oo,%o,44)
if ($istok(%tnt,%dcTemp,32)) {
if $me isop %tntTemp && $2 !isop %tntTemp && $2 !isvo %tntTemp && !$istok(%tntforChan,%tntTemp,32) {
ban $+(-u,$expbanchan.get($+(%tntTemp,.BanTimeFor.,%dcTemp))) %tntTemp $2 2
raw -q kick %tntTemp $2 $+(:,$expbanchan.get($+(%tntTemp,.KickMsgFor.,%dcTemp))) (Opscript)
var %tntforChan = $addtok(%tntforChan,%tntTemp,32)
}
}
}
}
dec %i
}
}
if $numeric = 318 {
hdel expbanchanWhois $2
}
halt
}
}
}