; ; Shut The Fuck Up ; version 1.2c ; ; ; 2004-04-12: ; ; Made the echo when blocking colored and added support for wildcard ; channels matching. ; ; ; 2004-04-07: ; ; Finally took the time to re-write this, what can I say - I'm lazy :) ; ; ; 2002-2003: ; ; All the other stuff. ; ; ; ; Installation ; ------------ ; ; Three simple steps: ; ; * Copy stfu.mrc to your mIRC directory - usually C:\mIRC ; ; * Start mIRC if you havent already ; ; * Type "/load -rs stfu.mrc" ; ; Done. ; ; ; Configuration ; ------------- ; ; Type "/stfuconf" to bring up the STFU configuration dialog with ; three tab windows: Masks, Channels and Channels ; ; ; The masks system is really simple, if you add a valid hostmask ; (nick!ident@host) it will be matched against any incoming queries ; and if there's a match the query will be accepted or rejected ; depending on if it's in the Allow or Block field (duh). ; One important thing is that Allow masks have a higher priority ; than block masks so if you block *!*@* and allow *!*@*.com anyone ; coming from a *.com host will still be able to query you. ; ; ; The channels system is exactly like the masks system, except that ; you have to be on the same channel as the nick querying you for it ; to work. Say you block everyone (ops, voice, regular) from #lamers ; and you arent on #lamers yourself - then it wont work, but if you ; are on #lamers it will work :) ; As with the masks system Allow channels are checked before Block ; channels and have a higher priority. ; NEW: Added support for wildcard channels so you can add #cpl.* ; channel entries. ; ; ; The settings tab requires a little more explanation: ; ; * Ignore blocked queries for XXXX seconds ; ; I STRONGLY RECOMMEND YOU LEAVE THIS ENABLED! ; Whenever a query is blocked you also add a privmsg ignore for ; this user for XXXX seconds. If you turn this off the script ; will still block the query window from opening but it will ; trigger for every msg the user sends - which is B A D! ; ; * Automatically turn off after XXXX seconds ; ; Turns off the STFU protection after XXXX seconds, in case you ; only want to turn it on when you're being bombarded by msgs ; and accept them later again. ; ; * Show echo when blocking in active window ; ; Some people like to see the blocked messages in their active ; window while some prefer it in a separate window. ; ; * Ask about unknown masks and channels... ; ; If you recieve a query that doesnt match any Allow or Block ; channels/masks a dialog will popup and give you 60 seconds ; to either accept or reject the query. ; This feature is still in beta and wont work to 100% but ; generally it works ok. Try it out if you wish to. ; ; * ...only if mIRC is the active application ; ; Only show the dialog if mIRC is the active app, else reject. ; ; * Block queries from... ; ; You can block queries from everyone if you want to, even allow ; channels/masks can be blocked if you enable it. Generally just ; leave it alone or if you also want to block unknown people tick ; that box too. ; ; * Echo when blocking... ; ; How much info do you need? :) ; ; * Messages... ; ; Here you can define particular messages that are sent whenever ; a matching query is opened. If you dont want to send any message ; (allowed users for example) enter a single dash (-) and nothing ; will be sent. ; ; ; The End ; ------- ; ; That's it, if you got any questions feel free to contact me in ; #help.script at Quakenet or /msg me directly. ; ; -- ; Faile ; ; popup menu @stfu,channel,query,status { - stfu .stfu:stfu .- .stfuconf:stfuconf } menu nicklist { - $iif($ial($1,0),stfu) .allow ..$1 $+ !*@*:writeini stfu.ini masks_allow $1 $+ !*@* $ctime | stfuhash ..$address($1,3):writeini stfu.ini masks_allow $address($1,3) $ctime | stfuhash ..$address($1,1):writeini stfu.ini masks_allow $address($1,1) $ctime | stfuhash ..$address($1,4):writeini stfu.ini masks_allow $address($1,4) $ctime | stfuhash ..$address($1,2):writeini stfu.ini masks_allow $address($1,2) $ctime | stfuhash .block ..$1 $+ !*@*:writeini stfu.ini masks_block $1 $+ !*@* $ctime | stfuhash ..$address($1,3):writeini stfu.ini masks_block $address($1,3) $ctime | stfuhash ..$address($1,1):writeini stfu.ini masks_block $address($1,1) $ctime | stfuhash ..$address($1,4):writeini stfu.ini masks_block $address($1,4) $ctime | stfuhash ..$address($1,2):writeini stfu.ini masks_block $address($1,2) $ctime | stfuhash } ; mother of all code on ^*:open:?:{ if (%stfu) { ; allow masks if ($hfind(stfu_masks_allow,$fulladdress,1,W).data) { if (($readini(stfu.ini,settings,messageallow) != -) && ((%stfuflood [ $+ [ $cid ] ] == $null) || (%stfuflood [ $+ [ $cid ] ] <= 60))) { inc -z %stfuflood $+ $cid 20 | $iif($readini(stfu.ini,settings,messagetype) == 1,.notice,.msg) $nick $readini(stfu.ini,settings,messageallow) } if ($readini(stfu.ini,settings,blockallow) == 1) { haltdef if ($readini(stfu.ini,settings,ignore) == 1) { .ignore -pu $+ [ $readini(stfu.ini,settings,ignoreseconds) ] $nick 3 } if ($readini(stfu.ini,settings,echoallow) == 1) { if (($readini(stfu.ini,settings,echoactive) == 0) && ($window(@stfu) == $null)) { window -ek[0]n @stfu } | echo $iif($readini(stfu.ini,settings,echoactive) == 1,$color(highlight) -at [ STFU ],-mt @stfu) Blocked message from $nick ( $+ $fulladdress $+ ), matching $hget(stfu_masks_allow,$hfind(stfu_masks_allow,$fulladdress,1,W).data) (allow): $1- } } return } ; allow channels var %i 1, %j $comchan($nick,0) while (%i <= %j) { ; debug ; echo -s allow check: $comchan($nick,%i) -> $hfind(stfu_channels_allow,$comchan($nick,%i),1,W).data -> $hget(stfu_channels_allow, $hfind(stfu_channels_allow,$comchan($nick,%i),1,W).data) if ($hfind(stfu_channels_allow,$comchan($nick,%i),1,W).data) { var %k = $hget(stfu_channels_allow, $hfind(stfu_channels_allow,$comchan($nick,%i),1,W).data) if ((($nick isop $comchan($nick,%i)) && ($readini(stfu.ini, [ %k ] $+ _allow,op) == 1)) || (($nick isvoice $comchan($nick,%i)) && ($readini(stfu.ini, [ %k ] $+ _allow,voice) == 1)) || (($nick isreg $comchan($nick,%i)) && ($readini(stfu.ini, [ %k ] $+ _allow,regular) == 1))) { if (($readini(stfu.ini,settings,messageallow) != -) && ((%stfuflood [ $+ [ $cid ] ] == $null) || (%stfuflood [ $+ [ $cid ] ] <= 60))) { inc -z %stfuflood $+ $cid 20 | $iif($readini(stfu.ini,settings,messagetype) == 1,.notice,.msg) $nick $readini(stfu.ini,settings,messageallow) } if ($readini(stfu.ini,settings,blockallow) == 1) { haltdef if ($readini(stfu.ini,settings,ignore) == 1) { .ignore -pu $+ [ $readini(stfu.ini,settings,ignoreseconds) ] $nick 3 } if ($readini(stfu.ini,settings,echoallow) == 1) { if (($readini(stfu.ini,settings,echoactive) == 0) && ($window(@stfu) == $null)) { window -ek[0]n @stfu } | echo $iif($readini(stfu.ini,settings,echoactive) == 1,$color(highlight) -at [ STFU ],-mt @stfu) Blocked message from $nick ( $+ $fulladdress $+ ), on $comchan($nick,%i) (allow): $1- } } return } } inc %i } ; block masks if ($hfind(stfu_masks_block,$fulladdress,1,W).data) { if (($readini(stfu.ini,settings,messageblock) != -) && ((%stfuflood [ $+ [ $cid ] ] == $null) || (%stfuflood [ $+ [ $cid ] ] <= 60))) { inc -z %stfuflood $+ $cid 20 | $iif($readini(stfu.ini,settings,messagetype) == 1,.notice,.msg) $nick $readini(stfu.ini,settings,messageblock) } if ($readini(stfu.ini,settings,blockblock) == 1) { haltdef if ($readini(stfu.ini,settings,ignore) == 1) { .ignore -pu $+ [ $readini(stfu.ini,settings,ignoreseconds) ] $nick 3 } if ($readini(stfu.ini,settings,echoblock) == 1) { if (($readini(stfu.ini,settings,echoactive) == 0) && ($window(@stfu) == $null)) { window -ek[0]n @stfu } | echo $iif($readini(stfu.ini,settings,echoactive) == 1,$color(highlight) -at [ STFU ],-mt @stfu) Blocked message from $nick ( $+ $fulladdress $+ ), matching $hget(stfu_masks_block,$hfind(stfu_masks_block,$fulladdress,1,W).data) (block): $1- } } return } ; block channels var %i 1, %j $comchan($nick,0) while (%i <= %j) { if ($hfind(stfu_channels_block,$comchan($nick,%i),1,W).data) { var %k = $hget(stfu_channels_block, $hfind(stfu_channels_block,$comchan($nick,%i),1,W).data) if ((($nick isop $comchan($nick,%i)) && ($readini(stfu.ini, [ %k ] $+ _block,op) == 1)) || (($nick isvoice $comchan($nick,%i)) && ($readini(stfu.ini, [ %k ] $+ _block,voice) == 1)) || (($nick isreg $comchan($nick,%i)) && ($readini(stfu.ini, [ %k ] $+ _block,regular) == 1))) { if (($readini(stfu.ini,settings,messageblock) != -) && ((%stfuflood [ $+ [ $cid ] ] == $null) || (%stfuflood [ $+ [ $cid ] ] <= 60))) { inc -z %stfuflood $+ $cid 20 | $iif($readini(stfu.ini,settings,messagetype) == 1,.notice,.msg) $nick $readini(stfu.ini,settings,messageblock) } if ($readini(stfu.ini,settings,blockblock) == 1) { haltdef if ($readini(stfu.ini,settings,ignore) == 1) { .ignore -pu $+ [ $readini(stfu.ini,settings,ignoreseconds) ] $nick 3 } if ($readini(stfu.ini,settings,echoblock) == 1) { if (($readini(stfu.ini,settings,echoactive) == 0) && ($window(@stfu) == $null)) { window -ek[0]n @stfu } | echo $iif($readini(stfu.ini,settings,echoactive) == 1,$color(highlight) -at [ STFU ],-mt @stfu) Blocked message from $nick ( $+ $fulladdress $+ ), on $comchan($nick,%i) (block): $1- } } return } } inc %i } ; unknown if (($readini(stfu.ini,settings,query) == 1) && (($readini(stfu.ini,settings,queryactive) == 0) || ($appactive))) { ; if (($readini(stfu.ini,settings,query) == 1) && ($appactive)) { haltdef if (!$dialog(stfu_query_ $+ $nick)) { if (($readini(stfu.ini,settings,messageunknown) != -) && ((%stfuflood [ $+ [ $cid ] ] == $null) || (%stfuflood [ $+ [ $cid ] ] <= 60))) { inc -z %stfuflood $+ $cid 10 | $iif($readini(stfu.ini,settings,messagetype) == 1,.notice,.msg) $nick Query pending... } set %stfu_query_ [ $+ [ $nick ] $+ ] _address $fulladdress stfuquery $nick } var %i 1 while (%stfu_query_ [ $+ [ $nick ] $+ [ %i ] ] != $null) { inc %i } set %stfu_query_ [ $+ [ $nick ] $+ [ %i ] ] $1- } else { if (($readini(stfu.ini,settings,messageunknown) != -) && ((%stfuflood [ $+ [ $cid ] ] == $null) || (%stfuflood [ $+ [ $cid ] ] <= 60))) { inc -z %stfuflood $+ $cid 20 | $iif($readini(stfu.ini,settings,messagetype) == 1,.notice,.msg) $nick $readini(stfu.ini,settings,messageunknown) } if ($readini(stfu.ini,settings,blockunknown) == 1) { haltdef if ($readini(stfu.ini,settings,ignore) == 1) { .ignore -pu $+ [ $readini(stfu.ini,settings,ignoreseconds) ] $nick 3 } if ($readini(stfu.ini,settings,echounknown) == 1) { if (($readini(stfu.ini,settings,echoactive) == 0) && ($window(@stfu) == $null)) { window -ek[0]n @stfu } | echo $iif($readini(stfu.ini,settings,echoactive) == 1,$color(highlight) -at [ STFU ],-mt @stfu) Blocked message from $nick ( $+ $fulladdress $+ ): $1- } } } } } ; stfu alias alias stfu { if (%stfu == $null) { if ($readini(stfu.ini,settings,automaticoff)) { echo -a [ STFU ] protection active for $duration($readini(stfu.ini,settings,automaticoffseconds)) set -u $+ [ $readini(stfu.ini,settings,automaticoffseconds) ] %stfu 1 } else { echo -a [ STFU ] protection active set %stfu 1 } } else { echo -a [ STFU ] protection disabled unset %stfu } } ; stfuconf alias alias stfuconf { dialog -m stfu stfu_dialog } ; stfuhash alias alias stfuhash { if ($hget(stfu_masks_allow)) { hfree stfu_masks_allow } hmake stfu_masks_allow 100 var %i 1, %j $ini(stfu.ini,masks_allow,0) while (%i <= %j) { hadd stfu_masks_allow %i $ini(stfu.ini,masks_allow,%i) | inc %i } if ($hget(stfu_masks_block)) { hfree stfu_masks_block } hmake stfu_masks_block 100 var %i 1, %j $ini(stfu.ini,masks_block,0) while (%i <= %j) { hadd stfu_masks_block %i $ini(stfu.ini,masks_block,%i) | inc %i } if ($hget(stfu_channels_allow)) { hfree stfu_channels_allow } hmake stfu_channels_allow 100 var %i 1, %j $ini(stfu.ini,channels_allow,0) while (%i <= %j) { hadd stfu_channels_allow %i $ini(stfu.ini,channels_allow,%i) | inc %i } if ($hget(stfu_channels_block)) { hfree stfu_channels_block } hmake stfu_channels_block 100 var %i 1, %j $ini(stfu.ini,channels_block,0) while (%i <= %j) { hadd stfu_channels_block %i $ini(stfu.ini,channels_block,%i) | inc %i } } ; dialog dialog stfu_dialog { title "STFU" size -1 -1 212 178 option dbu button "Done", 1, 2 164 37 12, default ok ; masks tab "Masks", 100, 2 0 207 160 text "Allow", 101, 7 16 75 8, tab 100 center list 102, 7 26 75 100, tab 100 size button "Add...", 103, 8 129 37 10, tab 100 button "Remove...", 104, 45 147 37 10, disable tab 100 text "Block", 105, 129 16 75 8, tab 100 center list 106, 129 26 75 100, tab 100 size button "Add...", 107, 130 129 37 10, tab 100 button "Remove...", 108, 168 147 37 10, disable tab 100 text "version 1.2c", 109, 175 169 35 8, tab 100 center ; channels tab "Channels", 200 text "Allow", 201, 7 16 75 8, tab 200 center list 202, 7 26 75 100, tab 200 size button "Add...", 203, 8 129 37 10, tab 200 button "Remove...", 204, 45 147 37 10, disable tab 200 text "Block", 205, 129 16 75 8, tab 200 center list 206, 129 26 75 100, tab 200 size button "Add...", 207, 130 129 37 10, tab 200 button "Remove...", 208, 168 147 37 10, disable tab 200 box "Allow", 209, 89 24 34 35, tab 200 check "Op", 210, 92 30 28 10, disable tab 200 check "Voice", 211, 92 39 28 10, disable tab 200 check "Regular", 212, 92 48 28 10, disable tab 200 box "Block", 213, 89 91 34 35, tab 200 check "Op", 214, 92 97 28 10, disable tab 200 check "Voice", 215, 92 106 28 10, disable tab 200 check "Regular", 216, 92 115 28 10, disable tab 200 ; settings tab "Settings", 300 text "For a detailed explanation of each setting read stfu.mrc", 301, 41 166 168 8, tab 300 center check "Ignore blocked queries for", 302, 8 17 73 10, tab 300 edit "", 303, 81 17 22 10, disable tab 300 text "seconds", 304, 104 18 20 8, tab 300 check "Automatically turn off after", 305, 8 28 75 10, tab 300 edit "", 306, 83 28 22 10, disable tab 300 text "seconds", 307, 106 29 20 8, tab 300 check "Show echo when blocking in active window", 327, 8 39 126 10, tab 300 check "Ask about unknown masks and channels...", 328, 8 50 126 10, tab 300 check "...only if mIRC is the active application", 329, 8 58 126 10, tab 300 box "Block queries from...", 308, 8 68 96 36, tab 300 check "...allowed masks and channels", 309, 12 74 86 10, tab 300 check "...blocked masks and channels", 310, 12 83 86 10, tab 300 check "...unknown masks and channels", 311, 12 92 86 10, tab 300 box "Echo when blocking...", 312, 108 68 96 36, tab 300 check "...allowed masks and channels", 313, 112 74 86 10, tab 300 check "...blocked masks and channels", 314, 112 83 86 10, tab 300 check "...unknown masks and channels", 315, 112 92 86 10, tab 300 box "Messages...", 316, 8 105 196 50, tab 300 text "...are sent as", 317, 11 113 34 8, tab 300 radio "/notice", 318, 45 113 27 7, tab 300 text "or", 319, 72 113 6 8, tab 300 radio "/msg", 320, 78 113 23 7, tab 300 text "...for allowed users:", 321, 11 123 53 8, tab 300 edit "", 322, 64 122 137 10, tab 300 autohs text "...for blocked users:", 323, 11 133 53 8, tab 300 edit "", 324, 64 132 137 10, tab 300 autohs text "...for unknown users:", 325, 11 143 53 8, tab 300 edit "", 326, 64 142 137 10, tab 300 autohs } ; init on *:dialog:stfu:init:*:{ if (!$exists(stfu.ini)) { echo -a [ STFU ] stfu.ini wasnt found, creating a new file with default settings... writeini stfu.ini masks_allow *!*@lam3rz.de $ctime writeini stfu.ini masks_block *!*@*.aol.com $ctime writeini stfu.ini masks_block *!*@*.t-dialin.net $ctime writeini stfu.ini channels_allow #twilightzone $ctime writeini stfu.ini channels_block #lamers $ctime writeini stfu.ini settings ignore 1 writeini stfu.ini settings ignoreseconds 3600 writeini stfu.ini settings automaticoff 1 writeini stfu.ini settings automaticoffseconds 7200 writeini stfu.ini settings blockallow 0 writeini stfu.ini settings blockblock 1 writeini stfu.ini settings blockunknown 1 writeini stfu.ini settings echoactive 0 writeini stfu.ini settings echoallow 1 writeini stfu.ini settings echoblock 1 writeini stfu.ini settings echounknown 1 writeini stfu.ini settings messagetype 2 writeini stfu.ini settings messageallow Message accepted. I've been idle $ $+ duration($ $+ idle) - have patience :) writeini stfu.ini settings messageblock Message rejected. I'm not accepting private messages from you, they are ignored. If you wish to speak to me try in a channel. writeini stfu.ini settings messageunknown Depending on my settings I may or may not receive your message. Just to be sure, speak to me on a channel instead. writeini stfu.ini settings query 0 } var %i 1, %j $ini(stfu.ini,masks_allow,0) while (%i <= %j) { did -a $dname 102 $ini(stfu.ini,masks_allow,%i) | inc %i } var %i 1, %j $ini(stfu.ini,masks_block,0) while (%i <= %j) { did -a $dname 106 $ini(stfu.ini,masks_block,%i) | inc %i } var %i 1, %j $ini(stfu.ini,channels_allow,0) while (%i <= %j) { did -a $dname 202 $ini(stfu.ini,channels_allow,%i) | inc %i } var %i 1, %j $ini(stfu.ini,channels_block,0) while (%i <= %j) { did -a $dname 206 $ini(stfu.ini,channels_block,%i) | inc %i } ; apply settings if ($readini(stfu.ini,settings,ignore) == 1) { did -c $dname 302 | did -e $dname 303 } did -ar $dname 303 $readini(stfu.ini,settings,ignoreseconds) if ($readini(stfu.ini,settings,automaticoff) == 1) { did -c $dname 305 | did -e $dname 306 } did -ar $dname 306 $readini(stfu.ini,settings,automaticoffseconds) if ($readini(stfu.ini,settings,echoactive) == 1) { did -c $dname 327 } if ($readini(stfu.ini,settings,query) == 1) { did -c $dname 328 } if ($readini(stfu.ini,settings,queryactive) == 1) { did -c $dname 329 } if ($readini(stfu.ini,settings,blockallow) == 1) { did -c $dname 309 } if ($readini(stfu.ini,settings,blockblock) == 1) { did -c $dname 310 } if ($readini(stfu.ini,settings,blockunknown) == 1) { did -c $dname 311 } if ($readini(stfu.ini,settings,echoallow) == 1) { did -c $dname 313 } if ($readini(stfu.ini,settings,echoblock) == 1) { did -c $dname 314 } if ($readini(stfu.ini,settings,echounknown) == 1) { did -c $dname 315 } if ($readini(stfu.ini,settings,messagetype) == 1) { did -c $dname 318 } | else { did -c $dname 320 } did -ar $dname 322 $readini(stfu.ini,n,settings,messageallow) did -ar $dname 324 $readini(stfu.ini,n,settings,messageblock) did -ar $dname 326 $readini(stfu.ini,n,settings,messageunknown) } ; close on *:dialog:stfu:close:*:{ stfuhash } ; masks on *:dialog:stfu:sclick:102:{ if ($did(102).seltext) { did -e $dname 104 } } on *:dialog:stfu:sclick:103:{ var %i $$?="Mask?" did -a $dname 102 %i writeini stfu.ini masks_allow %i $ctime } on *:dialog:stfu:sclick:104:{ remini stfu.ini masks_allow $did(102).seltext did -d $dname 102 $did(102).sel did -b $dname 104 } on *:dialog:stfu:sclick:106:{ if ($did(106).seltext) { did -e $dname 108 } } on *:dialog:stfu:sclick:107:{ var %i $$?="Mask?" did -a $dname 106 %i writeini stfu.ini masks_block %i $ctime } on *:dialog:stfu:sclick:108:{ remini stfu.ini masks_block $did(106).seltext did -d $dname 106 $did(106).sel did -b $dname 108 } ; channels on *:dialog:stfu:sclick:202:{ if ($did(202).seltext) { if ($readini(stfu.ini, [ $did(202).seltext ] $+ _allow,op)) { did -c $dname 210 } | else { did -u $dname 210 } if ($readini(stfu.ini, [ $did(202).seltext ] $+ _allow,voice)) { did -c $dname 211 } | else { did -u $dname 211 } if ($readini(stfu.ini, [ $did(202).seltext ] $+ _allow,regular)) { did -c $dname 212 } | else { did -u $dname 212 } did -e $dname 204 did -e $dname 210 did -e $dname 211 did -e $dname 212 } } on *:dialog:stfu:sclick:203:{ var %i $$?="Channel?" did -a $dname 202 %i writeini stfu.ini channels_allow %i $ctime writeini stfu.ini [ %i ] $+ _allow op 0 writeini stfu.ini [ %i ] $+ _allow voice 0 writeini stfu.ini [ %i ] $+ _allow regular 0 } on *:dialog:stfu:sclick:204:{ remini stfu.ini channels_allow $did(202).seltext remini stfu.ini [ $did(202).seltext ] $+ _allow did -d $dname 202 $did(202).sel did -b $dname 204 did -b $dname 210 did -b $dname 211 did -b $dname 212 } on *:dialog:stfu:sclick:206:{ if ($did(206).seltext) { if ($readini(stfu.ini, [ $did(206).seltext ] $+ _block,op)) { did -c $dname 214 } | else { did -u $dname 214 } if ($readini(stfu.ini, [ $did(206).seltext ] $+ _block,voice)) { did -c $dname 215 } | else { did -u $dname 215 } if ($readini(stfu.ini, [ $did(206).seltext ] $+ _block,regular)) { did -c $dname 216 } | else { did -u $dname 216 } did -e $dname 208 did -e $dname 214 did -e $dname 215 did -e $dname 216 } } on *:dialog:stfu:sclick:207:{ var %i $$?="Channel?" did -a $dname 206 %i writeini stfu.ini channels_block %i $ctime writeini stfu.ini [ %i ] $+ _block op 0 writeini stfu.ini [ %i ] $+ _block voice 0 writeini stfu.ini [ %i ] $+ _block regular 0 } on *:dialog:stfu:sclick:208:{ remini stfu.ini channels_block $did(206).seltext remini stfu.ini [ $did(206).seltext ] $+ _block did -d $dname 206 $did(206).sel did -b $dname 208 did -b $dname 214 did -b $dname 215 did -b $dname 216 } on *:dialog:stfu:sclick:210:{ if ($did(210).state) { writeini stfu.ini [ $did(202).seltext ] $+ _allow op 1 } else { writeini stfu.ini [ $did(202).seltext ] $+ _allow op 0 } } on *:dialog:stfu:sclick:211:{ if ($did(211).state) { writeini stfu.ini [ $did(202).seltext ] $+ _allow voice 1 } else { writeini stfu.ini [ $did(202).seltext ] $+ _allow voice 0 } } on *:dialog:stfu:sclick:212:{ if ($did(212).state) { writeini stfu.ini [ $did(202).seltext ] $+ _allow regular 1 } else { writeini stfu.ini [ $did(202).seltext ] $+ _allow regular 0 } } on *:dialog:stfu:sclick:214:{ if ($did(214).state) { writeini stfu.ini [ $did(206).seltext ] $+ _block op 1 } else { writeini stfu.ini [ $did(206).seltext ] $+ _block op 0 } } on *:dialog:stfu:sclick:215:{ if ($did(215).state) { writeini stfu.ini [ $did(206).seltext ] $+ _block voice 1 } else { writeini stfu.ini [ $did(206).seltext ] $+ _block voice 0 } } on *:dialog:stfu:sclick:216:{ if ($did(216).state) { writeini stfu.ini [ $did(206).seltext ] $+ _block regular 1 } else { writeini stfu.ini [ $did(206).seltext ] $+ _block regular 0 } } ; settings on *:dialog:stfu:sclick:302:{ if ($did(302).state) { writeini stfu.ini settings ignore 1 did -e $dname 303 } else { writeini stfu.ini settings ignore 0 did -b $dname 303 } } on *:dialog:stfu:edit:303:{ if ($did(303).text != $null) { writeini stfu.ini settings ignoreseconds $did(303).text } } on *:dialog:stfu:sclick:305:{ if ($did(305).state) { writeini stfu.ini settings automaticoff 1 did -e $dname 306 } else { writeini stfu.ini settings automaticoff 0 did -b $dname 306 } } on *:dialog:stfu:edit:306:{ if ($did(306).text) { writeini stfu.ini settings automaticoffseconds $did(306).text } } on *:dialog:stfu:sclick:309:{ if ($did(309).state) { writeini stfu.ini settings blockallow 1 } else { writeini stfu.ini settings blockallow 0 } } on *:dialog:stfu:sclick:310:{ if ($did(310).state) { writeini stfu.ini settings blockblock 1 } else { writeini stfu.ini settings blockblock 0 } } on *:dialog:stfu:sclick:311:{ if ($did(311).state) { writeini stfu.ini settings blockunknown 1 } else { writeini stfu.ini settings blockunknown 0 } } on *:dialog:stfu:sclick:313:{ if ($did(313).state) { writeini stfu.ini settings echoallow 1 } else { writeini stfu.ini settings echoallow 0 } } on *:dialog:stfu:sclick:314:{ if ($did(314).state) { writeini stfu.ini settings echoblock 1 } else { writeini stfu.ini settings echoblock 0 } } on *:dialog:stfu:sclick:315:{ if ($did(315).state) { writeini stfu.ini settings echounknown 1 } else { writeini stfu.ini settings echounknown 0 } } on *:dialog:stfu:sclick:318:{ writeini stfu.ini settings messagetype 1 } on *:dialog:stfu:sclick:320:{ writeini stfu.ini settings messagetype 2 } on *:dialog:stfu:edit:322:{ if ($did(322).text) { writeini stfu.ini settings messageallow $did(322).text } else { writeini stfu.ini settings messageallow - } } on *:dialog:stfu:edit:324:{ if ($did(324).text) { writeini stfu.ini settings messageblock $did(324).text } else { writeini stfu.ini settings messageblock - } } on *:dialog:stfu:edit:326:{ if ($did(326).text) { writeini stfu.ini settings messageunknown $did(326).text } else { writeini stfu.ini settings messageunknown - } } on *:dialog:stfu:sclick:327:{ if ($did(327).state) { writeini stfu.ini settings echoactive 1 } else { writeini stfu.ini settings echoactive 0 } } on *:dialog:stfu:sclick:328:{ if ($did(328).state) { writeini stfu.ini settings query 1 } else { writeini stfu.ini settings query 0 } } on *:dialog:stfu:sclick:329:{ if ($did(329).state) { writeini stfu.ini settings queryactive 1 } else { writeini stfu.ini settings queryactive 0 } } on *:load:{ if ($version < 6) { echo -a You're using mIRC version $version which is incompatible with this script. echo -a This script requires that you use mIRC version 6.0 or higher and will now echo -a automatically unload. Visit http://www.mirc.com for the latest mIRC version. unload -rs $script } else { echo -a Loaded $script $+ . echo -a Type /stfuconf or rightclick in a channel echo -a to configure, then type /stfu to enable it. echo -a To unload type "/unload -rs $script $+ ". } } on *:start:{ echo -a [ STFU ] Loading hash tables... stfuhash } on *:unload:{ echo -a Unloaded $script $+ . echo -a * Removing any temporary variables used... unset %stfu* echo -a * ...done! echo -a Please note that your stfu.ini is still left echo -a intact by this and has to be removed manually. } ; end of stfu code, beginning of stfu query code alias stfuquery { dialog -m stfu_query_ $+ $1 stfu_query_dialog } alias stfuquerytimeout { if (((%stfuflood [ $+ [ $cid ] ] == $null) || (%stfuflood [ $+ [ $cid ] ] <= 60))) { inc -z %stfuflood $+ $cid 10 | $iif($readini(stfu.ini,settings,messagetype) == 1,.notice,.msg) $1 Query auto-rejected after sixty seconds. } if ($readini(stfu.ini,settings,echoblock) == 1) { if (($readini(stfu.ini,settings,echoactive) == 0) && ($window(@stfu) == $null)) { window -ek[0]n @stfu } | echo $iif($readini(stfu.ini,settings,echoactive) == 1,$color(highlight) -at [ STFU ],-mt @stfu) Auto-rejected query with $1 ( $+ [ %stfu_query_ [ $+ [ $1 ] $+ ] _address ] $+ ) after sixty seconds. | var %i 1 | while (%stfu_query_ [ $+ [ $1 ] $+ [ %i ] ] != $null) { echo $iif($readini(stfu.ini,settings,echoactive) == 1,$color(highlight) -at [ STFU ],-mt @stfu) < $+ $1 $+ > %stfu_query_ [ $+ [ $1 ] $+ [ %i ] ] | inc %i } } unset %stfu_query_ [ $+ [ $1 ] $+ ] * dialog -x stfu_query_ $+ $1 } ; dialog dialog stfu_query_dialog { title "STFU" size -1 -1 150 50 option dbu text "-", 101, 2 3 145 8, center text "-", 102, 2 14 145 8, center text "-", 103, 2 25 145 8, center button "Yes", 104, 1 37 37 12, default ok button "No", 106, 112 37 37 12, cancel text "60", 105, 70 39 10 8, center } ; init on *:dialog:stfu_query_*:init:*:{ var %nick $right($dname,-11) .timerstfu_query_ $+ %nick $+ 1 60 1 did -a $dname 105 $!calc($did( [ $dname ] ,105) - 1) .timerstfu_query_ $+ %nick $+ 2 1 62 stfuquerytimeout %nick did -a $dname 101 Accept query with %nick $+ ? did -a $dname 102 %stfu_query_ [ $+ [ %nick ] $+ ] _address var %i = 1, %j = $comchan(%nick,0), %k while (%i <= %j) { %k = %k $comchan(%nick,%i) | inc %i } did -a $dname 103 %k } ; close on *:dialog:stfu_query_*:close:*:{ var %nick $right($dname,-11) unset %stfu_query_ [ $+ [ %nick ] $+ ] * .timerstfu_query_ $+ %nick $+ 1 off .timerstfu_query_ $+ %nick $+ 2 off } on *:dialog:stfu_query_*:sclick:104:{ var %nick $right($dname,-11) query %nick var %i 1 while (%stfu_query_ [ $+ [ %nick ] $+ [ %i ] ] != $null) { echo -mt %nick < $+ %nick $+ > %stfu_query_ [ $+ [ %nick ] $+ [ %i ] ] | inc %i } if (($readini(stfu.ini,settings,messageunknown) != -) && ((%stfuflood [ $+ [ $cid ] ] == $null) || (%stfuflood [ $+ [ $cid ] ] <= 60))) { inc -z %stfuflood $+ $cid 10 | $iif($readini(stfu.ini,settings,messagetype) == 1,.notice,.msg) %nick Query accepted. } if ($readini(stfu.ini,settings,echoblock) == 1) { if (($readini(stfu.ini,settings,echoactive) == 0) && ($window(@stfu) == $null)) { window -ek[0]n @stfu } | echo $iif($readini(stfu.ini,settings,echoactive) == 1,$color(highlight) -at [ STFU ],-mt @stfu) Accepted query with %nick ( $+ [ %stfu_query_ [ $+ [ %nick ] $+ ] _address ] $+ ) } } on *:dialog:stfu_query_*:sclick:106:{ var %nick $right($dname,-11) if (($readini(stfu.ini,settings,messageunknown) != -) && ((%stfuflood [ $+ [ $cid ] ] == $null) || (%stfuflood [ $+ [ $cid ] ] <= 60))) { inc -z %stfuflood $+ $cid 10 | $iif($readini(stfu.ini,settings,messagetype) == 1,.notice,.msg) %nick Query rejected. } if ($readini(stfu.ini,settings,ignore) == 1) { .ignore -pu $+ [ $readini(stfu.ini,settings,ignoreseconds) ] $mask( [ %stfu_query_ [ $+ [ %nick ] $+ ] _address ] ,3) } if ($readini(stfu.ini,settings,echoblock) == 1) { if (($readini(stfu.ini,settings,echoactive) == 0) && ($window(@stfu) == $null)) { window -ek[0]n @stfu } | echo $iif($readini(stfu.ini,settings,echoactive) == 1,$color(highlight) -at [ STFU ],-mt @stfu) Rejected query with %nick ( $+ [ %stfu_query_ [ $+ [ %nick ] $+ ] _address ] $+ ) | var %i 1 | while (%stfu_query_ [ $+ [ %nick ] $+ [ %i ] ] != $null) { echo $iif($readini(stfu.ini,settings,echoactive) == 1,$color(highlight) -at [ STFU ],-mt @stfu) < $+ %nick $+ > %stfu_query_ [ $+ [ %nick ] $+ [ %i ] ] | inc %i } } } ; the end