<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://script.quakenet.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Microbe</id>
	<title>Scriptwiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://script.quakenet.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Microbe"/>
	<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/Special:Contributions/Microbe"/>
	<updated>2026-06-04T02:19:51Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Rawdb&amp;diff=6175</id>
		<title>Rawdb</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Rawdb&amp;diff=6175"/>
		<updated>2016-11-29T12:29:27Z</updated>

		<summary type="html">&lt;p&gt;Microbe: Updated dead links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=User:Microbe&amp;diff=3774</id>
		<title>User:Microbe</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=User:Microbe&amp;diff=3774"/>
		<updated>2010-04-20T09:22:11Z</updated>

		<summary type="html">&lt;p&gt;Microbe: Yearly update, this time the  last :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Babel-4|fi|en-3|sv-2|fr-2|sl-1}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Image:Microbe.jpg]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
  &amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Name&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Lauri Peltonen&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Age&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Born in &#039;83 so you do the math!&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr valign=&amp;quot;top&amp;quot; height=&amp;quot;40&amp;quot;&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Country&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Finland&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Words of wisdom&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Still searching wisdom.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
[[Category:Members]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=User:Microbe&amp;diff=2760</id>
		<title>User:Microbe</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=User:Microbe&amp;diff=2760"/>
		<updated>2009-04-03T13:02:21Z</updated>

		<summary type="html">&lt;p&gt;Microbe: Wrong language tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Babel-4|fi|en-3|sv-2|fr-2|sl-1}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Image:Microbe.jpg]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
  &amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Name&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Lauri Peltonen&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Age&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;26&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr valign=&amp;quot;top&amp;quot; height=&amp;quot;40&amp;quot;&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Country&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Finland&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Words of wisdom&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Still searching wisdom.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
[[Category:Members]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=User:Microbe&amp;diff=2678</id>
		<title>User:Microbe</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=User:Microbe&amp;diff=2678"/>
		<updated>2009-04-03T12:59:33Z</updated>

		<summary type="html">&lt;p&gt;Microbe: Yearly update.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Babel-4|fi|en-3|sv-2|fr-2|si-1}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Image:Microbe.jpg]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
  &amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Name&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Lauri Peltonen&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Age&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;26&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr valign=&amp;quot;top&amp;quot; height=&amp;quot;40&amp;quot;&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Country&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Finland&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Words of wisdom&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Still searching wisdom.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
[[Category:Members]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=How_to_start&amp;diff=2697</id>
		<title>How to start</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=How_to_start&amp;diff=2697"/>
		<updated>2009-01-13T20:02:25Z</updated>

		<summary type="html">&lt;p&gt;Microbe: was missing a newline that messed it all up&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is supposed to give an introduction into scripting in mIRC. It will explain the so-called &#039;&#039;Scripts-Editor&#039;&#039; and its functions, followed by a little example. At the end it will give some hints about how to debug a script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Remote Editor ==&lt;br /&gt;
&lt;br /&gt;
If you want to begin to script in mIRC, you need to open the Script-Editor. You can do it in two ways: pressing &amp;quot;Alt + R&amp;quot; or with mIRC&#039;s menubar (Tools -&amp;gt; Scripts Editor).&lt;br /&gt;
&lt;br /&gt;
If you are using a premade script (for example nnscript), you will probably see a lot of code. Note that it is difficult to implement own scripts in such a premade one, as your code may interfere with the existing code (if you want to change mIRC&#039;s default output for example). &lt;br /&gt;
&lt;br /&gt;
At first, you should open a &#039;&#039;&#039;new remote file&#039;&#039;&#039;. To do it, click on File -&amp;gt; New (see picture below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Newfile.png]]&lt;br /&gt;
&lt;br /&gt;
Note that your script files will be saved &#039;&#039;&#039;automatically&#039;&#039;&#039;; all you need to do is pressing &#039;Ok&#039;.&lt;br /&gt;
&lt;br /&gt;
The next part is about the five different tabs of mIRC&#039;s Scripts Editor:&lt;br /&gt;
&lt;br /&gt;
[[Image:scriptseditortabs.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aliases-Tab === &lt;br /&gt;
&lt;br /&gt;
Basically, you do not need to use aliases.ini (that you can edit using this tab). Usually, if you want to add a new alias, it would look like:&lt;br /&gt;
&lt;br /&gt;
 [[alias]] moo { [[return]] moo }&lt;br /&gt;
&lt;br /&gt;
in your &#039;Remote-Section&#039; of the editor (the one that&#039;s active after pressing Alt + R).&lt;br /&gt;
&lt;br /&gt;
You can add the same alias in your Aliases-Section:&lt;br /&gt;
&lt;br /&gt;
 moo { return moo }&lt;br /&gt;
&lt;br /&gt;
Notice that you don&#039;t need to write &#039;alias&#039; infront of the new alias if it&#039;s in the Aliases section and note that you cannot add events in this section.&lt;br /&gt;
&lt;br /&gt;
=== Popups-Tab ===&lt;br /&gt;
&lt;br /&gt;
Again you do not need to use this section. It&#039;s the same as using the [[Popup_Menus#MENU_prefix|menus]] alias in the remote section. Usually, there will be some menus added in this section (for example your nicklist-menu).&lt;br /&gt;
&lt;br /&gt;
[[Image:Popupsview.png]]&lt;br /&gt;
&lt;br /&gt;
=== Remote-Tab ===&lt;br /&gt;
&lt;br /&gt;
This is the &amp;quot;maintab&amp;quot;. Every script is supposed to be saved in here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; that you should not have two same events in one file, as only the first matching one will be triggered. Two separate examples:&lt;br /&gt;
&lt;br /&gt;
 ; will be triggered&lt;br /&gt;
 on *:Text:*:*: { echo moo }&lt;br /&gt;
 &lt;br /&gt;
 ; will never be triggered&lt;br /&gt;
 on 10:Text:*:*: { echo maa }&lt;br /&gt;
&lt;br /&gt;
 ; will be triggered for level 10&lt;br /&gt;
 on 10:Text:*:*: { echo maa }&lt;br /&gt;
 &lt;br /&gt;
 ; will be triggered for all but level 10&lt;br /&gt;
 on *:Text:*:*: { echo moo }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So if you aren&#039;t sure whether it will work or not, just use another (a new) file (look the image below to see how to make a new file). &lt;br /&gt;
&lt;br /&gt;
The following script will trigger on every &amp;quot;!moo&amp;quot; in every channel and response with &amp;quot;moo00oo00&amp;quot;:&lt;br /&gt;
 &lt;br /&gt;
 [[On_text|on *:TEXT]]:!moo:#: {&lt;br /&gt;
  [[msg]] [[$chan]] moo00oo00&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This would look like:&lt;br /&gt;
&lt;br /&gt;
[[Image:Firstscript.png]]&lt;br /&gt;
&lt;br /&gt;
If you are scripting something more complex, you want to use the &amp;quot;{}&amp;quot;-button in the upper right corner (see below). That button is used to check for bracket mis-matches in the scriptfile.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Bracket-button.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you&#039;ve pressed it and nothing happended, everything is ok (note that it doesn&#039;t mean that your scripts will work, just that there are no obvious bracket mistakes (mIRC just counts the open and closed brackets)). If something&#039;s wrong, you will get the following popup:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bracketerror.png]]&lt;br /&gt;
&lt;br /&gt;
Even if it says that the bracket error is &#039;&#039;around&#039;&#039; line 1, it could be almost anywhere. Start you search from that line and look at the indentations to find out where you&#039;re missing a bracket.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The remote tab contains scripts that are triggered by events, such as [[On text|when someone speaks]] or [[On join|when someone joins a channel]]. For example, the following &#039;remote script&#039; would tell user&#039;s who join a channel hello!&lt;br /&gt;
&lt;br /&gt;
  [[On join|on *:JOIN]]:#: {&lt;br /&gt;
    [[msg]] [[$nick]] Hello. Welcome to [[$chan]] [[DollarPlus|$+]] !!! &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If you would like to learn scripting, you should familiarize yourself with this tab. &lt;br /&gt;
You should also learn [[:Category:Events|event names]] and understand how to run commands, such as the [[msg]] command above which messages a channel or nick name.  You should also learn what [[:Category:Remote Identifiers|identifiers]] are and how to use them.  An example of an identifier in the above script is [[$nick]] and [[$chan]] which tell us the user&#039;s nick name and the channel&#039;s name.&lt;br /&gt;
You may click on any blue hyperlink for more information about a a command or identifier that you see in any of this wiki&#039;s examples.  Please use the examples and test them, to try and understand what they do.  Keep in mind, mIRC is a high level language and almost everything sounds like it is.  For example, if you want to know when someone quites you would use the [[on quit]] event!  One of the most common script events used is the [[on text]] event, which triggers when someone speaks either in a channel or a private message.&lt;br /&gt;
If you are interested in these events, you should move on to [[How to start (part 2)|part 2]] of this introduction.&lt;br /&gt;
&lt;br /&gt;
=== Users-Tab ===&lt;br /&gt;
&lt;br /&gt;
In this file your userlist is saved. You don&#039;t need to edit it manually, as there are commands to do it. See [[Access_Levels|access levels in general]], [[auser]], [[guser]] and [[ruser]].&lt;br /&gt;
&lt;br /&gt;
=== Variables-Tab ===&lt;br /&gt;
&lt;br /&gt;
All your global variables are saved in here. Again, you don&#039;t need to edit it manually, as you can use [[set]], [[unset]] or [[unsetall]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to debug ==&lt;br /&gt;
&lt;br /&gt;
After you&#039;ve written some lines and you&#039;ve tested it, you will most likely notice, that it doesn&#039;t do what you expect it to do. The next step is to &#039;&#039;&#039;debug&#039;&#039;&#039; your script. At first take a look at your Status Window and check for error messages. If there are any, search for these errors in your script and correct them. If they aren&#039;t any, you should add [[echo]]&#039;s in your script to see where it stops to work. For example:&lt;br /&gt;
&lt;br /&gt;
 on *:TEXT:*:*: {&lt;br /&gt;
  if (%moo) { echo -a we are here }&lt;br /&gt;
  elseif (%moo2) { echo -a we are here 2 } &lt;br /&gt;
  echo -a after the if clauses&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
With this method, you can see exactly where it stops to work and correct this part.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; You cannot trigger on text, on notice, on action... events by yourself, you will need someone&#039;s help or another client or multiserver (/[[server]] -m ...) to test them.&lt;br /&gt;
&lt;br /&gt;
If some of the built-in commands don&#039;t work, ie. /kick, /away ... etc. you might have a custom alias that overrides them, you can test it with /!command, ie. /!kick #channel nick.&lt;br /&gt;
/!command will use the default mIRC command and bypass any custom aliases.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For more info on debugging, see [[Debugging (Find The Bug)]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[How to start (part 2)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;!--// noob //--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=User:Microbe&amp;diff=2677</id>
		<title>User:Microbe</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=User:Microbe&amp;diff=2677"/>
		<updated>2008-03-31T13:25:52Z</updated>

		<summary type="html">&lt;p&gt;Microbe: Yearly update (and no, I&amp;#039;m not coming online today, hah!)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Babel-4|fi|en-3|sv-2|fr-2}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Image:Microbe.jpg]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
  &amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Name&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Lauri Peltonen&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Age&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;25&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr valign=&amp;quot;top&amp;quot; height=&amp;quot;40&amp;quot;&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Country&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Finland&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Words of wisdom&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Still searching wisdom.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
[[Category:Members]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=News&amp;diff=2714</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=News&amp;diff=2714"/>
		<updated>2007-07-02T10:02:53Z</updated>

		<summary type="html">&lt;p&gt;Microbe: News about the wiki move&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Use ~ four times to get signature with timestamp, also available at the toolbar, second button from right --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Copy&amp;amp;Paste: {{newsWriter|~ four times}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wiki moved ==&lt;br /&gt;
&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 12:02, 2 Jul 2007 (CEST)}}&lt;br /&gt;
&lt;br /&gt;
This Scriptwiki was moved to its new permanent home some time ago. The address is now easier to remember and it contains a hint of the wiki&#039;s origins. Hope you all find your way here :)&lt;br /&gt;
&lt;br /&gt;
== mIRC 6.21 is out ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 23:03, 23 Nov 2006 (CET)}}&lt;br /&gt;
&lt;br /&gt;
mIRC version 6.21 was just released. Read more about it and download it at [http://www.mirc.com www.mirc.com].&lt;br /&gt;
&lt;br /&gt;
== mIRC 6.2 is out ==&lt;br /&gt;
{{newsWriter|[[User:Cail|Cail]] 14:48, 27 Aug 2006 (CET)}}&lt;br /&gt;
&lt;br /&gt;
mIRC 6.2 was released July 28th 2006, get it at [http://www.mirc.com www.mirc.com]. Take a look at the [http://www.mirc.co.uk/versions.txt list of changes] aswell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Changes to Scriptwiki ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 00:39, 5 May 2006 (CEST)}}&lt;br /&gt;
&lt;br /&gt;
Scriptwiki has gone through some changes, again. It has been made an official QuakeNet wiki and recruiting new editors has been made easier - the process should now be far faster and more user-friendly. So if you&#039;re interested in contributing to this wiki, have a look at the front page&#039;s instructions.&lt;br /&gt;
&lt;br /&gt;
== mIRC 6.17 is out ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 00:31, 18 Feb 2006 (CET)}}&lt;br /&gt;
&lt;br /&gt;
mIRC version 6.17 has been released an hour ago. Read more about it and download it at [http://www.mirc.com www.mirc.com].&lt;br /&gt;
&lt;br /&gt;
== Scriptwiki has been globalized ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 04:03, 4 Feb 2006 (CET)}}&lt;br /&gt;
&lt;br /&gt;
Scriptwiki has gone through some changes. The project started as a small one-channel project, but it is now released &amp;quot;to the wild&amp;quot;. People interested to contribute to this wiki are encouraged to contact us, especially from other networks than QuakeNet. At the moment this wiki is dedicated more towards QuakeNet users, but we are hoping that this will change in the future. Users from every network should be able to get the information they need from here, especially network-specific raw events.&lt;br /&gt;
&lt;br /&gt;
So if you want to contribute to the only wiki dedicated to mIRC scripting (at least at the moment), see the main page for more information.&lt;br /&gt;
&lt;br /&gt;
== Welcome to Scriptwiki ==&lt;br /&gt;
{{newsWriter|[[User:Tovrleaf|Tovrleaf]] 22:53, 15 Sep 2005 (CEST)}}&lt;br /&gt;
&lt;br /&gt;
Hi, and welcome to our new published &#039;&#039;&#039;Scriptwiki&#039;&#039;&#039;. Scriptwiki (as we call it) is our new lifelong project which won&#039;t probably ever be finished. It shall be developed and expanded along with mIRC and new scripting skills.&lt;br /&gt;
&lt;br /&gt;
Special thanks to all users who have helped us to get this to shape and to create a more user friendly wiki and articles.&lt;br /&gt;
&lt;br /&gt;
If you think this wiki is missing some essential articles, there&#039;s a page to [[Special:Request|request]] new articles for it. And don&#039;t forget to give us [[:Special:SendComment|feedback]], comments, ideas or new suggestions.&lt;br /&gt;
&lt;br /&gt;
== Scriptwiki starting ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 12:53, 24 Aug 2005 (CEST)}}&lt;br /&gt;
&lt;br /&gt;
Scriptwiki starting to get in shape&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=News&amp;diff=2230</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=News&amp;diff=2230"/>
		<updated>2007-07-02T09:55:38Z</updated>

		<summary type="html">&lt;p&gt;Microbe: fixed url&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Use ~ four times to get signature with timestamp, also available at the toolbar, second button from right --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Copy&amp;amp;Paste: {{newsWriter|~ four times}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== mIRC 6.21 is out ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 23:03, 23 Nov 2006 (CET)}}&lt;br /&gt;
&lt;br /&gt;
mIRC version 6.21 was just released. Read more about it and download it at [http://www.mirc.com www.mirc.com].&lt;br /&gt;
&lt;br /&gt;
== mIRC 6.2 is out ==&lt;br /&gt;
{{newsWriter|[[User:Cail|Cail]] 14:48, 27 Aug 2006 (CET)}}&lt;br /&gt;
&lt;br /&gt;
mIRC 6.2 was released July 28th 2006, get it at [http://www.mirc.com www.mirc.com]. Take a look at the [http://www.mirc.co.uk/versions.txt list of changes] aswell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Changes to Scriptwiki ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 00:39, 5 May 2006 (CEST)}}&lt;br /&gt;
&lt;br /&gt;
Scriptwiki has gone through some changes, again. It has been made an official QuakeNet wiki and recruiting new editors has been made easier - the process should now be far faster and more user-friendly. So if you&#039;re interested in contributing to this wiki, have a look at the front page&#039;s instructions.&lt;br /&gt;
&lt;br /&gt;
== mIRC 6.17 is out ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 00:31, 18 Feb 2006 (CET)}}&lt;br /&gt;
&lt;br /&gt;
mIRC version 6.17 has been released an hour ago. Read more about it and download it at [http://www.mirc.com www.mirc.com].&lt;br /&gt;
&lt;br /&gt;
== Scriptwiki has been globalized ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 04:03, 4 Feb 2006 (CET)}}&lt;br /&gt;
&lt;br /&gt;
Scriptwiki has gone through some changes. The project started as a small one-channel project, but it is now released &amp;quot;to the wild&amp;quot;. People interested to contribute to this wiki are encouraged to contact us, especially from other networks than QuakeNet. At the moment this wiki is dedicated more towards QuakeNet users, but we are hoping that this will change in the future. Users from every network should be able to get the information they need from here, especially network-specific raw events.&lt;br /&gt;
&lt;br /&gt;
So if you want to contribute to the only wiki dedicated to mIRC scripting (at least at the moment), see the main page for more information.&lt;br /&gt;
&lt;br /&gt;
== Welcome to Scriptwiki ==&lt;br /&gt;
{{newsWriter|[[User:Tovrleaf|Tovrleaf]] 22:53, 15 Sep 2005 (CEST)}}&lt;br /&gt;
&lt;br /&gt;
Hi, and welcome to our new published &#039;&#039;&#039;Scriptwiki&#039;&#039;&#039;. Scriptwiki (as we call it) is our new lifelong project which won&#039;t probably ever be finished. It shall be developed and expanded along with mIRC and new scripting skills.&lt;br /&gt;
&lt;br /&gt;
Special thanks to all users who have helped us to get this to shape and to create a more user friendly wiki and articles.&lt;br /&gt;
&lt;br /&gt;
If you think this wiki is missing some essential articles, there&#039;s a page to [[Special:Request|request]] new articles for it. And don&#039;t forget to give us [[:Special:SendComment|feedback]], comments, ideas or new suggestions.&lt;br /&gt;
&lt;br /&gt;
== Scriptwiki starting ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 12:53, 24 Aug 2005 (CEST)}}&lt;br /&gt;
&lt;br /&gt;
Scriptwiki starting to get in shape&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=News&amp;diff=2227</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=News&amp;diff=2227"/>
		<updated>2007-07-02T09:52:05Z</updated>

		<summary type="html">&lt;p&gt;Microbe: Changed &amp;quot;list of changes&amp;quot; link to mirc.co.uk/versions.txt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Use ~ four times to get signature with timestamp, also available at the toolbar, second button from right --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Copy&amp;amp;Paste: {{newsWriter|~ four times}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== mIRC 6.21 is out ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 23:03, 23 Nov 2006 (CET)}}&lt;br /&gt;
&lt;br /&gt;
mIRC version 6.21 was just released. Read more about it and download it at [http://www.mirc.com www.mirc.com].&lt;br /&gt;
&lt;br /&gt;
== mIRC 6.2 is out ==&lt;br /&gt;
{{newsWriter|[[User:Cail|Cail]] 14:48, 27 Aug 2006 (CET)}}&lt;br /&gt;
&lt;br /&gt;
mIRC 6.2 was released July 28th 2006, get it at [http://www.mirc.com www.mirc.com]. Take a look at the [http://mirc.co.uk/versions.txt| list of changes] aswell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Changes to Scriptwiki ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 00:39, 5 May 2006 (CEST)}}&lt;br /&gt;
&lt;br /&gt;
Scriptwiki has gone through some changes, again. It has been made an official QuakeNet wiki and recruiting new editors has been made easier - the process should now be far faster and more user-friendly. So if you&#039;re interested in contributing to this wiki, have a look at the front page&#039;s instructions.&lt;br /&gt;
&lt;br /&gt;
== mIRC 6.17 is out ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 00:31, 18 Feb 2006 (CET)}}&lt;br /&gt;
&lt;br /&gt;
mIRC version 6.17 has been released an hour ago. Read more about it and download it at [http://www.mirc.com www.mirc.com].&lt;br /&gt;
&lt;br /&gt;
== Scriptwiki has been globalized ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 04:03, 4 Feb 2006 (CET)}}&lt;br /&gt;
&lt;br /&gt;
Scriptwiki has gone through some changes. The project started as a small one-channel project, but it is now released &amp;quot;to the wild&amp;quot;. People interested to contribute to this wiki are encouraged to contact us, especially from other networks than QuakeNet. At the moment this wiki is dedicated more towards QuakeNet users, but we are hoping that this will change in the future. Users from every network should be able to get the information they need from here, especially network-specific raw events.&lt;br /&gt;
&lt;br /&gt;
So if you want to contribute to the only wiki dedicated to mIRC scripting (at least at the moment), see the main page for more information.&lt;br /&gt;
&lt;br /&gt;
== Welcome to Scriptwiki ==&lt;br /&gt;
{{newsWriter|[[User:Tovrleaf|Tovrleaf]] 22:53, 15 Sep 2005 (CEST)}}&lt;br /&gt;
&lt;br /&gt;
Hi, and welcome to our new published &#039;&#039;&#039;Scriptwiki&#039;&#039;&#039;. Scriptwiki (as we call it) is our new lifelong project which won&#039;t probably ever be finished. It shall be developed and expanded along with mIRC and new scripting skills.&lt;br /&gt;
&lt;br /&gt;
Special thanks to all users who have helped us to get this to shape and to create a more user friendly wiki and articles.&lt;br /&gt;
&lt;br /&gt;
If you think this wiki is missing some essential articles, there&#039;s a page to [[Special:Request|request]] new articles for it. And don&#039;t forget to give us [[:Special:SendComment|feedback]], comments, ideas or new suggestions.&lt;br /&gt;
&lt;br /&gt;
== Scriptwiki starting ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 12:53, 24 Aug 2005 (CEST)}}&lt;br /&gt;
&lt;br /&gt;
Scriptwiki starting to get in shape&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Category:Token_Identifiers&amp;diff=3884</id>
		<title>Category:Token Identifiers</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Category:Token_Identifiers&amp;diff=3884"/>
		<updated>2007-05-03T22:03:31Z</updated>

		<summary type="html">&lt;p&gt;Microbe: added some examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
Tokens are strings of characters that are separated by a certain character. &lt;br /&gt;
&lt;br /&gt;
Tokens are a very useful way to handle strings of text from which you need to separate shorter strings that are separated by a character. Usually the separating character (delimiter) is a space.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; that token strings can be anything, and you could delimiter them with every character that exist (but only &#039;&#039;&#039;one&#039;&#039;&#039; character). &lt;br /&gt;
&lt;br /&gt;
== What are they good for ==&lt;br /&gt;
&lt;br /&gt;
In a line like &#039;&#039;This is just a little line&#039;&#039; each word represents a token if you separate them with a space. The space in this case is called the &#039;delimiter&#039;.&lt;br /&gt;
&lt;br /&gt;
If you want to, for example, get the third and fourth word from the above line, you could do it with [[$gettok]] and by using space as the delimiter. If you have a line like &#039;&#039;My brothers are called Bob, David, Elton, Joe, Jack, Tim&#039;&#039; you could get the names of the third and fourth brother easily with token idenfifiers. Without token identifiers it would be painful to find the names automatically.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appearance in mIRC ==&lt;br /&gt;
You will see tokens in three categories:&lt;br /&gt;
*[[:Category:Events|Events]] ([[$1-]], [[$0]], etc.)&lt;br /&gt;
*[[Tokenize|/tokenize]]&lt;br /&gt;
*Token Identifiers&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[[Category:Identifiers]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=$sockbr&amp;diff=4578</id>
		<title>$sockbr</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=$sockbr&amp;diff=4578"/>
		<updated>2007-05-03T21:50:21Z</updated>

		<summary type="html">&lt;p&gt;Microbe: added category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;$sockbr is set to the number of bytes read by a [[Sockread|/sockread]] command. It is used to test whether any information was in fact read from the buffer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example&#039;&#039;&#039;&lt;br /&gt;
 on 1:sockread:testing:{&lt;br /&gt;
  if ([[$sockerr]] &amp;gt; 0) [[return]]&lt;br /&gt;
  :nextread&lt;br /&gt;
  sockread %temp&lt;br /&gt;
  if ($sockbr == 0) return&lt;br /&gt;
  if (%temp == [[$null]]) %temp = -&lt;br /&gt;
  echo 4 %temp&lt;br /&gt;
  goto nextread&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[Category:socket]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=If-Then-Else&amp;diff=1904</id>
		<title>If-Then-Else</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=If-Then-Else&amp;diff=1904"/>
		<updated>2007-05-03T21:45:13Z</updated>

		<summary type="html">&lt;p&gt;Microbe: added info, mostly about !=&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
The If-then-else statement allows you to compare values and execute different parts of a script based on that comparison. This is a basic structure for any script that includes anything more than one-liners!&lt;br /&gt;
&lt;br /&gt;
 if (v1 operator v2) { commands1 }&lt;br /&gt;
 elseif (v1 operator v2) { commands2 }&lt;br /&gt;
 else { commands3 }&lt;br /&gt;
&lt;br /&gt;
If the first statement (line) is [[$true]], commands inside the first brackets are executed. If the first if-statement returns [[$false]], script starts looking for an elseif-statement. An elseif-statement is only triggered if the group&#039;s if-statement returned $false before. And at last, if none of the if or elseif statements were triggered, commands in else-statement are executed.&lt;br /&gt;
&lt;br /&gt;
One if structure/group can consist of one main if-statement, after it there can be 0 .. N elseif-statements. There can be only one else, which can be understood as the default statement, if none one before were triggered. There doesn&#039;t need to be else-statement though.&lt;br /&gt;
&lt;br /&gt;
Every if statement is handled separatly and none of others affect in another.&lt;br /&gt;
&lt;br /&gt;
 if (A) { ... }&lt;br /&gt;
 elseif (B) {&lt;br /&gt;
   if (C) { ... }&lt;br /&gt;
   elseif (D) { ... }&lt;br /&gt;
   elseif (E) { ... }&lt;br /&gt;
   else { F }&lt;br /&gt;
 }&lt;br /&gt;
 elseif (G) { ... }&lt;br /&gt;
 else { H }&lt;br /&gt;
&lt;br /&gt;
If structure would be hierarchical represented it would look something like this&lt;br /&gt;
&lt;br /&gt;
 A               If A is true, execute its commands and skip the rest&lt;br /&gt;
 B               If B is true, &lt;br /&gt;
  \&lt;br /&gt;
   C                 check if C, D or E returns true&lt;br /&gt;
   D&lt;br /&gt;
   E&lt;br /&gt;
   F             If none of these got triggered, return F&lt;br /&gt;
 G               If A and B were false and G is true, execute this&lt;br /&gt;
 H               If A, B and G were all false, execute H&lt;br /&gt;
&lt;br /&gt;
== The Operators ==&lt;br /&gt;
&lt;br /&gt;
 [[#==|==]]        equal to&lt;br /&gt;
 [[#==|===]]       equal to (case-sensitive)&lt;br /&gt;
 [[#&amp;lt;|&amp;lt;]]         less than&lt;br /&gt;
 [[#&amp;gt;|&amp;gt;]]         larger than&lt;br /&gt;
 [[#&amp;lt;=|&amp;lt;=]]        less than or equal to&lt;br /&gt;
 [[#&amp;gt;=|&amp;gt;=]]        larger than or equal to&lt;br /&gt;
 [[#//|//]]        v2 is a multiple of v1&lt;br /&gt;
 [[#\\|\\]]        v2 is not a multiple of v1&lt;br /&gt;
 [[#&amp;amp;|&amp;amp;]]         bitwise comparison&lt;br /&gt;
 &lt;br /&gt;
 [[#isin|isin]]      string v1 is in string v2&lt;br /&gt;
 [[#isin|isincs]]    string v1 is in string v2 (case sensitive)&lt;br /&gt;
 [[#iswm|iswm]]      wildcard string v1 matches string v2&lt;br /&gt;
 [[#iswm|iswmcs]]    wildcard string v1 matches string v2 (case sensitive)&lt;br /&gt;
 [[#isnum|isnum]]     number v1 is a number in the range v2 which is in the form n1-n2 (v2 optional)&lt;br /&gt;
 [[#isletter|isletter]]  letter v1 is a letter in the list of letters in v2 (v2 optional)&lt;br /&gt;
 &lt;br /&gt;
 [[#isalnum|isalnum]]   text contains only letters and numbers&lt;br /&gt;
 [[#isalpha|isalpha]]   text contains only letters&lt;br /&gt;
 [[#islower|islower]]   text contains only lower case letters&lt;br /&gt;
 [[#isupper|isupper]]   text contains only upper case letters&lt;br /&gt;
 &lt;br /&gt;
 [[#ison|ison]]      if v1 is on channel v2&lt;br /&gt;
 [[#isop|isop]]      if v1 is an op on channel v2&lt;br /&gt;
 [[#ishop|ishop]]     if v1 is a halfop on channel v2&lt;br /&gt;
 [[#isvoice|isvoice]]   if v1 has a voice on channel v2&lt;br /&gt;
 [[#isreg|isreg]]     if v1 is a normal nick on channel v2&lt;br /&gt;
 [[#ischan|ischan]]    if v1 is a channel which you are on.&lt;br /&gt;
 [[#isban|isban]]     if v1 is a banned address in the internal ban list for channel v2&lt;br /&gt;
 &lt;br /&gt;
 [[#isaop|isaop]]     if v1 is a user in your auto-op list for channel v2 (v2 optional)&lt;br /&gt;
 [[#isavoice|isavoice]]  if v1 is a user in your auto-voice list for channel v2 (v2 optional)&lt;br /&gt;
 [[#isignore|isignore]]  if v1 is a user in your ignore list with the ignore switch v2 (v2 optional)&lt;br /&gt;
 [[#isprotect|isprotect]] if v1 is a user in your protect list for channel v2 (v2 optional)&lt;br /&gt;
 [[#isnotify|isnotify]]  if v1 is a user in your notify list.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note:&#039;&#039; To negate an operator you can prefix it with an exclamation mark (!).&lt;br /&gt;
&lt;br /&gt;
=== == ===&lt;br /&gt;
 if (cat == cAt)  ;Returns true since == is case-insensitive.&lt;br /&gt;
 if (cat === cAt) ;Returns false since === is case-sensitive.&lt;br /&gt;
The above checks that v1 (cat) matches v2 (cAt).&lt;br /&gt;
&lt;br /&gt;
=== != ===&lt;br /&gt;
This isn&#039;t actually an operator, but a combination of two operators ! and =. And actually, = isn&#039;t an operator either, but in mIRC scripting it can be used instead of == and it works just the way == works. In most mIRC scripts you only see !=, which actually shouldn&#039;t be used. Instead, !== should be used to negate ==.&lt;br /&gt;
&lt;br /&gt;
 if (cat != cAt)  ;Returns false since != is case-insensitive and both values v1 and v2 are equal.&lt;br /&gt;
 if (cat !== caT)  ;Returns false since !== is the same as !=&lt;br /&gt;
 if (cat !=== cAt) ;Returns true since !=== is case-sensitive and both values v1 and v2 are not equal when case is taken in to consideration.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt; ===&lt;br /&gt;
 if (6 &amp;lt; 9) ;Returns true because the numerical value 6 is less than 9.&lt;br /&gt;
Checks that v1 (6) has a lower numerical value than v2 (9)&lt;br /&gt;
&lt;br /&gt;
=== &amp;gt; ===&lt;br /&gt;
 if (6 &amp;gt; 9) ;Returns false because the numerical value 6 is not greater than 9.&lt;br /&gt;
Checks that v1 (6) has a higher numerical value than v2 (9)&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;= ===&lt;br /&gt;
 if (6 &amp;lt;= 9) ;Returns true because the numerical value 6 is less than or equal to 9.&lt;br /&gt;
Checks that v1 (6) has a lower or equal numerical value than v2 (9).&lt;br /&gt;
&lt;br /&gt;
=== &amp;gt;= ===&lt;br /&gt;
 if (6 &amp;gt;= 9) ;Returns false because the numerical value 6 is not greater than or equal to 9.&lt;br /&gt;
Checks that v1 (6) has a greater or equal numerical value than v2 (9).&lt;br /&gt;
&lt;br /&gt;
=== // ===&lt;br /&gt;
 if (3 // 9) ;Returns true because 3 is a multiple of 9.&lt;br /&gt;
Multiples of 9 are numbers that when devided in to 9 result in an integer.&lt;br /&gt;
You are not limited to positive numbers.&lt;br /&gt;
&lt;br /&gt;
=== \\ ===&lt;br /&gt;
 if (3 \\ 9) ;Returns false because 3 is a multiple of 9.&lt;br /&gt;
\\ is the negate of //&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp; ===&lt;br /&gt;
 if (N1 &amp;amp; N2) ; This will compare the bits that are [[$biton|turned on]] in the decimal N1 AND N2 in the same way [[$and]]() would.&lt;br /&gt;
As long as N1 and N2 share atleast 1 bit the condition is returned as true.&lt;br /&gt;
&lt;br /&gt;
 if (13 &amp;amp; 11) ;Is true, see the table below for explanation.&lt;br /&gt;
 echo -ag $and(13,11) ;returns 9.&lt;br /&gt;
&lt;br /&gt;
If you break down 13 and 11 into their bits as below:&lt;br /&gt;
{|class=&amp;quot;gallery&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:100px&amp;quot; | &#039;&#039;&#039;&#039;&#039;Binary&#039;&#039;&#039;&#039;&#039; || &#039;&#039;&#039;&#039;&#039;Value&#039;&#039;&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| 1101      || 13&lt;br /&gt;
|-&lt;br /&gt;
| 1011      || 11 &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1px dotted #2f6fab; color: Black;&amp;quot; | 1001      || style=&amp;quot;border:1px dotted #2f6fab; color: Black;&amp;quot; | 9 &lt;br /&gt;
|}&lt;br /&gt;
 if (11 &amp;amp; 4) ;Is false.&lt;br /&gt;
 echo -ag $and(11,4) ;returns 0.&lt;br /&gt;
{|class=&amp;quot;gallery&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:100px&amp;quot; | &#039;&#039;&#039;&#039;&#039;Binary&#039;&#039;&#039;&#039;&#039; || &#039;&#039;&#039;&#039;&#039;Value&#039;&#039;&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| 1011      || 11 &lt;br /&gt;
|-&lt;br /&gt;
| 0100      || 4&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1px dotted #2f6fab; color: Black;&amp;quot; | 0000      || style=&amp;quot;border:1px dotted #2f6fab; color: Black;&amp;quot; | 0&lt;br /&gt;
|}&lt;br /&gt;
Above you can see, 13 and 11 both have the first bit AND fourth bit on, so the statement is true. The binary 1001 value has a decimal value of 9.&lt;br /&gt;
Also you can see, 11 and 4 do not share any common bits, so the statement is false.&lt;br /&gt;
&lt;br /&gt;
=== isin ===&lt;br /&gt;
 if (cat isin [[$1-]])&lt;br /&gt;
Matches for &amp;quot;a &#039;&#039;cat&#039;&#039;&amp;quot;, &amp;quot;&#039;&#039;cat&#039;&#039;alog&amp;quot;, &amp;quot;impli&#039;&#039;cat&#039;&#039;e &amp;quot; and any string where &amp;quot;cat&amp;quot; &#039;&#039;&#039;is in&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== iswm ===&lt;br /&gt;
iswm stands for &#039;&#039;is wildcard match&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Operators:&lt;br /&gt;
 *  0 or more characters&lt;br /&gt;
 ?  1 character&lt;br /&gt;
 &amp;amp;  1 word (atleast 1 or more non-space characters)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 if (home*away*lost iswm $1-)&lt;br /&gt;
This would match anything starting with home and ending in lost, with away being between home and lost.&lt;br /&gt;
It would match, &amp;quot;homeawaylost&amp;quot;, &amp;quot;home away lost&amp;quot;, &amp;quot;home is missed when you are away or lost&amp;quot;, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 if (ca?* iswm $1-)&lt;br /&gt;
Requires one character after &amp;quot;ca&amp;quot; and allows 0 or more character after it. So it would match for cat, cab, cabin etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 if (I &amp;amp; you iswm $1-)&lt;br /&gt;
Matches any string that consists of &amp;quot;I + one word + you&amp;quot;.&lt;br /&gt;
Examples would be, &amp;quot;I love you&amp;quot;, &amp;quot;I hate you&amp;quot;, &amp;quot;I moo you&amp;quot;, it would not however match, &amp;quot;I don&#039;t love you&amp;quot; since &amp;quot;don&#039;t love&amp;quot; contains a space.&lt;br /&gt;
&lt;br /&gt;
=== isnum ===&lt;br /&gt;
&lt;br /&gt;
 if ($1 isnum)  ;Returns true if $1 is of numeric value&lt;br /&gt;
 if ($1 isnum 10-)  ;Returns true if $1 is number higher than 10&lt;br /&gt;
 if ($1 isnum 20-30)  ;Returns true if $1 is a number between 20 and 30&lt;br /&gt;
&lt;br /&gt;
The examples above checks $1, to see;&lt;br /&gt;
&lt;br /&gt;
Is it a number?&amp;lt;br /&amp;gt;&lt;br /&gt;
Is it a number above 10?&amp;lt;br /&amp;gt;&lt;br /&gt;
Is it a number between 20 and 30?&lt;br /&gt;
&lt;br /&gt;
=== isletter ===&lt;br /&gt;
&lt;br /&gt;
 if ($1 isletter)  ;Returns true if &#039;&#039;$1&#039;&#039; is a letter, any letter&lt;br /&gt;
 if ($1 isletter abcdefg)  ;Returns true if &#039;&#039;$1&#039;&#039; is in the string of letters &#039;&#039;abcdefg&#039;&#039;&lt;br /&gt;
 if ($1 isletter HelloWorld)  ;Returns true if &#039;&#039;$1&#039;&#039; is in the string of letters &#039;&#039;HeloWrd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Note that the checking is case-sensitive, the letter &#039;&#039;h&#039;&#039; will not return true if checked against the string &#039;&#039;HelloWorld&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== isalnum ===&lt;br /&gt;
 if (Dana34 isalnum) ;returns true as &#039;&#039;Dana34&#039;&#039; contains letters and numbers only&lt;br /&gt;
 if (Dana_ isalnum) ;returns false as &#039;&#039;_&#039;&#039; is neither letter nor number&lt;br /&gt;
&lt;br /&gt;
Matches whether the string consists of letters and numbers only.&lt;br /&gt;
&lt;br /&gt;
=== isalpha ===&lt;br /&gt;
 if (Dana isalpha) ; returns true as &#039;&#039;Dana&#039;&#039; consists of letters only&lt;br /&gt;
 if (foo42 isalpha) ; returns false as &#039;&#039;42&#039;&#039; is no letter&lt;br /&gt;
&lt;br /&gt;
Isalpha checks whether the word consists of letters only. It doesn&#039;t matter whether there are upper or lower case.&lt;br /&gt;
&lt;br /&gt;
=== islower ===&lt;br /&gt;
 if (moo islower) ; returns true as all letters in &#039;&#039;moo&#039;&#039; are lower case.&lt;br /&gt;
 if (m0o islower) ; returns true as well as all letters in &#039;&#039;m0o&#039;&#039; are lower case. &lt;br /&gt;
 if (mooO islower) ; retursn false as there is an upper &#039;&#039;O&#039;&#039; in &#039;&#039;mooO&#039;&#039;.&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; that islower checks whether all letters in the string are lower case. There can still be numbers or other characters in the string $1.&lt;br /&gt;
&lt;br /&gt;
=== isupper ===&lt;br /&gt;
 if (MOO isupper) ; returns true as &#039;&#039;MOO&#039;&#039; consists of upper case letters only&lt;br /&gt;
 if (1234 isupper) ; returns true as all letters in &#039;&#039;1234&#039;&#039; are upper case, as there are none.&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; that it checks whether all letters in $1 are upper case. There can still be numbers or other characters in $1.&lt;br /&gt;
&lt;br /&gt;
=== ison ===&lt;br /&gt;
 if (Dana ison #help.script) ; returns true as &#039;&#039;Dana&#039;&#039; is in the channel #help.script&lt;br /&gt;
 if (foo !ison #help.script) ; returns true as &#039;&#039;foo&#039;&#039; is not in #help.script&lt;br /&gt;
&lt;br /&gt;
This checks whether $1 is in the channel $2. Note that you need to be in the same channel to use this.&lt;br /&gt;
&lt;br /&gt;
=== isop ===&lt;br /&gt;
 if (Dana isop #help.script) ; returns true as &#039;&#039;Dana&#039;&#039; is an operator in #help.script&lt;br /&gt;
 if (foo isop #help.script) ; returns false as &#039;&#039;foo&#039;&#039; is no operator in #help.script&lt;br /&gt;
&lt;br /&gt;
Checks whether $1 is an operator in $2. Note that you need to be in the same channel to use this.&lt;br /&gt;
&lt;br /&gt;
=== ishop ===&lt;br /&gt;
 if (moo ishop #mIRC) ; returns true if &#039;&#039;moo&#039;&#039; is an half operator in #mIRC&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; that QuakeNet does not support halfops. Note also that you need to be in the same channel to use this.&lt;br /&gt;
&lt;br /&gt;
=== isvoice ===&lt;br /&gt;
 if (Dana isvoice #help.script) ; returns true as &#039;&#039;Dana&#039;&#039; has voice in #help.script.&lt;br /&gt;
 if (foobar isvoice #help.script) ; returns false as &#039;&#039;foobar&#039;&#039; has no voice in #help.script.&lt;br /&gt;
This checks if $1 has voice in $2 or not. Note that you need to be in the same channel to use this.&lt;br /&gt;
&lt;br /&gt;
=== isreg ===&lt;br /&gt;
 if (Dana isreg #help.script) ; returns false as Dana is no regular user in #help.script.&lt;br /&gt;
 if (foobar isreg #help.script) ; returns true as foobar is a regular user in #help.script.&lt;br /&gt;
This checks whether $1 is a regular user (no voice, no half operator, no operator) in $2. Note that you need to be in the same channel to use this.&lt;br /&gt;
&lt;br /&gt;
=== ischan ===&lt;br /&gt;
 if (#help.script ischan) ; returns true as you are in #help.script.&lt;br /&gt;
 if (#foobar ischan) ; returns false as you are no in #foobar.&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; that it returns true only if you are in this channel.&lt;br /&gt;
&lt;br /&gt;
=== isban ===&lt;br /&gt;
 if (idiot!*@* isban #mychan) ; returns $true if &#039;&#039;idiot!*@*&#039;&#039; is in your [[:Category:IBL|Internal Ban List]] for the channel #mychan.&lt;br /&gt;
 if ($ial($me) isban $chan) ; returns $true if you are banned on the current channel.&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; that isban performs two different checks, depending on whether v1 contains wildcards or not:&lt;br /&gt;
* if v1 contains wildcards, isban will return $true if v1 is an exact ban in the IBL;&lt;br /&gt;
* if v1 does not contain wildcards, isban will return $true if one or more bans match that address.&lt;br /&gt;
&lt;br /&gt;
=== isaop ===&lt;br /&gt;
 if (foobar isaop) ; returns true if &#039;&#039;foobar&#039;&#039; is in your autoop list for any channel.&lt;br /&gt;
 if (foobar isaop #help.script) ; returns true if &#039;&#039;foobar&#039;&#039; is in your autoop list for #help.script.&lt;br /&gt;
To put someone in your autoop-list, take a look at [[Aop|/aop]].&lt;br /&gt;
&lt;br /&gt;
=== isavoice ===&lt;br /&gt;
 if (foobar isavoice) ; returns true if &#039;&#039;foobar&#039;&#039; is in your autovoicelist for any channel.&lt;br /&gt;
 if (foobar isavoice #help.script) ; returns true if &#039;&#039;foobar&#039;&#039; is your autovoicelist for #help.script.&lt;br /&gt;
To put someone in your autovoicelist, take a look at [[Avoice|/avoice]].&lt;br /&gt;
&lt;br /&gt;
=== isignore ===&lt;br /&gt;
 if (foobar isignore) ; returns true if &#039;&#039;foobar&#039;&#039; is in your ignore list.&lt;br /&gt;
 if (foobar isignore c) ; returns true if &#039;&#039;foobar&#039;&#039; is in your ignore list with switch -c.&lt;br /&gt;
To get a more in detail explanation of these switches, take a look at [[Ignore|/ignore]].&lt;br /&gt;
&lt;br /&gt;
=== isprotect ===&lt;br /&gt;
 if (foobar isprotect) ; returns true if &#039;&#039;foobar&#039;&#039; is in your protect list.&lt;br /&gt;
 if (foobar isprotect #help.script) ; returns true if &#039;&#039;foobar&#039;&#039; is in your protect list for #help.script.&lt;br /&gt;
To get more information about protection, see [[Protect|/protect]].&lt;br /&gt;
&lt;br /&gt;
=== isnotify ===&lt;br /&gt;
 if (Dana isnotify) ; returns true if Dana is in your notify list.&lt;br /&gt;
Take a look at [[Notify|/notify]] to add someone to your notifylist. If someone in your notifylist connects (disconnects), the [[On_notify|On notify event]] ([[On_unotify|On Unotify event]]) is triggered.&lt;br /&gt;
&lt;br /&gt;
== Combining comparisons ==&lt;br /&gt;
&lt;br /&gt;
You can combine comparisons by using the &amp;amp;&amp;amp; for AND and || for OR characters.&lt;br /&gt;
&lt;br /&gt;
 [[var]] %c = 5&lt;br /&gt;
 if (%c &amp;lt; 6) &amp;amp;&amp;amp; (%c &amp;gt; 0)      ; returns true because %c is both, smaller than 6 and greater than 0&lt;br /&gt;
 if (%c &amp;lt; 6) || (%c isalpha)  ; returns true because %c is lower than 6.&lt;br /&gt;
                              ; note that %c is not alphapetical and returns false, but || matches for 1 .. N true values.&lt;br /&gt;
 if (%c &amp;lt; 6) &amp;amp;&amp;amp; (%c isalpha)  ; returns false&lt;br /&gt;
 if (%c &amp;lt; 6) &amp;amp;&amp;amp; (%c !isalpha) ; ! negates the operator, this this returns true&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
====&#039;&#039;Not all comparations need two parameters&#039;&#039;====&lt;br /&gt;
 if ($1- isupper)&lt;br /&gt;
returns true, if $1- only contain uppercase letters. So ABCD returns true, but even one lowercase letter makes it return false.&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;Use parenthesis right&#039;&#039;====&lt;br /&gt;
(A) || (B) &amp;amp;&amp;amp; (C) &amp;lt;- logical order for this is to check if either one of A or B is true, and C is true, but if you wish to check that B and C must be true, or A is true, you&#039;ll need to do (A) || ((B) &amp;amp;&amp;amp; (C))&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;This article covers only if-then-else &#039;&#039;&#039;string&#039;&#039;&#039; operators&#039;&#039;====&lt;br /&gt;
You &#039;&#039;&#039;can&#039;t&#039;&#039;&#039; use&lt;br /&gt;
 if (foo isin test.txt)&lt;br /&gt;
To check content of text-files. You can use [[$read]] instead to read the content of a text file and then use the return value returned by that $read.&lt;br /&gt;
&lt;br /&gt;
== Also see ==&lt;br /&gt;
* [[$v1]] &amp;amp; [[$v1|$v2]] These identifiers allow you to retrieve the values of the last if condition.&lt;br /&gt;
&lt;br /&gt;
[[Category:Commands]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Noop&amp;diff=1888</id>
		<title>Noop</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Noop&amp;diff=1888"/>
		<updated>2007-04-18T18:30:08Z</updated>

		<summary type="html">&lt;p&gt;Microbe: Added as new&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Noop is a command that does literally nothing and doesn&#039;t care about any parameters.&lt;br /&gt;
&lt;br /&gt;
 /noop&lt;br /&gt;
&lt;br /&gt;
What is it good for, then?&lt;br /&gt;
&lt;br /&gt;
It is a handy command when you need to evaluate some identifier without using the actual result. For example, you may want to evaluate a [[$regex]] identifier without using the information how many results it returns, just to later use the back-references it creates. Another example is [[$findfile]] which has a command option in itself, and therefore doesn&#039;t need any outside commands to handle its results.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
 noop $regex(I have 6 brothers,/I have (\d+) brothers/) | [[echo|echo -ag]] The number of brothers is [[$regml|$regml(1)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Commands]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Category:Members&amp;diff=2309</id>
		<title>Category:Members</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Category:Members&amp;diff=2309"/>
		<updated>2007-04-08T14:52:43Z</updated>

		<summary type="html">&lt;p&gt;Microbe: Moved Blackshroud to be a wiki editor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Wiki Admins ==&lt;br /&gt;
&lt;br /&gt;
* [[User:Albie|Albie]]&lt;br /&gt;
* [[User:Kr3L1S|Kr3L1S]]&lt;br /&gt;
* [[User:Microbe|Microbe]]&lt;br /&gt;
* [[User:Saturn|Saturn]]&lt;br /&gt;
* [[User:Tovrleaf|Tovrleaf]]&lt;br /&gt;
* [[User:Voronoi|Voronoi]]&lt;br /&gt;
* [[User:wiebe|wiebe]]&lt;br /&gt;
* [[User:Zyberdog|Zyberdog]]&lt;br /&gt;
&lt;br /&gt;
== Wiki Editors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:Aca20031|Aca20031]]&lt;br /&gt;
* [[User:BlackShroud|BlackShroud]]&lt;br /&gt;
* [[User:Cail|Cail]]&lt;br /&gt;
* [[User:Doomie|Doomie]]&lt;br /&gt;
* [[User:Ollie|Ollie]]&lt;br /&gt;
* [[User:Shenghi|Shenghi]]&lt;br /&gt;
* [[User:Vliedel|Vliedel]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Category:Members&amp;diff=1852</id>
		<title>Category:Members</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Category:Members&amp;diff=1852"/>
		<updated>2007-04-08T14:47:57Z</updated>

		<summary type="html">&lt;p&gt;Microbe: Added Aca20031 and capitalized his name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Wiki Admins ==&lt;br /&gt;
&lt;br /&gt;
* [[User:Albie|Albie]]&lt;br /&gt;
* [[User:BlackShroud|BlackShroud]]&lt;br /&gt;
* [[User:Kr3L1S|Kr3L1S]]&lt;br /&gt;
* [[User:Microbe|Microbe]]&lt;br /&gt;
* [[User:Saturn|Saturn]]&lt;br /&gt;
* [[User:Tovrleaf|Tovrleaf]]&lt;br /&gt;
* [[User:Voronoi|Voronoi]]&lt;br /&gt;
* [[User:wiebe|wiebe]]&lt;br /&gt;
* [[User:Zyberdog|Zyberdog]]&lt;br /&gt;
&lt;br /&gt;
== Wiki Editors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:Aca20031|Aca20031]]&lt;br /&gt;
* [[User:Cail|Cail]]&lt;br /&gt;
* [[User:Doomie|Doomie]]&lt;br /&gt;
* [[User:Ollie|Ollie]]&lt;br /&gt;
* [[User:Shenghi|Shenghi]]&lt;br /&gt;
* [[User:Vliedel|Vliedel]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Category:Members&amp;diff=1851</id>
		<title>Category:Members</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Category:Members&amp;diff=1851"/>
		<updated>2007-04-08T14:42:12Z</updated>

		<summary type="html">&lt;p&gt;Microbe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Wiki Admins ==&lt;br /&gt;
&lt;br /&gt;
* [[User:Albie|Albie]]&lt;br /&gt;
* [[User:BlackShroud|BlackShroud]]&lt;br /&gt;
* [[User:Kr3L1S|Kr3L1S]]&lt;br /&gt;
* [[User:Microbe|Microbe]]&lt;br /&gt;
* [[User:Saturn|Saturn]]&lt;br /&gt;
* [[User:Tovrleaf|Tovrleaf]]&lt;br /&gt;
* [[User:Voronoi|Voronoi]]&lt;br /&gt;
* [[User:wiebe|wiebe]]&lt;br /&gt;
* [[User:Zyberdog|Zyberdog]]&lt;br /&gt;
&lt;br /&gt;
== Wiki Editors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:aca20031|aca20031]]&lt;br /&gt;
* [[User:Cail|Cail]]&lt;br /&gt;
* [[User:Doomie|Doomie]]&lt;br /&gt;
* [[User:Ollie|Ollie]]&lt;br /&gt;
* [[User:Shenghi|Shenghi]]&lt;br /&gt;
* [[User:Vliedel|Vliedel]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Status_window&amp;diff=2619</id>
		<title>Status window</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Status_window&amp;diff=2619"/>
		<updated>2007-04-08T14:30:50Z</updated>

		<summary type="html">&lt;p&gt;Microbe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In mIRC, status window is the window that is first displayed for every connection. Its titlebar contains usually stuff like your nick, user modes, network, server you are connected to and connection time.&lt;br /&gt;
&lt;br /&gt;
Nothing typed in the status window&#039;s editbox can accidentally be posted to a channel, so status window is the right place for all sensitive commands (like authing).&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Map&amp;diff=4607</id>
		<title>Map</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Map&amp;diff=4607"/>
		<updated>2007-04-08T14:24:35Z</updated>

		<summary type="html">&lt;p&gt;Microbe: Added as new&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Displays a &amp;quot;graphical&amp;quot; map of the network.&lt;br /&gt;
&lt;br /&gt;
 /map&lt;br /&gt;
&lt;br /&gt;
Displays a treebar style version of how the network&#039;s servers are connected to each other. Used mostly for routing purposes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; you can use this command only if you are [[Oper|opered up]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Oper commands]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Rehash&amp;diff=4604</id>
		<title>Rehash</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Rehash&amp;diff=4604"/>
		<updated>2007-04-08T14:19:53Z</updated>

		<summary type="html">&lt;p&gt;Microbe: Added as new&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The rehash command tells the server to reload its configuration file.&lt;br /&gt;
&lt;br /&gt;
 /rehash&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; you can use this command only if you are [[Oper|opered up]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Oper commands]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Oper&amp;diff=1951</id>
		<title>Oper</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Oper&amp;diff=1951"/>
		<updated>2007-04-08T14:06:40Z</updated>

		<summary type="html">&lt;p&gt;Microbe: Added as new.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This command set you as an IRC Operator in the network.&lt;br /&gt;
&lt;br /&gt;
 /oper &amp;lt;name&amp;gt; &amp;lt;password&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the opering to be succesful, you must be added to the IRC server&#039;s configuration file as an oper. Whether you get to be a local or a global oper depends on the settings in the configuration file.&lt;br /&gt;
&lt;br /&gt;
== What can an oper do ==&lt;br /&gt;
&lt;br /&gt;
IRC Operators (opers or ircops) are there to help their network admininstrator to maintain the servers and the network.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Local opers&#039;&#039;&#039; have the power to&lt;br /&gt;
* Reconnect their server to the network&lt;br /&gt;
* [[Kill|/Kill]] anyone from their server (disconnect from the network)&lt;br /&gt;
* Set [[K-line|K-lines]] on their server (ban someone from the server)&lt;br /&gt;
* See all available information of users on the oper&#039;s own server&lt;br /&gt;
* Manage channels to some extent, depending on the server configuration&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Global opers&#039;&#039;&#039; have the power to&lt;br /&gt;
* Reconnect any server to the network&lt;br /&gt;
* /Kill anyone from any server&lt;br /&gt;
* Set K-lines on all servers in the network and set [[G-line|G-lines]] (a K-line on all servers)&lt;br /&gt;
* See all available information on users on every server&lt;br /&gt;
* Usually manage all channels without restrictions, depending on the server configuration&lt;br /&gt;
&lt;br /&gt;
So basically a global oper can do for any server what a local oper can do only for his own server. In theory, all of the actions in the above lists could be denied from both local and global opers by modifying the server configuration, but this would make opers rather pointless to have. Depending on the network, opers can also control the network services to some extent.&lt;br /&gt;
&lt;br /&gt;
=== Opers in QuakeNet ===&lt;br /&gt;
&lt;br /&gt;
All opers in QuakeNet are global opers. They can control all the services that are available to users and have access to other services that help them keeping the network clean.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Oper commands|Oper commands]] for commands available only for opers&lt;br /&gt;
&lt;br /&gt;
[[Category:IRC]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=User:Microbe&amp;diff=2368</id>
		<title>User:Microbe</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=User:Microbe&amp;diff=2368"/>
		<updated>2007-03-31T20:26:10Z</updated>

		<summary type="html">&lt;p&gt;Microbe: Yearly update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Babel-4|fi|en-3|sv-2|fr-2}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Image:Microbe.jpg]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
  &amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Name&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Lauri Peltonen&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Age&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;24&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr valign=&amp;quot;top&amp;quot; height=&amp;quot;40&amp;quot;&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Country&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Finland&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Words of wisdom&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Still searching wisdom.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
[[Category:Members]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Filter&amp;diff=1779</id>
		<title>Filter</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Filter&amp;diff=1779"/>
		<updated>2007-02-07T12:02:53Z</updated>

		<summary type="html">&lt;p&gt;Microbe: added some lil info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This command scans lines of text in a window or file and if any of them contain matchtext, they are written out to another window or file which you can then use.&lt;br /&gt;
 /filter [-asdfkwxnpriocteubglLz] [n-n2] [c s] &amp;lt;infile | dialog id&amp;gt; &amp;lt;outfile | dialog id | alias&amp;gt; [alias] [matchtext]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The explanation of all switches at first:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;Switch&#039;&#039;&#039;&#039;&#039; || &#039;&#039;&#039;&#039;&#039;Meaning&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| a      || sorts filtered lines by calling the optional [alias]. The alias is passed two lines in $1 and $2, it must compare these and return -1, 0, or 1 to indicate relative sort order of these lines to each other. This can&#039;t be used with the t switch.&lt;br /&gt;
|-&lt;br /&gt;
| s      || makes the status window the infile.&lt;br /&gt;
|-&lt;br /&gt;
| d      || makes the single message window the infile.&lt;br /&gt;
|-&lt;br /&gt;
| f      || tells mIRC that the infile is actually a file.&lt;br /&gt;
|-&lt;br /&gt;
| k     || indicates that you have specified an &amp;lt;alias&amp;gt; as the output instead of a window name. The alias will be called with the result of each filtered line.&lt;br /&gt;
|-&lt;br /&gt;
| w      || tells mIRC that the infile is actually a window.&lt;br /&gt;
|-&lt;br /&gt;
| x      || excludes matching lines.&lt;br /&gt;
|-&lt;br /&gt;
| n      || prefixes lines with a line number.&lt;br /&gt;
|-&lt;br /&gt;
| p      || wraps the text output in a custom window.&lt;br /&gt;
|-&lt;br /&gt;
| r     || specifies the range of lines n to n2 for filtering.&lt;br /&gt;
|-&lt;br /&gt;
| i      || indicates that you have provided a [dialog id] custom dialog control as the input.&lt;br /&gt;
|-&lt;br /&gt;
| o      || indicates that you have provided a [dialog id] custom dialog control as the output.&lt;br /&gt;
|-&lt;br /&gt;
| c      || clears the output window/file before writing to it.&lt;br /&gt;
|-&lt;br /&gt;
| t      || sorts the output based on [c s], column C (number) using character S (ascii-code) as the columns separator. This can&#039;t be used with the a switch.&lt;br /&gt;
|-&lt;br /&gt;
| e     || specifies a descending sort.&lt;br /&gt;
|-&lt;br /&gt;
| u      || specifies a numeric sort.&lt;br /&gt;
|-&lt;br /&gt;
| b      || strips BURK codes when matching text.&lt;br /&gt;
|-&lt;br /&gt;
| g      || indicates that matchtext is a regular expression.&lt;br /&gt;
|-&lt;br /&gt;
| l      || filters from the side-listbox in the first window.&lt;br /&gt;
|-&lt;br /&gt;
| L     || filters from the side-listbox in the second window&lt;br /&gt;
|-&lt;br /&gt;
| z     || retains line colors when filtering between custom windows.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; that you can filter blank lines by specifying $crlf for the matchtext.&lt;br /&gt;
&lt;br /&gt;
The $filtered identifier is filled with the number of matches found, if any.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some important facts about /filter:&lt;br /&gt;
* If you specify an window as output, it has to be created &#039;&#039;&#039;first&#039;&#039;&#039;. mIRC will not create one. Contrary to that, mIRC will create files, if they do not exist.&lt;br /&gt;
* If no matchtext is specified, all lines with be copied.&lt;br /&gt;
* The specied windows / files must be in the correct order (-fw copies from file to window, -wf from window to file).&lt;br /&gt;
== Example ==&lt;br /&gt;
For some of the examples, you will need:&lt;br /&gt;
* a custom window. Open it with [[Window|/window]] -e @filtertest&lt;br /&gt;
* a text file. Make a blank one with [[Write|/write]] -c filtertest.txt&lt;br /&gt;
&lt;br /&gt;
=== Simple copying from files and windows ===&lt;br /&gt;
 ; This will copy your entire mIRC.ini in the @filtertest window.&lt;br /&gt;
 filter -fw mIRC.ini @filtertest&lt;br /&gt;
 ; creates another window called @filtertest2, then copies only lines from @filtertest that begin with a open square bracket [.&lt;br /&gt;
 [[window]] @filtertest2 | filter -ww @filtertest @filtertest2 [*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ; Copies the entire versions.txt to your filtertest window, with clearing it before.&lt;br /&gt;
 filter -cfw versions.txt @filtertest&lt;br /&gt;
 ; Copies all lines with &#039;&#039;change&#039;&#039; in it to @filtertest, with clearing it before again.&lt;br /&gt;
 filter -cww @filtertest @filtertest *change*&lt;br /&gt;
&lt;br /&gt;
=== Filtering lines === &lt;br /&gt;
 ; This will filter every line in the Status Window that ends with &amp;quot;Unknown command.&amp;quot; into a file called unknown.txt&lt;br /&gt;
 filter -sf unknown.txt *Unknown command.&lt;br /&gt;
&lt;br /&gt;
 ; Loads all lines from versions.txt into the Status Window&lt;br /&gt;
 filter -fs versions.txt anytext&lt;br /&gt;
&lt;br /&gt;
 ; Filter only lines 56 to 87 of versions.txt to the Status Window&lt;br /&gt;
 filter -rfs 56-87 versions.txt anytext&lt;br /&gt;
&lt;br /&gt;
=== Excluding text ===&lt;br /&gt;
 ; Filters all lines from #help.script to our @filtertest window but exclude lines that contain &amp;quot;you suck&amp;quot; &lt;br /&gt;
 filter -cxww #help.script @filtertest *you suck*&lt;br /&gt;
&lt;br /&gt;
 ; Remove all lines from #help.script.log that start with -AnnoyingNoticer-.&lt;br /&gt;
 ; Note that &#039;&#039;ff&#039;&#039; tells mIRC that we want to filter the files, not the channel window.&lt;br /&gt;
 filter -cxff #help.script.log #help.script.log -AnnoyingNoticer-*&lt;br /&gt;
&lt;br /&gt;
=== Filtering Dialogs ===&lt;br /&gt;
 ; Save the contents of a listbox ID 3 in a dialog called &amp;quot;jukebox&amp;quot; to favorites.txt, making sure the text file is cleared before outputting to it&lt;br /&gt;
 filter -cif jukebox 3 favorites.txt&lt;br /&gt;
&lt;br /&gt;
 ; Example 28: Another similar song list, this time we don&#039;t want to save the songs that are in  C:\Music\Awful\&lt;br /&gt;
 filter -xcif jukebox 3 favorites.txt *C:\Music\Awful\*&lt;br /&gt;
&lt;br /&gt;
=== Filtering nicklist ===&lt;br /&gt;
 ; Filter the nicklist in the channel #help.script to a custom window called @#help.script_filter&lt;br /&gt;
 filter -lw #help.script @#help.script_filter&lt;br /&gt;
&lt;br /&gt;
=== Filtering with custom alias ===&lt;br /&gt;
 ; lets make a little alias comparing two numbers&lt;br /&gt;
 [[alias]] sortnumber {&lt;br /&gt;
  [[return]] [[$iif]]([[$1-|$1]] &amp;gt; $2, 1, $iif($1 == $2,0,-1))&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 ; now let&#039;s fill a window with 1000 random numbers&lt;br /&gt;
 [[var]] %i = 1&lt;br /&gt;
 ; lets loop from 1 to 1000&lt;br /&gt;
 [[while]] (%i &amp;lt;= 1000) {&lt;br /&gt;
  ; and add a random number to the window&lt;br /&gt;
  aline @filtertest $rand(1,999999)&lt;br /&gt;
  [[inc]] %i&lt;br /&gt;
 }&lt;br /&gt;
 ; lets make a second custom window&lt;br /&gt;
 [[window]] @filtertest2&lt;br /&gt;
 ; now lets sort all the numbers and put them to the new window&lt;br /&gt;
 filter -aww @filtertest @filtertest2 sortnumber&lt;br /&gt;
&lt;br /&gt;
=== Filtering a scoreboard file ===&lt;br /&gt;
Lets say this is our scoreboard.txt file:&lt;br /&gt;
 Albie 666 Ave IT :f&lt;br /&gt;
 Dana 123 I&#039;m the queen!&lt;br /&gt;
 Q 690 I love my 69...0&lt;br /&gt;
 God 34 I wish I was Albie&lt;br /&gt;
 G 1 I wish i was dana :&amp;lt;&lt;br /&gt;
 Fishbot 17 Fish go moo.&lt;br /&gt;
First is the nick, then their score, followed by their comment.&lt;br /&gt;
&lt;br /&gt;
 filter -tffceu 2 32 scoreboard.txt scoreboard.txt&lt;br /&gt;
&lt;br /&gt;
The output now looks like this, with the highest score on top (Q with 690) and the lowest on the bottem (G with 1):&lt;br /&gt;
 Q 690 I love my 69...0&lt;br /&gt;
 Albie 666 Ave IT :f&lt;br /&gt;
 Dana 123 I&#039;m the queen!&lt;br /&gt;
 God 34 I wish I was Albie&lt;br /&gt;
 Fishbot 17 Fish go moo.&lt;br /&gt;
 G 1 I wish i was dana :&amp;lt;&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;Explanation&#039;&#039; ====&lt;br /&gt;
*The -t flag means that filter will sort using the options &#039;&#039;2 32&#039;&#039;.  The second token, delimited by ascii 32 (space)&lt;br /&gt;
*The -ff flags mean the input and output is both scoreboard.txt, which is a filename.&lt;br /&gt;
*The -c clears the output target before writing the output.&lt;br /&gt;
*The -eu mean sort numerically (u) in descending order (e).&lt;br /&gt;
[[Category:Commands]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=While_loops&amp;diff=1743</id>
		<title>While loops</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=While_loops&amp;diff=1743"/>
		<updated>2007-01-27T13:35:28Z</updated>

		<summary type="html">&lt;p&gt;Microbe: mostly modified links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==While loops==&lt;br /&gt;
&lt;br /&gt;
While loops allow you to repeat a set of commands while the expression inside the brackets is [[$true]].&lt;br /&gt;
&lt;br /&gt;
 while (expression) { commands }&lt;br /&gt;
&lt;br /&gt;
The expression is evaluated in the same manner as [[If-Then-Else]] expressions are evaluted and it uses the same operators. If the expression is $true the commands inside the brackets are run while the expression remains $true.&lt;br /&gt;
&lt;br /&gt;
You can break out of the while loop by issuing the [[break]] command, or jump to the start of the while loop by issuing the [[continue]] command.&lt;br /&gt;
&lt;br /&gt;
Every time the while loop jumps back to the top, the expression is re-evaluated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; If the expression evaluation changes to [[$false]] during the while loop you will not break out of the while loop until the while loop has reached the end of its contents.&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
Example shows how to get a list of users in the channel:&lt;br /&gt;
 [[var]] %i = [[$nick]](#,0)  ;Sets &#039;&#039;%i&#039;&#039; to the amount of users in the channel.&lt;br /&gt;
 while (%i) {&lt;br /&gt;
   var %nick = $nick(#,%i) ;Find the &#039;&#039;n&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt;&#039;&#039; user in the channel.&lt;br /&gt;
   var %people = [[$addtok]](%people,%nick,44)  ;Add &#039;&#039;%nick&#039;&#039; to &#039;&#039;%people&#039;&#039; using [[$chr]](44) (a comma) as the delimiter.&lt;br /&gt;
   [[dec]] %i&lt;br /&gt;
 }&lt;br /&gt;
 [[echo]] -ag Current channel users: %people&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example shows how to loop through all channels and echo the number of people in these channels.&lt;br /&gt;
 var %i = 1&lt;br /&gt;
 ; loop from 1 to total number of channels&lt;br /&gt;
 while (%i &amp;lt;= [[$chan]](0)) {&lt;br /&gt;
  ; echo it&lt;br /&gt;
  echo -ag Channel: $chan(%i) Nicks: $nick($chan(%i),0)&lt;br /&gt;
  ; increase looping variable&lt;br /&gt;
  inc %i&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example shows how to loop though from 1 to 50:&lt;br /&gt;
 var %from = 1&lt;br /&gt;
 var %to = 50&lt;br /&gt;
 while (%from &amp;lt;= %to) {&lt;br /&gt;
   echo -ag I know I can count to %from&lt;br /&gt;
   [[inc]] %from&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
Example shows how to use the break command:&lt;br /&gt;
 var %i = 1&lt;br /&gt;
 while (%i) {&lt;br /&gt;
   echo -ag [[$chr]](37) [[DollarPlus|$+]] i = %i&lt;br /&gt;
   if (%i == 10) { break }  ;If &#039;&#039;%i&#039;&#039; has a value of &#039;&#039;10&#039;&#039; then exit the while loop, missing out any commands still left to be executed inside the while loop.&lt;br /&gt;
   inc %i&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Example shows how to use the continue command.  It will echo everything from 1 to 10 except 5, as it jumps to the begin of the loop before coming to the echo command.&lt;br /&gt;
 var %i = 0&lt;br /&gt;
 while (%i &amp;lt; 10) {&lt;br /&gt;
  inc %i&lt;br /&gt;
  if (%i == 5) { continue }  ;If &#039;&#039;%i&#039;&#039; has a value of &#039;&#039;5&#039;&#039; then jump to the start of the while loop, missing out the echo below.&lt;br /&gt;
  echo -ag $chr(37) $+ i == %i&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example shows how to loop through a text file. Let&#039;s assume we have a &amp;quot;foo.txt&amp;quot; looking like &lt;br /&gt;
 This is line1&lt;br /&gt;
 This is line2&lt;br /&gt;
 This is line3&lt;br /&gt;
&lt;br /&gt;
To loop through it, you&#039;d have to use:&lt;br /&gt;
 var %i = 1&lt;br /&gt;
 ; $lines returns the total number of lines in a file&lt;br /&gt;
 while (%i &amp;lt;= [[$lines]](foo.txt)) {&lt;br /&gt;
  echo -a [[$read]](foo.txt,%i)&lt;br /&gt;
  inc %i&lt;br /&gt;
 }&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[If-Then-Else]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Commands]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Custom_Windows&amp;diff=2259</id>
		<title>Custom Windows</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Custom_Windows&amp;diff=2259"/>
		<updated>2006-11-23T23:06:18Z</updated>

		<summary type="html">&lt;p&gt;Microbe: NOW continued a bit. hopefully works.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
Custom windows are windows that can be created by the user and modified to look like almost anything. They can play any type or a role you wish: they can for example replace normal channel windows or they can be used to filter messages from queries.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;/window [-abBcCdeEfg[N]hikl[N]mnoprRsvwxz] [-tN,..,N] [+bdeflLmnstx] &amp;lt;@name&amp;gt; [x y [w h]] [/command] [popup.txt] [font [size]] [iconfile [N]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explanations of the different switches:&lt;br /&gt;
&lt;br /&gt;
 a	   = activate the window&lt;br /&gt;
 b	   = update horizontal scrollbar width for listbox (TODO: better explanation?)&lt;br /&gt;
 B	   = prevent the window from using an internal border&lt;br /&gt;
 c	   = close the window&lt;br /&gt;
 C	   = center window when first created&lt;br /&gt;
 d	   = open the window as a desktop window&lt;br /&gt;
 D	   = allows toggling of the window between mirc window and desktop&lt;br /&gt;
 e	   = add a single-line editbox to the window&lt;br /&gt;
 E	   = add a multi-line editbox to the window&lt;br /&gt;
 f	   = indicates that w h are the required width and height of the text display area as opposed to the window&#039;s size (TODO: huh?)&lt;br /&gt;
 g[N]	   = sets/removes hilight for a window button, 0 = none, 1 = message color, 2 = hilight color. Default = TODO?&lt;br /&gt;
 h	   = hide window button from the switchbar. The window can still be modified and closed normally. To reverse, use -w or -z.&lt;br /&gt;
 H	   = enables auto-hide for a side-listbox (TODO: huh?)&lt;br /&gt;
 i	   = dynamically associate with whatever happens to be the active connection (TODO: huh?)&lt;br /&gt;
 k[N]	   = hides the @ prefix in the window name, 0 = hide prefix, 1 = show prefix. Default = 0.&lt;br /&gt;
 l[N]	   = listbox, if N is specified then a side-listbox N characters wide is created. If no N is given, the default size is used.&lt;br /&gt;
 m	   = allow line marker to be used in window. The line marker can be turned on by Ctrl+L.&lt;br /&gt;
 n[N]	   = minimize window, 2 = minimize without auto-expanding item in treebar (TODO: huh?)&lt;br /&gt;
 o	   = if opened on desktop, place ontop of all other desktop windows&lt;br /&gt;
 p	   = creates a [[Picture_Windows|picture window]]&lt;br /&gt;
 r	   = restore window (TODO: huh?)&lt;br /&gt;
 R	   = reset window&#039;s size and position to previously saved values&lt;br /&gt;
 s	   = sort the main window, whether text or listbox (TODO: alphabetically or what?)&lt;br /&gt;
 S	   = sort the side-listbox (TODO: ...)&lt;br /&gt;
 u	   = if the window was created with -o, remove ontop setting of the window&lt;br /&gt;
 v	   = close window when associated status window is closed (TODO: huh?)&lt;br /&gt;
 w[N]	   = where 0 = hide from switchbar/treebar, 1 = show in switchbar, 2 = show in treebar, 3 = show in both (TODO: Default?)&lt;br /&gt;
 x	   = maximize window&lt;br /&gt;
 z	   = place window button at the end of the switchbar&lt;br /&gt;
 t[N,...,N] = tab positions in a listbox. If text contains tabs it will be spaced out according to these tab settings (TODO: doesn&#039;t explain anything?)&lt;br /&gt;
&lt;br /&gt;
The switches that start with + are used to change the appearance of the window:&lt;br /&gt;
&lt;br /&gt;
 b = use a border&lt;br /&gt;
 d = don&#039;t use a border&lt;br /&gt;
 e = 3d edges&lt;br /&gt;
 f = dialog frame (make it look more like a dialog)&lt;br /&gt;
 l = tool window (TODO: huh? can&#039;t remember)&lt;br /&gt;
 L = tool window but window won&#039;t appear in taskbar (TODO: ...)&lt;br /&gt;
 n = minimize box (TODO: what box?)&lt;br /&gt;
 s = make the window sizable&lt;br /&gt;
 t = add only the &amp;quot;x&amp;quot; button to the upper right corner&lt;br /&gt;
 x = maximize box (TODO: what box?)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; some switches may automatically turn other switches on/off.&lt;br /&gt;
&lt;br /&gt;
The rest of the command options:&lt;br /&gt;
&lt;br /&gt;
 @name	= window name (must prefix with a @ even if the @ would be left out from its title)&lt;br /&gt;
 x,y,w,h	= position in x-axis, position in y-axis, width, height&lt;br /&gt;
 popup.txt	= popup filename to be used for the window, loaded when needed (must be a plain non-ini text file)&lt;br /&gt;
 /command	= default command (executed whenever you enter text in an editbox) (TODO: in any editbox or?)&lt;br /&gt;
 font/size	= font name and size to be used in the window (defaults to status window font)&lt;br /&gt;
 iconfile/N	= sets the titlebar icon for the window&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; if you use -1 for any of the x,y,w,h values, the default value is used unless the window already exists in which case the current value is used.&lt;br /&gt;
&lt;br /&gt;
It isn&#039;t easy to understand what all of these switches are for. If you are new to custom windows, you should simply try them out and see what they do. Pretty fast you will be able to make the window look like what you want it to.&lt;br /&gt;
When you have created a window that looks what you want it to look like, the next step is to add functionality and content to it.&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Custom_Windows&amp;diff=1696</id>
		<title>Custom Windows</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Custom_Windows&amp;diff=1696"/>
		<updated>2006-11-23T23:02:44Z</updated>

		<summary type="html">&lt;p&gt;Microbe: Reverted edit of Microbe, changed back to last version by Cail&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
Custom windows are windows that can be created by the user and modified to look like almost anything. They can play any type or a role you wish: they can for example replace normal channel windows or they can be used to filter messages from queries.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;/window [-abBcCdeEfg[N]hikl[N]mnoprRsvwxz] [-tN,..,N] [+bdeflLmnstx] &amp;lt;@name&amp;gt; [x y [w h]] [/command] [popup.txt] [font [size]] [iconfile [N]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explanations of the different switches:&lt;br /&gt;
&lt;br /&gt;
 a	   = activate the window&lt;br /&gt;
 b	   = update horizontal scrollbar width for listbox (TODO: better explanation?)&lt;br /&gt;
 B	   = prevent the window from using an internal border&lt;br /&gt;
 c	   = close the window&lt;br /&gt;
 C	   = center window when first created&lt;br /&gt;
 d	   = open the window as a desktop window&lt;br /&gt;
 D	   = allows toggling of the window between mdi and desktop (TODO: what&#039;s this?)&lt;br /&gt;
 e	   = add a single-line editbox to the window&lt;br /&gt;
 E	   = add a multi-line editbox to the window&lt;br /&gt;
 f	   = indicates that w h are the required width and height of the text display area as opposed to the window&#039;s size (TODO: huh?)&lt;br /&gt;
 g[N]	   = sets/removes hilight for a window button, 0 = none, 1 = message color, 2 = hilight color. Default = TODO?&lt;br /&gt;
 h	   = hide window button from the switchbar. The window can still be modified and closed normally. To reverse, use -w or -z.&lt;br /&gt;
 H	   = enables auto-hide for a side-listbox (TODO: huh?)&lt;br /&gt;
 i	   = dynamically associate with whatever happens to be the active connection (TODO: huh?)&lt;br /&gt;
 k[N]	   = hides the @ prefix in the window name, 0 = hide prefix, 1 = show prefix. Default = 0.&lt;br /&gt;
 l[N]	   = listbox, if N is specified then a side-listbox N characters wide is created. If no N is given, the default size is used.&lt;br /&gt;
 m	   = allow line marker to be used in window. The line marker can be turned on by Ctrl+L.&lt;br /&gt;
 n[N]	   = minimize window, 2 = minimize without auto-expanding item in treebar (TODO: huh?)&lt;br /&gt;
 o	   = if opened on desktop, place ontop of all other desktop windows&lt;br /&gt;
 p	   = creates a [[Picture_Windows|picture window]]&lt;br /&gt;
 r	   = restore window (TODO: huh?)&lt;br /&gt;
 R	   = reset window&#039;s size and position to previously saved values&lt;br /&gt;
 s	   = sort the main window, whether text or listbox (TODO: alphabetically or what?)&lt;br /&gt;
 S	   = sort the side-listbox (TODO: ...)&lt;br /&gt;
 u	   = if the window was created with -o, remove ontop setting of the window&lt;br /&gt;
 v	   = close window when associated status window is closed (TODO: huh?)&lt;br /&gt;
 w[N]	   = where 0 = hide from switchbar/treebar, 1 = show in switchbar, 2 = show in treebar, 3 = show in both (TODO: Default?)&lt;br /&gt;
 x	   = maximize window&lt;br /&gt;
 z	   = place window button at the end of the switchbar&lt;br /&gt;
 t[N,...,N] = tab positions in a listbox. if text contains tabs it will be spaced out according to these tab settings&lt;br /&gt;
&lt;br /&gt;
The switches that start with + are used to change the appearance of the window:&lt;br /&gt;
&lt;br /&gt;
 b = use a border&lt;br /&gt;
 d = don&#039;t use a border&lt;br /&gt;
 e = 3d edges&lt;br /&gt;
 f = dialog frame (make it look more like a dialog)&lt;br /&gt;
 l = tool window (TODO: huh? can&#039;t remember)&lt;br /&gt;
 L = tool window but window won&#039;t appear in taskbar (TODO: ...)&lt;br /&gt;
 n = minimize box (TODO: what box?)&lt;br /&gt;
 s = make the window sizable&lt;br /&gt;
 t = add only the &amp;quot;x&amp;quot; button to the upper right corner&lt;br /&gt;
 x = maximize box (TODO: what box?)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; some switches may automatically turn other switches on/off.&lt;br /&gt;
&lt;br /&gt;
The rest of the command options:&lt;br /&gt;
&lt;br /&gt;
 @name	= window name (must prefix with a @ even if the @ would be left out from its title)&lt;br /&gt;
 x,y,w,h	= position in x-axis, position in y-axis, width, height&lt;br /&gt;
 popup.txt	= popup filename to be used for the window, loaded when needed (must be a plain non-ini text file)&lt;br /&gt;
 /command	= default command (executed whenever you enter text in an editbox) (TODO: in any editbox or?)&lt;br /&gt;
 font/size	= font name and size to be used in the window (defaults to status window font)&lt;br /&gt;
 iconfile/N	= sets the titlebar icon for the window&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; if you use -1 for any of the x,y,w,h values, the default value is used unless the window already exists in which case the current value is used.&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Custom_Windows&amp;diff=1695</id>
		<title>Custom Windows</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Custom_Windows&amp;diff=1695"/>
		<updated>2006-11-23T23:01:14Z</updated>

		<summary type="html">&lt;p&gt;Microbe: continued a bit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Custom_Windows&amp;diff=1693</id>
		<title>Custom Windows</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Custom_Windows&amp;diff=1693"/>
		<updated>2006-11-23T22:41:44Z</updated>

		<summary type="html">&lt;p&gt;Microbe: Start for custom windows page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
Custom windows are windows that can be created by the user and modified to look like almost anything. They can play any type or a role you wish: they can for example replace normal channel windows or they can be used to filter messages from queries.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;/window [-abBcCdeEfg[N]hikl[N]mnoprRsvwxz] [-tN,..,N] [+bdeflLmnstx] &amp;lt;@name&amp;gt; [x y [w h]] [/command] [popup.txt] [font [size]] [iconfile [N]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explanations of the different switches:&lt;br /&gt;
&lt;br /&gt;
 a	= activate the window&lt;br /&gt;
 b	= update horizontal scrollbar width for listbox (TODO: better explanation?)&lt;br /&gt;
 B	= prevent the window from using an internal border&lt;br /&gt;
 c	= close the window&lt;br /&gt;
 C	= center window when first created&lt;br /&gt;
 d	= open the window as a desktop window&lt;br /&gt;
 D	= allows toggling of the window between mdi and desktop (TODO: what&#039;s this?)&lt;br /&gt;
 e	= add a single-line editbox to the window&lt;br /&gt;
 E	= add a multi-line editbox to the window&lt;br /&gt;
 f	= indicates that w h are the required width and height of the text display area as opposed to the window&#039;s size (TODO: huh?)&lt;br /&gt;
 g[N]	= sets/removes hilight for a window button, 0 = none, 1 = message color, 2 = hilight color. Default = TODO?&lt;br /&gt;
 h	= hide window button from the switchbar. The window can still be modified and closed normally. To reverse, use -w or -z.&lt;br /&gt;
 H	= enables auto-hide for a side-listbox (TODO: huh?)&lt;br /&gt;
 i	= dynamically associate with whatever happens to be the active connection (TODO: huh?)&lt;br /&gt;
 k[N]	= hides the @ prefix in the window name, 0 = hide prefix, 1 = show prefix. Default = 0.&lt;br /&gt;
 l[N]	= listbox, if N is specified then a side-listbox N characters wide is created. If no N is given, the default size is used.&lt;br /&gt;
 m	= allow line marker to be used in window. The line marker can be turned on by Ctrl+L.&lt;br /&gt;
 n[N]	= minimize window, 2 = minimize without auto-expanding item in treebar (TODO: huh?)&lt;br /&gt;
 o	= if opened on desktop, place ontop of all other desktop windows&lt;br /&gt;
 p	= creates a [[Picture_Windows|picture window]]&lt;br /&gt;
 r	= restore window (TODO: huh?)&lt;br /&gt;
 R	= reset window&#039;s size and position to previously saved values&lt;br /&gt;
 s	= sort the main window, whether text or listbox (TODO: alphabetically or what?)&lt;br /&gt;
 S	= sort the side-listbox (TODO: ...)&lt;br /&gt;
 u	= if the window was created with -o, remove ontop setting of the window&lt;br /&gt;
 v	= close window when associated status window is closed (TODO: huh?)&lt;br /&gt;
 w[N]	= where 0 = hide from switchbar/treebar, 1 = show in switchbar, 2 = show in treebar, 3 = show in both (TODO: Default?)&lt;br /&gt;
 x	= maximize window&lt;br /&gt;
 z	= place window button at the end of the switchbar&lt;br /&gt;
&lt;br /&gt;
(TODO: Someone explain -t)&lt;br /&gt;
&lt;br /&gt;
The switches that start with + are used to change the appearance of the window:&lt;br /&gt;
&lt;br /&gt;
 b = use a border&lt;br /&gt;
 d = don&#039;t use a border&lt;br /&gt;
 e = 3d edges&lt;br /&gt;
 f = dialog frame (make it look more like a dialog)&lt;br /&gt;
 l = tool window (TODO: huh? can&#039;t remember)&lt;br /&gt;
 L = tool window but window won&#039;t appear in taskbar (TODO: ...)&lt;br /&gt;
 n = minimize box (TODO: what box?)&lt;br /&gt;
 s = make the window sizable&lt;br /&gt;
 t = add only the &amp;quot;x&amp;quot; button to the upper right corner&lt;br /&gt;
 x = maximize box (TODO: what box?)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; some switches may automatically turn other switches on/off.&lt;br /&gt;
&lt;br /&gt;
The rest of the command options:&lt;br /&gt;
&lt;br /&gt;
 @name	= window name (must prefix with a @ even if the @ would be left out from its title)&lt;br /&gt;
 x,y,w,h	= position in x-axis, position in y-axis, width, height&lt;br /&gt;
 popup.txt	= popup filename to be used for the window, loaded when needed (must be a plain non-ini text file)&lt;br /&gt;
 /command	= default command (executed whenever you enter text in an editbox) (TODO: in any editbox or?)&lt;br /&gt;
 font/size	= font name and size to be used in the window (defaults to status window font)&lt;br /&gt;
 iconfile/N	= sets the titlebar icon for the window&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; if you use -1 for any of the x,y,w,h values, the default value is used unless the window already exists in which case the current value is used.&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=News&amp;diff=2226</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=News&amp;diff=2226"/>
		<updated>2006-11-23T22:03:49Z</updated>

		<summary type="html">&lt;p&gt;Microbe: mIRC 6.21 news&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Use ~ four times to get signature with timestamp, also available at the toolbar, second button from right --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Copy&amp;amp;Paste: {{newsWriter|~ four times}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== mIRC 6.21 is out ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 23:03, 23 Nov 2006 (CET)}}&lt;br /&gt;
&lt;br /&gt;
mIRC version 6.21 was just released. Read more about it and download it at [http://www.mirc.com www.mirc.com].&lt;br /&gt;
&lt;br /&gt;
== mIRC 6.2 is out ==&lt;br /&gt;
{{newsWriter|[[User:Cail|Cail]] 14:48, 27 Aug 2006 (CET)}}&lt;br /&gt;
&lt;br /&gt;
mIRC 6.2 was released July 28th 2006, get it at [http://www.mirc.com www.mirc.com]. Take a look at the [[MIRC 6.2|list of changes]] aswell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Changes to Scriptwiki ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 00:39, 5 May 2006 (CEST)}}&lt;br /&gt;
&lt;br /&gt;
Scriptwiki has gone through some changes, again. It has been made an official QuakeNet wiki and recruiting new editors has been made easier - the process should now be far faster and more user-friendly. So if you&#039;re interested in contributing to this wiki, have a look at the front page&#039;s instructions.&lt;br /&gt;
&lt;br /&gt;
== mIRC 6.17 is out ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 00:31, 18 Feb 2006 (CET)}}&lt;br /&gt;
&lt;br /&gt;
mIRC version 6.17 has been released an hour ago. Read more about it and download it at [http://www.mirc.com www.mirc.com].&lt;br /&gt;
&lt;br /&gt;
== Scriptwiki has been globalized ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 04:03, 4 Feb 2006 (CET)}}&lt;br /&gt;
&lt;br /&gt;
Scriptwiki has gone through some changes. The project started as a small one-channel project, but it is now released &amp;quot;to the wild&amp;quot;. People interested to contribute to this wiki are encouraged to contact us, especially from other networks than QuakeNet. At the moment this wiki is dedicated more towards QuakeNet users, but we are hoping that this will change in the future. Users from every network should be able to get the information they need from here, especially network-specific raw events.&lt;br /&gt;
&lt;br /&gt;
So if you want to contribute to the only wiki dedicated to mIRC scripting (at least at the moment), see the main page for more information.&lt;br /&gt;
&lt;br /&gt;
== Welcome to Scriptwiki ==&lt;br /&gt;
{{newsWriter|[[User:Tovrleaf|Tovrleaf]] 22:53, 15 Sep 2005 (CEST)}}&lt;br /&gt;
&lt;br /&gt;
Hi, and welcome to our new published &#039;&#039;&#039;Scriptwiki&#039;&#039;&#039;. Scriptwiki (as we call it) is our new lifelong project which won&#039;t probably ever be finished. It shall be developed and expanded along with mIRC and new scripting skills.&lt;br /&gt;
&lt;br /&gt;
Special thanks to all users who have helped us to get this to shape and to create a more user friendly wiki and articles.&lt;br /&gt;
&lt;br /&gt;
If you think this wiki is missing some essential articles, there&#039;s a page to [[Special:Request|request]] new articles for it. And don&#039;t forget to give us [[:Special:SendComment|feedback]], comments, ideas or new suggestions.&lt;br /&gt;
&lt;br /&gt;
== Scriptwiki starting ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 12:53, 24 Aug 2005 (CEST)}}&lt;br /&gt;
&lt;br /&gt;
Scriptwiki starting to get in shape&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Category:Members&amp;diff=1814</id>
		<title>Category:Members</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Category:Members&amp;diff=1814"/>
		<updated>2006-10-07T17:39:30Z</updated>

		<summary type="html">&lt;p&gt;Microbe: added Ollie as a new editor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Wiki Admins ==&lt;br /&gt;
&lt;br /&gt;
* [[User:BlackShroud|BlackShroud]]&lt;br /&gt;
* [[User:Doomie|Doomie]]&lt;br /&gt;
* [[User:Kr3L1S|Kr3L1S]]&lt;br /&gt;
* [[User:Microbe|Microbe]]&lt;br /&gt;
* [[User:Saturn|Saturn]]&lt;br /&gt;
* [[User:Tovrleaf|Tovrleaf]]&lt;br /&gt;
* [[User:Voronoi|Voronoi]]&lt;br /&gt;
* [[User:wiebe|wiebe]]&lt;br /&gt;
* [[User:Zyberdog|Zyberdog]]&lt;br /&gt;
&lt;br /&gt;
== Wiki Editors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:Albie|Albie]]&lt;br /&gt;
* [[User:Cail|Cail]]&lt;br /&gt;
* [[User:Ollie|Ollie]]&lt;br /&gt;
* [[User:Shenghi|Shenghi]]&lt;br /&gt;
* [[User:Vliedel|Vliedel]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=$regml&amp;diff=1619</id>
		<title>$regml</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=$regml&amp;diff=1619"/>
		<updated>2006-09-11T09:17:21Z</updated>

		<summary type="html">&lt;p&gt;Microbe: Added a null page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
[[Category:Regular_Expression]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=$regex&amp;diff=1618</id>
		<title>$regex</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=$regex&amp;diff=1618"/>
		<updated>2006-09-11T09:16:57Z</updated>

		<summary type="html">&lt;p&gt;Microbe: added stub&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
[[Category:Regular_Expression]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=$regsub&amp;diff=1620</id>
		<title>$regsub</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=$regsub&amp;diff=1620"/>
		<updated>2006-09-11T09:16:34Z</updated>

		<summary type="html">&lt;p&gt;Microbe: added null page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
[[Category:Regular_Expression]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=$regsub&amp;diff=1548</id>
		<title>$regsub</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=$regsub&amp;diff=1548"/>
		<updated>2006-09-11T09:15:51Z</updated>

		<summary type="html">&lt;p&gt;Microbe: added null page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Regular_Expression]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=$regex&amp;diff=1549</id>
		<title>$regex</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=$regex&amp;diff=1549"/>
		<updated>2006-09-11T09:15:03Z</updated>

		<summary type="html">&lt;p&gt;Microbe: added null page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Regular_Expression]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Category:Regular_Expression&amp;diff=2148</id>
		<title>Category:Regular Expression</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Category:Regular_Expression&amp;diff=2148"/>
		<updated>2006-09-11T09:12:45Z</updated>

		<summary type="html">&lt;p&gt;Microbe: blah&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:MIRC Help]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Regular_Expression_basics&amp;diff=4539</id>
		<title>Regular Expression basics</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Regular_Expression_basics&amp;diff=4539"/>
		<updated>2006-09-11T09:09:52Z</updated>

		<summary type="html">&lt;p&gt;Microbe: fixed category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Regular expressions are a powerful tool for searching and replacing patterns in text. They are not among the easiest subjects in mIRC scripting, but once you learn them you can use them in any common coding language (Java, C, Perl, etc). As there are plenty of good websites around that explain regular expressions, it is pointless to start explaining it all in here.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* http://regular-expressions.info/&lt;br /&gt;
* http://www.mircscripts.org/showdoc.php?type=tutorial&amp;amp;id=989&lt;br /&gt;
&lt;br /&gt;
[[Category:Regular_Expression]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Regular_Expression_basics&amp;diff=1547</id>
		<title>Regular Expression basics</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Regular_Expression_basics&amp;diff=1547"/>
		<updated>2006-09-11T09:07:49Z</updated>

		<summary type="html">&lt;p&gt;Microbe: Added regex basics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Regular expressions are a powerful tool for searching and replacing patterns in text. They are not among the easiest subjects in mIRC scripting, but once you learn them you can use them in any common coding language (Java, C, Perl, etc). As there are plenty of good websites around that explain regular expressions, it is pointless to start explaining it all in here.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* http://regular-expressions.info/&lt;br /&gt;
* http://www.mircscripts.org/showdoc.php?type=tutorial&amp;amp;id=989&lt;br /&gt;
&lt;br /&gt;
[[Category:Regular Expression]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=How_to_start&amp;diff=1588</id>
		<title>How to start</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=How_to_start&amp;diff=1588"/>
		<updated>2006-09-11T08:50:55Z</updated>

		<summary type="html">&lt;p&gt;Microbe: added some info here and there&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is supposed to give an introduction into scripting in mIRC. It will explain the so-called &#039;&#039;Scripts-Editor&#039;&#039; and its functions, followed by a little example. At the end it will give some hints about how to debug a script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Remote Editor ==&lt;br /&gt;
&lt;br /&gt;
If you want to begin to script in mIRC, you need to open the Script-Editor. You can do it in two ways: pressing &amp;quot;Alt + R&amp;quot; or with mIRC&#039;s menubar (Tools -&amp;gt; Scripts Editor).&lt;br /&gt;
&lt;br /&gt;
If you are using a premade script (for example nnscript), you will probably see a lot of code. Note that it is difficult to implement own scripts in such a premade one, as your code may interfere with the existing code (if you want to change mIRC&#039;s default output for example). &lt;br /&gt;
&lt;br /&gt;
At first, you should open a &#039;&#039;&#039;new remote file&#039;&#039;&#039;. To do it, click on File -&amp;gt; New (see picture below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Newfile.png]]&lt;br /&gt;
&lt;br /&gt;
Note that your script files will be saved &#039;&#039;&#039;automatically&#039;&#039;&#039;; all you need to do is pressing &#039;Ok&#039;.&lt;br /&gt;
&lt;br /&gt;
The next part is about the five different tabs of mIRC&#039;s Scripts Editor:&lt;br /&gt;
&lt;br /&gt;
[[Image:scriptseditortabs.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aliases-Tab === &lt;br /&gt;
&lt;br /&gt;
Basically, you do not need to use aliases.ini (that you can edit using this tab). Usually, if you want to add a new alias, it would look like:&lt;br /&gt;
&lt;br /&gt;
 [[alias]] moo { [[return]] moo }&lt;br /&gt;
&lt;br /&gt;
in your &#039;Remote-Section&#039; of the editor (the one that&#039;s active after pressing Alt + R).&lt;br /&gt;
&lt;br /&gt;
You can add the same alias in your Aliases-Section:&lt;br /&gt;
&lt;br /&gt;
 moo { return moo }&lt;br /&gt;
&lt;br /&gt;
Notice that you don&#039;t need to write &#039;alias&#039; infront of the new alias if it&#039;s in the Aliases section and note that you cannot add events in this section.&lt;br /&gt;
&lt;br /&gt;
=== Popups-Tab ===&lt;br /&gt;
&lt;br /&gt;
Again you do not need to use this section. It&#039;s the same as using the [[menu]] alias in the remote section. Usually, there will be some menus added in this section (for example your nicklist-menu).&lt;br /&gt;
&lt;br /&gt;
[[Image:Popupsview.png]]&lt;br /&gt;
&lt;br /&gt;
=== Remote-Tab ===&lt;br /&gt;
&lt;br /&gt;
This is the &amp;quot;maintab&amp;quot;. Every script is supposed to be saved in here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; that you should not have two same events in one file, as only the first matching one will be triggered. Example:&lt;br /&gt;
&lt;br /&gt;
 ; will be triggered&lt;br /&gt;
 on *:Text:*:*: { echo moo }&lt;br /&gt;
 &lt;br /&gt;
 ; will never be triggered&lt;br /&gt;
 on 10:Text:*:*: { echo maa }&lt;br /&gt;
&lt;br /&gt;
 ; will be trigger for level 10&lt;br /&gt;
 on 10:Text:*:*: { echo maa }&lt;br /&gt;
 &lt;br /&gt;
 ; will be triggered for all but level 10&lt;br /&gt;
 on *:Text:*:*: { echo moo }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So if you aren&#039;t sure whether it will work or not, just use another (a new) file (look above to see how to make a new file). &lt;br /&gt;
&lt;br /&gt;
The following script will trigger on every &amp;quot;!moo&amp;quot; in every channel and response with &amp;quot;moo00oo00&amp;quot;:&lt;br /&gt;
 &lt;br /&gt;
 [[On_text|on *:TEXT]]:!moo:#: {&lt;br /&gt;
  [[msg]] [[$chan]] moo00oo00&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This would look like:&lt;br /&gt;
&lt;br /&gt;
[[Image:Firstscript.png]]&lt;br /&gt;
&lt;br /&gt;
If you are scripting something more complex, you want to use the &amp;quot;{}&amp;quot;-button in the upper right corner (see below). That button is used to check for bracket mis-matches in the scriptfile.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Bracket-button.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you&#039;ve pressed it and nothing happended, everything is ok (note that it doesn&#039;t mean that your scripts will work, just that there are no obvious bracket mistakes (mIRC just counts the open and closed brackets)). If something&#039;s wrong, you will get the following popup:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bracketerror.png]]&lt;br /&gt;
&lt;br /&gt;
Even if it says that the bracket error is &#039;&#039;around&#039;&#039; line 1, it could be almost anywhere. Start you search from that line and look at the indentations to find out where you&#039;re missing a bracket.&lt;br /&gt;
&lt;br /&gt;
=== Users-Tab ===&lt;br /&gt;
&lt;br /&gt;
In this file your userlist is saved. You don&#039;t need to edit it manually, as there are commands to do it. See [[auser]], [[guser]] and [[ruser]].&lt;br /&gt;
&lt;br /&gt;
=== Variables-Tab ===&lt;br /&gt;
&lt;br /&gt;
All your global variables are saved in here. Again, you don&#039;t need to edit it manually, as you can use [[set]], [[unset]] or [[unsetall]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to debug ==&lt;br /&gt;
&lt;br /&gt;
After you&#039;ve written some lines and you&#039;ve tested it, you will most likely notice, that it doesn&#039;t do what you expect it to do. The next step is to &#039;&#039;&#039;debug&#039;&#039;&#039; your script. At first take a look at your Status Window and check for error messages. If there are any, search for these errors in your script and correct them. If they aren&#039;t any, you should add [[echo]]&#039;s in your script to see where it stops to work. For example:&lt;br /&gt;
&lt;br /&gt;
 on *:TEXT:*:*: {&lt;br /&gt;
  if (%moo) { echo -a we are here }&lt;br /&gt;
  elseif (%moo2) { echo -a we are here 2 } &lt;br /&gt;
  echo -a after the if clauses&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
With this method, you can see exactly where it stops to work and correct this part.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; You cannot trigger on text, on notice, on action... events by yourself, you will need someone&#039;s help or another client or multiserver (/[[server]] -m ...) to test them.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Category:Members&amp;diff=1610</id>
		<title>Category:Members</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Category:Members&amp;diff=1610"/>
		<updated>2006-09-10T11:59:35Z</updated>

		<summary type="html">&lt;p&gt;Microbe: added cail to editors list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Wiki Admins ==&lt;br /&gt;
&lt;br /&gt;
* [[User:BlackShroud|BlackShroud]]&lt;br /&gt;
* [[User:Doomie|Doomie]]&lt;br /&gt;
* [[User:Kr3L1S|Kr3L1S]]&lt;br /&gt;
* [[User:Microbe|Microbe]]&lt;br /&gt;
* [[User:Saturn|Saturn]]&lt;br /&gt;
* [[User:Tovrleaf|Tovrleaf]]&lt;br /&gt;
* [[User:Voronoi|Voronoi]]&lt;br /&gt;
* [[User:wiebe|wiebe]]&lt;br /&gt;
* [[User:Zyberdog|Zyberdog]]&lt;br /&gt;
&lt;br /&gt;
== Wiki Editors ==&lt;br /&gt;
&lt;br /&gt;
* [[User:Albie|Albie]]&lt;br /&gt;
* [[User:Cail|Cail]]&lt;br /&gt;
* [[User:Shenghi|Shenghi]]&lt;br /&gt;
* [[User:Vliedel|Vliedel]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Q&amp;diff=2238</id>
		<title>Q</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Q&amp;diff=2238"/>
		<updated>2006-06-05T20:47:30Z</updated>

		<summary type="html">&lt;p&gt;Microbe: added as new&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Q is a service bot on [http://www.quakenet.org QuakeNet] which is meant only for big channels. You can read more about it from the [http://www.quakenet.org/faq/faq.php?c=1 Q FAQ].&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Random_password_generator&amp;diff=1414</id>
		<title>Random password generator</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Random_password_generator&amp;diff=1414"/>
		<updated>2006-06-05T20:44:38Z</updated>

		<summary type="html">&lt;p&gt;Microbe: added category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This script will allow you to generate a random password, of required length and using characters you want to.&lt;br /&gt;
&lt;br /&gt;
 ; Usage: $pwgen(length,used characters)&lt;br /&gt;
 ; Examples&lt;br /&gt;
 ; $pwgen(10,a-z A-Z)&lt;br /&gt;
 ; $pwgen(20,a-z 0-9 0-9)&lt;br /&gt;
 ; $pwgen(17,0-9 [[$chr]](36) $+ - $+ $chr(41))&lt;br /&gt;
&lt;br /&gt;
 [[alias]] pwgen {&lt;br /&gt;
   ; first we check if this alias is used as identifier&lt;br /&gt;
   if (![[$isid]]) { [[return]] }&lt;br /&gt;
   ; the next part will fill &amp;amp;chars with characters that can be picked to make the password&lt;br /&gt;
   ;&lt;br /&gt;
   ; we cycle the different sets of &amp;quot;used characters&amp;quot;&lt;br /&gt;
   [[var]] %i = [[$numtok]]($2,32)&lt;br /&gt;
   [[while]] (%i &amp;gt; 0) {&lt;br /&gt;
     var %set = [[$gettok]]($2,%i,32)&lt;br /&gt;
     ; if the length of the current set is 3, we assume its the right syntax&lt;br /&gt;
     [[if]] ([[$len]](%set) == 3) {&lt;br /&gt;
     ; get the ascii values of the two characters&lt;br /&gt;
       var %asc1 = [[$asc]]([[$left]](%set,1)) , %asc2 = $asc([[$right]](%set,1))&lt;br /&gt;
       var %j = [[$iif]](%asc1 &amp;lt; %asc2,%asc1,%asc2) , %max = $iif(%asc1 &amp;lt; %asc2,%asc2,%asc1)&lt;br /&gt;
       ; we will loop from the smallest ascii number to the largest&lt;br /&gt;
       while (%j &amp;lt;= %max) {&lt;br /&gt;
       ; we add the ascii value to the &amp;amp;chars binvar&lt;br /&gt;
         [[bset]] &amp;amp;chars [[$calc]]([[$bvar]](&amp;amp;chars,0) + 1) %j&lt;br /&gt;
         [[inc]] %j&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     [[dec]] %i&lt;br /&gt;
   }&lt;br /&gt;
   ;&lt;br /&gt;
   ; now we filled &amp;amp;chars we randomly pick characters out of &amp;amp;chars to make the password&lt;br /&gt;
   var %i = $iif([[$abs]]([[$int]]($1)) &amp;gt; 900,900,[[$v1]])&lt;br /&gt;
   ; we do this $1 times, as long as its not larger then 900&lt;br /&gt;
   ; (wich is approximate the limit of commands)&lt;br /&gt;
   while (%i &amp;gt; 0) {&lt;br /&gt;
     var %pw = %pw $+ [[$mid]](%chars,$rand(1,$len(%chars)),1)&lt;br /&gt;
     dec %i&lt;br /&gt;
   }&lt;br /&gt;
   ; and its done&lt;br /&gt;
   return %pw&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[Category:Script Archive]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Category:MIRC_Help&amp;diff=1530</id>
		<title>Category:MIRC Help</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Category:MIRC_Help&amp;diff=1530"/>
		<updated>2006-05-05T12:26:53Z</updated>

		<summary type="html">&lt;p&gt;Microbe: added guidelines link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;mIRC Help&#039;&#039;&#039; is based on [[mIRC]]&#039;s own help file.&lt;br /&gt;
&lt;br /&gt;
It basically covers everything what can be found from the original help, but is commented and expanded with wiki staff [[:Category:Members|members]]&#039; knowledge, tutorials and scripting examples.&lt;br /&gt;
&lt;br /&gt;
Syntax used in the help pages (and generally in all scripting/coding in the world):&lt;br /&gt;
* [ ] mean an optional parameter. &lt;br /&gt;
* &amp;lt; &amp;gt; mean a required parameter.&lt;br /&gt;
* a|b means either a or b (sometimes / is used aswell).&lt;br /&gt;
* -abc mean the possible switches&lt;br /&gt;
&lt;br /&gt;
Before adding or modifying &#039;&#039;&#039;anything&#039;&#039;&#039; in here, read the [[Guidelines|general editing guidelines]].&lt;br /&gt;
&lt;br /&gt;
[[Category:mIRC]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Guidelines&amp;diff=2236</id>
		<title>Guidelines</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Guidelines&amp;diff=2236"/>
		<updated>2006-05-05T12:22:29Z</updated>

		<summary type="html">&lt;p&gt;Microbe: clarified some places and removed irrelevant parts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As this wiki is supposed to be very user-friendly, all articles should follow the guidelines listed in here. Please note that we will not accept any articles not following these rules and reserve the right to block your account in case you break these rules repeatedly.&lt;br /&gt;
&lt;br /&gt;
Feel free to ask any editor if you are unsure about specific subjects. To get an example, just take a look at already added articles.&lt;br /&gt;
&lt;br /&gt;
== Guidelines ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you wish to add comments to your examples (to the same &#039;example box&#039;) in the article, you can do it either by adding two spaces and a ; (like: echo -a blah  ;this is an echo) OR adding the comment to the next line, starting it with a space and a ;. Comments outside the &#039;example box&#039; shouldn&#039;t include the ;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Topic (the name of the page) examples&#039;&#039;&#039;&lt;br /&gt;
* $variable &lt;br /&gt;
* Command&lt;br /&gt;
* On_join&lt;br /&gt;
* If-Then-Else&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;First line of the text&#039;&#039;&#039;&lt;br /&gt;
* Short description what it does / what it&#039;s good for.&lt;br /&gt;
** Example: Returns the Nth token in text. A token is blah blah blah.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Second line of the text&#039;&#039;&#039;&lt;br /&gt;
* The syntax, starting with a space to get a box around it.&lt;br /&gt;
** Example: (space)$gettok(text,N,C)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Next one/few line(s) of the text&#039;&#039;&#039;&lt;br /&gt;
* Explanation what the non-trivial parameters mean. The parameter(s) is/are to be inside &amp;lt;nowiki&amp;gt;&#039;&#039; &#039;&#039;&amp;lt;/nowiki&amp;gt; to make it italic.&lt;br /&gt;
** Example: &#039;&#039;C&#039;&#039; is the [[ascii]] number of the character that is set to separate the tokens blah blah.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Next one/few line(s) of the text&#039;&#039;&#039;&lt;br /&gt;
* Short example(s) how to use the command/identifier/whatever. The (possible) return value is to be inside &amp;lt;nowiki&amp;gt;&#039;&#039; &#039;&#039;&amp;lt;/nowiki&amp;gt; to make it italic.&lt;br /&gt;
** Example: //echo -a $gettok(this.is.text,2,46) returns &#039;&#039;is&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sections&#039;&#039;&#039;&lt;br /&gt;
* If the command/identifier/whatever is complex enough to be needed to demonstrate further, use &amp;lt;nowiki&amp;gt;== Examples ==&amp;lt;/nowiki&amp;gt; to start a section with more examples. Remember to add links to other wiki items  such as &amp;lt;nowiki&amp;gt;[[var]]&amp;lt;/nowiki&amp;gt; for the first occurence in each article. All example lines are to be started with a space and all return values are to be put inside &amp;lt;nowiki&amp;gt;&#039;&#039; &#039;&#039;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Add &amp;quot;See also&amp;quot; and Category&#039;&#039;&#039;&lt;br /&gt;
* It&#039;s good to add a &#039;see also&#039; section with &amp;lt;nowiki&amp;gt;== See also ==&amp;lt;/nowiki&amp;gt; at the end of the article that contains useful links to similar commands/identifiers/whatever. Remember also to add the article to the correct category/categories with adding &amp;lt;nowiki&amp;gt;[[Category:name_of_the_category]] at the end. Like [[Category:Text and Number Identifiers]]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stubs&#039;&#039;&#039;&lt;br /&gt;
* If you know your article is incomplete you can add &amp;lt;nowiki&amp;gt;{{Stub}}&amp;lt;/nowiki&amp;gt; marking it as incomplete for others/yourself to complete later on. It appears to look the best if you add the &amp;lt;nowiki&amp;gt;{{Stub}}&amp;lt;/nowiki&amp;gt; at the top of the page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shared articles&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;{{Disambling}}&amp;lt;/nowiki&amp;gt; is used to split articles into smaller pieces when article holds reference to more than one article and it&#039;s &#039;&#039;&#039;not&#039;&#039;&#039; unambiguous where it should belong. (For example [[$chan]])&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=News&amp;diff=1527</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=News&amp;diff=1527"/>
		<updated>2006-05-04T22:39:16Z</updated>

		<summary type="html">&lt;p&gt;Microbe: added news about making the wiki official quakenet wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Use ~ four times to get signature with timestamp, also available at the toolbar, second button from right --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Copy&amp;amp;Paste: {{newsWriter|~ four times}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changes to Scriptwiki ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 00:39, 5 May 2006 (CEST)}}&lt;br /&gt;
&lt;br /&gt;
Scriptwiki has gone through some changes, again. It has been made an official QuakeNet wiki and recruiting new editors has been made easier - the process should now be far faster and more user-friendly. So if you&#039;re interested in contributing to this wiki, have a look at the front page&#039;s instructions.&lt;br /&gt;
&lt;br /&gt;
== mIRC 6.17 is out ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 00:31, 18 Feb 2006 (CET)}}&lt;br /&gt;
&lt;br /&gt;
mIRC version 6.17 has been released an hour ago. Read more about it and download it at [http://www.mirc.com www.mirc.com].&lt;br /&gt;
&lt;br /&gt;
== Scriptwiki has been globalized ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 04:03, 4 Feb 2006 (CET)}}&lt;br /&gt;
&lt;br /&gt;
Scriptwiki has gone through some changes. The project started as a small one-channel project, but it is now released &amp;quot;to the wild&amp;quot;. People interested to contribute to this wiki are encouraged to contact us, especially from other networks than QuakeNet. At the moment this wiki is dedicated more towards QuakeNet users, but we are hoping that this will change in the future. Users from every network should be able to get the information they need from here, especially network-specific raw events.&lt;br /&gt;
&lt;br /&gt;
So if you want to contribute to the only wiki dedicated to mIRC scripting (at least at the moment), see the main page for more information.&lt;br /&gt;
&lt;br /&gt;
== Welcome to Scriptwiki ==&lt;br /&gt;
{{newsWriter|[[User:Tovrleaf|Tovrleaf]] 22:53, 15 Sep 2005 (CEST)}}&lt;br /&gt;
&lt;br /&gt;
Hi, and welcome to our new published &#039;&#039;&#039;Scriptwiki&#039;&#039;&#039;. Scriptwiki (as we call it) is our new lifelong project which won&#039;t probably ever be finished. It shall be developed and expanded along with mIRC and new scripting skills.&lt;br /&gt;
&lt;br /&gt;
Special thanks to all users who have helped us to get this to shape and to create a more user friendly wiki and articles.&lt;br /&gt;
&lt;br /&gt;
If you think this wiki is missing some essential articles, there&#039;s a page to [[Special:Request|request]] new articles for it. And don&#039;t forget to give us [[:Special:SendComment|feedback]], comments, ideas or new suggestions.&lt;br /&gt;
&lt;br /&gt;
== Scriptwiki starting ==&lt;br /&gt;
{{newsWriter|[[User:Microbe|Microbe]] 12:53, 24 Aug 2005 (CEST)}}&lt;br /&gt;
&lt;br /&gt;
Scriptwiki starting to get in shape&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Main_Page&amp;diff=1843</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Main_Page&amp;diff=1843"/>
		<updated>2006-05-04T22:11:48Z</updated>

		<summary type="html">&lt;p&gt;Microbe: changed according to #help.script&amp;#039;ialization&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== This Wiki ==&lt;br /&gt;
&lt;br /&gt;
Welcome to QuakeNet&#039;s Official Scriptwiki! This wiki provides you with all the necessary information to write your own scripts in mIRC&#039;s scripting language, and also offers a number of tutorials and pre-made scripts designed to make your daily life on QuakeNet easier.&lt;br /&gt;
&lt;br /&gt;
In contrast to many other wikis, normal users aren&#039;t allowed to make changes to this wiki. This way, we can ensure a certain level of quality. You are totally free to read the material, but if you want to contribute to this wiki, you have to either send an email (including your Q account name and nick) to blackshroud@quakenet.org or ask an [[Members|admin]] on #help.script to add you.&lt;br /&gt;
&lt;br /&gt;
== Script Archive ==&lt;br /&gt;
&lt;br /&gt;
You can find several prefabricated scripts in our [[:Category:Script Archive|Script Archive]], which serve as examples and can be used to build more complex scripts.&lt;br /&gt;
&lt;br /&gt;
== mIRC help ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;re not sure how a command or an identifier works, you can check it from our [[:Category:MIRC_Help|mIRC Help]] pages.&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
Our [[:Category:Tutorials|tutorials]] aim to provide a step-by-step introduction to various mIRC scripting related topics.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------&lt;br /&gt;
&lt;br /&gt;
This wiki is a project launched by [http://script.quakenet.org #help.script] on [http://www.quakenet.org QuakeNet].&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=How_to_query_a_CS_Server&amp;diff=1552</id>
		<title>How to query a CS Server</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=How_to_query_a_CS_Server&amp;diff=1552"/>
		<updated>2006-04-27T11:25:06Z</updated>

		<summary type="html">&lt;p&gt;Microbe: plenty of typos and lil changed wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you want to e.g. get the number and names of all player who are currently playing on a CS-server, you have to send a so-called &amp;quot;query&amp;quot; to this server (using UDP) and handle everything the server sends back to you. This isn&#039;t as easy as it sounds. At first, you would have to &#039;learn&#039;, or, at least, understand the protocol a CS-server uses (e.g. what do I have to send to the server to get a &#039;good&#039; reply and what&#039;s the structure of this reply). If you want to learn more about these protocols, take a look at http://dev.kquery.com/ or http://www.valve-erc.com/srcsdk/Code/Networking/serverqueries.html.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following script &#039;&#039;&#039;echo&#039;&#039;&#039;s the output to your active window. You will have to modify it to be able to use it as &#039;bot&#039;. It&#039;s a more complex script and you don&#039;t need to understand it (completely) to be able to use it.&lt;br /&gt;
&lt;br /&gt;
 ; HL server query snippet by Saturn&lt;br /&gt;
 ;&lt;br /&gt;
 ; usage:&lt;br /&gt;
 ; /hlinfo &amp;lt;ip&amp;gt; &amp;lt;port&amp;gt;&lt;br /&gt;
 ; /hlplay &amp;lt;ip&amp;gt; &amp;lt;port&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 ; the alias that opens a new socket if you want to get general information about a running CS-server&lt;br /&gt;
 [[alias]] hlinfo {&lt;br /&gt;
   ; using a dynamic socket name so we can use multiple instances at once&lt;br /&gt;
   [[var]] %sock = $+(hlinfo-,[[$ticks]])&lt;br /&gt;
   ; actually open the socket&lt;br /&gt;
   [[sockudp]] -k %sock [[$1]]-2 [[$str]]([[$chr]](255),4) [[DollarPlus|$+]] TSource Engine Query&lt;br /&gt;
   ; closing the socket after 60seconds if there is no response (else it will be closed by another event (see below))&lt;br /&gt;
   .[[timer]] $+ %sock 1 60 [[sockclose]] %sock&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 ; this event will get all data sent back from the server&lt;br /&gt;
 [[on_udpread|on *:UDPREAD]]:hlinfo-*:{&lt;br /&gt;
   ; save it in a binary variable&lt;br /&gt;
   [[sockread]] -f &amp;amp;reply&lt;br /&gt;
 &lt;br /&gt;
   ; set some local variables that we will use below&lt;br /&gt;
   var %offset, %name, %map, %game, %num, %max, %ip, %dir&lt;br /&gt;
  &lt;br /&gt;
   ; following the protocol, this &amp;quot;m&amp;quot; shows us that we queried a Half-Life 1 server&lt;br /&gt;
   if ($chr([[$bvar]](&amp;amp;reply,5)) == m) {&lt;br /&gt;
     ; Half-Life 1 info reply&lt;br /&gt;
     &lt;br /&gt;
     %offset = 6&lt;br /&gt;
  &lt;br /&gt;
     ; save the ip&lt;br /&gt;
     %ip = $bvar(&amp;amp;reply,%offset,128).text&lt;br /&gt;
     [[inc]] %offset [[$calc]]([[$len]](%ip) + 1)&lt;br /&gt;
    &lt;br /&gt;
     ; the same&lt;br /&gt;
     %name = $bvar(&amp;amp;reply,%offset,128).text&lt;br /&gt;
     inc %offset $calc($len(%name) + 1)&lt;br /&gt;
 &lt;br /&gt;
     ; the current map&lt;br /&gt;
     %map = $bvar(&amp;amp;reply,%offset,128).text&lt;br /&gt;
     inc %offset $calc($len(%map) + 1)&lt;br /&gt;
 &lt;br /&gt;
     ; the game directory&lt;br /&gt;
     %dir = $bvar(&amp;amp;reply,%offset,128).text&lt;br /&gt;
     inc %offset $calc($len(%dir) + 1)&lt;br /&gt;
 &lt;br /&gt;
     ; the name of the game&lt;br /&gt;
     %game = $bvar(&amp;amp;reply,%offset,128).text&lt;br /&gt;
     inc %offset $calc($len(%game) + 1)&lt;br /&gt;
 &lt;br /&gt;
     ; current and maximum players&lt;br /&gt;
     %num = $bvar(&amp;amp;reply,%offset)&lt;br /&gt;
     %max = $bvar(&amp;amp;reply,$calc(%offset + 1))&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   ; else we get data for a CS:Source game&lt;br /&gt;
   else {&lt;br /&gt;
     ; Source info reply&lt;br /&gt;
     ; we do the same as above&lt;br /&gt;
     %offset = 7&lt;br /&gt;
 &lt;br /&gt;
     %name = $bvar(&amp;amp;reply,%offset,128).text&lt;br /&gt;
     inc %offset $calc($len(%name) + 1)&lt;br /&gt;
 &lt;br /&gt;
     %map = $bvar(&amp;amp;reply,%offset,128).text&lt;br /&gt;
     inc %offset $calc($len(%map) + 1)&lt;br /&gt;
 &lt;br /&gt;
     %dir = $bvar(&amp;amp;reply,%offset,128).text&lt;br /&gt;
     inc %offset $calc($len(%dir) + 1)&lt;br /&gt;
 &lt;br /&gt;
     %game = $bvar(&amp;amp;reply,%offset,128).text&lt;br /&gt;
     inc %offset $calc($len(%game) + 1)&lt;br /&gt;
 &lt;br /&gt;
     %num = $bvar(&amp;amp;reply,$calc(%offset + 2))&lt;br /&gt;
     %max = $bvar(&amp;amp;reply,$calc(%offset + 3))&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   ; now we echo all stored details to the active window&lt;br /&gt;
   [[echo]] -a Info for [[$sock]]([[$sockname]]).saddr $+ : $+ $sock($sockname).sport&lt;br /&gt;
   echo -a Name: %name&lt;br /&gt;
   echo -a Map: %map&lt;br /&gt;
   echo -a Game: %game&lt;br /&gt;
   echo -a Players: %num $+ / $+ %max&lt;br /&gt;
   &lt;br /&gt;
   ; and turn off the timer closing the socket&lt;br /&gt;
   .timer $+ $sockname off&lt;br /&gt;
   ; as we can close it now manually&lt;br /&gt;
   sockclose $sockname&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ; this is the alias that will be called from hlplay to open the socket &lt;br /&gt;
 alias hlchal {&lt;br /&gt;
   ; $1 = ip, $2 = port, $3- = what to call when received&lt;br /&gt;
   ; use dynamic socket name as above&lt;br /&gt;
   var %sock = $+(hlchal-,$ticks)&lt;br /&gt;
   ; open the socket&lt;br /&gt;
   sockudp -k %sock $1-2 $str($chr(255),4) $+ W &lt;br /&gt;
   ; mark it with the ip and port (and the query we want to call when we&#039;ve received something from the server)&lt;br /&gt;
   [[sockmark]] %sock $3- $1-2&lt;br /&gt;
   ; and make a new timer to close it after 60 seconds&lt;br /&gt;
   .timer $+ %sock 1 60 sockclose %sock&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 ; read everything that comes back from the hlchal-* query&lt;br /&gt;
 on *:UDPREAD:hlchal-*:{&lt;br /&gt;
   ; and save it in the binary variable called &amp;amp;reply&lt;br /&gt;
   sockread -f &amp;amp;reply&lt;br /&gt;
   ; actually call the alias saved in the sockmark (hlplay_query)&lt;br /&gt;
   $sock($sockname).mark $bvar(&amp;amp;reply,6,4)&lt;br /&gt;
   ; and turn the timer off because we can close it manually&lt;br /&gt;
   .timer $+ $sockname off&lt;br /&gt;
   sockclose $sockname&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 ; the alias we can call to make everything easier &lt;br /&gt;
 ; it will call other aliases to open sockets etc.&lt;br /&gt;
 alias hlplay {&lt;br /&gt;
   hlchal $1-2 hlplay_query&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 ; the alias that opens the _real_ socket to receive data (everything before was just to challenge the server (read the website mentioned above))&lt;br /&gt;
 alias hlplay_query {&lt;br /&gt;
   ; set a binary variable&lt;br /&gt;
   bset &amp;amp;query 1 255 255 255 255 85 $3-&lt;br /&gt;
   ; use dynamic socket names again&lt;br /&gt;
   var %sock = $+(hlplay-,$ticks)&lt;br /&gt;
   ; open the socket&lt;br /&gt;
   sockudp -k %sock $1-2 &amp;amp;query&lt;br /&gt;
   ; and turn on the timer closing the socket after 60seconds&lt;br /&gt;
   .timer $+ %sock 1 60 sockclose %sock&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 ; this event will receive all data from the server as response to our query&lt;br /&gt;
 on *:UDPREAD:hlplay-*:{&lt;br /&gt;
   ; we save it in &amp;amp;reply&lt;br /&gt;
   sockread -f &amp;amp;reply&lt;br /&gt;
  &lt;br /&gt;
   ; set some local variables we will use later&lt;br /&gt;
   var %i = 1, %num = $bvar(&amp;amp;reply,6), %offset = 7&lt;br /&gt;
   var %count = 0, %name, %kills&lt;br /&gt;
 &lt;br /&gt;
   ; and echo the number of players&lt;br /&gt;
   echo -a Players on $sock($sockname).saddr $+ : $+ $sock($sockname).sport&lt;br /&gt;
 &lt;br /&gt;
   ; now we can loop through all player and save some details about them&lt;br /&gt;
   [[while]] (%i [[If-Then-Else#&amp;lt;=|&amp;lt;=]] %num) {&lt;br /&gt;
     inc %offset&lt;br /&gt;
   &lt;br /&gt;
     ; the name&lt;br /&gt;
     %name = $bvar(&amp;amp;reply,%offset,128).text&lt;br /&gt;
     inc %offset $calc($len(%name) + 1)&lt;br /&gt;
 &lt;br /&gt;
     ; the kills&lt;br /&gt;
     %kills = $bvar(&amp;amp;reply,%offset).long&lt;br /&gt;
     [[If-Then-Else|if]] ([[$isbit]](%kills,32)) [[dec]] %kills $calc(2^32)&lt;br /&gt;
     inc %offset 8&lt;br /&gt;
 &lt;br /&gt;
     ; and if there was a player&lt;br /&gt;
     if (%name [[If-Then-Else#!=|!=]] [[$null]]) {&lt;br /&gt;
       ; increase the variable that shows us the number of the player&lt;br /&gt;
       inc %count&lt;br /&gt;
       ; and echo it to the active window with the kills saved above&lt;br /&gt;
       echo -a %count $+ . %name - %kills&lt;br /&gt;
     }&lt;br /&gt;
  &lt;br /&gt;
     ; increase %i so we go on with the next player&lt;br /&gt;
     inc %i&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   ; if there are no players online, echo it aswell&lt;br /&gt;
   if (%count [[If-Then-Else#==|==]] 0) echo -a No players found!&lt;br /&gt;
 &lt;br /&gt;
   ; turn off the timer&lt;br /&gt;
   .timer $+ $sockname off&lt;br /&gt;
   ; and close the socket manually&lt;br /&gt;
   sockclose $sockname&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Socket]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Category:Aliases&amp;diff=1385</id>
		<title>Category:Aliases</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Category:Aliases&amp;diff=1385"/>
		<updated>2006-04-25T12:20:56Z</updated>

		<summary type="html">&lt;p&gt;Microbe: one space missing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basic ==&lt;br /&gt;
mIRC script allows you to create your own set of commands and identifiers, refered to as aliases. Aliases can be called from the command line, from other aliases, from popup and from remote scripts. An alias in mIRC can not be called recursively. They can be created by either putting them in the &amp;lt;nowiki&amp;gt;&amp;quot;Aliases&amp;quot;&amp;lt;/nowiki&amp;gt; section of the mIRC Scripts Editor, by using the /alias command from either the command line or in the &amp;lt;nowiki&amp;gt;&amp;quot;Remote&amp;quot;&amp;lt;/nowiki&amp;gt; section of the Scripts Editor. Creating an alias in the command line results in it being placed in the &amp;quot;Aliases&amp;quot; section of the Script Editor.&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
 ; These two work exactly the same way although they are stored in different places&lt;br /&gt;
 &lt;br /&gt;
 ; this is placed in the &amp;quot;Aliases&amp;quot; section&lt;br /&gt;
 moo { [[echo]] -ag moo }&lt;br /&gt;
 &lt;br /&gt;
 ; this is placed in the &amp;quot;Remote&amp;quot; section&lt;br /&gt;
 [[alias]] moo { [[echo]] -ag moo }&lt;br /&gt;
&lt;br /&gt;
== Naming aliases ==&lt;br /&gt;
You can give an alias virtually any name you want, but keep a few things in mind:&lt;br /&gt;
&lt;br /&gt;
* When you give an alias used as a command the same name as an existing mIRC command, your alias gets preference.&lt;br /&gt;
* Some inbuilt commands act differently than the rest, if you have an alias called [[timertest|Timer]], you will not be able to start a timer called test, like this: /timertest 0 1 MyTestFunction in this situation you can prefix the command with an exclamation mark (!) as shown below in the example.&lt;br /&gt;
* When you give an alias used as an identifier the same name as an existing mIRC identifier, mIRC&#039;s identifier gets preference, unless you prefix your alias with a period.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 /alias me { [[If-Then-Else|if]] ([[$isid]]) { [[return]] AveIT! } | else { [[describe]] [[$active]] [[$1-]] } }&lt;br /&gt;
 /alias timertest { if (!%timerstart) [[set]] %timerstart [[$ticks]] | else { echo -ag [[$calc]]($ticks - %timerstart) ms | unset %timerstart } }&lt;br /&gt;
 &lt;br /&gt;
 Here, the $isid identifer is checked to make sure we&#039;re calling $me and not /me, if we are calling /me make sure we do /describe to the active channel with the parameters supplied.&lt;br /&gt;
 timertest&lt;br /&gt;
 echo -ag I am $me but my custom identifer returns $.me&lt;br /&gt;
 timertest&lt;br /&gt;
 This should return:&lt;br /&gt;
 I am Dana but my custom identifer returns AveIT!&lt;br /&gt;
 16 ms&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039;&#039; If you want to start a timer called test with the alias called timertest, you have to prefix the timer with the ! to use the inbuilt mIRC timer command:&lt;br /&gt;
 !timertest 1 1 echo -ag This is my test.&lt;br /&gt;
 It is not encouraged to call an alias starting with timer, or identifers with mircdir, getdir, mididir, or any other alias which can be used with a suffix.&lt;br /&gt;
&lt;br /&gt;
== Aliases: parameters and events ==&lt;br /&gt;
mIRC script allows you to pass parameters to your aliases, just like you pass parameters into built-in mIRC commands or identifiers. They can be referred to as [[$0]], $1, $2 ... $N.&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
 [[alias]] moo { echo -ag m $+ [[$str]](o,$$1) }&lt;br /&gt;
&lt;br /&gt;
Assuming you pass a number as parameter this would echo an &amp;lt;nowiki&amp;gt;&amp;quot;m&amp;quot;&amp;lt;/nowiki&amp;gt; folowed by a number of &amp;lt;nowiki&amp;gt;&amp;quot;o&#039;s&amp;quot;&amp;lt;/nowiki&amp;gt;, depending on the number you specified as parameter. This alias can be called in 2 different ways:&lt;br /&gt;
 /moo 12&lt;br /&gt;
 $moo(27)&lt;br /&gt;
Note that $moo doesn&#039;t return anything in this case, it will simply echo the message.&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
When calling an alias from an event, the identifiers related to that event will still be available in that alias.&lt;br /&gt;
 on *:[[On_text|TEXT]]:hi:#: { myAlias }&lt;br /&gt;
 &lt;br /&gt;
 [[alias]] myAlias { [[msg]] [[$chan]] [[$nick]] said hi! }&lt;br /&gt;
&lt;br /&gt;
This would be exactly the same as:&lt;br /&gt;
 on *:TEXT:hi:#: { msg $chan $nick said hi! }&lt;br /&gt;
This in turn means that you don&#039;t have to pass a identifier supplied by an event into your alias as parameter.&lt;br /&gt;
&lt;br /&gt;
== Commands vs identifiers ==&lt;br /&gt;
Being that you can use your aliases as both commands and identifiers, the question may rise which you should pick. The general answer is quite simple: if you want your alias to have a return value use identifiers and in any other case use commands.&lt;br /&gt;
&lt;br /&gt;
=== Error handling ===&lt;br /&gt;
However, mIRC&#039;s built-in error handling cannot be used for your aliases, so for proper error handling you might want to use return values. For example, you could use return value 1 when an action was succesfull and 0 when it was not.&lt;br /&gt;
 ; this identifier returns 1 if it was succesfull in what it would do and 0 if it wasn&#039;t&lt;br /&gt;
 ; the (useless) idea of the following identifier is to message &amp;quot;moo&amp;quot; to the currently active channel&lt;br /&gt;
 ; if it is on QuakeNet&lt;br /&gt;
 alias moo {&lt;br /&gt;
   if ([[$network]] != QuakeNet) || (!$chan) { return 0 }&lt;br /&gt;
   else {&lt;br /&gt;
     msg $chan moo&lt;br /&gt;
     return 1&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To use this as error handling you could do the following:&lt;br /&gt;
 %error = $moo&lt;br /&gt;
 if (!%error) {&lt;br /&gt;
    ; do what you want to do if the command failed&lt;br /&gt;
    ; in this case when there was no channel active&lt;br /&gt;
    ; or the server was not QuakeNet&lt;br /&gt;
 }&lt;br /&gt;
 [[elseif]] (%error = 1) {&lt;br /&gt;
    ; do what you want to do if the command succeeded&lt;br /&gt;
    ; in this case when there was an active channel and&lt;br /&gt;
    ; the server was QuakeNet&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
    ; the script should never reach this place!&lt;br /&gt;
 }&lt;br /&gt;
Although the same identifier could have been run as a command as well, error handling would not have been possible that way. Of course the alias itself has some error handling already, but there are cases in which you want an action to be able to fail.&lt;br /&gt;
&lt;br /&gt;
Another reason to prefer identifiers over comands are parameters. When you call an alias as a command every space will result in a new parameter and there is no way you can get around that. Using an alias as an identifier it is possible to get around the comma and thus have your parameters contain a comma. Here&#039;s how to do that:&lt;br /&gt;
 ; calling an identifier with a comma in a parameter&lt;br /&gt;
 [[alias]] test {&lt;br /&gt;
   ; the while loop will echo every parameter&lt;br /&gt;
   [[var]] %i = $0&lt;br /&gt;
   [[while]] (%i) {&lt;br /&gt;
     [[echo]] -ag $ [ $+ [ %i ] ]&lt;br /&gt;
     [[dec]] %i&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 var %param = abcdef,ghijk&lt;br /&gt;
 %someVar = $test(%param)&lt;br /&gt;
The snippets above would result in having the identifier $test echo only 1 parameter: the data which was set in %param. Would you do the same for a command -- replacing the comma with a space -- it would result in /test getting 2 parameters. Handling parameters is much easier if you are a 100% sure which parameter will contain which data, and an identifier is more reliable in doing so.&lt;br /&gt;
&lt;br /&gt;
=== Forced identifiers ===&lt;br /&gt;
To force an alias to be an identifier -- it can&#039;t be used as a command --  or vice versa you can use the identifier [[$isid]].&lt;br /&gt;
 ; this alias can only be called as an identifier&lt;br /&gt;
 [[alias]] qnet {&lt;br /&gt;
   if ([[$isid]]) {&lt;br /&gt;
     ; the following code only gets executed if the alias was called as an identifier&lt;br /&gt;
     [[if]] ([[$network]] === QuakeNet) { [[return]] 1 }&lt;br /&gt;
     [[else]] { [[return]] 0 }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
Calling the alias will result in a return value of either 0 or 1, while calling it as a command will do completely nothing.&lt;br /&gt;
&lt;br /&gt;
== Also See ==&lt;br /&gt;
* [[$isid]]&lt;br /&gt;
[[Category:mIRC_Help]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Category:Aliases&amp;diff=1384</id>
		<title>Category:Aliases</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Category:Aliases&amp;diff=1384"/>
		<updated>2006-04-25T12:19:51Z</updated>

		<summary type="html">&lt;p&gt;Microbe: removed plenty of extra links, fixed typos etc small&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basic ==&lt;br /&gt;
mIRC script allows you to create your own set of commands and identifiers, refered to as aliases. Aliases can be called from the command line, from other aliases, from popup and from remote scripts. An alias in mIRC can not be called recursively. They can be created by either putting them in the &amp;lt;nowiki&amp;gt;&amp;quot;Aliases&amp;quot;&amp;lt;/nowiki&amp;gt; section of the mIRC Scripts Editor, by using the /alias command from either the command line or in the &amp;lt;nowiki&amp;gt;&amp;quot;Remote&amp;quot;&amp;lt;/nowiki&amp;gt; section of the Scripts Editor. Creating an alias in the command line results in it being placed in the &amp;quot;Aliases&amp;quot; section of the Script Editor.&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
 ; These two work exactly the same way although they are stored in different places&lt;br /&gt;
&lt;br /&gt;
 ; this is placed in the &amp;quot;Aliases&amp;quot; section&lt;br /&gt;
 moo { [[echo]] -ag moo }&lt;br /&gt;
 &lt;br /&gt;
 ; this is placed in the &amp;quot;Remote&amp;quot; section&lt;br /&gt;
 [[alias]] moo { [[echo]] -ag moo }&lt;br /&gt;
&lt;br /&gt;
== Naming aliases ==&lt;br /&gt;
You can give an alias virtually any name you want, but keep a few things in mind:&lt;br /&gt;
&lt;br /&gt;
* When you give an alias used as a command the same name as an existing mIRC command, your alias gets preference.&lt;br /&gt;
* Some inbuilt commands act differently than the rest, if you have an alias called [[timertest|Timer]], you will not be able to start a timer called test, like this: /timertest 0 1 MyTestFunction in this situation you can prefix the command with an exclamation mark (!) as shown below in the example.&lt;br /&gt;
* When you give an alias used as an identifier the same name as an existing mIRC identifier, mIRC&#039;s identifier gets preference, unless you prefix your alias with a period.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 /alias me { [[If-Then-Else|if]] ([[$isid]]) { [[return]] AveIT! } | else { [[describe]] [[$active]] [[$1-]] } }&lt;br /&gt;
 /alias timertest { if (!%timerstart) [[set]] %timerstart [[$ticks]] | else { echo -ag [[$calc]]($ticks - %timerstart) ms | unset %timerstart } }&lt;br /&gt;
 &lt;br /&gt;
 Here, the $isid identifer is checked to make sure we&#039;re calling $me and not /me, if we are calling /me make sure we do /describe to the active channel with the parameters supplied.&lt;br /&gt;
 timertest&lt;br /&gt;
 echo -ag I am $me but my custom identifer returns $.me&lt;br /&gt;
 timertest&lt;br /&gt;
 This should return:&lt;br /&gt;
 I am Dana but my custom identifer returns AveIT!&lt;br /&gt;
 16 ms&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039;&#039; If you want to start a timer called test with the alias called timertest, you have to prefix the timer with the ! to use the inbuilt mIRC timer command:&lt;br /&gt;
 !timertest 1 1 echo -ag This is my test.&lt;br /&gt;
 It is not encouraged to call an alias starting with timer, or identifers with mircdir, getdir, mididir, or any other alias which can be used with a suffix.&lt;br /&gt;
&lt;br /&gt;
== Aliases: parameters and events ==&lt;br /&gt;
mIRC script allows you to pass parameters to your aliases, just like you pass parameters into built-in mIRC commands or identifiers. They can be referred to as [[$0]], $1, $2 ... $N.&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
 [[alias]] moo { echo -ag m $+ [[$str]](o,$$1) }&lt;br /&gt;
&lt;br /&gt;
Assuming you pass a number as parameter this would echo an &amp;lt;nowiki&amp;gt;&amp;quot;m&amp;quot;&amp;lt;/nowiki&amp;gt; folowed by a number of &amp;lt;nowiki&amp;gt;&amp;quot;o&#039;s&amp;quot;&amp;lt;/nowiki&amp;gt;, depending on the number you specified as parameter. This alias can be called in 2 different ways:&lt;br /&gt;
 /moo 12&lt;br /&gt;
 $moo(27)&lt;br /&gt;
Note that $moo doesn&#039;t return anything in this case, it will simply echo the message.&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
When calling an alias from an event, the identifiers related to that event will still be available in that alias.&lt;br /&gt;
 on *:[[On_text|TEXT]]:hi:#: { myAlias }&lt;br /&gt;
 &lt;br /&gt;
 [[alias]] myAlias { [[msg]] [[$chan]] [[$nick]] said hi! }&lt;br /&gt;
&lt;br /&gt;
This would be exactly the same as:&lt;br /&gt;
 on *:TEXT:hi:#: { msg $chan $nick said hi! }&lt;br /&gt;
This in turn means that you don&#039;t have to pass a identifier supplied by an event into your alias as parameter.&lt;br /&gt;
&lt;br /&gt;
== Commands vs identifiers ==&lt;br /&gt;
Being that you can use your aliases as both commands and identifiers, the question may rise which you should pick. The general answer is quite simple: if you want your alias to have a return value use identifiers and in any other case use commands.&lt;br /&gt;
&lt;br /&gt;
=== Error handling ===&lt;br /&gt;
However, mIRC&#039;s built-in error handling cannot be used for your aliases, so for proper error handling you might want to use return values. For example, you could use return value 1 when an action was succesfull and 0 when it was not.&lt;br /&gt;
 ; this identifier returns 1 if it was succesfull in what it would do and 0 if it wasn&#039;t&lt;br /&gt;
 ; the (useless) idea of the following identifier is to message &amp;quot;moo&amp;quot; to the currently active channel&lt;br /&gt;
 ; if it is on QuakeNet&lt;br /&gt;
 alias moo {&lt;br /&gt;
   if ([[$network]] != QuakeNet) || (!$chan) { return 0 }&lt;br /&gt;
   else {&lt;br /&gt;
     msg $chan moo&lt;br /&gt;
     return 1&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To use this as error handling you could do the following:&lt;br /&gt;
 %error = $moo&lt;br /&gt;
 if (!%error) {&lt;br /&gt;
    ; do what you want to do if the command failed&lt;br /&gt;
    ; in this case when there was no channel active&lt;br /&gt;
    ; or the server was not QuakeNet&lt;br /&gt;
 }&lt;br /&gt;
 [[elseif]] (%error = 1) {&lt;br /&gt;
    ; do what you want to do if the command succeeded&lt;br /&gt;
    ; in this case when there was an active channel and&lt;br /&gt;
    ; the server was QuakeNet&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
    ; the script should never reach this place!&lt;br /&gt;
 }&lt;br /&gt;
Although the same identifier could have been run as a command as well, error handling would not have been possible that way. Of course the alias itself has some error handling already, but there are cases in which you want an action to be able to fail.&lt;br /&gt;
&lt;br /&gt;
Another reason to prefer identifiers over comands are parameters. When you call an alias as a command every space will result in a new parameter and there is no way you can get around that. Using an alias as an identifier it is possible to get around the comma and thus have your parameters contain a comma. Here&#039;s how to do that:&lt;br /&gt;
 ; calling an identifier with a comma in a parameter&lt;br /&gt;
 [[alias]] test {&lt;br /&gt;
   ; the while loop will echo every parameter&lt;br /&gt;
   [[var]] %i = $0&lt;br /&gt;
   [[while]] (%i) {&lt;br /&gt;
     [[echo]] -ag $ [ $+ [ %i ] ]&lt;br /&gt;
     [[dec]] %i&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 var %param = abcdef,ghijk&lt;br /&gt;
 %someVar = $test(%param)&lt;br /&gt;
The snippets above would result in having the identifier $test echo only 1 parameter: the data which was set in %param. Would you do the same for a command -- replacing the comma with a space -- it would result in /test getting 2 parameters. Handling parameters is much easier if you are a 100% sure which parameter will contain which data, and an identifier is more reliable in doing so.&lt;br /&gt;
&lt;br /&gt;
=== Forced identifiers ===&lt;br /&gt;
To force an alias to be an identifier -- it can&#039;t be used as a command --  or vice versa you can use the identifier [[$isid]].&lt;br /&gt;
 ; this alias can only be called as an identifier&lt;br /&gt;
 [[alias]] qnet {&lt;br /&gt;
   if ([[$isid]]) {&lt;br /&gt;
     ; the following code only gets executed if the alias was called as an identifier&lt;br /&gt;
     [[if]] ([[$network]] === QuakeNet) { [[return]] 1 }&lt;br /&gt;
     [[else]] { [[return]] 0 }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
Calling the alias will result in a return value of either 0 or 1, while calling it as a command will do completely nothing.&lt;br /&gt;
&lt;br /&gt;
== Also See ==&lt;br /&gt;
* [[$isid]]&lt;br /&gt;
[[Category:mIRC_Help]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Category:Variables&amp;diff=1687</id>
		<title>Category:Variables</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Category:Variables&amp;diff=1687"/>
		<updated>2006-04-25T12:03:37Z</updated>

		<summary type="html">&lt;p&gt;Microbe: added some info about variables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Variables are a way in mIRC (and in every other language) to store (temporary) data for convenience and modification reasons.&lt;br /&gt;
&lt;br /&gt;
In mIRC, all variables are either [[Local_Variables|local]] or global. Local variables are lost as soon as the executing script ends and global variables are stored until they are unset. Therefore local variables are good for really temporary storing inside the script, for example while loop iterators (increasing some variable until the while loop&#039;s condition isn&#039;t [[$true]] anymore) and global variables are good for storing data for a longer duration, for example keeping track of a channel&#039;s peak.&lt;br /&gt;
&lt;br /&gt;
[[Category:mIRC_Help]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
	<entry>
		<id>https://script.quakenet.org/wiki/index.php?title=Category:Dialogs&amp;diff=1469</id>
		<title>Category:Dialogs</title>
		<link rel="alternate" type="text/html" href="https://script.quakenet.org/wiki/index.php?title=Category:Dialogs&amp;diff=1469"/>
		<updated>2006-04-25T11:30:34Z</updated>

		<summary type="html">&lt;p&gt;Microbe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:MIRC Help]]&lt;/div&gt;</summary>
		<author><name>Microbe</name></author>
	</entry>
</feed>