Q-script version 2.0

Index

1. Introduction
2. Installation
3. Filters

4. Options

5. Input commands
6. Tips & tricks
7. Faq

8. Version info
9. Links & contact

 

1. Introduction (index)

Q-script was created by me (]Q[, who else :) ) because of my desire to learn mirc scripting and due developments in #Startrek-Central (STC). The first reason is quite obvious, scripts really do increment the irc enviroment. The second one however gave my script a real necesaty. As u might know #Startrek-Central now excists for a bit more than a year, during this time STC has grown from approximatly 30 users to an averige of about 350 users and with peaks of over 450 (highest untill now 593) users, making it one of the bigger channels on DalNet. Having this many people on a channel does have its down sides, namely: It becomes virtually impossible for any number of ops to keep spammers out, make the users follow the rules and do regular stuff like voicing people. Hence I created my script to help the users get rid of all those spam msges and later upgraded it to include a bunch of op functions which are now dominant.

The script is based on a filtering function capable of filtering out allmost anything in an event. All you need to do is add a couple of rules. It is this feature that makes this script highly adaptable and easy to use. On the last bit I do need to include some information on how to set it up because the script has many options each having a different function. Continue reading this document for more information on them.

2. Installation (index)

Here is how u install the script (version 2.0):

If its your first time installing the script:

  1. Unzip the included zip file
  2. Copy the files to a subdirectory named "Q-script" of your mirc directory
  3. Start mirc
  4. Before reading further remember to click and i mean CLICK the yes button. Dont hit enter... it would do no...
  5. Type in any window: "/load -rs Q-script\install.mrc" and click YES in the following warning window.
  6. The script has now been loaded and you should see a couple of windows opened. If you did click yes that is. If you didnt CLICK YES restart mirc.
  7. Setting window is automatically opened. Otherwise the options window is accessable by right clicking in a channel or throught the mirc menu's. Its in the submenu called "Q-script" then "Filter Settings"
  8. Have a look @ your settings and read this document for more information on them. Clicking help in the settings window should open this document also.

If you have used previous versions:

  1. Unzip the included zip in an empty directory
  2. Copy the files you want to keep from your old Q-script to this new directory (only the Q-script.ini, Kick.txt, Rules\Q-srcipt._* files you can keep, the rest are filtes related to the new version). Dont replace any files in the "script" subdir.
  3. If you want to keep your old rules: Copy all the keepers (*._* are the rule files located in your old q-script rules dir. v1.1 and v1.2 have them in the Q-script dir) to the Rules subdir of your new version. If you dont you only want to keep ur old .ini file :)
  4. Replace the old Q-script directory with the new one.
  5. Note that version 1.4+ include wildcards. If you had imported your old rules from earlyer versions you must open the settings window to update them untill then your old rules will not work! If you had some old rules with the chars * or ? in them replace them. They are now parsed as wildcards!
  6. Version 2.0+ has a new rule syntax. Old rules will be automatically updated when you open the settings window.
  7. Follow steps 3 to 8 of first time installer.

The Q-script main settings window: For non-ops only "Private filters, Friends List, Ignore List, Alert Filter, General settings, Private Defaults, Your nick settings and Other Defaults" are of interrest.

3. Filters (index)

3.1 Intro

This section controls the keywords (Rules) used by the filter. You can add single or multiple words to it. To do so, simply type the word(s) in the text box and hit add. The rule is added and is active right away. Every line in the listbox is a single rule for the selected filter.

A rule with multiple words (seperated by a space) form a logical AND fucnction, in other words, Q-script takes action whenever Word1 AND Word2 (ect...) are found in 1 line of text written to you/channel. Note that the line also includes that persons nickname, so if for example ]Q[ says "Hello world" the rules are matched on "]Q[ Hello world". Also keep in mind that you must supply full wild cards! Lets say u have a rule "Hello world" and ]Q[ says "Hello world", the filter will NOT match it. The same goes for the rule "Hello*world", why u wonder? You forget the persons nick is also in the line.... So wich rules would match this? -> "]Q[*hello*world","]Q[?hello?world", "*hello*world", "*hello*world*", "*hello* *world*" and "]Q[*". The same stuff also applies on the exempts. Read exempts for more info on how to set the those.

The "up" "down" buttons are there for a reason. The higher a rule is in the list the earlyer it is checked for a match. The filters are also checked in sequence: With the private filters whenever a msg is sent to you it will do Magic Inviter test (if enabled) then your Private rules. On joins it first checks for Magic Inviter patterns then lame #nick filter then the #autovoice filter then #whoisname and last a #LameChan scan is run. On channel text it is done in this sequence: Repeat flood (and repeat spam), TextFlood, #Spam, #curse, #voice and then #custom reply. #QuitPart, whenever a person quits or parts.

Remember this: Q-Script is only as good as your rule set! I recommend that you add at least 2 word rules. This because Q-script screens ALL incomming messages usening YOUR rules. You don't want Q-script to ignore/ban/voice somebody on a normal chat session :)

3.1.1 Wildcard tutorial

Okay, Q-script is nice, but how do you make full use of the rules? Here you can find a few examples of wildcards and filter rules.

Q: What are wildcards? A: There are 2 wildcard available in Q-script The first one is the "*" wildcard and the second one is the "?" wildcard. The "*" is the most powerfull of the two. When doing a search in a line of text this one replaces ANY characters in sequense by "they are in the search conditions" making entire strings wild. This means a seach with "*word*" would result in a match if the word "word" is anywhere in the line. A search on "*w*o*r*d*" would match if a "w" is in the text folowed by a "o" followed by a "r" followed by a "d" anywhere in the text. This means that not only "word" is matched in the line, but also matches on lines like: "We are On Route to learning wilDcards". The "?" is much the same as "*", the difference beeing that it doesnt make an entire string wild, but only a single character. So a search on "*w?rd*" would match if "word" is in the the line or "ward" is in the line and "wrd" ect. but not if the line only has words like "woord", "woard". Those can be matched with "*w??rd*" and "*w*rd*"

Let us consider a single line somebody wrote:
"12:00pm <SomeBody> You are welcome join to the w*rld of wonder wh*re bird sing and people fly after they smoke a big fat joint <===#-'''' "

Some stuff about this line:

Examples of matching Q-script rules:

Examples of none matching Q-script rules:

Examples of incorrect/unintended matching Q-script rules:

3.1.2 Exempts on rules (exclude)

To be able to make better rules without banning innocent people I've included exempts in the stript. Most filters have this option present. Here is how you add exempts to a rule:

Lets say you have 3 existing rules:
1: *join* *#*
2: *join* *#* - - -Bye
3: *join* *#* - -0- Bye

Now you would like to add a few exempts to these rules. For instance perm banning/ignoring someone for pasting the text "Somebody has joined #YourChannel" is a bit harsh. Obviously this is an incorrect ban/ignore. To avoid this you can change rule 3 to " *join* *#* - *joined*#YourChannel* - 0 - Bye ". There is also some lame script out there that prints the text "/me rolls a big fat joint <====#" in the channel. If you dont want to ban this guy too, then you can make another modification to your rule number 3: " *join* *#* -*joined*#channel*@*rolls*joint*#*- 0 - Bye". Note that exempts seperated by the @ form the logical OR function. You can have as many of those exempt in a rule as you wish, as long as they have wildcards. It also means you cannot use the "@" in the [exclude] as a search parameter!. The script will interpret it as an exempt and most likly render the ruse useless or have incorrect output. Script is getting complicated *grin*.

3.2 Filters

Private:
Match: <Rule1> [Rule2...]
Exclude: [excl1][@excl2@excl3@...]
Modes: [tmnkw#CAIR-A-C-I-R-m-t-n]
Rpl.Text: [Reply text]
info:
Options:
t -> sends a ctcp msg to the nick
m -> sends a query msg to the nick
n -> sends a notice msg to the nick
-m -> overides m. No msg is sent
-n -> overides n. No msg is sent
-t -> overides t. No msg is sent
k -> msg needs to have colors to triggered
w# -> rule only triggers when msg sent is # or less words (nick included, if only w is used it will interprit as w2)
A and C-> forces the autoclose close window option
I# -> forces the ignore option for # seconds. If you specify an I without a number it asumes its 0 (perm) and ads it to the ignore list of Q-script. Otherwise the person is ignored for # of seconds and is NOT added to the ignore list of Q-script. Tip: if you find the ignore option in the main settings a bit harch (perm ignore) then you can add "I300", for example, to the <PrvMsgMode> default option or your rule. Remember "-I" always overides the this.
R -> forces the reply option
-A and -C -> forces NO autoclose. Overides the A and C option
-I -> forces NO ignore. Overides the I option
-R -> forces NO reply. Overides the R option
Info:
All messages sent to you in a private chat pass trough this filter if a match is found actions are taken. The actions are supplied by the rules themself and/or the settings in the options dialog. ALL OPS (@) FROM ALL CHANNELS YOU ARE ON overrule this filter! In this case no action is taken. In all the other cases you can set what is done in the general settings. Always include the "-" at the beginning of every overiding letter. Read exempts for more info on how to set the excludes.
Tip: In case of a wise-ass spammer you should add a single word rule. Examples: "*#Lamechannel*" or "*#* - -w-" or "*#* - -K-"
Example: "*spam* - -w3mRAI-Bye bye"
Result: When a 2 (3 with nick) or less word msg (w3) is sent to you that includes the word "spam" the window is closed (A) a reply (R) "Bye bye" (text) is msged (m) and the dewd is ignored (I) on his nick AND ip.


Friends List:
Nick or Mask: <Rule1>
Info:
This is your friends list. If the person msging you is on this list, his msg will not go trough the private filter and the filters that can ban. In other words: He can say anything! If a ".", "!", "*" or a "@" is present in Rule1 then the script assumes it is a mask otherwise it assumes it is a nick and requires an excact match.
Lets say somebody triggers an event. His mask is: "somebody!ident@111.222.333.444" and u have 3 rules "somebo", "*body!*" and "*111.222.333.444" in this filter. In the first case the rule fails. This because somebody does not equal somebo :) Second case passes: *body!* is in the mask and the third case also passes. its his ip...
Example1: ]Q[
Result: ]Q[ can say anything without getting banned or ignored :)
Example2: *delft.nl
Result: ]Q[ can say anything without getting banned or ignored :)
Example3: ]Q[*
Result: ]Q[-x can say anything without getting banned or ignored :)

Ignore List:
This is actually not a filter, but it keeps track of who the script
has ignored. So in case of a mockup you can easely remove that
person from the ignorelist. Keep in mind that the script auto ignores
the nick and the ip if the ignore option is enabled.

AlertFilter
Match: <Rule1> [Rule2...]
Exclude: [excl1][@excl2@excl3@...]
Limit: [io]
WavFile: [Wave file to play]
info:
Logs to script window when triggered. Use your nick or variations on it. The file can only be a wav file atm and it must be in the default wav dir of mirc (usually "mirc\sounds\" or "mirc\wavs\"). Otherwise you must specify a directory relative to that ("..\q-script\play.wav") The limitations options are restrictions on the triggering, setting to i then the channel must be in the "#include Channels", setting it to o then you must be op on the channel. And btw, this filter does not include the persons nick :)
Excample: "*]Q[*Rules!* --- YesHeDoes.wav"
Result: When a sentance containing ]Q[ and Rules is typed in ANY channel you are on the file YesHeDoes.wav is played and an alert is logged in Q-script window.

#Filters:
The "#" stands for channel :). These filters only work if you are op in that channel where the event occurred AND! the channel is included in the "#Include channels" list AND! this list is enabled.

#Include channels:
Channel to include: <#channel>
Info:
Controls all "#" filters. If the channel is in this list the filter gets a green light, otherwise all "#" filters are skipped. Disabeling this filter results in disabeling all "#" filters! If you read this dont ask me about it... It is the number 1 FAQ

#Nick filters:
Match: <Rule1> [Rule2...]
Exclude: [excl1][@excl2@excl3@...]
B.Time: [x|+k]
K.Text: [Kick text]
info:
Checks a nick/mask when somebody joins the channel. Can be used to filter out offencive nicks/shitlist ect. If a "!", "@" or "." is present in the rule the assumes it must check on the fullmask (nick!ident@host.domain) , otherwise it only comperes the rule on the nick (nick).
Example1: *Go*Here - -0-Cya
Result1: When *Go*Here joins he is perm banned with kick text "Cya"
Example2: *111.222.333- -0-Shitlisted
Result2: when a person with that ip/mask joins he is perm banned with kick text "Shitlisted"
Default: 3600 Suspected Spammer

#Auto voice:
Nick or Mask
: <Rule1>
Info:
Person is voiced when he joins the channel. Uses the same syntax as the Friends Filters. Look there for more info.
Example1: "]Q["
Result1: ]Q[ is voiced :)
Example2: "*delft.nl"
Result2: ]Q[ is voiced and so are the rest of the people on the mask "*delft.nl" :)

#Spam filters:
Match: <Rule1> [Rule2...]
Exclude: [excl1][@excl2@excl3@...]
B.Time: [x|+k]
K.Text: [Kick text]
info:
When a match occurs, person is banned for x seconds. Same stuff applies as the curse filters, only this one ALSO kicks/bans voiced people. Read exempts for more info on how to set them.

#Curse filters:
Match
: <Rule1> [Rule2...]
Exclude: [excl1][@excl2@excl3@...]
B.Time: [x|+k]
K.Text: [Kick text]
info:
When a certain word(s) is/are said a person is banned for x seconds. if x is 0 then it is a perm ban. It does not ban/kick voiced people. Read exempts for more info on how to set them.
Example1: "*]Q[* *sux* - - 0 - Up yours"
Result1: Person is perm banned from the channel with kick text "Up yours"
Example2: "*Up?yours* - - +k -"
Result2: Person is kicked from the channel.

#Voice filters:
Match: <Rule1> [Rule2...]
Exclude: [excl1][@excl2@excl3@...]
Info: A person is voiced when on the channel when he says the right words you can use this for fileserver voiceing.
Example1: "*]Q[?Rules!"
Result: The person that says "]Q[ Rules!" in the channel is voiced :)

#Custom reply
Match: <Rule1> [Rule2...]
Exclude: [excl1][@excl2@excl3@...]
Modes: [ctnmuw#]
R.Text: [Reply text]
Info:
Options:
c -> sends a msg in the chan
t -> sends a ctcp msg to the nick
m -> sends a query msg to the nick
n -> sends a notice msg to the nick
w# -> requiers the line to have # words (not specifying a # it will use 2 words. nick + what he said)
u -> Wont reply to voiced people (only the other users)
When a rule is matched Q-scripts responds by sending a notice to the person causing the trigger. The notice will include the text. You can alo specifying the modes (+ctmn)
Example: "*Hi- -c-Hi yourself"
Result: when Hi is typed in the chan Hi yourself is replied in the chan

#Suspisious Filter:
Match: <Rule1> [Rule2...]
Exclude: [excl1][@excl2@excl3@...]
B.Time: [x|+k]
K.Text: [Kick text]
info:
Used by the Sneak server. If one of these rules is matched then
sneakserv bans :) Read exempts for more info on how to set them.

#Repeat Spam:
Match: <rule>
info:
Used by repeat spam floods. If one of these rules is matched then the repeat flood settings are ovewritten by the ones of repeatspam, making it usefull to set heavyer bans. For performance reasons it will only check for a one string match (remember wildcards... *word1*word2* is seen as 1 string)

#LameChans:
Channels to incude: <#chan>
info:
Scans made on a nick use this filter to see if that nick is on one of these channels. If this filter is enabled and the nick is on one of these channels then the person is banned. Note that this scan requires a whois on the nick. Some scripts have this whois allready defined and cause you to see the whois info. If you dont want that eigther disable this feature or edit these raws in your scripts: "raw 301,307,311,312,317,318,319 and 401". If you dont understand what I mean with that DO NOT ASK ME, but disable this option. Here is what u can do in the raws defenitions:

on raw 319:*:{ echo -a $2- | halt } <- this example of an original defenition echo's the channels in the active window. To disable this (same as the other raws) do this: remove the "ecgo -a $2" part from the definition or put "halt | " rigth after the first bracket (you will lose yourr whois) or change it to this (you will keep your whois capability):

on raw 319:*:{ if ($Q.LCScanInProgress($2)) { halt } | echo -a $2- | halt } <- $Q.LCScanInProgress($2) returns $true if a scan is beeing made. So if a scan is active it will disable any output of the raw (in this case raw 319). Take a good look at the brackets and note the extra " | ".

#WhoisName:
Match: <Rule1> [Rule2...]
Exclude: [excl1][@excl2@excl3@...]
B.Time: [x|+k]
K.Text: [Kick text]
info:
This filter looks at the whois name (not the nick). If a match is found, person is banned. I've noticed that some spam-scripts have a single BOLD control code as theire name, when this is the case script prints out "is a BOLD code" but if you want to add a rule for this you must enter the bold control char. Note that this filter also needs to do a whois on joining nicks. To prevent you from getting the whois printout you can modify your raws the same way as the #LameChans filter.

#QuitPart:
Match: <Rule1> [Rule2...]
Exclude: [excl1][@excl2@excl3@...]
B.Time: [x|AL]
K.Text: [Kick text]
info:
A -> Causes an echo in the channel. No ban made. Usefull to filter out suspisious quit/part msges.
L -> Causes a printout in window @Q-script2 (normally whois). No ban made. Usefull to filter out suspisious quit/part msges.
This filter looks for quit/part msges that match these rules. Since spammers are getting smarter and know they get banned instantly when they paste theire spam in the channel, they put theire spam in the quit msg. Well, now q-script is able to filter that out too. Note that some lame script have theire webpages as quit msg. That is spam too, but its kinda harsh to ban people that use them scripts.

#Sneaks:
Servnick: (the op) Servers nick for /ctcp type forward or IP of the server for direct connection type forwards
Pass: password for that server
Port: If you have an ip as servers or the nick is the server with a dynamic ip, specify the servers port here. When a port is specified, it will try a direct connection.
Channels: The channels to ban on (and the channels the server must have op for /ctcp type forwards)
Info:
If its on the server:
When the server recievs a forwarded msg from a client it checks to see if the password matches one from tis list. If none is found an incorrect pass is logged and nothing happens, else: the first match that is found is used for handeling the rest, namely: checking for matching #Suspicious rules and banning from the channels listed in the channels box. This means that you can configure access rights for different channels PER PASSWORD. So if you have 2 lines in this list: "server1 pass1 #chan1 #chan2" and "server1 pass2 #chan1" then if a pass "pass1" is recieved someone can be banned from chan1 and chan2. If a pass "pass2" is recieved he is only banned from chan1. Note that setting the channels to "All" will cause the script to use "#include channels". Allthough the "servernick" is not used it must be present in the line, so put your nick in its place or something.
If it on the client:
When recieving a msg it proceeds to forward that msg to all servers in this list using that servers pass. Note that for security reasons the server MUST be op on one of the channels when using /ctcp type forwards. This means that you must also specify the channels and the client must also be on one of those channels to be able to check the op status of the server. This is not the case for the direct connection, in that case it will try to login and if successfull it will stay logged in and forward any incomming msges. Also note that the client will not cycle (rejoin) the channels listed in this list.

#SneakNicks:
Random Nick: the nick that can be used
info:
Right before the sneak client rejoins it will change its nick randomly using this list (if enabled)

4. Options (index)

4.1 Generral Settings

Enable Q-script: Doh! Disableing this will bring the script to a halt.
Log to window: When a Q-script event occurs the event is added to the Q-script window. It is recommended to enable this, in case u ignore an innocent person or something.

4.2 Private defaults

Common Channel: If enables only people on the same channel you are on can message you. If they are not Q-script blocks it.
Add spammer to Ignore: If enabled Q-script automatically adds people to your ignore list. People added can be seen in the Ignore list of Q-script. When someone is added he is NOT ignored from a channel, but from all other all other means of communication. His nick and ip are ignored. In case you are an op in a channel keep in mind that you must not ignore people that message you. Recommend to set ignore off and log on.
Auto close window: When enabled window is closed automatically.
Enable OnBan Commands: When enabled the script will allow bans made on a channel to control your open windows/ignores. You can set what happens under the button "Other Defaults" the vars OnBanIgnore, OnBanIgnoreTime, OnBanClose and OnBanRestrict. I must warn you that using this in channels with bad ops can have undesired effects but on the other hand channels with good ops can make ALL the spam go away (for excample: In STC more that 95% of spammers will get banned right away. So even if your private filter does not get a match the ops usually get them). I recommend ops themself to leave this option off.
Reply Message:When Q-script triggers the message in the textbox next to it is sent to that person. It is the default msg.
Block Magic: The private filters will be triggered if someone msges you has Magic Inviter (and other) patters in his mask
During a conversation: When you are talking to someone your rules can be disabled for a bit. You can set what happens in the drop down box next to it. Note that a conversation starts when you! type something and ends <PrivateDTime> seconds after the last msg you wrote to that person.

4.3 Your nick settings

Keep Nick: In case u turn into a "Guest" nick ur nick is changed back to the specified nick Checks every 30 seconds. The commands /qn and /qop use these settings also
Keep Ops: Does a check every 2 minutes. If your not op on a channel in the "#include channels" list your nick is changed to the specified one and ops you.

4.4 Ops settings

Enable Sneaky Server: When active it allows a cetrain command to be triggered when it recieves a msg from another q-script client running in sneak mode.
How it works: When you put a clone (it must be a seperate copy of mirc otherwise same ini file is used...) in the channel and enable "sneak mode" on it, all that clone does is forward all incomming msges to the server (specified in #Sneaks list) and closes the window. The server recieves these msges and checks the password. If ok, the server then checks the msg forwarded from the client using the #suspisious filter rules. If a match is found: that person is banned from all the channels belonging to the password it got. This method works great to catch spammers in the act. They usually dont msg ops, and this way you can still catch them :)
SneakMode: A mirc session running in sneakmode will forward msges to the servers (defined in #Sneaks). Enabeling "Rejoin" will make the scrip rejoin the channels every x seconds specified by de text box afther this checkbox.
Listen to port: New in version 2.0 is that msges can be sent directly to other Q-script running computers without going over the lagging irc network. Enabeling this will cause the script to listen for connections on port <SneakSrvPort>. See "Other defaults" and "Sneaks" for more info on this.

VoiceFilter req color/controll codes: People are only voiced when a matching rule is found AND the text has colors and other control codes like bold underline ect. This option is here to prevent people from copy pasting text and getting voiced.
Warn Guest nicks: If active the text in the box next to it will be sent to the person using a guest nick when he/she types something. It is sent by a notice. Only works if you have ops. When you set the first word in the msg to "+u" only none voiced/opped people are msged. Also possible is to set the first word to "+um#". This will warn the guest # -1 times and will ban the nick on the #th time. Expl: "+um3 Change ur nick!" will ban on the third warning

ExtraBanCommands:
If this setting is enabled Q-script will call an alias everytime it does an automated ban. The alias is called: QScriptUserDefineExtraBanCommands
If you enable this feature you must have an allias called like this present and active. If you dont know anything about making aliases dont enable it. It is usefull in case you need to do extra commands like banning on bots or a-kick. The syntax used to call this alias is:
QScriptUserDefineExtraBanCommands Channel Nick FullMask Time Reason
--Where Channel is the channel where q-script was triggered ($1)
-- Nick is the nick that triggered it ($2)
-- FullMask is the nick's full mask (Nick!ident@host.domain) ($3)
-- Time is the time in seconds the ban lasts ($4)
-- Reason is the text that is used for the kick ($5-)
Here is an example of such an alias (copy and paste it to your alias definition to see how it works):

QScriptUserDefineExtraBanCommands {
if ($4 == +k) { .echo -a $2 with full mask $3 got kicked on $1 for $4 seconds with the kick text "$5-" }
else { .echo -a $2 with full mask $3 got banned on $1 for $4 seconds with the kick text "$5-" }
if ($chat(MyEggdropBot) != $null && $4 > 2000) { .msg =MyEggdropBot .+ban $mask($2,2) $1 $chr(37) $+ $4 $+ m $5- }
}

ExtraUnBanCommands:
Basically the same as ExtraBanCommands, but this alias is called when you do a manual unban in the Q-script log window. The alias is called: "QScriptUserDefineExtraUnBanCommands" where $1 is the Channel and $2 is the FullMask. When enabled this alias must be defined somewhere in your own aliases.

OnFullBanList: If enabled: When a channel banlist is full, Q-script will attempt to remove your oldest ban on that channel and try to ban that person again. Because the script tries to get the channel banlist some scripts might display that list on your screen. If u dont want that eighter disable this function or edit "raw 367" and "raw 368" in your scripts raw definitions: Adding "if ($Q.BanListFullInProgress($2)) { halt }" to those raw defenitions will stop the output (see example of #lamechan for more info). Note that it only try's to unban YOUR oldest ban using your current nick.
Ban Magic Inviters: If enabled people that join the channels are scanned for magic inviter (and other) patterns. When found they are banned.

4.5 Floods & Attacks

Floods: All checks r done on ip not on the nick. Actions can be eigther a number or +k. If the action is a number person is banned for that ammount of seconds +k just gets him/her a kick.
JoinFloods, user is banned on the <max> join within <time> seconds
TextFloods, user is banned on the <max> line written within <time>
RepeatFloods, user is banned on the <max> repeat within <time>
RepeatSpam, this one is an extention of repeat floods. It will only work if repeat floods is also enabled. The difference is that it will first scan the line for words in the "#RepeatSpam filter". If a match is found it takes the settings of this filter above the ones from "RepeatFloods" meaning you can can make a heavyer ban when triggered.

Netsplits, Join filters (#Nickfilters, #Autovoicing, #Lamechans, #Whoisname and Magic Inviter) are disabled for <action> seconds when <max> users join within <time> seconds
TextAttack, channel filters are disabled for <action> seconds when <max> lines are written in the channel within <time> seconds.
NickAttack, channel filters are disabled for <action> seconds when <max> nickchanges occur in the channel within <time> seconds.
StopAttack+Rim, when one of the attacks is triggered Q-script will attempt to stop the attack by setting channel modes to +Rim (depends on how you set them). The edit boxes next to it are the times (in seconds) those modes will stay active (0 is permanent, no remove). Setting them to a negative value will disable that mode change. In case you didnt know; R is a dalnet specific mode and if its set only registered nicks can enter the channel (i is invite only and m is moderated).

To continue: Q-script will ignore *!*@* untill the modes are set. This will cause mirc to get out of its frozen state. It will also set a var named "%Q.Attack.Triggered" to the channel the attack is on. You can use this var to further disable any other printouts of mirc to increase performance. And yes, you do need to know scripting for that too. Example set your join and quit defenitions to: "on ^*:join:*:*:{ if (%Q.Attack.Triggered) { halt } | other code }". When the modes are set, *!*@* will be unignored and the var "%Q.Attack.Triggered" will be unset. If all goes well, opz will now be able to respond to the attack.

Note that this will basically lock the channel completely, sort of banning *!*@*. To prevent this from happening on buzzy channels you must set the attack triggers to your computers capabilities, for instance: 50 lines in 5 seconds is a flood or 80 lines in 10 seconds is a flood.

4.6 Other Defaults

PrvMsgMode: The normal reply mode for private msg blocking. Default +mt. You can also add any of the "private filter" options here.
PrvAutoRemove
: When the private filter is triggered it searches the text that triggered it for the word "remove". If this var is set to 1 it auto reply's with remove.
PrivateRTime: The ammount of time in seconds you have to respond to someone before a triggered private rule is executed.
PrivateDTime: The ammount of time in seconds a conversation lasts or/and the time the private filters will be disabled.
NoticeFilterBlock: When you do !seen or !list in the channel the notices are not checked for this amount of time
SneakBanTime: Sneak serv default ban time in seconds
SneakBanMsg: Sneak serv default kick msg. Set to -rk- for random kick msges
SneakRetryMax: If sneakserv is not on the channel or isnt op, sneak client tries to resend the msg Max times
SneakRetryDelay: The delay between resends
SneakRejoinDelay: If rejoin is enabled Sneak-client will leave the chan and try to rejoin at a random time interval of these settings
CurseBanTime: Channel cursefilter default ban time in seconds
CurseBanMsg: Channel cursefilter default kick msg. Set to -rk- for random kick msges
JoinBanTime: Channel nickfilter default ban time in seconds
JoinBanMsg: Channel nickfilter default kick msg. Set to -rk- for random kick msges
LCBanTime: Channel LameChan filter default ban time in seconds
LCBanMsg: Channel LameChan filter default kick msg. Set to -rk- for random kick msges
LCScanRand: The interval used to random scan for lamechannels when people join
OnBanIgnore: If this is set to 1 the bans made on a channel will get added to your ignore
OnBanIgnoreTime: The ammount of seconds the ignore will last. Eigther this value is taken or when the ban is removed. 0 for time does not perm ignore...
OnBanClose: If set to 1 all query windows with the banned mask are closed
OnBanRestrict: If set to 1 only the bans in "#Include Channels" filter will be used. Enable this if you are also on channels with louzy opz.
OnBanFullip: If set to 1 script requires ban to be on a full ip. In other words: If 1 -> *!*@123.123.123.123 is a go, *!*@123.123.123.* is a no go. If 0 both are a go

RFloodMsg: Kick text when people repeat flood. -rk- is random text
TFloodMsg: Kick text when people text flood. -rk- is random text
JFloodMsg: Kick text when people join flood. -rk- is random text
ChanAttackMsg: When an attack is succesfully stopped this msg is sent to the channel.
GuestKickMsg: The kick text when a guest is banned after x warnings.
KeepNickTime: The time between checks if you have a guest nick. You need to reconnect to make the changes take effect
KeepOpTime: The time between checks if you are an op on the channels. You need to reconnect to make the changes take effect
WNameBanTime: The time in seconds an ip is banned when a match is found in the Whois Name filter
WNameBanMsg: The kick msg when a match is found in the Whois Name filter. Set to -rk- for random kick msges
MagicBanTime: Magic inviter default ban time in seconds
MagicBanMsg: Magic inviter default kick msg. Set to -rk- for random kick msges
SpmBanTime: Channel spamfilter default ban time in seconds
SpmBanMsg: Channel spamfilter default kick msg. Set to -rk- for random kick msges
MaxBanLength: The maximum amount of time bans are kept in the channel banlist. All bans still will be done as normaly expected, unless the bantime exceeds this setting. In that case the ban is made for this long and extrabancommands will still be called with the original bantime. Also the kick text will display "Banned" instead of "Bannedxxxxs"
RSpamMsg: Kick text when people repeat spam flood. -rk- is random text
MenuBanMsg: The kick msg when you ban/kick someone using the menu in nicklist. Set to -rk- for random kick texts.
OnFullBanLMsg: The kick text that is ADDED to a kick msg when the script encounters a full banlist
CustomBanTime: When opening the dialog for a custom ban this is the default bantime.
VoiceRand: To prevent +v mode floods by multiple ops people are voiced @ a random time defined by the interval given here. And yes, if ur not the one that voiced the person the stat still counts :)
WbanMsg: The kick msg when you ban/kick someone using the menu in the Q-script window. Set to -rk- for random kick texts.
CustReplyMode: Channel custom reply mode settings. Default +n
SneakSrvPort : The port on which the sneak server listens on.

LogToFile: Logs all events to a file if set to 1
LogFileMaxSize: The max size in bytes for an individual log file.
LogScansToW: If enabled all LameChan scans are printed in the @Q-script2 window
LogFullScansToW: If enabled all LameChan scans are printed in the @Q-script2 window including names servers ect. Basically all whois info
VoiceLogW: Some people ony like to see bans in theire log window... Those people should set this to 0. If 1 voicings are also logged.
ColorKickText: If set to 1 all kicks will have colors in them. If for some reason you dont want colors in your kick texts set it to 0.

5. Input commands (index)

/Qh -------------------------->> this info

/Qtb <time> <nick> [reason] ->> Bans the nick/mask for the speciefied time in secs
/Qba <nick> ----------------->> Bans the nicks ip in all chans
/Qb <nick> [reason] -------->> Bans the nicks ip in active channel
/Qb1 <type> <nick> [reason]->> Bans the nicks ip in active channel. type is a number
/Qm <options> -------------->> Does /mode ActiveChannel Options
/Qop ----------------------->> Ops u in the active channel
/Qn ------------------------>> Changes ur nick to the main one and identifies
/Qg ------------------------>> does the ghost command on the main nick
/Qt ------------------------->> The active channels topic
/Qk <nick> ----------------->> Kicks the nick in active channel
/Qns <options> ------------->> Does /msg NickServ@services.dal.net Options
/Qcs <options> ------------->> Does /msg ChanServ@services.dal.net Options
/Qcsa <options> ------------>> Does /msg ChanServ@services.dal.net Options1 ActiveChan Qption2-
/Qms <options> ------------->> Does /msg MemoServ@services.dal.net Options
/Qclone -------------------->> Does a clonescan in the active channel
/Qi2n <ip/host> ------------>> Finds the nick if any belonging to the ip/mask
/QuIAL --------------------->> Gets all the masks from people in the chan in your IAL
/Updaterules ---------------->> Updates all the rule files to work with current version
/ChanScanLC --------------->> Scans the entire active channel for people on your lame channels list. WARNIG: You can get flooded off irc for doing too many whoises on large channels.

6. Tips & Tricks (index)

7. Faq (index)

Why are my filters not banning?

Why do some/all chat windows autoclose?

Why does the script log a block but doesnt close any spam window?

Why are some rules not matched?

I am op and my script slows down the computer. What can i do?

I'm op and get a lot of output from Q-script like: whois info, channel bans and no such nick/chan. Why? And what can i do about it?

How do I setup the Sneak server/client?

Why do i get outputs like no such command/alias?

How can i stop some incorrect bans?

What file do what?

What do those "[x]" msges in the kick text mean?

Where can I get the latest version?

8. Version info (index)

Current Version: 2.0

Changes since v1.2

Changes since v1.3

Changes since v1.4

Changes since v1.5

Working on

Known bugs

9. Links and contact (index)

For the latest version of this help file and Q-script go to Q-script-home or type !Q-script in #Startrek-central on dalnet.

For suggestions and bug reports (look if the bug is not allready on the webpage) mail ]Q[ or contact ]Q[ on dalnet (#startrek-central). Plz dont leave a msg like: "Are u there?", "Alive?", "Can you help me?", "Hello" ect. I generally dont respond to those msges unless you actually ask/say something meaningfull :D.

Q-script is a copywrite of ]Q[. Do not modify or redistribute this script without the authorisation of the author.