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 has grown from approximatly 30 users to an averige of about 400+ users and with peaks of over 500 (highest untill now 821) 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 relatifly 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 3.0):
If its your first time installing the script:
If you have used previous versions:
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.
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 :)
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:
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*.
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 query msg is sent
-n -> overides n. No notice msg is sent
-t -> overides t. No ctcp 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 through 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 through 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.
File Server
Match: <Trigger>
Channels: Channels list
Modes: [ P R O S A L ] ( " pro sal " )
File: <filename>
Note: An optional note added to the advert.
Info:
This is the TDCC file server of Q-script. It is very flexible and I can imagine
that its not to easy to setup, but once you know how to do it, you can think
of a lot of rules and ways to transfer files. I attempt to explain (bare with
me).
Trigger: the excact text that needs to be matched. No wildcards.
Channels: A list of channels (seperated by spaces) the trigger should work in.
If you want the trigger to work in all channels add "##" to the list
(no quotes).
File: The full path of the file you want to send.
Queue priorities: When a send slot is available, the queue manager will check
if a priority queue is available then a resume queue and last a send queue is
available.
Modes:
P -> Priority. Will enable priority queueing for this trigger. A priority
queue requiers the person the be opped or voiced in the channel. If the person
is not opped or voiced he/she is placed in the send (lowest priority) queue.
And when he/shi is not opped or voiced when the send starts the queue is deleted!
R# -> Resume with minimum of # procent. Will enable resume queueing (# is
a number between 1 and 99). When a resume queue is a vailable, it will be added
to the queue. When the send starts a timer is started to check if the person
downloading has at least # precent of the file. If he doesnt the send is stopped.
O -> Override. This wil allways send the file no queueing no send limit...
I suggest to use this only for small files...
S -> Status. Will display a status line when an advert is activated.
A or A# -> Advertise. This will cause the trigger to be advertised in the
channels listed in the channels box (## is NOT a channel). When you use "A"
then the default settings are used (located under the other fileserver button
or queue manager) for the timer delays. When you use A# (# is a number) the
advert will be displayed every # seconds.
L -> List. Indicates if the trigger responds to the !list trigger.
Additional:
Combining the modes R, O and P in the same rule will result in incorrect behaviour.
The queue manager also contains the general settings of the file server.
<MinCps.MinFileSize>: only sends of files larger than these bytes are
checked for mincps
<AdvertColors>: The colors used in the advertisement. These are mirc colorcodes.
-1 is no color.
Allow X extra sends when total cps is less then Y: This little features makes
your send count dynamic. The servers max sends is increased by 1 (up to X) when
the total cps is less then Y. Very handy to satisfy both fast downloaders and
slow downloaders. Imagine you have a 10mbit line and 5 send slots used by 5
56k users, these people will crowd your server for days :P with the nesecary
complaints from "faster" people. So now you can do 2 things: increase
mincps (unhappy modemenrs) or allow some extra sends (everybody happy except
your provider :)).
<TotalMaxCps>: No more sends allowed when you have more then this ammount
of cps upstream. Its virtual because no cps limit is placed but the sends are
limited.
The rest of the settings are clear (unless....).
Trigger count: CPU limited (a lot...).
Multiple Non Unique triggers supported.
Examples:
!example1-#channel1-laps-c:\test.txt-This is an example. This trigger will
look for the text "!example1" in channel #channel. When triggered
it will check is the person is opped or voiced. If he is opped/voiced (r) he
gets a priority queue, otherwise a normal send queue is assigned. This trigger
is advertised every general seconds, responds to the !list trigger and displays
a server statusline (s).
!example2-#channel1 ##-oa60s-c:\test.txt-This is an example. This trigger
will look for the text "!example2" in ALL channels (##). When triggered
it will ALLWAYS send the file (o)!. This trigger is advertised every 60 seconds
(a60) in channel #channel1 (no other channels), doesnt responds to the !list
trigger and displays a server statusline (s).
!example3-#channel1 #channel2 #channel3-la60r90-c:\test.txt-This is an example.
This trigger will look for the text "!example3" in #channel1-3. When
triggered it will put the file in the resume queue. This trigger is advertised
every 60 seconds (a60) in channel #channel1-3, it does responds to the !list
trigger and doesnt display a server statusline. When the send starts it will
check if the send resumes with more then 90% of the file. If it doesnt: the
send is stopped.
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.
DisplayAds
Channels: <channel1> [channel2...]
Modes: [Lod#]
AdText: <text>
Options:
L -> will send the advert as a notice when !List is typed in the channel.
O -> Displays the advert only if your op in the channel.
d# -> The delay between the ads. # is in seconds.
info:
Displays an advertisement in the channels. If no delay is set, 1800 seconds
(half an hour) is taken as the delay.
Excample: "#chan1 #chan2-oLd30-- this is my advert"
Result: "this is my advert" will be displayed on chan1 and
chan2 if you are op on the channels. The advert will be displayed every 30 seconds
and responds to the !List trigger.
#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 AND AND AND AND "#Include
channels" is enabled. Hope I was clear on that =)
#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>
Channels: Channels list
Info:
Person is voiced when he joins the channel in the list or when blank, all channels
in #includechannels. Nick/mask 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 Spy server. If one of these rules is matched then
Spyserv 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|@#chan|+#chan|#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. Newer versions of Excursion (9.0+) have this fixed. 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. New in 2.2.5 is that you can ban ops and/or voiced
people on that chan only (how mean) if you want. To do this put an "@"
or "+" in front of the #. If you want to ban both oped and voiced
then use the "?" wildcard in front of the pound (#), otherwhise you
want to ban te entire channel :) Also you can now use wildcards in the channel
rules, as long as a # is present.
Here is what you can do in the raws defenitions ( the first one is an EXAMPLE of the original definition and the second is the modified version):
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.
#Spys:
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.
Install Procedure Spy Server:
Install Procedure Spy (mirc):
Install Procedure Spy (IrQc.exe):
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.
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.
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.
Enable Spy Server: When active it allows a cetrain command to be triggered
when it recieves a msg from another q-script client running in Spy 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 "Spy mode"
on it, all that clone does is forward all incomming msges to the server (specified
in #Spys 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 :)
SpyMode: A mirc session running in Spymode will forward msges to the
servers (defined in #Spys). Enabeling "Rejoin" will make the script
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 <SpySrvPort>.
See "Other defaults" and "#Spys" 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 if the user isn't voiced.
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.
MaxChannels: The maximum amount of channels a person may be on. this
fuction requires a whois so be warned. Read #lamechannels for more info.
Ban Magic Inviters: If enabled people that join the channels are scanned
for magic inviter (and other) patterns. When found they are banned. New in 2.2.5
is that channels the dude is on can be filtered. To use this option you must
enable this filter AND #Lamechannels (it requires a whois on a joiner). Maybe
you have noticed a pattern in certain nicks/idends/channels. These are Spam
Trojans. They sometimes do change, and if your a bit a scripter you can modify
them yourself. To do this you must update the alias "alias Q.Magic {"
(do a search for that in remote) for nicks and idents and/or Raw 319 in QS-Raws.ini
(search for "QS_UPDATE_MAGIC_CHANNELS") and read that bit. If your
not a scripter DO NOT ASK ME but leave it be. If you are, msg me for new patters.
Ban //write, //timer and $decode notices: When enabled (#IncludeChannels
must also be enabled) this filter will scan notices you receive for occurances
of *//*write* or *$Decode* or *//*timer*. When found the user is banned from
all channels in your channels list. Note: this will only work if you get a notice,
so if these notices respond to !list triggers you will have to type !list in
the chan (otherwise this script can cause unintentional flooding). Tip: for
adverts of these types of malisious msges in the channel you can use the #spam
filters.
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). I repeat: This is only triggered
when TextAttack or NickAttack is triggered! It does not ban anybody but
only locks the channel so ops can respond apropriatly.
What stopattack does: 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 removed from ignore 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. I recommend you to use an eggdrop for anti floods because mirc is not really suited for heavy traffic.
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
SpyBanTime: Spy serv default ban time in seconds
SpyBanMsg: Spy serv default kick msg. Set to -rk- for random kick
msges
SpyRetryMax: If Spyserv is not on the channel or isnt op, Spy client
tries to resend the msg Max times
SpyRetryDelay: The delay between resends
SpyRejoinDelay: If rejoin is enabled Spy-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
SpySrvPort : The port on which the Spy server listens on.
RJoinerMaxtries: the number of times it tries to join a channel when
you encounter a +R channel and your nick is not identified. It tries every 5
seconds to see if your nick has been identified allready so you can join.
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.
VirusBanTime: //timer write decode ban time in seconds
VirusBanMsg: //timer write decode kick msg. Set to -rk- for random kick
msges
BanGhosts: Setting this to 1 (default) will make Q-script ban masks in
the channel even if the owner of the mask is not on the channel. Setting it
to any other value requires that its owner (the banned nick) MUST BE on the
channel! When you have this disabled, keep in mind that a lot of funcions won't
always react as expected simply because of this requirement. Q-script will happely
continue to log everything as if nothing happened, but just won't set the ban
when the requirement is not met. Note: The ExtraBanCommand is still called (if
enabled)!
Hmm probably missed a few, but those are pritty clear I hope =)
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.
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 Spy server/client?
Why do i get outputs like no such command/alias?
How can i stop some incorrect bans?
What do those "[x]" msges in the kick text mean?
Where can I get the latest version?
Current Version: 3.0
Changes since v1.2
Changes since v1.3
Changes since v1.4
Changes since v1.5
Changes since v2.0
Changes since v2.2.6
Working on
Known bugs
For the latest version of this help file and Q-script go to Q-script-home (heh the site is way outdated) or type !Q-script (if I'm online) in #Startrek-central or #Excursion on dalnet. You can also check with the ops of #Excursion for the script. Any other source is bogus!
Many thanks to the fine people of #Excursion for their support, beta-testing, suggestions and help. I'd also like to thank: Quantum_, INFINI_AFK, binar, Mr40 (for his patience =]) ops of my and many other channels and a bunch of others people (msg me if u want to be here) for their contributions.
For suggestions and bug reports mail ]Q[ or contact ]Q[ on dalnet (#startrek-central and or #excursion). 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. The autor can not be held responsible for any possible damages caused by the script.