; The contents of this script file are copyrighted by Insides Technologies, 2001. ; Definitions hereby supplied are owned by Insides Technologies and INSIDES - insides@qscripts.cjb.net, the script author. ; Please read the End User License Agreement supplied in order to understand the copy restrictions. ; Please contact the author of the script for any questions you might have. ; Thanks for understanding. alias cpval { var %c $chandir $+ $1 $+ .qx | if ($exists(%c) != $true) { set %c $chandir $+ chanprot.qx } | return $readini %c $2 $3 } alias -l ccaps { var %c = 1,%cap = 0 | while (%c <= $len($1-)) { if ($asc($mid($1-,%c,1)) > 64) && ($asc($mid($1-,%c,1)) < 91) { inc %cap } | inc %c } | return $calc(%cap / $len($1-)) } alias -l cpadvert { var %l $cpval($1,advert,list),%c = 1,%r = 0,%w = 1 | while ($gettok($2-,%w,32) != $null) { var %c = 1 | while (%c <= $numtok(%l,167)) { if ($gettok(%l,%c,167) iswm $gettok($2-,%w,32)) { inc %r } | inc %c } | inc %w } | return %r } alias -l cpswear { var %l $cpval($1,swear,list),%c = 1,%r = 0,%w = 1 | while ($gettok($2-,%w,32) != $null) { var %c = 1 | while (%c <= $numtok(%l,167)) { if ($gettok(%l,%c,167) iswm $gettok($2-,%w,32)) { inc %r } | inc %c } | inc %w } | return %r } alias -l cpsctcp { var %l $cpval($1,sctcp,list),%c = 1,%r = 0,%w = 1 | while ($gettok($2-,%w,32) != $null) { var %c = 1 | while (%c <= $numtok(%l,167)) { if ($gettok(%l,%c,167) iswm $gettok($2-,%w,32)) { inc %r } | inc %c } | inc %w } | return %r } alias -l cpectcp { var %l $cpval($1,ectcp,list),%c = 1,%r = 0,%w = 1 | while ($gettok($2-,%w,32) != $null) { var %c = 1 | while (%c <= $numtok(%l,167)) { if ($gettok(%l,%c,167) iswm $gettok($2-,%w,32)) { inc %r } | inc %c } | inc %w } | return %r } alias -l cpbnick { var %l $cpval($1,bnick,list),%c = 1,%r = 0,%w = 1 | while ($gettok($2-,%w,32) != $null) { var %c = 1 | while (%c <= $numtok(%l,167)) { if ($gettok(%l,%c,167) iswm $gettok($2-,%w,32)) { inc %r } | inc %c } | inc %w } | return %r } alias -l cpusr { if ($1 isop $2) && ($cpval($2,users,op) == 1) { return 1 } | if ($1 isvo $2) && ($cpval($2,users,voice) == 1) { return 1 } | if ($1 ishelp $2) && ($cpval($2,users,help) == 1) { return 1 } | if ($1 isreg $2) && ($cpval($2,users,reg) == 1) { return 1 } | return 0 } alias cpnad { set -u %c $calc($2 - 1) | if (%c = 10) { return $1 } | return $address($1,%c) } On @*:TEXT:*:#:{ chantflood $chan $nick $1- } On @*:NOTICE:*:#:{ set %notice 1 | chantflood $chan $nick $1- } On @*:KICK:#:{ chanmflood $chan $nick kick | if ($knick == $me) && ($cpval($chan,krev,on) == 1) { set %cc. [ $+ [ $chan ] $+ .krev ] $nick | set %cc. [ $+ [ $chan ] $+ .krev.time ] $time } } On @*:BAN:#:{ chanmflood $chan $nick ban } On @*:DEOP:#:{ chanmflood $chan $nick deop | if ($opnick == $me) && ($cpval($chan,drev,on) == 1) { set %cc. [ $+ [ $chan ] $+ .drev ] $nick | set %cc. [ $+ [ $chan ] $+ .drev.time ] $time } } On @*:JOIN:#:{ chanmflood $chan $nick joinpart join } On @*:PART:#:{ chanmflood $chan $nick joinpart } On @*:MODE:#:{ chanmflood $chan $nick modetopic $1- } On @*:TOPIC:#:{ chanmflood $chan $nick modetopic } On @*:NICK:{ chanmflood allchan $address($newnick,1) nick } On @*:OP:#:{ if ($opnick == $me) { if ($cpval($chan,drev,on) == 1) && (%cc. [ $+ [ $chan ] $+ .drev ] ison $chan) { cpperform drev $chan $nick } if ($cpval($chan,krev,on) == 1) && (%cc. [ $+ [ $chan ] $+ .krev ] ison $chan) { cpperform krev $chan $nick } } } CTCP @*:*:#:{ chancflood $chan $nick $1- } alias -l chantflood { if ($2 == $me) { return } if ($cpusr($2,$1) == 0) { return } if ($cpval($1,text,on) == 0) || (%notice == 1) { goto notice } if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .text ] == $null) { set %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .text.time ] $ctime } inc %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .text ] set -u %time $ctime dec %time %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .text.time ] if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .text ] >= $cpval($1,text,par)) { if (%time <= $cpval($1,text,secs)) { cpperform text $chan $nick } unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .text ] | unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .text.time ] } :notice if ($cpval($1,notice,on) == 0) || (%notice != 1) { goto color } if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .notice ] == $null) { set %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .notice.time ] $ctime } inc %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .notice ] set -u %time $ctime dec %time %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .notice.time ] if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .notice ] >= $cpval($1,notice,par)) { if (%time <= $cpval($1,notice,secs)) { cpperform notice $chan $nick } unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .notice ] | unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .notice.time ] } :color if ($cpval($1,color,on) == 0) { goto caps } var %c $calc($cpval($1,color,par) / $cpval($1,color,chars)) var %k $calc($count($3-,) / $len($3-)) if (%k >= %c) { cpperform color $chan $nick } :caps if ($cpval($1,caps,on) == 0) { goto repeat } var %c $calc($cpval($1,caps,par) / $cpval($1,caps,chars)) if ($ccaps($3-) >= %c) { cpperform caps $chan $nick } :repeat if ($cpval($1,repeat,on) == 0) || (%notice == 1) { goto advert } if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .repeat ] == $null) { set %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .repeat.time ] $ctime | set %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .repeat.text ] $3- } if ($3- == %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .repeat.text ]) { inc %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .repeat ] } set -u %time $ctime dec %time %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .repeat.time ] if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .repeat ] >= $cpval($1,repeat,par)) { if (%time <= $cpval($1,repeat,secs)) { cpperform repeat $chan $nick } unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .repeat ] | unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .repeat.time ] | unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .repeat.text ] } :advert if ($cpval($1,advert,on) == 0) { goto swear } if ($cpadvert($chan,$3-) >= $cpval($1,advert,par)) { cpperform advert $chan $nick } :swear if ($cpval($1,swear,on) == 0) { return } if ($cpswear($chan,$3-) >= $cpval($1,swear,par)) { cpperform swear $chan $nick } } alias -l chancflood { if ($2 == $me) { return } if ($cpval($1,ectcp,on) == 0) && ($cpectcp($3-) > 0) { return } if ($cpval($1,ctcp,on) == 0) { goto sctcp } if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .ctcp ] == $null) { set %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .ctcp.time ] $ctime } inc %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .ctcp ] set -u %time $ctime dec %time %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .ctcp.time ] if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .ctcp ] >= $cpval($1,ctcp,par)) { if (%time <= $cpval($1,ctcp,secs)) { cpperform ctcp $chan $nick } unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .ctcp ] | unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .ctcp.time ] } :sctcp if ($cpval($1,sctcp,on) == 0) { return } if ($cpsctcp($chan,$3-) >= $cpval($1,sctcp,par)) { cpperform sctcp $chan $nick } } alias -l chanmflood { if ($2 == $me) { return } if ($cpusr($2,$1) == 0) { return } if ($istok(kick ban joinpart modetopic nick,$3,32)) { goto $3 } return :kick if ($cpval($1,kick,on) == 0) { return } if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .kick ] == $null) { set %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .kick.time ] $ctime } inc %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .kick ] set -u %time $ctime dec %time %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .kick.time ] if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .kick ] >= $cpval($1,kick,par)) { if (%time <= $cpval($1,kick,secs)) { cpperform kick $chan $nick } unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .kick ] | unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .kick.time ] } return :ban if ($cpval($1,ban,on) == 0) { return } if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .ban ] == $null) { set %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .ban.time ] $ctime } inc %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .ban ] set -u %time $ctime dec %time %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .ban.time ] if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .ban ] >= $cpval($1,ban,par)) { if (%time <= $cpval($1,ban,secs)) { cpperform ban $chan $nick } unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .ban ] | unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .ban.time ] } return :deop if ($cpval($1,deop,on) == 0) { return } if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .deop ] == $null) { set %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .deop.time ] $ctime } inc %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .deop ] set -u %time $ctime dec %time %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .deop.time ] if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .deop ] >= $cpval($1,deop,par)) { if (%time <= $cpval($1,deop,secs)) { cpperform deop $chan $nick } unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .deop ] | unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .deop.time ] } return :joinpart if ($cpval($1,joinpart,on) == 0) { return } if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .joinpart ] == $null) { set %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .joinpart.time ] $ctime } inc %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .joinpart ] set -u %time $ctime dec %time %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .joinpart.time ] if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .joinpart ] >= $cpval($1,joinpart,par)) { if (%time <= $cpval($1,joinpart,secs)) { cpperform joinpart $chan $nick } unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .joinpart ] | unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .joinpart.time ] } if ($4 == join) && ($cpval($1,clones,on) == 1) && ($numtok($clone($2,$1),44) >= $cpval($1,clones,par)) { cpperform clones $chan $nick } return :modetopic if ($cpval($1,modetopic,on) == 0) { return } if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .modetopic ] == $null) { set %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .modetopic.time ] $ctime } inc %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .modetopic ] set -u %time $ctime dec %time %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .modetopic.time ] if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .modetopic ] >= $cpval($1,modetopic,par)) { if (%time <= $cpval($1,modetopic,secs)) { cpperform modetopic $chan $nick } unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .modetopic ] | unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .modetopic.time ] } if ($cpval($1,lmode,on) == 1) && (l isin $4-) && (-l !isin $4-) { var %c 1 | while ($gettok($4-,%c,32) != $null) { if ($gettok($4-,%c,32) isnum) && ($gettok($4-,%c,32) < $cpval($1,lmode,par)) { cpperform lmode $chan $nick } | inc %c } } if ($cpval($1,imode,on) == 1) && (i isin $4-) && (-i !isin $4-) { cpperform imode $chan $nick } if ($cpval($1,kmode,on) == 1) && (k isin $4-) && (-k !isin $4-) { cpperform kmode $chan $nick } return :nick if ($cpval($1,nick,on) == 0) { return } if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .nick ] == $null) { set %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .nick.time ] $ctime } inc %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .nick ] set -u %time $ctime dec %time %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .nick.time ] if (%cc. [ $+ [ $1 ] $+ [ $2 ] $+ .nick ] >= $cpval($active,nick,par)) { if (%time <= $cpval($active,nick,secs)) { cpperform nick $chan $nick } unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .nick ] | unset %cc. [ $+ [ $1 ] $+ [ $2 ] $+ .nick.time ] } if ($cpval($1,bnick,on) == 0) { return } if ($cpbnick($chan,$3-) > 1) { cpperform bnick $chan $nick } } alias -l cpperform { var %wo = $cpval($2,$1,wo),%wc = $cpval($2,$1,wc),%wy = $cpval($2,$1,wy),%ko = $cpval($2,$1,ko),%bo = $cpval($2,$1,bo),%do = $cpval($2,$1,do),%io = $cpval($2,$1,io),%pm = $cpval($2,$1,pm),%snd = $cpval($2,$1,snd),%cm = $cpval($2,$1,cm),%t = $1,%c = $2,%n = $3,%r = $4- tokenize 167 %wo if ($1 == 1) { if (%cc. [ $+ [ %c ] $+ [ %n ] $+ [ %t ] $+ .warn ] == 1) { goto wc } | $replace($2,n,.notice,m,.msg) %n $replace($4-,,%c,,%n) } :wc tokenize 167 %wc if ($1 == 1) { if (%cc. [ $+ [ %c ] $+ [ %n ] $+ [ %t ] $+ .warn ] == 1) { goto wy } | $replace($2,on,.onotice,om,.omsg,n,.notice,m,.msg) %c $replace($3-,,%c,,%n) } :wy tokenize 167 %wy if ($1 == 1) { if (%cc. [ $+ [ %c ] $+ [ %n ] $+ [ %t ] $+ .warn ] == 1) { goto bo } | $replace($2,m,msgbox,e,.echo %c) $replace($3-,,%c,,%n) } :bo if (%cc. [ $+ [ %c ] $+ [ %n ] $+ [ %t ] $+ .warn ] == $null) { goto end } tokenize 167 %bo if ($1 == 1) { .ban $iif($2 == 1,[ -u $+ [ $3 ] ]) %c $cpnad(%n,$4) | .notice %n $replace($5-,,%c,,%n) } if (%do == 1) && (%n ison %c) { mode %c -o %n } tokenize 167 %ko if ($1 == 1) { kick %c $cpnad(%n,$3) $iif($2 == 1,$replace($4-,,%c,,%n)) } tokenize 167 %io if ($1 == 1) { .ignore $iif($2 == 1,[ -u $+ [ $3 ] ]) $+ $4 $cpnad(%n,$5) | .notice %n $replace($6-,,%c,,%n) } tokenize 167 %pm if ($1 == 1) { .nick $replace($4,,$me) } if ($2 == 1) { .flash -r5 $replace($5-,,%c,,%n) } if ($3 == 1) && (%snd != Empty) { .splay %snd } tokenize 167 %cm if ($1 == 1) { mode %c $2 } if ($3 == 1) { topic %c $4- } :end if (%cc. [ $+ [ %c ] $+ [ %n ] $+ [ %t ] $+ .warn ] == 1) { unset %cc. [ $+ [ %c ] $+ [ %n ] $+ [ %t ] $+ .warn ] | return } if (%cc. [ $+ [ %c ] $+ [ %n ] $+ [ %t ] $+ .warn ] == $null) { set %cc. [ $+ [ %c ] $+ [ %n ] $+ [ %t ] $+ .warn ] 1 } } dialog chansetup { title "" size -1 -1 252 118 option dbu box "",1,-3 -3 500 4 box "Channels",2,3 3 65 99 list 3,7 11 57 80 button "Add",4,14 88 15 11 button "Remove",5,32 88 26 11 box "Channel Setup",6,71 3 178 99 check "Update Channel IAL When Joining Channel",7,75 12 150 7 check "Update Channel Ban List When Joining Channel",8,75 22 150 7 check "Op Own AutoOp Users When They Join Channel",9,75 32 150 7 check "Voice Own AutoOp Users When They Join Channel",10,75 42 150 7 check "Clear Channel Bans When Joining Channel",11,75 52 150 7 check "Cycle Channel In Order To Regain Ops",12,75 62 150 7 check "On Join Message",13,75 74 52 7 edit "",14,129 72 116 11,autohs check "On Part Message",15,75 87 52 7 edit "",16,129 85 116 11,autohs button "Save",17,93 105 20 11 button "Close",18,116 105 20 11,cancel button "Help",19,139 105 20 11 edit "",20,0 0 0 0 } On *:DIALOG:chansetup:*:*:{ if ($devent == init) { mdx.init $dname | mdx.nfinit $dname 19 | mdx SetDialog $dname icon 39 $icons | dialog -t $dname Channel Setup | chansfill | did -f $dname 18 } if ($devent == sclick) { if ($did == 3) { chansshow $did(3,$did(3).sel) } if ($did == 4) { var %c $inputbox(chan) if ($left(%c,1) != $chr(35)) { emsgbox Please Enter A Channel Name. | return } .copy $chandir $+ chanprot.qx $chandir $+ %c $+ .qx chansfill } if ($did == 5) { if ($did(3).sel == $null) || ($did(3,$did(3).sel) == Global) { return } .remove $chandir $+ $did(3,$did(3).sel) $+ .qx chansfill } if ($did == 17) { chanssave } if ($did == 19) { qhelp Channel Protection } } } alias chansetup { qdlg chansetup | chansshow $iif($1,$1,chanprot) } alias -l chansfill { did -r chansetup 3 | did -a chansetup 3 Global | did -c chansetup 3 | var %s 1 | var %e $findfile($chandir,*.qx,0) | while (%s <= %e) { set -u %c $remove($nopath($findfile($chandir,*.qx,%s)),.qx) | if ($left(%c,1) == $chr(35)) { did -a chansetup 3 %c } | inc %s } } alias -l csv { var %c $chandir $+ $did(chansetup,20) $+ .qx | if ($exists(%c) != $true) { set %c $chandir $+ chanprot.qx | did -ra chansetup 20 chanprot } | return $readini %c chansetup $1 } alias -l csc { did $replace($2,1,-c,0,-u) chansetup $1 } alias -l cst { did -ra chansetup $1 $2- } alias -l cscs { var %c $chandir $+ $did(chansetup,20) $+ .qx | if ($exists(%c) != $true) { set %c $chandir $+ chanprot.qx | did -ra chansetup 20 chanprot } | writeini %c chansetup $1 $did(chansetup,$2).state } alias -l csts { var %c $chandir $+ $did(chansetup,20) $+ .qx | if ($exists(%c) != $true) { set %c $chandir $+ chanprot.qx | did -ra chansetup 20 chanprot } | writeini %c chansetup $1 $did(chansetup,$2) } alias -l chansshow { did -ra chansetup 20 $1 | csc 7 $csv(ial) | csc 8 $csv(ban) | csc 9 $csv(oopjoin) | csc 10 $csv(ovojoin) | csc 11 $csv(cbans) | csc 12 $csv(cops) | csc 13 $csv(ojoin) | cst 14 $csv(ojoint) | csc 15 $csv(opart) | cst 16 $csv(opartt) | dialog -t chansetup Channel Setup - $replace($did(chansetup,20),chanprot,Global) } alias -l chanssave { cscs ial 7 | cscs ban 8 | cscs oopjoin 9 | cscs ovojoin 10 | cscs cbans 11 | cscs cops 12 | cscs ojoin 13 | csts ojoin6 14 | cscs opart 15 | csts opartt 16 } alias csval { var %c $chandir $+ $1 $+ .qx | if ($exists(%c) != $true) { set %c $chandir $+ chanprot.qx } | return $readini %c chansetup $2 }