https://script.quakenet.org/wiki/api.php?action=feedcontributions&user=Albie&feedformat=atom
Scriptwiki - User contributions [en]
2024-03-29T09:35:32Z
User contributions
MediaWiki 1.27.2
https://script.quakenet.org/wiki/index.php?title=Quit&diff=6036
Quit
2014-03-13T11:22:29Z
<p>Albie: Testing.</p>
<hr />
<div>Disconnects you from IRC and will give the optional message as the reason for your departure. (this message only appears to people who are on the same channels as you).<br />
/QUIT [reason]<br />
<br />
This commands sends a quit message to the server and waits until the server disconnects you.<br />
<br />
'''Note''' <br />
The quit messages will only be shown to people who you do not share a channel with which has the channel mode +u set. <br />
<br />
== See Also ==<br />
* [[Disconnect|/disconnect]] to force a disconnect.<br />
* [[Server|/server]] to connect to a server.<br />
* [[On quit|On quit event]]<br />
<br />
[[Category:Basic IRC commands]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Quit&diff=6035
Quit
2014-03-13T11:19:45Z
<p>Albie: </p>
<hr />
<div>Disconnects you from IRC and will give the optional message as the reason for your departure. (this message only appears to people who are on the same channels as you).<br />
/QUIT [reason]<br />
<br />
This commands sends a quit message to the server and waits until the server disconnects you.<br />
<br />
'''Note''' <br />
The quit messages will only be shown to people who you do not share a channel with which has the channel mode +u set. <br />
<br />
== See Also ==<br />
* [[Disconnect|/disconnect]] to force a disconnect.<br />
* [[Server|/server]] to connect to a server.<br />
* [[On quit|On quit event]]<br />
<br />
[[Category:Basic IRC commands]]<br />
x</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Quit&diff=6033
Quit
2014-03-13T10:43:03Z
<p>Albie: Changed the note mainly to test edits are working after wikimedia update.</p>
<hr />
<div>Disconnects you from IRC and will give the optional message as the reason for your departure. (this message only appears to people who are on the same channels as you).<br />
/QUIT [reason]<br />
<br />
This commands sends a quit message to the server and waits until the server disconnects you.<br />
<br />
'''Note''' <br />
The quit messages will only be shown to people who you do not share a channel with which has the channel mode +u set. <br />
<br />
== See Also ==<br />
* [[Disconnect|/disconnect]] to force a disconnect.<br />
* [[Server|/server]] to connect to a server.<br />
* [[On quit|On quit event]]<br />
<br />
[[Category:Basic IRC commands]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Loadbuf&diff=5991
Loadbuf
2013-06-23T00:23:23Z
<p>Albie: Removed finger window information.</p>
<hr />
<div>Loads the specified number of lines from the end of the file of filename into the specified window.<br />
/loadbuf [lines] [-apirslecNnomt<topic>] <window | dialog id> <filename><br />
===Switches===<br />
<table><br />
<tr><td>-a</td><td>loads the text into the active window.</td></tr><br />
<tr><td>-p</td><td>forces lines of text to wrap when added to the window.</td></tr><br />
<tr><td>-i</td><td>makes sure that lines are indented if they wrap.</td></tr><br />
<tr><td>-r</td><td>clears the contents of the output window.</td></tr><br />
<tr><td>-s</td><td>apply the command to the status window.</td></tr><br />
<tr><td>-l</td><td>applies the command to the side-listbox in a custom window.</td></tr><br />
<tr><td>-e</td><td>evaluates variables and identifiers in the line being read.</td></tr><br />
<tr><td>-cN</td><td>specifies the default color for lines.</td></tr><br />
<tr><td>-n</td><td>logs the loaded text to a log file, if logging is enabled for that window.</td></tr><br />
<tr><td>-m</td><td>to be used with -n, indicates that the text is already timestamped.</td></tr><br />
<tr><td>-o</td><td>indicates that you have specified [dialog id] parameters instead of a window name in order to load text into a custom dialog control.</td></tr><br />
<tr><td>-t</td><td>loads the text under the [topic] section in an INI or plain text file.</td></tr><br />
</table><br />
<br />
==Example==<br />
/loadbuf 20 @test info.txt<br />
This loads the last 20 lines of info.txt into custom window @test.<br />
/loadbuf 10-40 @test info.txt<br />
This loads lines 10 to 40 of info.txt into custom window @test.<br />
==See Also==<br />
* [[filter|/filter]]<br />
* [[$read]]<br />
[[Category:Commands]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Background&diff=5990
Background
2013-06-23T00:22:06Z
<p>Albie: Hiding the fact there was any fingering going on around here.</p>
<hr />
<div>This command sets an image as a background for a given window<br />
<br />
/background [-abemsdluhcfnrtpx] [window] [image path]<br />
<br />
* Switches<br />
** Target Specifiers<br />
*** -a specifies the active window<br />
*** -m specifies the "main mIRC window" - the parent window which encompasses all of the channel and custom windows<br />
*** -s specifies the status window for the active network<br />
*** -d specifies a single message window<br />
*** -l specifies a toolbar<br />
*** -u specifies a button on a toolbar<br />
*** -h specifies the switchbar<br />
*** -b specifies the treebar<br />
** Options<br />
*** -e sets the image as the default image for all windows of this type<br />
*** -x removes the background image<br />
* Window is the window name which you would like to edit the background image for, if you did not specify the window via a switch<br />
* Image path is the path to the image you wish to set as the background<br />
<br />
==Examples==<br />
background -s C:\Images\Status_Background.bmp<br />
background -ea C:\Images\Channel_Background.bmp <br />
background #help.script C:\Images\Help_Background.bmp<br />
<br />
==See Also==<br />
* [[Window]]<br />
* [[Custom Windows]]<br />
* [[Category:Picture Windows]]<br />
[[Category:Commands]]<br />
<br />
{{stub}}</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Missing_pages&diff=5986
Missing pages
2013-06-22T23:50:52Z
<p>Albie: ctcpreply moved to on ctcpreply.</p>
<hr />
<div>== Identifiers ==<br />
[[$ansi2mirc]]<br />
[[$com]]<br />
[[$comcall]]<br />
[[$comerr]]<br />
[[$comval]]<br />
[[$creq]]<br />
[[$dbuh]]<br />
[[$dbuw]]<br />
[[$dccignore]]<br />
[[$dccport]]<br />
[[$dll]]<br />
[[$dllcall]]<br />
[[$get]]<br />
[[$group]]<br />
[[$hash]]<br />
[[$height]]<br />
[[$keychar]]<br />
[[$keyrpt]]<br />
[[$keyval]]<br />
[[$lactivewid]]<br />
[[$link]]<br />
[[$menu]]<br />
[[$menucontext]]<br />
[[$menutype]]<br />
[[$passivedcc]]<br />
[[$send]]<br />
[[$sreq]]<br />
[[$vcmd]]<br />
[[$vcmdstat]]<br />
[[$vcmdver]]<br />
<br />
== Commands ==<br />
[[comclose]]<br />
[[comopen]]<br />
[[comreg]]<br />
[[creq]]<br />
[[dcc chat]]<br />
[[dcc get]]<br />
[[dcc ignore]]<br />
[[dcc nick]]<br />
[[dcc passive]]<br />
[[dcc reject]]<br />
[[dcc send]]<br />
[[dcc trust]]<br />
[[dccserver]]<br />
[[dll]]<br />
[[drawcopy]]<br />
[[drawdot]]<br />
[[drawfill]]<br />
[[drawline]]<br />
[[drawpic]]<br />
[[drawrect]]<br />
[[drawreplace]]<br />
[[drawrot]]<br />
[[drawsave]]<br />
[[drawscroll]]<br />
[[drawtext]]<br />
[[finger]]<br />
[[font]]<br />
[[fsend]]<br />
[[fserve]]<br />
[[identd]]<br />
[[links]]<br />
[[logview]]<br />
[[mdi]]<br />
[[pdcc]]<br />
[[perform]]<br />
[[playctrl]]<br />
[[renwin]]<br />
[[reseterror]]<br />
[[savebuf]]<br />
[[showmirc]]<br />
[[sockpause]]<br />
[[sound]]<br />
[[sreq]]<br />
[[strip]]<br />
[[tray]]<br />
[[unload]]<br />
[[url]]<br />
[[vcadd]]<br />
[[vcmd]]<br />
[[vcrem]]<br />
<br />
== Events ==<br />
[[On connectfail]]<br />
[[On dccserver]]<br />
[[On error]]<br />
[[On filercvd]]<br />
[[On filesent]]<br />
[[On getfail]]<br />
[[On nosound]]<br />
[[On sendfail]]<br />
[[On serverop]]<br />
[[On top]]<br />
[[On user]]<br />
[[On vcmd]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Guidelines&diff=5966
Guidelines
2013-06-22T20:45:12Z
<p>Albie: Added cat.</p>
<hr />
<div>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.<br />
<br />
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.<br />
<br />
== Guidelines ==<br />
<br />
<br />
If you wish to add comments to your examples (to the same 'example box') 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 'example box' shouldn't include the ;. <br />
<br />
<br />
'''Topic (the name of the page) examples'''<br />
* $identifier <br />
* Command<br />
* On_join<br />
* If-Then-Else<br />
<br />
'''First line of the text'''<br />
* Short description what it does / what it's good for.<br />
** Example: Returns the Nth token in text. A token is blah blah blah.<br />
<br />
'''Second line of the text'''<br />
* The syntax, starting with a space to get a box around it.<br />
** Example: (space)$gettok(text,N,C)<br />
<br />
'''Next one/few line(s) of the text'''<br />
* Explanation what the non-trivial parameters mean. The parameter(s) is/are to be inside <nowiki>'' ''</nowiki> to make it italic.<br />
** Example: ''C'' is the [[ascii]] number of the character that is set to separate the tokens blah blah.<br />
<br />
'''Next one/few line(s) of the text'''<br />
* Short example(s) how to use the command/identifier/whatever. The (possible) return value is to be inside <nowiki>'' ''</nowiki> to make it italic.<br />
** Example: //echo -a $gettok(this.is.text,2,46) returns ''is''.<br />
<br />
'''Sections'''<br />
* If the command/identifier/whatever is complex enough to be needed to demonstrate further, use <nowiki>== Examples ==</nowiki> to start a section with more examples. Remember to add links to other wiki items such as <nowiki>[[var]]</nowiki> 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 <nowiki>'' ''</nowiki>.<br />
<br />
'''Add "See also" and Category'''<br />
* It's good to add a 'see also' section with <nowiki>== See also ==</nowiki> 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 <nowiki>[[Category:name_of_the_category]] at the end. Like [[Category:Text and Number Identifiers]]</nowiki>.<br />
''Syntax for "See also":''<br />
<br />
<nowiki> == See Also ==</nowiki> <br/><br />
<nowiki> * [[link]] explanation</nowiki> <br /><br />
<nowiki> * [[another link|to somewhere]]</nowiki><br />
<br />
notes: <br />
* Use "See Also", and not "Also See".<br />
* List different items with the star <nowiki>*</nowiki>.<br />
* Try to start the line with the link: <nowiki>* [[link]] and then some explanation</nowiki><br />
<br />
'''Stubs'''<br />
* If you know your article is incomplete you can add <nowiki>{{Stub}}</nowiki> marking it as incomplete for others/yourself to complete later on. It appears to look the best if you add the <nowiki>{{Stub}}</nowiki> at the top of the page.<br />
<br />
'''Shared articles'''<br />
* <nowiki>{{Disambling}}</nowiki> is used to split articles into smaller pieces when article holds reference to more than one article and it's '''not''' unambiguous where it should belong. (For example [[$chan]])<br />
<br />
[[Category:Wiki]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=User:Albie&diff=5951
User:Albie
2013-06-22T14:29:11Z
<p>Albie: Converted into wiki style table.</p>
<hr />
<div>{{Babel-1|en}}<br />
<br />
{|<br />
|-<br />
|rowspan="5" | [[Image:Albie.png]]<br />
|'''Name'''<br />
|Andy Calderbank<br />
|-<br />
|'''Age'''<br />
|{{age|1982|6|19}}<br />
|-<br />
|'''Location'''<br />
|Preston, Northwest UK<br />
|-<br />
|'''Words of wisdom'''<br />
|Man who goes to bed with itchy ass, wakes up with smelly finger -- AveIT<br />
|-<br />
|colspan="2" |<br />
|}<br />
<br />
[[Category:Members]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Noop&diff=5791
Noop
2013-06-21T23:55:09Z
<p>Albie: None-minor edit.</p>
<hr />
<div>Noop is a command that does literally nothing and doesn't care about any parameters.<br />
<br />
/noop<br />
<br />
What is it good for, then?<br />
<br />
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't need any outside commands to handle its results.<br />
<br />
== Examples ==<br />
<br />
For example:<br />
noop $regex(I have 6 brothers,/I have (\d+) brothers/) | [[echo|echo -ag]] The number of brothers is [[$regml|$regml(1)]]<br />
<br />
'''Note:''' This command came in mirc 6.17, for older versions [[echo|.echo -qg]] would be the same thing (the dot to make it silent and -q not to show it, if it was silent), or you could even use .[[xyzzy]]<br />
<br />
[[Category:Commands]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Noop&diff=5790
Noop
2013-06-21T23:48:04Z
<p>Albie: Added examples to this page.</p>
<hr />
<div>Noop is a command that does literally nothing and doesn't care about any parameters.<br />
<br />
/noop<br />
<br />
What is it good for, then?<br />
<br />
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't need any outside commands to handle its results.<br />
<br />
== Examples ==<br />
<br />
For example:<br />
noop $regex(I have 6 brothers,/I have (\d+) brothers/) | [[echo|echo -ag]] The number of brothers is [[$regml|$regml(1)]]<br />
<br />
'''Note:''' This command came in mirc 6.17, for older versions [[echo|.echo -qg]] would be the same thing (the dot to make it silent and -q not to show it, if it was silent), or you could even use //.xyzzy ;).<br />
[[Category:Commands]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=$ctime&diff=5786
$ctime
2013-06-21T19:28:08Z
<p>Albie: Testing to see if the announcement feature still works.</p>
<hr />
<div>Returns total number of seconds elapsed since 00:00:00 GMT, January 1, 1970 based on your system time or on the time you have specified.<br />
$ctime<br />
$ctime(text)<br />
$ctime without properties is equivalent to $ctime(January 1 1970 00:00:00).<br />
== Example ==<br />
$ctime(24/12/2004 12:00)<br />
This will return 1103886000, as it is total number of seconds from January 1, 1970, 00:00 until December 24, 2004, 12:00.<br />
[[if]] ($ctime > $ctime(25th December 2005)) { [[echo]] -ag Its past christmas 2005 :< }<br />
This will check to see if it's after the 25th of December 2005<br />
<br />
== See Also ==<br />
* [[$asctime]] returns the time and date in text format associated with the $ctime time value.<br />
<br />
[[Category:Time and Date Identifiers]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Debug&diff=5783
Debug
2012-12-13T15:50:40Z
<p>Albie: spelling.</p>
<hr />
<div>Outputs raw server messages, both incoming and outgoing, to a debug.log file, or a custom @window.<br /><br />
'''$debug''' returns the name of debug file/window.<br />
<br />
/debug [-cinpt] [N] [on|off|@window|filename] [identifier]<br />
<br />
'''Note:''' /debug works independently for each server connection.<br />
<br />
== Switches ==<br />
{| style="width:100%"<br />
|-<br />
| '''''Switch''''' || '''''Meaning'''''<br />
|-<br />
| -c || turns off debugging and closes the associated custom @window<br />
|-<br />
| -i || the specified identifier before a debug line is logged. The return value of the identifier is used as the debug line.<br />
|-<br />
| -n || opens the custom @window minimized.<br />
|-<br />
| -p || turns word wrapping on.<br />
|-<br />
| -t || turns timestamping on.<br />
|}<br />
<br />
== Example on using a custom alias: ==<br />
; we'll make an alias that we will use with /debug -i<br />
alias debugoutput { <br />
<br />
; the debug line is actually $1, so we'll now tokenize it, so we can use [[$1-|$1]] [[$1-]] etc.<br />
[[tokenize]] 32 [[$1-|$1]] <br />
<br />
; this will just replace those arrows <- and -> (which is $1 after the tokenize) with colored ones<br />
[[return]] [[$replace]]($1, [[$&]]<br />
<-, [[DollarPlus|$+]]([[$chr]](3),10,<-,[[$chr]](3)), [[$&]]<br />
->, [[DollarPlus|$+]]([[$chr]](3),04,->,[[$chr]](3)) [[$&]]<br />
) [[$1-|$2-]] <br />
}<br />
<br />
; now just open the debug window with /debug -i @debug debugoutput<br />
<br />
[[Category:Commands]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Timer&diff=5781
Timer
2012-12-01T20:30:24Z
<p>Albie: Added a note about the way the time switch is used.</p>
<hr />
<div>Activates the specified timer to perform the specified command at a specified interval, and optionally at a specified time.<br />
/timer[N/name] [-ceomhipr] [time] <repetitions> <interval> <command><br />
<br />
If you are not connected to a server and a timer is started, it will be an offline timer by default, meaning that it will continue to run whether you are connected to a server on not. If you are connected to a server while starting a timer, it will be an online timer, that will stop if you disconnect. You can make a timer being an offline timer by using the -o switch.<br />
<br />
To make a new timer, you can either use /timer without name/number or you can specify a name, without space between the command and the name (/timerfoo ...). If you do not specify a name/number, mIRC will get the first free timernumber it finds and use this.<br />
<br />
If you specify a delay of 0 seconds, the timer will trigger immediately after the calling script ends.<br />
<br />
You can also specify a time when the timer is supposed to trigger (see example below).<br />
<br />
'''Note''' that if you specify 0 repetitions it will continue until you either stop it yourself or you disconnect, in case it is an online timer.<br />
<br />
'''Note''' that identifiers usually '''do not''' get re-evaluated during a timer (see example below). To force this, you have to use an exclamation mark after the ''$'' of an identifier (e.g. [[$time|$!time]] or [[$me|$!me]])<br />
<br />
You can '''stop''' a timer by using ''/timer<name|N> off'', which will also be able to handle wildcards in the name (see example below).<br />
<br />
<br />
You can use the following switches:<br />
<br />
{|<br />
| width="10%" | '''''Switch''''' || width="90%" | '''''Explanation'''''<br />
|-<br />
| valign="top" | c || will make mIRC "catch up" a timer by executing it more than once during one interval if the real-time interval isn't matching your requested interval.<br />
|-<br />
| m / h || indicates that the interval delay is in milliseconds.<br />
|-<br />
| h || make a high-resolution multimedia timer (uses system resources heavily)<br />
|-<br />
| e || will executes the command associated with the specified timer name (works with wildcard names too).<br />
|-<br />
| p || will pause a timer<br />
|-<br />
| r || will resume a timer<br />
|-<br />
| valign="top" | i || will make a timer dynamically associate with whatever happens to be the active connection. If a server window is closed, the timer is associated with the next available server window.<br />
|}<br />
<br />
== Example ==<br />
In the following, we'll always create an [[alias]] to be able to execute commands directly after creating the timer.<br />
<br />
alias timertest {<br />
timer 2 2 [[echo]] -a moo!<br />
}<br />
This alias just creates an timer that will echo ''moo!'' to your active window two times with a delay of 2 seconds.<br />
<br />
<br />
alias timertest {<br />
timer1 2 10 echo -a [[$asctime|$!asctime]]<br />
timer2 2 10 echo -a $asctime<br />
}<br />
Here we create two timers, one with forcing it to re-evaluate the identifier (the one on top), the other not. You will see the first always echoing the current time, the other always echoing the time when it was started.<br />
<br />
<br />
alias timertest {<br />
timermilli -m 10 50 echo -a The difference is 50 milliseconds.<br />
}<br />
This timer called milli will echo ''The difference is 50 milliseconds.'' every 0,05 seconds to your active window, all in all 10 times.<br />
<br />
<br />
alias timertest {<br />
timertime 14:00 1 1 echo -a It is 14:00 o'clock.<br />
}<br />
This one will echo ''It is 14:00 o'clock.'' to the active window when it is 14oclock, as we made the timer trigger then.<br />
<br />
<br />
timer1* off<br />
We just stop all timers beginning with a 1.<br />
<br />
== Notes ==<br />
When using {, } and | in timers they will get evaluated before setting the timer so it is always advisable to avoid stacking commands inside of a timer.<br />
<br />
Best practise would be to never try and stack commands inside a timer, instead create an alias with the commands you wish to run and start a timer to execute the alias.<br />
timer 1 5 showme<br />
alias showme {<br />
if ($true) {<br />
echo -ag My name is $mnick<br />
echo -ag And I eat fish.<br />
}<br />
echo -ag That go moo!<br />
}<br />
<br />
Although it should be avoided where ever possible it is possible to stack commands using [[$chr]](124) as the command delimiter.<br />
timer 1 5 echo -ag My name is $mnick $chr(124) echo -ag And I eat fish.<br />
;;This will start a timer like this:<br />
* Timer 1 1 time(s) 5s delay echo -ag My name is Dana | echo -ag And I eat fish. (QuakeNet)<br />
It is also possible to use $chr(123) and $chr(125) instead of { and } for stacking commands in an if-then-else.<br />
timer 1 5 if ([[$true]]) $chr(123) echo -ag My name is $mnick $chr(124) echo -ag And I eat fish. $chr(125) $chr(124) echo -ag That go moo!<br />
;;This will start a timer like this:<br />
* Timer 1 1 time(s) 5s delay if ([[$true]]) { echo -ag My name is Dana | echo -ag And I eat fish. } | echo -ag That go moo! (QuakeNet)<br />
<br />
Take extra care when using the TIME switch with repeats. The time option is only used for setting the timer. Here is details of how the previously mentioned timed timer initiates.<br />
timer 14:00 1 1 echo -a It is 14:00 o'clock.<br />
;When when the time is 14:00, start a timer which runs once with a delay at 1 second.<br />
;The result would be at 14:00:01 the echo would be displayed.<br />
<br />
timer 14:00 0 1 echo -a It is 14:00 o'clock.<br />
;When when the time is 14:00, start a timer which runs continually every second.<br />
;The result would be at 14:00:01,14:00:02,14:00:03,14:00:04,14:00:05,... the echo would be displayed.<br />
<br />
;If you wish to run a timer every day there is two options, either set the with a delay of one day or restart the timer.<br />
timer 14:00 0 [[$duration]](1day) echo -a It's 14:00!<br />
;Using the above timer the echo would ''not'' run today but the duration amount 1day/86400 seconds after.<br />
;To overcome that you can either set two timers like this:<br />
timer 14:00 0 $duration(1day) echo -a It's 14:00!<br />
timer 14:00 1 0 echo -a It's 14:00!<br />
;Or if you're using an alias reinitialise the timer.<br />
timer 14:00 1 0 showTime<br />
alias showTime {<br />
.timer 14:00 1 1 showTime<br />
echo -a It's 14:00!<br />
}<br />
<br />
'''''Avoid''''' using timer [time] 0 0 as this is almost certainly going to be a mistake.<br />
<br />
== See Also ==<br />
* [[timers|/timers]] to stop all timers, take a look at.<br />
* [[$timer]] to get information about a timer.<br />
<br />
[[Category:Commands]]<br />
[[Category:Timer Commands and Identifiers]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=$int&diff=5776
$int
2012-06-12T08:32:15Z
<p>Albie: Added examples of negative numbers fixed a typo.</p>
<hr />
<div>Returns the specified integer number without rounding.<br />
<br />
$int(N)<br />
<br />
* ''N'' is the number with decimals you want to handle.<br />
<br />
== Note ==<br />
The difference between $int and [[$floor]] is only visible with negative numbers. For example:<br />
$floor(5.6) ;returns 5<br />
$int(5.6) ;returns 5<br />
$floor(-5.6) ;returns -6<br />
$int(-5.6) ;returns -5<br />
<br />
<br />
== Examples ==<br />
<br />
$int([[$pi]]) ;will return ''3''<br />
$int(9312412.3213) ;will return ''9312412''<br />
<br />
[[var]] %i = 2.5<br />
[[$calc]](%i - $int(%i)) ;will return ''0.5''<br />
$calc(%i % 1) ;will also return ''0.5''<br />
The above example shows how to return the remainder from a decimal number.<br />
<br />
== See also ==<br />
* [[$round]]<br />
* [[$ceil]] <br />
* [[$floor]]<br />
<br />
[[Category:Text and Number Identifiers]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Nick&diff=5755
Nick
2011-09-20T11:56:28Z
<p>Albie: example nickname had incorrect slash</p>
<hr />
<div>Changes your nickname.<br />
<br />
/nick new-nick<br />
<br />
== Note ==<br />
*Valid nickname characters are as follows: 0-9a-z\[]^_`{|}-<br />
*A nickname must also '''not''' begin with a numeric or a hyphen (-). <br />
*Some ircd reserve single character nicknames for service bots, QuakeNet '''is''' an example of this.<br />
''Here is an example to check if %nick is a valid nickname or not:''<br />
[[var]] %nick = \V\alid<br />
var %regex = /^([][A-Za-z_\\^`{|}][][\w\\^`{|}-]*)/<br />
[[If-Then-Else|if]] ([[$regex]](%nick,%regex)) {<br />
[[echo]] -ag [[$regml]](1) is a valid nickname!<br />
}<br />
[[If-then-else|else]] { echo -ag %nick is not a valid nickname! }<br />
'''Note:''' The above example, if you feed it with ''\Valid!nvalid'', it would return it as a valid nickname, although the only valid part of the nick is ''\Valid''. If you type /nick \Valid!nvalid the ircd would trim the nick to \Valid, this is why in the echo of a valid nickname we use $regml(1) instead of %nick, this is a back reference to the valid nickname captured.<br />
<br />
If you also want to check that the nickname is atleast two characters long you can replace the * with a + as it will make sure that the second exists:<br />
/^([][A-Za-z_\\^`{|}][][\w\\^`{|}-]+)/<br />
<br />
<br />
The example below will only match if the whole nickname is valid, so it won't truncate the nickname:<br />
/^([][A-Za-z_\\^`{|}][][\w\\^`{|}-]*)$/<br />
== See Also ==<br />
* {{Relatedraws|nick}}<br />
* [[On nick|On nick event]]<br />
<br />
[[Category:Basic IRC commands]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Speccats&diff=5723
Speccats
2011-04-06T13:04:59Z
<p>Albie: </p>
<hr />
<div><ncl>Category:MIRC</ncl></div>
Albie
https://script.quakenet.org/wiki/index.php?title=Template:Gregorian_serial_date&diff=5721
Template:Gregorian serial date
2011-04-06T12:39:27Z
<p>Albie: ignore me</p>
<hr />
<div>{{#expr: <br />
<!--Days from all years past:--><br />
<br />
+ (({{{year|{{CURRENTYEAR}}}}} - 1) * 365)<br />
+ ((({{{year|{{CURRENTYEAR}}}}} - 1) - (({{{year|{{CURRENTYEAR}}}}} - 1) mod 4)) / 4) <!--add a day for every leap--><br />
- ((({{{year|{{CURRENTYEAR}}}}} - 1) - (({{{year|{{CURRENTYEAR}}}}} - 1) mod 100)) / 100) <!--subtract 100 year exception--><br />
+ ((({{{year|{{CURRENTYEAR}}}}} - 1) - (({{{year|{{CURRENTYEAR}}}}} - 1) mod 400)) / 400) <!--readd 400 year exception--><br />
<br />
<!--Days so far this year:--><br />
<br />
+ {{ #ifexpr: <!--add days for past months this year--> <!--Gives 1 or 2 extra days because of February--><br />
({{{month|{{CURRENTMONTH}}}}} - 1) < 8 <br />
| ( ({{{month|{{CURRENTMONTH}}}}} - 1) * 30.5 round 0) <br />
| ( ({{{month|{{CURRENTMONTH}}}}} - 1) * 30.5 + 0.9 round 0 ) <br />
}} <br />
- {{ #ifexpr: ({{{month|{{CURRENTMONTH}}}}} <= 2) | 0 | <br />
{{ #ifexpr: <!-- if leap year --><br />
({{{year|{{CURRENTYEAR}}}}} / 4) = ({{{year|{{CURRENTYEAR}}}}} / 4 round 0) <!--If divisible by 4--><br />
and ({{{year|{{CURRENTYEAR}}}}} / 100 != {{{year|{{CURRENTYEAR}}}}} / 100 round 0) <!--and not by 100--><br />
| 1 | 2 <br />
}}<br />
}}<br />
+ {{ #ifexpr: ({{{month|{{CURRENTMONTH}}}}} <= 2) | 0 |<br />
{{ #ifexpr: <!--400 year exception--><br />
({{{year|{{CURRENTYEAR}}}}} / 400) = ({{{year|{{CURRENTYEAR}}}}} / 400 round 0) <br />
| 1 | 0 <br />
}}<br />
}} <br />
+ {{{day|{{CURRENTDAY}}}}}<br />
}}{{#ifexpr: {{{year|{{CURRENTYEAR}}}}} < 1 |<br />
_ERROR - Can not handle dates before January 1, 1 A.D.<br />
}}<noinclude>{{documentation}}</noinclude></div>
Albie
https://script.quakenet.org/wiki/index.php?title=Template:Age_in_years_and_days/days&diff=5720
Template:Age in years and days/days
2011-04-06T12:37:42Z
<p>Albie: ignore4</p>
<hr />
<div>{{nts|{{{1}}}}}&nbsp;{{#ifeq: {{{1}}}|1|day|days}}</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Template:Age_in_years_and_days/days&diff=5719
Template:Age in years and days/days
2011-04-06T12:37:28Z
<p>Albie: ignore3</p>
<hr />
<div>Template:Age_in_years_and_days/years</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Template:Age_in_years_and_days/years&diff=5718
Template:Age in years and days/years
2011-04-06T12:36:59Z
<p>Albie: ignore2</p>
<hr />
<div>Template:Age_in_years_and_days/years</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Template:Age_in_years_and_days_textual_version&diff=5717
Template:Age in years and days textual version
2011-04-06T12:32:15Z
<p>Albie: ignore me too</p>
<hr />
<div><includeonly>{{age in years and days/years|{{age | {{{1}}} | {{{2}}} | {{{3}}} | {{{4|{{CURRENTYEAR}}}}} | {{{5|{{CURRENTMONTH}}}}} | {{{6|{{CURRENTDAY}}}}}}}}} and {{age in years and days/days|{{age in days | {{#ifexpr: {{{5|{{CURRENTMONTH}}}}}<{{{2}}} | {{#expr:{{{4|{{CURRENTYEAR}}}}}-1}} | {{#ifexpr:{{{5|{{CURRENTMONTH}}}}}={{{2}}} | {{#ifexpr:{{{6|{{CURRENTDAY}}}}}<{{{3}}} | {{#expr:{{{4|{{CURRENTYEAR}}}}}-1}} | {{{4|{{CURRENTYEAR}}}}}}} | {{{4|{{CURRENTYEAR}}}}}}}}} | {{{2}}} | {{{3}}} | {{{4|{{CURRENTYEAR}}}}} | {{{5|{{CURRENTMONTH}}}}} | {{{6|{{CURRENTDAY}}}}}}}}}</includeonly><noinclude>{{Documentation}}</noinclude></div>
Albie
https://script.quakenet.org/wiki/index.php?title=User:Albie&diff=5716
User:Albie
2011-04-06T12:28:01Z
<p>Albie: Final birthday edit.</p>
<hr />
<div>{{Babel-1|en}}<br />
<table border="0"><br />
<tr><br />
<td>[[Image:Albie.png]]</td><br />
<td><br />
<table border="0"><br />
<tr><td><b>Name</b></td><td>Andy Calderbank</td></tr><br />
<tr><td><b>Age</b></td><td>{{age|1982|6|19}}</td></tr><br />
<tr valign="top" height="40"><td><b>Country</b></td><td>Preston, Northwest UK</td></tr><br />
<br />
<tr><td><b>Words of wisdom</b></td><td>Man who goes to bed with itchy ass, wakes up with smelly finger -- AveIT</td></tr><br />
</table><br />
</td><br />
</tr><br />
</table><br />
[[Category:Members]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Template:Age_in_days&diff=5715
Template:Age in days
2011-04-06T12:22:54Z
<p>Albie: Created page with "<includeonly>{{#expr: + {{Gregorian serial date |month = {{{month2|{{{5|{{CURRENTMONTH}}}}}}}} |day = {{{day2|{{{6|{{CURRENTDA..."</p>
<hr />
<div><includeonly>{{#expr:<br />
+ {{Gregorian serial date<br />
|month = {{{month2|{{{5|{{CURRENTMONTH}}}}}}}}<br />
|day = {{{day2|{{{6|{{CURRENTDAY}}}}}}}}<br />
|year = {{{year2|{{{4|{{CURRENTYEAR}}}}}}}}<br />
}}<br />
- {{Gregorian serial date<br />
|month = {{{month1|{{{2|{{CURRENTMONTH}}}}}}}}<br />
|day = {{{day1|{{{3|{{CURRENTDAY}}}}}}}}<br />
|year = {{{year1|{{{1|{{CURRENTYEAR}}}}}}}}<br />
}} }}</includeonly><noinclude><br />
{{documentation}}<br />
</noinclude></div>
Albie
https://script.quakenet.org/wiki/index.php?title=Category:AllCategories&diff=5714
Category:AllCategories
2011-04-02T16:18:24Z
<p>Albie: </p>
<hr />
<div><ncl showcats=1 headings=bullet>Category:AllCategories</ncl></div>
Albie
https://script.quakenet.org/wiki/index.php?title=Category:AllCategories&diff=5713
Category:AllCategories
2011-04-02T16:14:19Z
<p>Albie: Show sub-cats</p>
<hr />
<div><ncl showcats=1>Category:AllCategories</ncl></div>
Albie
https://script.quakenet.org/wiki/index.php?title=Category:AllCategories&diff=5712
Category:AllCategories
2011-04-02T16:13:09Z
<p>Albie: Created page with "<ncl>Category:AllCategories</ncl>"</p>
<hr />
<div><ncl>Category:AllCategories</ncl></div>
Albie
https://script.quakenet.org/wiki/index.php?title=Category:MIRC&diff=5711
Category:MIRC
2011-04-02T16:12:02Z
<p>Albie: Added page to AllCategories page.</p>
<hr />
<div>[[Image:Mirc_logo.gif|right|mIRC logo]]<br />
mIRC is an '''[[IRC]]''' client for Windows written and developed by '''Khaled Mardam-Bey'''. It supports a proprietory scripting language which can be used to extend or modify the client's behaviour and file sharing.<br />
<br />
mIRC is only available in english, though is still very easy to use because of it's graphical userfrendly interface.<br />
<br />
You can download the current version at [http://www.mirc.com/ www.mirc.com].<br />
<br />
== IRC ==<br />
mIRC is a Windows client application for connecting to [[IRC]] (Internet Relay Chat) networks. IRC networks are a virtual meeting place where people from all over the world can meet and talk privately or in groups (channels).<br />
<br />
== External links ==<br />
*[http://www.mirc.co.uk/ Official website]<br />
*[http://www.mirc.com/faq.html Frequently Asked Questions about mIRC by Khaled]<br />
<br />
[[Category:AllCategories]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Speccats&diff=5710
Speccats
2011-04-02T15:43:54Z
<p>Albie: </p>
<hr />
<div><ncl>Category:Other_Identifiers</ncl></div>
Albie
https://script.quakenet.org/wiki/index.php?title=Speccats&diff=5709
Speccats
2011-04-02T15:43:25Z
<p>Albie: </p>
<hr />
<div><ncl style=compact headings=bullet headstart=2 showcats=1 showarts=0>Category:Other_Identifiers</ncl></div>
Albie
https://script.quakenet.org/wiki/index.php?title=Speccats&diff=5708
Speccats
2011-04-02T15:40:45Z
<p>Albie: </p>
<hr />
<div><ncl style=compact headings=bullet headstart=2 showcats=1 showarts=0>Category:Raws</ncl></div>
Albie
https://script.quakenet.org/wiki/index.php?title=Speccats&diff=5707
Speccats
2011-04-02T15:37:59Z
<p>Albie: Categories Page creation.</p>
<hr />
<div><ncl style=compact headings=bullet headstart=2 showcats=1 showarts=0>Category:Categories</ncl></div>
Albie
https://script.quakenet.org/wiki/index.php?title=Auth-Update2&diff=5683
Auth-Update2
2011-03-12T12:29:47Z
<p>Albie: set %chans as a local variable before using it inside the au.who causing unwanted data appearing in the who list</p>
<hr />
<div>This snippet is a new version of [[Auth-Update|Auth_update]]<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AUTH_UPDATE2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
;<br />
; by Vliedel -- #vliedel @ QuakeNet<br />
; version 1.2 (written and tested on mIRC 6.35)<br />
; made for networks supporting WHOX<br />
;<br />
;<br />
;What does this script do?<br />
;<br />
; - updates the auths of nicks and stores them in a hash table<br />
; - if a channel is too big, /who nick1,nick2,nick3 etc is done untill the auths for the channel is updated<br />
; - users who have a site with the auth in it will be saved without a /who<br />
; ie: "Vliedel" in "Vliedel.users.quakenet.org" will be treated as auth on the QuakeNet network<br />
; - users who are not authed (auth 0) will be checked every x time to see if they are authed yet<br />
; - script updates from largest to the smallest channel<br />
;<br />
;<br />
;How to use this script?<br />
;<br />
; - config the options below<br />
; - /load -rs1 auth_update2.mrc to load the script<br />
; - script starts on load or on join<br />
; - to get the auth of a nick use: $auth(nick) or $auth(nick,cid)<br />
; - to get a nick from an auth use: $auth-nick(auth) or $auth-nick(auth,cid)<br />
; - to recheck a nick that was not authed by command use: /auth.update <nick><br />
; note that rechecking is done automatically, only use this command if you really want to recheck quickly<br />
; - this script should be loaded as last script in your list for optimal usage<br />
;<br />
; - You can use the following example script to see when a nicks auth is updated<br />
; on *:SIGNAL:authupdate.new:{<br />
; if (!$2) { echo -ag $1 is not authed }<br />
; else { echo -ag $1 is authed as $2 }<br />
; }<br />
;<br />
; - The following signal is send when a requested auth is updated (with /auth.update <nick>)<br />
; on *:SIGNAL:authupdate.req:{<br />
; if ($2 == $null) { echo -ag requested: $1 is not on a common chan }<br />
; elseif ($2 == 0) { echo -ag requested: $1 is not authed }<br />
; else { echo -ag requested: $1 is authed as $2 }<br />
; }<br />
;<br />
; Note that these signals return $2 == $null when someone isn't on a common channel.<br />
; This may occur for example when someone parted a channel between the /who and the who reply.<br />
;<br />
;<br />
;Why is this script good?<br />
;<br />
; - compared with my first auth_update, this script uses less resources, at the cost of a little bit more traffic<br />
; - sending /who chan for every channel is not needed and goes slow (lag)<br />
; - sending /who chan on join may cause Excess Flood or Max sendQ exceeded<br />
; - sending /who chan1,chan2,chan3 can be much faster, but only if there are not too many results (Max sendQ exceeded)<br />
; - unauthed users can auth without you knowing, so you need to check if they're authed every so many time.<br />
;<br />
;<br />
;Since some people do not understand how to use this script on join, here is an example:<br />
;<br />
; on *:JOIN:#:{<br />
; newuser $chan $nick<br />
; }<br />
; <br />
; ; $1 = nick $2 = auth<br />
; on *:SIGNAL:authupdate.new:{<br />
; if (*.users.quakenet.org iswm $ial($1)) { return }<br />
; var %i = 1<br />
; while ($comchan($1,%i)) {<br />
; newuser $v1 $1<br />
; inc %i<br />
; }<br />
; }<br />
; <br />
; ; $1 = chan $2 = nick<br />
; alias -l newuser {<br />
; var %auth = $auth($2)<br />
; if (%auth) { echo 4 -tg $1 $2 is authed as %auth }<br />
; elseif (%auth == 0) { echo 4 -tg $1 $2 is not authed }<br />
; }<br />
;<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SETTINGS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
<br />
; maximum number of replies in a WHO, too high may cause 'Max sendQ exceeded' disconnection<br />
; too low may take the script a long time to update the auths, 1000 should be fine for most situations<br />
alias -l max.replies { return 1000 }<br />
<br />
; maximum length of the /who <string>, too long may cause the server to ignore the command<br />
; too low may slow things down, 400 should be fine in most cases<br />
alias -l max.len { return 400 }<br />
<br />
; minimum time (seconds) between two /who commands (default 10)<br />
alias -l delay { return 10 }<br />
<br />
; time (seconds) between the checking if any unauthed users should be rechecked (default 120)<br />
alias -l queue.delay { return 120 }<br />
<br />
; time (seconds) to recheck if an unauthed user is now authed (default 600)<br />
alias -l queue.check { return 600 }<br />
<br />
; minimum ratio of (nicks with unknown auth) / (total nicks) in a channel to do /who #channel rather then /who nick,nick, (default 0.09)<br />
alias -l min.ratio { return 0.09 }<br />
<br />
; minimum nr of nicks with unknown auth in a channel to do /who #channel rather then /who nick,nick, (default 10)<br />
alias -l min.nicks { return 10 }<br />
<br />
; The networks the script is supposed to work on (case sensitive)<br />
; NOTE that the script ONLY works on networks supporting WHOX (ircu 2.10.* should work)<br />
alias -l used.network {<br />
return $istokcs(QuakeNet UnderNet GameSurge HanIRC NetGamers OGameNet,$network,32)<br />
}<br />
<br />
; For every network a check to see if a user has a site where his authname is in<br />
; $1 is the site<br />
alias -l auth.in.site {<br />
var %n = $network<br />
if (%n === QuakeNet) { return $iif(*.users.quakenet.org iswm $1,$true) }<br />
elseif (%n === UnderNet) { return $iif(*.users.undernet.org iswm $1,$true) }<br />
elseif (%n === GameSurge) { return $iif(*.*.GameSurge iswm $1,$true) }<br />
elseif (%n === HanIRC) { return $iif(*.users.HanIRC.org iswm $1,$true) }<br />
elseif (%n === NetGamers) { return $iif(*.users.netgamers.org iswm $1,$true) }<br />
elseif (%n === OGameNet) { return $iif(*.user.OGameNet iswm $1,$true) }<br />
}<br />
<br />
; For every network the method to return the auth from the site<br />
; $1 is the site<br />
alias -l auth.from.site {<br />
var %n = $network<br />
if (%n === QuakeNet) { return $gettok($1,1,46) }<br />
elseif (%n === UnderNet) { return $gettok($1,1,46) }<br />
elseif (%n === GameSurge) { return $gettok($1,1,46) }<br />
elseif (%n === HanIRC) { return $gettok($1,1,46) }<br />
elseif (%n === NetGamers) { return $gettok($1,1,46) }<br />
elseif (%n === OGameNet) { return $gettok($1,1,46) }<br />
}<br />
<br />
; $auth(nick [,cid]) returns the auth of the nick<br />
alias auth {<br />
if (!$isid) { $iif($show,.auth,auth) $1- | return }<br />
if ($1 == $null) || ($2 !== $null && (!$scid($2) || !$2)) { return }<br />
return $gettok($hget($iif($2,$2,$cid) $+ .auths,$+(auth.,$comchan($1,1),$chr(44),$1)),1,32)<br />
}<br />
<br />
; $auth-nick(auth [,cid]) returns the first nick with that auth<br />
alias auth-nick {<br />
if ($1 == $null) || ($2 !== $null && (!$scid($2) || !$2)) { return }<br />
return $gettok($hfind($iif($2,$2,$cid) $+ .auths,$1,1,n).data,-1,44)<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AUTH.UPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
<br />
; /auth.update nick<br />
alias auth.update {<br />
if (!$used.network) || (!$comchan($1,1)) { return }<br />
var %t = $cid $+ .auths , %a = $hget(%t,$+(auth.,$comchan($1,1),$chr(44),$1))<br />
if (0 * iswm %a) { hdel -w %t $+(auth.,*,$chr(44),$1) }<br />
if (!%a) || (0 * iswm %a) { au.update n $1 | hadd %t req. $+ $1 1 }<br />
else { .signal authupdate.req $1 %a }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AU.UPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
<br />
; $1 = t/n/c/r (timer nick chan repeat)<br />
; [$1- = n nick]<br />
alias -l au.update {<br />
var %t = $cid $+ .auths<br />
if (!$hget(%t)) { hmake %t }<br />
var %tim = au.update.delay. $+ $cid , %d = $hget(%t,delay)<br />
if ($ctimer == %tim) && ($1 !== r) { hadd -u $+ $delay %t delay 1 | au.who | return }<br />
if (!%d) || ($1 == r) { hadd -u $+ $delay %t delay 1 }<br />
if ((!$timer(%tim) && (%d || $1 == c)) || $1 == r) { .timer $+ %tim 1 $delay au.update }<br />
if (!%d && !$timer(%tim) && $1 !== c && $1 !== r) { au.who $iif($1 == n,$2) }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NICKLIST CHANGING EVENTS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on ^*:JOIN:#:{<br />
var %t = $cid $+ .auths<br />
if (!$used.network) { return }<br />
if ($nick == $me) { au.start | au.update c | return }<br />
if (!$hget(%t)) { return }<br />
if ($hfind(%t,$+(auth.*,$chr(44),$nick),1,w)) { hadd %t $+(auth.,$chan,$chr(44),$nick) $hget(%t,$v1) }<br />
elseif ($auth.in.site($site)) { au.upd.nick $nick $site }<br />
else { au.update n $nick }<br />
}<br />
<br />
on *:PART:#:{ au.part $chan $nick | au.upd.nick $nick $site $chan }<br />
on *:KICK:#:{ au.part $chan $knick | au.upd.nick $nick $site }<br />
<br />
; $1 = chan $2 = nick<br />
alias -l au.part {<br />
var %t = $cid $+ .auths<br />
if (!$hget(%t)) { return }<br />
if ($2 == $me) {<br />
hdel -w %t auth. $+ $chan $+ ,*<br />
hdel %t ctime. $+ $chan<br />
var %i = $hfind(%t,req.*,0,w)<br />
while (%i) {<br />
var %it = $hfind(%t,req.*,%i,w) , %n = $gettok(%it,2,46)<br />
if (%n ison $1) && (!$comchan(%n,2)) { hdel %t %it | .signal authupdate.req %n }<br />
dec %i<br />
}<br />
}<br />
else {<br />
hdel %t $+(auth.,$1,$chr(44),$2)<br />
if ($hget(%t,req. $+ $2)) && (!$comchan($2,2)) { hdel %t req. $+ $2 | .signal authupdate.req $2 }<br />
}<br />
}<br />
<br />
on *:QUIT:{<br />
var %t = $cid $+ .auths<br />
if (!$hget(%t)) { return }<br />
hdel -w %t $+(auth.,*,$chr(44),$nick)<br />
if ($hget(%t,req. $+ $nick)) { hdel %t req. $+ $nick | .signal authupdate.req $nick }<br />
}<br />
<br />
on ^*:NICK:{<br />
var %i = $comchan($newnick,0) , %t = $cid $+ .auths<br />
if ($nick == $newnick) || (!$hget(%t)) { return }<br />
while (%i) {<br />
var %it = $+(auth.,$comchan($newnick,%i),$chr(44))<br />
$iif($hget(%t,%it $+ $nick),hadd,hdel) %t %it $+ $newnick $v1<br />
hdel %t %it $+ $nick<br />
dec %i<br />
}<br />
if ($hget(%t,req. $+ $nick)) { hadd %t req. $+ $newnick 1 | hdel %t req. $+ $nick }<br />
if ($auth.in.site($site)) { au.upd.nick $newnick $site }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AU.WHO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
<br />
; [$1 = nick]<br />
alias -l au.who {<br />
var %chans, %t2 = $cid $+ .au.who<br />
if ($hget(%t2)) { hfree %t2 }<br />
hmake %t2<br />
if ($1) {<br />
var %who = $1 $+ ,,, $+ 137<br />
hadd %t2 -mask %who<br />
who %who n%nat,137<br />
return<br />
}<br />
var %i = $comchan($me,0) , %t = $cid $+ .auths , %sort , %ticks = $ticks<br />
while (%i) {<br />
var %sort = %sort $nick($comchan($me,%i),0) $+ . $+ %i<br />
dec %i<br />
}<br />
var %sort = $sorttok(%sort,32,n) , %i = $numtok(%sort,32) , %maxlen = $max.len , %n.max = $max.replies , %time = $calc($ctime - $queue.check) , %ids , %n.w , %len<br />
while (%i) {<br />
var %c = $comchan($me,$gettok($gettok(%sort,%i,32),2,46)) , %n.0 = $hfind(%t,0 %c &,0,w).data , %n.c = $nick(%c,0)<br />
var %n.l = $calc(%n.c - $hfind(%t,$+(auth.,%c,$chr(44),*),0,w) + $iif(%time < $hget(%t,ctime. $+ %c),0,%n.0))<br />
if ($calc(%len + $len(%c) +1) > %maxlen) || ($calc(%n.w + %n.c) > %n.max) { dec %i | continue }<br />
if (%n.l > 1) && ((%n.l >= $min.nicks) || ($calc(%n.l / %n.c) >= $min.ratio)) {<br />
var %chans = %chans %c<br />
hadd %t ctime. $+ %c $ctime<br />
var %j = $nick(%c,0)<br />
while (%j) {<br />
var %n = $nick(%c,%j)<br />
if (!$hget(%t2,%n)) { hadd %t2 %n 1 | inc %n.w }<br />
dec %j<br />
}<br />
inc %len $calc($len(%c) +1)<br />
}<br />
dec %i<br />
}<br />
var %i = $comchan($me,0) , %nicks<br />
while (%i) {<br />
var %c = $comchan($me,%i)<br />
if (!$istok(%chans,%c,32)) {<br />
if ($calc($nick(%c,0) - $hfind(%t,$+(auth.,%c,$chr(44),*),0,w)) > 0) {<br />
var %j = $nick(%c,0)<br />
while (%j) {<br />
var %n = $nick(%c,%j)<br />
if ($calc(%len + $len(%n) +1) > %maxlen) { goto end }<br />
var %val = $hget(%t,$+(auth.,%c,$chr(44),%n))<br />
if (!$hget(%t2,%n)) && ((%val == $null) || ($gettok(%val,3,32) < %time)) { var %nicks = %nicks %n | hadd %t2 %n 1 | inc %n.w | inc %len $len(%n) }<br />
if (%n.w >= %n.max) { goto end }<br />
dec %j<br />
}<br />
}<br />
else {<br />
var %j = $hfind(%t,0 %c &,0,w).data<br />
while (%j) {<br />
var %it = $hfind(%t,0 %c &,%j,w).data , %n = $gettok(%it,2,44)<br />
if ($calc(%len + $len(%n) +1) > %maxlen) { goto end }<br />
if (!$hget(%t2,%n)) && ($gettok($hget(%t,%it),3,32) < %time) && (auth.* iswm %it) { var %nicks = %nicks %n | hadd %t2 %n 1 | inc %n.w | inc %len $len(%n) }<br />
if (%n.w >= %n.max) { goto end }<br />
dec %j<br />
}<br />
}<br />
}<br />
dec %i<br />
}<br />
:end<br />
var %who = $replace(%chans %nicks,$chr(32),$chr(44))<br />
if (%who) {<br />
var %who = %who $+ ,,, $+ 137<br />
hadd %t2 -mask %who<br />
who %who n%nat,137<br />
if (%len > $calc(%maxlen * 0.7)) || (%n.w > $calc(%n.max * 0.7)) { au.update r }<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RAW REPLIES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; RAW 354 SPECIAL WHO REPLY<br />
; 354 <you> <nr> <nick> <auth><br />
; 354 Vliedel 137 sy rry<br />
RAW 354:& 137 & &:{<br />
haltdef<br />
var %i = $comchan($3,0) , %t = $cid $+ .auths<br />
if ($hget(%t,req. $+ $3)) { hdel %t req. $+ $3 | .signal authupdate.req $3 $iif(%i,$4) }<br />
if (!%i) || (!$hget(%t)) { return }<br />
if ($gettok($hget(%t,$+(auth.,$comchan($3,1),$chr(44),$3)),1,32) !== $4) { .signal authupdate.new $3 $4 }<br />
while (%i) {<br />
var %c = $comchan($3,%i)<br />
hadd %t $+(auth.,%c,$chr(44),$3) $4 $iif(!$4,%c $ctime)<br />
dec %i<br />
}<br />
}<br />
<br />
; RAW 315 WHO END<br />
; 315 <you> <requested> :End of /who list.<br />
; 315 Vliedel #vliedel,,,137 :End of /WHO list.<br />
RAW 315:& *,,,137 end of /WHO list.: {<br />
if ($hget($cid $+ .au.who,-mask) == $2) {<br />
var %who = $left($2,-6) , %i = $wildtok(%who,#*,0,44) , %t = $cid $+ .auths<br />
while (%i) {<br />
hadd %t ctime. $+ $wildtok(%who,#*,%i,44) $ctime<br />
dec %i<br />
}<br />
hfree $cid $+ .au.who<br />
}<br />
haltdef<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; STARTING AND STOPPING ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:LOAD:{ scon -at1 au.load l }<br />
alias -l au.load {<br />
au.stop<br />
au.start<br />
au.update t<br />
}<br />
<br />
alias -l au.stop {<br />
.timer $+ au.update. $+ $cid off<br />
.timer $+ au.update.delay. $+ $cid off<br />
if ($hget($cid $+ .auths)) { hfree $v1 }<br />
if ($hget($cid $+ .au.who)) { hfree $v1 }<br />
}<br />
<br />
alias -l au.start {<br />
if (!$used.network) { return }<br />
if (!$hget($cid $+ .auths)) { hmake $cid $+ .auths }<br />
if (!$timer(au.update. $+ $cid)) { .timer $+ au.update. $+ $cid 0 $queue.delay au.update t }<br />
}<br />
<br />
on *:DISCONNECT:{ au.stop }<br />
on *:UNLOAD:{ scon -a au.stop }<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IAL-UPDATING EVENTS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on ^*:TEXT:*:*:{ au.upd.nick $nick $site }<br />
on ^*:ACTION:*:*:{ au.upd.nick $nick $site }<br />
on ^*:NOTICE:*:*:{ au.upd.nick $nick $site }<br />
on ^*:RAWMODE:#:{ au.upd.nick $nick $site }<br />
on ^*:TOPIC:#:{ au.upd.nick $nick $site }<br />
on ^*:INVITE:#:{ au.upd.nick $nick $site }<br />
CTCP *:*:*:{ au.upd.nick $nick $site }<br />
RAW 352:& & & & & & & & *: { au.upd.nick $6 $4 }<br />
<br />
; $1 = nick $2 = site [ $3 = chan (exclude it)]<br />
alias -l au.upd.nick {<br />
if (!$auth.in.site($2)) || (!$hget($cid $+ .auths)) { return }<br />
var %i = $comchan($1,0) , %t = $cid $+ .auths , %au = $auth.from.site($2)<br />
if (!%i) || (%i == 1 && $3) || ($hget(%t,$+(auth.,$comchan($1,1),$chr(44),$1)) == %au) { return }<br />
while (%i) {<br />
if ($comchan($1,%i) !== $3) { hadd %t $+(auth.,$v1,$chr(44),$1) %au }<br />
dec %i<br />
}<br />
.signal authupdate.new $1 %au<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; USED DATA/TIMERS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
<br />
; TABLE <cid>.auths<br />
;auth.<chan>,<nick> --> <auth> [chan ctime]<br />
;req.<nick> --> 1<br />
;ctime.<chan> --> <ctime><br />
;delay --> <1/0/null><br />
<br />
; TABLE <cid>.au.who<br />
; nick --> 1<br />
; -mask --> /who string<br />
<br />
; TIMER au.update.delay.<cid><br />
; TIMER au.update.<cid><br />
<br />
[[Category:Script_Archive]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=On_hotlink&diff=5680
On hotlink
2011-03-11T13:04:26Z
<p>Albie: removed 3rd ]</p>
<hr />
<div>Hotlink events are used to catch when a user hovers over a word, right clicks a word, or double clicks a word, in a normal window situation. '''Note: This does not work in dialogs'''<br />
<br />
on ^<level>:HOTLINK:<matchtext>:<*#?=!@>:<commands><br />
<br />
This form of the event, using the ^ event prefix, triggers when a user hovers over a word with his mouse, or when he right clicks on a word with his mouse.<br />
If [[$mouse]].key indicates that the right mouse button was clicked (if ($mouse.key & 16) { }) then this word was right clicked, otherwise it was simply hovered over by the mouse.<br />
<br />
'''Note: You can use the [[halt]] command to stop the hand from appearing automatically'''<br />
<br />
on <level>:HOTLINK:<matchtext>:<*#?=!@>:<commands><br />
<br />
This form of the event, without the ^ event prefix, triggers when a line is double clicked.<br />
<br />
Use [[$hotline]] to get the line which triggered either event.<br />
Use [[$hotlinepos]] to get the word number, and line number, which triggered either event.<br />
<br />
<br />
<br />
==See Also==<br />
* [[$hotline]]<br />
* [[$hotlinepos]]<br />
* [[Window]]<br />
* [[$mouse]]<br />
[[Category:Events]]<br />
[[Category:Custom Windows]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=$mouse&diff=5679
$mouse
2011-03-11T12:56:44Z
<p>Albie: Reordered and made that page comply with Guidelines</p>
<hr />
<div>[[image:Mouse.png|right|thumb|200px|Differences between $mouse.x/y .mx/my and .dx/dy]]<br />
Returns the x, y position of the current mouse event, and whether the left mouse button, shift key, and/or control key are pressed.<br />
The $mouse identifier can be used in the mouse/click events. <br />
<br />
$mouse<br />
<br />
Properties:<br />
.win property returns the name of the active window.<br />
.x/.y returns mouse x- and y-coordinates relative to active window.<br />
.mx/.my returns mouse x- and y-coordinates relative to mirc window.<br />
.dx/.dy returns mouse x- and y-coordinates relative to desktop.<br />
.lb property returns $true if a mouse event occurred over a listbox, or $false if it didn't.<br />
.key returns a bitwise value of the key(s) being pressed.<br />
<br />
For $mouse.key you can use the & bitwise operator to check if the left button, shift key, and/or control key are pressed:<br />
if ($mouse.key & 1) echo left button is pressed.<br />
if ($mouse.key & 2) echo control key is pressed.<br />
if ($mouse.key & 4) echo shift key is pressed.<br />
if ($mouse.key & 8) echo alt key is pressed.<br />
if ($mouse.key & 16) echo right mouse button is pressed.<br />
<br />
The following menu commands are available for mouse actions:<br />
mouse: triggers when mouse moves in a window<br />
sclick: triggers on single left-click (mouse1; left button)<br />
dclick: triggers on double click (mouse1; left button)<br />
uclick: triggers when button is released inside window, triggers before drop (mouse1; left button)<br />
rclick: triggers on single right-click (mouse2; right button)<br />
lbclick: triggers when user single clicks on window listbox<br />
leave: triggers when mouse moves outside from window area $leftwin = windowname, $leftwinwid = windowID<br />
drop: triggers when button is released inside the window (mouse1; left button)<br />
<br />
== Example ==<br />
; First we'll need to create a picture window from editbox:<br />
; -p means it's a picture window, first @test is the name of the window, the second @test is the name of the popupfile <br />
; (we'll use the window's name so we can use the menu prefix in remote script)<br />
/window -p @test @test<br />
<br />
; the menu for our @test window<br />
menu @test {<br />
; "mouse" triggers whenever mouse moves in the window, and executes draw alias<br />
mouse:draw<br />
<br />
; "dclick" triggers whenever user doubleclicks in the window, we'll use this to clear the window<br />
dclick:clear @test<br />
}<br />
<br />
; this is the alias that is executed everytime mouse moves in @test window<br />
alias draw { <br />
; an if to check if left mouse button is pressed, if so draw a dot into the window with colorcode 4, size 2px, <br />
; and read the X and Y location for the dot from $mouse.x and $mouse.y<br />
if ($mouse.key & 1) { drawdot @test 4 2 $mouse.x $mouse.y } <br />
<br />
; else if left mouse button wasn't pressed, see if right mouse button was<br />
; we'll do the drawdot like earlier, but use background color as the color (erase) and make it a bit bigger<br />
elseif ($mouse.key & 16) { drawdot @test $color(background) 6 $mouse.x $mouse.y }<br />
}<br />
<br />
== See Also == <br />
* [[$click]] Stores a history of x/y clicks in a window.<br />
* [[Popup_Menus#MENU_prefix|Menu Prefix]] Various mouse events inside the custom menus.<br />
<br />
[[Category:Mouse and Menu Identifiers]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=On_hotlink&diff=5678
On hotlink
2011-03-11T12:42:38Z
<p>Albie: Reverted edits by Albie (talk) to last revision by Aca20031</p>
<hr />
<div>Hotlink events are used to catch when a user hovers over a word, right clicks a word, or double clicks a word, in a normal window situation. '''Note: This does not work in dialogs'''<br />
<br />
on ^<level>:HOTLINK:<matchtext>:<*#?=!@>:<commands><br />
<br />
This form of the event, using the ^ event prefix, triggers when a user hovers over a word with his mouse, or when he right clicks on a word with his mouse.<br />
If [[$mouse]].key indicates that the right mouse button was clicked (if ($mouse.key & 16) { }) then this word was right clicked, otherwise it was simply hovered over by the mouse.<br />
<br />
'''Note: You can use the [[halt]] command to stop the hand from appearing automatically'''<br />
<br />
on <level>:HOTLINK:<matchtext>:<*#?=!@>:<commands><br />
<br />
This form of the event, without the ^ event prefix, triggers when a line is double clicked.<br />
<br />
Use [[$hotline]] to get the line which triggered either event.<br />
Use [[$hotlinepos]] to get the word number, and line number, which triggered either event.<br />
<br />
<br />
<br />
==See Also==<br />
* [[$hotline]]<br />
* [[$hotlinepos]]<br />
* [[Window]]<br />
* [[$mouse]]]<br />
[[Category:Events]]<br />
[[Category:Custom Windows]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=On_hotlink&diff=5677
On hotlink
2011-03-11T12:42:14Z
<p>Albie: Fixed $mouse.key being badly linked.</p>
<hr />
<div>Hotlink events are used to catch when a user hovers over a word, right clicks a word, or double clicks a word, in a normal window situation. '''Note: This does not work in dialogs'''<br />
<br />
on ^<level>:HOTLINK:<matchtext>:<*#?=!@>:<commands><br />
<br />
This form of the event, using the ^ event prefix, triggers when a user hovers over a word with his mouse, or when he right clicks on a word with his mouse.<br />
If [[$mouse.key]] indicates that the right mouse button was clicked (if ($mouse.key & 16) { }) then this word was right clicked, otherwise it was simply hovered over by the mouse.<br />
<br />
'''Note: You can use the [[halt]] command to stop the hand from appearing automatically'''<br />
<br />
on <level>:HOTLINK:<matchtext>:<*#?=!@>:<commands><br />
<br />
This form of the event, without the ^ event prefix, triggers when a line is double clicked.<br />
<br />
Use [[$hotline]] to get the line which triggered either event.<br />
Use [[$hotlinepos]] to get the word number, and line number, which triggered either event.<br />
<br />
<br />
<br />
==See Also==<br />
* [[$hotline]]<br />
* [[$hotlinepos]]<br />
* [[Window]]<br />
* [[$mouse]]]<br />
[[Category:Events]]<br />
[[Category:Custom Windows]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Limits&diff=5672
Limits
2011-03-07T18:29:28Z
<p>Albie: Tested the stored password limit, removed tested notice and added version test number.</p>
<hr />
<div>This page explains various limits imposed by mIRC version 7.19, however this may not be a complete list. The length is measured in bytes (equivalent to ASCII characters, including spaces.)<br />
<br />
You can find the original limits page [http://www.xise.nl/mirc/wiki/doku.php?id=limits here.]<br />
<br />
= mIRC =<br />
<table border=2 rules=all cellpadding=4 style=text-align:center><tr><br />
<td>'''Name'''</td><td>'''Length'''</td><td>'''When exceeded'''</td><td>'''Description'''</td></tr><tr><br />
<td colspan=0>'''Global limits'''</td></tr><tr><br />
<td>'''Line Length Limit'''<br>(''LLL'')</td><td>4150</td><td>Truncated or error<td style=text-align:left>To be precise: 4150 for evaluation results, 4151 for command lines (excluding command prefixes.)</td></tr><tr><br />
<td>'''Variables'''<br>(local or global)</td><td>4150</td><td>Truncated</td><td style=text-align:left>This limit includes the variable's name. Example: using "%a" as a name uses 3 bytes (2 for the name and 1 for a space.)<br>This means that for every extra character in the variable name, the maximum length of the value is reduced.<br>'''Note:''' the /set command further reduces the length limit to 4144 due to the 4 characters used by "set ". (LLL)</td></tr><tr><br />
<td>'''Calculations'''</td><td>'''Max value:'''<br>9007199254740992</td><td>Inaccurate</td><td style=text-align:left>Calculations past this number will generally be incorrect. Only the first 15 numbers of the result will be accurately calculated.</td></tr><tr><br />
<td colspan=0>'''IRC server related'''</td></tr><tr><br />
<td>'''Incoming lines'''</td><td>511</td><td>Ignored</td><td style=text-align:left>Excludes CR/LF.</td></tr><tr><br />
<td>'''Outgoing lines'''</td><td>LLL</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Joined channel names'''</td><td>256</td><td>Parted immediately</td><td style=text-align:left>Includes channel prefix.</td></tr><tr><br />
<td>'''Channel keys'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Addresses'''</td><td>504</td><td>Ignored.</td><td style=text-align:left>Limited by the incoming line limit.</td></tr><tr><br />
<td>'''Nicknames'''</td><td>111</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Server passwords (stored)'''</td><td>255</td><td>Truncated</td><td style=text-align:left>As associated with server entries</td></tr><tr><br />
<td>'''Server passwords (sent)'''</td><td>256</td><td>Truncated</td><td style=text-align:left>As associated with the /[[server]] command</td></tr><tr><br />
<td colspan=0>'''CTCPs'''</td></tr><tr><br />
<td>'''Incoming PING argument'''</td><td>506</td><td>Ignored</td><td style=text-align:left>Limited by incoming line limit. Leading spaces are stripped.</td></tr><tr><br />
<td colspan=0>'''Sockets'''</td></tr><tr><br />
<td>'''Socket name'''</td><td>255</td><td>Error</td><td style=text-align:left></td></tr><tr><br />
<td>'''Send buffer'''</td><td>16384</td><td>Error</td><td style=text-align:left>mIRC's own buffers, not WinSock's.</td></tr><tr><br />
<td>'''Receive buffer'''</td><td>4096</td><td>Receipt stalls</td><td style=text-align:left>mIRC's own buffers, not WinSock's.</td></tr><tr><br />
<td>'''Socket mark'''</td><td>LLL</td><td></td><td style=text-align:left>Not 512 as the helpfile says.</td></tr><tr><br />
<td colspan=0>'''Hashtables'''</td></tr><tr><br />
<td>'''Hashtable name'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Hashtable size'''</td><td>10000</td><td>Error</td><td style=text-align:left>In number of buckets</td></tr><tr><br />
<td colspan=0>'''GUI'''</td></tr><tr><br />
<td>'''Edit box'''</td><td>1024</td><td>Sent</td><td style=text-align:left>Edit box is cleared afterwards, similar to pressing Enter.</td></tr><tr><br />
<td colspan=0>'''Dialogs'''</td></tr><tr><br />
<td>'''Dialog name'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Input dialog text field'''</td><td>1023</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Edit box'''</td><td>30000</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td colspan=0>'''Files'''</td></tr><tr><br />
<td>'''Line of text'''</td><td>4149</td><td>Split</td><td style=text-align:left>Excluding CR/LF. Applies to all file-related commands/identifiers.</td><br />
</tr></table><br />
<br />
[[Category:mIRC]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Limits&diff=5671
Limits
2011-03-07T18:25:42Z
<p>Albie: Added sent password limit</p>
<hr />
<div><font color=#009900>'''Warning: Not all of these values are updated for mIRC v6.32 and above. Sections which remain to be confirmed are marked with </font><font color=#AA0000>(Untested)'''</font><br />
<br />
This page explains various limits imposed by mIRC, however this may not be a complete list. The length is measured in bytes (equivalent to ASCII characters, including spaces.)<br />
<br />
You can find the original limits page [http://www.xise.nl/mirc/wiki/doku.php?id=limits here.]<br />
<br />
= mIRC =<br />
<table border=2 rules=all cellpadding=4 style=text-align:center><tr><br />
<td>'''Name'''</td><td>'''Length'''</td><td>'''When exceeded'''</td><td>'''Description'''</td></tr><tr><br />
<td colspan=0>'''Global limits'''</td></tr><tr><br />
<td>'''Line Length Limit'''<br>(''LLL'')</td><td>4150</td><td>Truncated or error<td style=text-align:left>To be precise: 4150 for evaluation results, 4151 for command lines (excluding command prefixes.)</td></tr><tr><br />
<td>'''Variables'''<br>(local or global)</td><td>4150</td><td>Truncated</td><td style=text-align:left>This limit includes the variable's name. Example: using "%a" as a name uses 3 bytes (2 for the name and 1 for a space.)<br>This means that for every extra character in the variable name, the maximum length of the value is reduced.<br>'''Note:''' the /set command further reduces the length limit to 4144 due to the 4 characters used by "set ". (LLL)</td></tr><tr><br />
<td>'''Calculations'''</td><td>'''Max value:'''<br>9007199254740992</td><td>Inaccurate</td><td style=text-align:left>Calculations past this number will generally be incorrect. Only the first 15 numbers of the result will be accurately calculated.</td></tr><tr><br />
<td colspan=0>'''IRC server related'''</td></tr><tr><br />
<td>'''Incoming lines'''</td><td>511</td><td>Ignored</td><td style=text-align:left>Excludes CR/LF.</td></tr><tr><br />
<td>'''Outgoing lines'''</td><td>LLL</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Joined channel names'''</td><td>256</td><td>Parted immediately</td><td style=text-align:left>Includes channel prefix.</td></tr><tr><br />
<td>'''Channel keys'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Addresses'''</td><td>504</td><td>Ignored.</td><td style=text-align:left>Limited by the incoming line limit.</td></tr><tr><br />
<td>'''Nicknames'''</td><td>111</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Server passwords (stored)'''</td><td>50</td><td>Truncated</td><td style=text-align:left><font color=#AA0000>'''(Untested)'''</font> As associated with server entries</td></tr><tr><br />
<td>'''Server passwords (sent)'''</td><td>256</td><td>Truncated</td><td style=text-align:left>As associated with the /[[server]] command</td></tr><tr><br />
<td colspan=0>'''CTCPs'''</td></tr><tr><br />
<td>'''Incoming PING argument'''</td><td>506</td><td>Ignored</td><td style=text-align:left>Limited by incoming line limit. Leading spaces are stripped.</td></tr><tr><br />
<td colspan=0>'''Sockets'''</td></tr><tr><br />
<td>'''Socket name'''</td><td>255</td><td>Error</td><td style=text-align:left></td></tr><tr><br />
<td>'''Send buffer'''</td><td>16384</td><td>Error</td><td style=text-align:left>mIRC's own buffers, not WinSock's.</td></tr><tr><br />
<td>'''Receive buffer'''</td><td>4096</td><td>Receipt stalls</td><td style=text-align:left>mIRC's own buffers, not WinSock's.</td></tr><tr><br />
<td>'''Socket mark'''</td><td>LLL</td><td></td><td style=text-align:left>Not 512 as the helpfile says.</td></tr><tr><br />
<td colspan=0>'''Hashtables'''</td></tr><tr><br />
<td>'''Hashtable name'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Hashtable size'''</td><td>10000</td><td>Error</td><td style=text-align:left>In number of buckets</td></tr><tr><br />
<td colspan=0>'''GUI'''</td></tr><tr><br />
<td>'''Edit box'''</td><td>1024</td><td>Sent</td><td style=text-align:left>Edit box is cleared afterwards, similar to pressing Enter.</td></tr><tr><br />
<td colspan=0>'''Dialogs'''</td></tr><tr><br />
<td>'''Dialog name'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Input dialog text field'''</td><td>1023</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Edit box'''</td><td>30000</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td colspan=0>'''Files'''</td></tr><tr><br />
<td>'''Line of text'''</td><td>4149</td><td>Split</td><td style=text-align:left>Excluding CR/LF. Applies to all file-related commands/identifiers.</td><br />
</tr></table><br />
<br />
[[Category:mIRC]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Limits&diff=5670
Limits
2011-03-06T16:25:38Z
<p>Albie: Change name is 256 if including the prefix.</p>
<hr />
<div><font color=#009900>'''Warning: Not all of these values are updated for mIRC v6.32 and above. Sections which remain to be confirmed are marked with </font><font color=#AA0000>(Untested)'''</font><br />
<br />
This page explains various limits imposed by mIRC, however this may not be a complete list. The length is measured in bytes (equivalent to ASCII characters, including spaces.)<br />
<br />
You can find the original limits page [http://www.xise.nl/mirc/wiki/doku.php?id=limits here.]<br />
<br />
= mIRC =<br />
<table border=2 rules=all cellpadding=4 style=text-align:center><tr><br />
<td>'''Name'''</td><td>'''Length'''</td><td>'''When exceeded'''</td><td>'''Description'''</td></tr><tr><br />
<td colspan=0>'''Global limits'''</td></tr><tr><br />
<td>'''Line Length Limit'''<br>(''LLL'')</td><td>4150</td><td>Truncated or error<td style=text-align:left>To be precise: 4150 for evaluation results, 4151 for command lines (excluding command prefixes.)</td></tr><tr><br />
<td>'''Variables'''<br>(local or global)</td><td>4150</td><td>Truncated</td><td style=text-align:left>This limit includes the variable's name. Example: using "%a" as a name uses 3 bytes (2 for the name and 1 for a space.)<br>This means that for every extra character in the variable name, the maximum length of the value is reduced.<br>'''Note:''' the /set command further reduces the length limit to 4144 due to the 4 characters used by "set ". (LLL)</td></tr><tr><br />
<td>'''Calculations'''</td><td>'''Max value:'''<br>9007199254740992</td><td>Inaccurate</td><td style=text-align:left>Calculations past this number will generally be incorrect. Only the first 15 numbers of the result will be accurately calculated.</td></tr><tr><br />
<td colspan=0>'''IRC server related'''</td></tr><tr><br />
<td>'''Incoming lines'''</td><td>511</td><td>Ignored</td><td style=text-align:left>Excludes CR/LF.</td></tr><tr><br />
<td>'''Outgoing lines'''</td><td>LLL</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Joined channel names'''</td><td>256</td><td>Parted immediately</td><td style=text-align:left>Includes channel prefix.</td></tr><tr><br />
<td>'''Channel keys'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Addresses'''</td><td>504</td><td>Ignored.</td><td style=text-align:left>Limited by the incoming line limit.</td></tr><tr><br />
<td>'''Nicknames'''</td><td>111</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Server passwords'''</td><td>50</td><td>Truncated</td><td style=text-align:left><font color=#AA0000>'''(Untested)'''</font> As associated with server entries</td></tr><tr><br />
<td colspan=0>'''CTCPs'''</td></tr><tr><br />
<td>'''Incoming PING argument'''</td><td>506</td><td>Ignored</td><td style=text-align:left>Limited by incoming line limit. Leading spaces are stripped.</td></tr><tr><br />
<td colspan=0>'''Sockets'''</td></tr><tr><br />
<td>'''Socket name'''</td><td>255</td><td>Error</td><td style=text-align:left></td></tr><tr><br />
<td>'''Send buffer'''</td><td>16384</td><td>Error</td><td style=text-align:left>mIRC's own buffers, not WinSock's.</td></tr><tr><br />
<td>'''Receive buffer'''</td><td>4096</td><td>Receipt stalls</td><td style=text-align:left>mIRC's own buffers, not WinSock's.</td></tr><tr><br />
<td>'''Socket mark'''</td><td>LLL</td><td></td><td style=text-align:left>Not 512 as the helpfile says.</td></tr><tr><br />
<td colspan=0>'''Hashtables'''</td></tr><tr><br />
<td>'''Hashtable name'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Hashtable size'''</td><td>10000</td><td>Error</td><td style=text-align:left>In number of buckets</td></tr><tr><br />
<td colspan=0>'''GUI'''</td></tr><tr><br />
<td>'''Edit box'''</td><td>1024</td><td>Sent</td><td style=text-align:left>Edit box is cleared afterwards, similar to pressing Enter.</td></tr><tr><br />
<td colspan=0>'''Dialogs'''</td></tr><tr><br />
<td>'''Dialog name'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Input dialog text field'''</td><td>1023</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Edit box'''</td><td>30000</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td colspan=0>'''Files'''</td></tr><tr><br />
<td>'''Line of text'''</td><td>4149</td><td>Split</td><td style=text-align:left>Excluding CR/LF. Applies to all file-related commands/identifiers.</td><br />
</tr></table><br />
<br />
[[Category:mIRC]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Limits&diff=5669
Limits
2011-03-06T15:35:21Z
<p>Albie: Changed the variables when exceeded from unset to truncated.</p>
<hr />
<div><font color=#009900>'''Warning: Not all of these values are updated for mIRC v6.32 and above. Sections which remain to be confirmed are marked with </font><font color=#AA0000>(Untested)'''</font><br />
<br />
This page explains various limits imposed by mIRC, however this may not be a complete list. The length is measured in bytes (equivalent to ASCII characters, including spaces.)<br />
<br />
You can find the original limits page [http://www.xise.nl/mirc/wiki/doku.php?id=limits here.]<br />
<br />
= mIRC =<br />
<table border=2 rules=all cellpadding=4 style=text-align:center><tr><br />
<td>'''Name'''</td><td>'''Length'''</td><td>'''When exceeded'''</td><td>'''Description'''</td></tr><tr><br />
<td colspan=0>'''Global limits'''</td></tr><tr><br />
<td>'''Line Length Limit'''<br>(''LLL'')</td><td>4150</td><td>Truncated or error<td style=text-align:left>To be precise: 4150 for evaluation results, 4151 for command lines (excluding command prefixes.)</td></tr><tr><br />
<td>'''Variables'''<br>(local or global)</td><td>4150</td><td>Truncated</td><td style=text-align:left>This limit includes the variable's name. Example: using "%a" as a name uses 3 bytes (2 for the name and 1 for a space.)<br>This means that for every extra character in the variable name, the maximum length of the value is reduced.<br>'''Note:''' the /set command further reduces the length limit to 4144 due to the 4 characters used by "set ". (LLL)</td></tr><tr><br />
<td>'''Calculations'''</td><td>'''Max value:'''<br>9007199254740992</td><td>Inaccurate</td><td style=text-align:left>Calculations past this number will generally be incorrect. Only the first 15 numbers of the result will be accurately calculated.</td></tr><tr><br />
<td colspan=0>'''IRC server related'''</td></tr><tr><br />
<td>'''Incoming lines'''</td><td>511</td><td>Ignored</td><td style=text-align:left>Excludes CR/LF.</td></tr><tr><br />
<td>'''Outgoing lines'''</td><td>LLL</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Joined channel names'''</td><td>255</td><td>Parted immediately</td><td style=text-align:left>Includes channel prefix.</td></tr><tr><br />
<td>'''Channel keys'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Addresses'''</td><td>504</td><td>Ignored.</td><td style=text-align:left>Limited by the incoming line limit.</td></tr><tr><br />
<td>'''Nicknames'''</td><td>111</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Server passwords'''</td><td>50</td><td>Truncated</td><td style=text-align:left><font color=#AA0000>'''(Untested)'''</font> As associated with server entries</td></tr><tr><br />
<td colspan=0>'''CTCPs'''</td></tr><tr><br />
<td>'''Incoming PING argument'''</td><td>506</td><td>Ignored</td><td style=text-align:left>Limited by incoming line limit. Leading spaces are stripped.</td></tr><tr><br />
<td colspan=0>'''Sockets'''</td></tr><tr><br />
<td>'''Socket name'''</td><td>255</td><td>Error</td><td style=text-align:left></td></tr><tr><br />
<td>'''Send buffer'''</td><td>16384</td><td>Error</td><td style=text-align:left>mIRC's own buffers, not WinSock's.</td></tr><tr><br />
<td>'''Receive buffer'''</td><td>4096</td><td>Receipt stalls</td><td style=text-align:left>mIRC's own buffers, not WinSock's.</td></tr><tr><br />
<td>'''Socket mark'''</td><td>LLL</td><td></td><td style=text-align:left>Not 512 as the helpfile says.</td></tr><tr><br />
<td colspan=0>'''Hashtables'''</td></tr><tr><br />
<td>'''Hashtable name'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Hashtable size'''</td><td>10000</td><td>Error</td><td style=text-align:left>In number of buckets</td></tr><tr><br />
<td colspan=0>'''GUI'''</td></tr><tr><br />
<td>'''Edit box'''</td><td>1024</td><td>Sent</td><td style=text-align:left>Edit box is cleared afterwards, similar to pressing Enter.</td></tr><tr><br />
<td colspan=0>'''Dialogs'''</td></tr><tr><br />
<td>'''Dialog name'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Input dialog text field'''</td><td>1023</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Edit box'''</td><td>30000</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td colspan=0>'''Files'''</td></tr><tr><br />
<td>'''Line of text'''</td><td>4149</td><td>Split</td><td style=text-align:left>Excluding CR/LF. Applies to all file-related commands/identifiers.</td><br />
</tr></table><br />
<br />
[[Category:mIRC]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Limits&diff=5668
Limits
2011-03-06T15:29:55Z
<p>Albie: Updated address limit</p>
<hr />
<div><font color=#009900>'''Warning: Not all of these values are updated for mIRC v6.32 and above. Sections which remain to be confirmed are marked with </font><font color=#AA0000>(Untested)'''</font><br />
<br />
This page explains various limits imposed by mIRC, however this may not be a complete list. The length is measured in bytes (equivalent to ASCII characters, including spaces.)<br />
<br />
You can find the original limits page [http://www.xise.nl/mirc/wiki/doku.php?id=limits here.]<br />
<br />
= mIRC =<br />
<table border=2 rules=all cellpadding=4 style=text-align:center><tr><br />
<td>'''Name'''</td><td>'''Length'''</td><td>'''When exceeded'''</td><td>'''Description'''</td></tr><tr><br />
<td colspan=0>'''Global limits'''</td></tr><tr><br />
<td>'''Line Length Limit'''<br>(''LLL'')</td><td>4150</td><td>Truncated or error<td style=text-align:left>To be precise: 4150 for evaluation results, 4151 for command lines (excluding command prefixes.)</td></tr><tr><br />
<td>'''Variables'''<br>(local or global)</td><td>4150</td><td>Unset</td><td style=text-align:left>This limit includes the variable's name. Example: using "%a" as a name uses 3 bytes (2 for the name and 1 for a space.)<br>This means that for every extra character in the variable name, the maximum length of the value is reduced.<br>'''Note:''' the /set command further reduces the length limit to 4144 due to the 4 characters used by "set ". (LLL)</td></tr><tr><br />
<td>'''Calculations'''</td><td>'''Max value:'''<br>9007199254740992</td><td>Inaccurate</td><td style=text-align:left>Calculations past this number will generally be incorrect. Only the first 15 numbers of the result will be accurately calculated.</td></tr><tr><br />
<td colspan=0>'''IRC server related'''</td></tr><tr><br />
<td>'''Incoming lines'''</td><td>511</td><td>Ignored</td><td style=text-align:left>Excludes CR/LF.</td></tr><tr><br />
<td>'''Outgoing lines'''</td><td>LLL</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Joined channel names'''</td><td>255</td><td>Parted immediately</td><td style=text-align:left>Includes channel prefix.</td></tr><tr><br />
<td>'''Channel keys'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Addresses'''</td><td>504</td><td>Ignored.</td><td style=text-align:left>Limited by the incoming line limit.</td></tr><tr><br />
<td>'''Nicknames'''</td><td>111</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Server passwords'''</td><td>50</td><td>Truncated</td><td style=text-align:left><font color=#AA0000>'''(Untested)'''</font> As associated with server entries</td></tr><tr><br />
<td colspan=0>'''CTCPs'''</td></tr><tr><br />
<td>'''Incoming PING argument'''</td><td>506</td><td>Ignored</td><td style=text-align:left>Limited by incoming line limit. Leading spaces are stripped.</td></tr><tr><br />
<td colspan=0>'''Sockets'''</td></tr><tr><br />
<td>'''Socket name'''</td><td>255</td><td>Error</td><td style=text-align:left></td></tr><tr><br />
<td>'''Send buffer'''</td><td>16384</td><td>Error</td><td style=text-align:left>mIRC's own buffers, not WinSock's.</td></tr><tr><br />
<td>'''Receive buffer'''</td><td>4096</td><td>Receipt stalls</td><td style=text-align:left>mIRC's own buffers, not WinSock's.</td></tr><tr><br />
<td>'''Socket mark'''</td><td>LLL</td><td></td><td style=text-align:left>Not 512 as the helpfile says.</td></tr><tr><br />
<td colspan=0>'''Hashtables'''</td></tr><tr><br />
<td>'''Hashtable name'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Hashtable size'''</td><td>10000</td><td>Error</td><td style=text-align:left>In number of buckets</td></tr><tr><br />
<td colspan=0>'''GUI'''</td></tr><tr><br />
<td>'''Edit box'''</td><td>1024</td><td>Sent</td><td style=text-align:left>Edit box is cleared afterwards, similar to pressing Enter.</td></tr><tr><br />
<td colspan=0>'''Dialogs'''</td></tr><tr><br />
<td>'''Dialog name'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Input dialog text field'''</td><td>1023</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Edit box'''</td><td>30000</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td colspan=0>'''Files'''</td></tr><tr><br />
<td>'''Line of text'''</td><td>4149</td><td>Split</td><td style=text-align:left>Excluding CR/LF. Applies to all file-related commands/identifiers.</td><br />
</tr></table><br />
<br />
[[Category:mIRC]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Limits&diff=5667
Limits
2011-03-06T15:23:45Z
<p>Albie: Updated address limits</p>
<hr />
<div><font color=#009900>'''Warning: Not all of these values are updated for mIRC v6.32 and above. Sections which remain to be confirmed are marked with </font><font color=#AA0000>(Untested)'''</font><br />
<br />
This page explains various limits imposed by mIRC, however this may not be a complete list. The length is measured in bytes (equivalent to ASCII characters, including spaces.)<br />
<br />
You can find the original limits page [http://www.xise.nl/mirc/wiki/doku.php?id=limits here.]<br />
<br />
= mIRC =<br />
<table border=2 rules=all cellpadding=4 style=text-align:center><tr><br />
<td>'''Name'''</td><td>'''Length'''</td><td>'''When exceeded'''</td><td>'''Description'''</td></tr><tr><br />
<td colspan=0>'''Global limits'''</td></tr><tr><br />
<td>'''Line Length Limit'''<br>(''LLL'')</td><td>4150</td><td>Truncated or error<td style=text-align:left>To be precise: 4150 for evaluation results, 4151 for command lines (excluding command prefixes.)</td></tr><tr><br />
<td>'''Variables'''<br>(local or global)</td><td>4150</td><td>Unset</td><td style=text-align:left>This limit includes the variable's name. Example: using "%a" as a name uses 3 bytes (2 for the name and 1 for a space.)<br>This means that for every extra character in the variable name, the maximum length of the value is reduced.<br>'''Note:''' the /set command further reduces the length limit to 4144 due to the 4 characters used by "set ". (LLL)</td></tr><tr><br />
<td>'''Calculations'''</td><td>'''Max value:'''<br>9007199254740992</td><td>Inaccurate</td><td style=text-align:left>Calculations past this number will generally be incorrect. Only the first 15 numbers of the result will be accurately calculated.</td></tr><tr><br />
<td colspan=0>'''IRC server related'''</td></tr><tr><br />
<td>'''Incoming lines'''</td><td>511</td><td>Ignored</td><td style=text-align:left>Excludes CR/LF.</td></tr><tr><br />
<td>'''Outgoing lines'''</td><td>LLL</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Joined channel names'''</td><td>255</td><td>Parted immediately</td><td style=text-align:left>Includes channel prefix.</td></tr><tr><br />
<td>'''Channel keys'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Addresses'''</td><td>90</td><td>Ignored.</td><td style=text-align:left>Limited by the incoming line limit.</td></tr><tr><br />
<td>'''Nicknames'''</td><td>111</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Server passwords'''</td><td>50</td><td>Truncated</td><td style=text-align:left><font color=#AA0000>'''(Untested)'''</font> As associated with server entries</td></tr><tr><br />
<td colspan=0>'''CTCPs'''</td></tr><tr><br />
<td>'''Incoming PING argument'''</td><td>506</td><td>Ignored</td><td style=text-align:left>Limited by incoming line limit. Leading spaces are stripped.</td></tr><tr><br />
<td colspan=0>'''Sockets'''</td></tr><tr><br />
<td>'''Socket name'''</td><td>255</td><td>Error</td><td style=text-align:left></td></tr><tr><br />
<td>'''Send buffer'''</td><td>16384</td><td>Error</td><td style=text-align:left>mIRC's own buffers, not WinSock's.</td></tr><tr><br />
<td>'''Receive buffer'''</td><td>4096</td><td>Receipt stalls</td><td style=text-align:left>mIRC's own buffers, not WinSock's.</td></tr><tr><br />
<td>'''Socket mark'''</td><td>LLL</td><td></td><td style=text-align:left>Not 512 as the helpfile says.</td></tr><tr><br />
<td colspan=0>'''Hashtables'''</td></tr><tr><br />
<td>'''Hashtable name'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Hashtable size'''</td><td>10000</td><td>Error</td><td style=text-align:left>In number of buckets</td></tr><tr><br />
<td colspan=0>'''GUI'''</td></tr><tr><br />
<td>'''Edit box'''</td><td>1024</td><td>Sent</td><td style=text-align:left>Edit box is cleared afterwards, similar to pressing Enter.</td></tr><tr><br />
<td colspan=0>'''Dialogs'''</td></tr><tr><br />
<td>'''Dialog name'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Input dialog text field'''</td><td>1023</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Edit box'''</td><td>30000</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td colspan=0>'''Files'''</td></tr><tr><br />
<td>'''Line of text'''</td><td>4149</td><td>Split</td><td style=text-align:left>Excluding CR/LF. Applies to all file-related commands/identifiers.</td><br />
</tr></table><br />
<br />
[[Category:mIRC]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Limits&diff=5666
Limits
2011-03-06T15:11:42Z
<p>Albie: Updated the incoming ping argument</p>
<hr />
<div><font color=#009900>'''Warning: Not all of these values are updated for mIRC v6.32 and above. Sections which remain to be confirmed are marked with </font><font color=#AA0000>(Untested)'''</font><br />
<br />
This page explains various limits imposed by mIRC, however this may not be a complete list. The length is measured in bytes (equivalent to ASCII characters, including spaces.)<br />
<br />
You can find the original limits page [http://www.xise.nl/mirc/wiki/doku.php?id=limits here.]<br />
<br />
= mIRC =<br />
<table border=2 rules=all cellpadding=4 style=text-align:center><tr><br />
<td>'''Name'''</td><td>'''Length'''</td><td>'''When exceeded'''</td><td>'''Description'''</td></tr><tr><br />
<td colspan=0>'''Global limits'''</td></tr><tr><br />
<td>'''Line Length Limit'''<br>(''LLL'')</td><td>4150</td><td>Truncated or error<td style=text-align:left>To be precise: 4150 for evaluation results, 4151 for command lines (excluding command prefixes.)</td></tr><tr><br />
<td>'''Variables'''<br>(local or global)</td><td>4150</td><td>Unset</td><td style=text-align:left>This limit includes the variable's name. Example: using "%a" as a name uses 3 bytes (2 for the name and 1 for a space.)<br>This means that for every extra character in the variable name, the maximum length of the value is reduced.<br>'''Note:''' the /set command further reduces the length limit to 4144 due to the 4 characters used by "set ". (LLL)</td></tr><tr><br />
<td>'''Calculations'''</td><td>'''Max value:'''<br>9007199254740992</td><td>Inaccurate</td><td style=text-align:left>Calculations past this number will generally be incorrect. Only the first 15 numbers of the result will be accurately calculated.</td></tr><tr><br />
<td colspan=0>'''IRC server related'''</td></tr><tr><br />
<td>'''Incoming lines'''</td><td>511</td><td>Ignored</td><td style=text-align:left>Excludes CR/LF.</td></tr><tr><br />
<td>'''Outgoing lines'''</td><td>LLL</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Joined channel names'''</td><td>255</td><td>Parted immediately</td><td style=text-align:left>Includes channel prefix.</td></tr><tr><br />
<td>'''Channel keys'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Addresses'''</td><td>90</td><td>Truncated</td><td style=text-align:left><font color=#AA0000>'''(Untested)'''</font> The part of the full address after the "!"; only with JOIN/QUIT messages, addresses from WHO replies are not truncated.</td></tr><tr><br />
<td>'''Nicknames'''</td><td>111</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Server passwords'''</td><td>50</td><td>Truncated</td><td style=text-align:left><font color=#AA0000>'''(Untested)'''</font> As associated with server entries</td></tr><tr><br />
<td colspan=0>'''CTCPs'''</td></tr><tr><br />
<td>'''Incoming PING argument'''</td><td>506</td><td>Ignored</td><td style=text-align:left>Limited by incoming line limit. Leading spaces are stripped.</td></tr><tr><br />
<td colspan=0>'''Sockets'''</td></tr><tr><br />
<td>'''Socket name'''</td><td>255</td><td>Error</td><td style=text-align:left></td></tr><tr><br />
<td>'''Send buffer'''</td><td>16384</td><td>Error</td><td style=text-align:left>mIRC's own buffers, not WinSock's.</td></tr><tr><br />
<td>'''Receive buffer'''</td><td>4096</td><td>Receipt stalls</td><td style=text-align:left>mIRC's own buffers, not WinSock's.</td></tr><tr><br />
<td>'''Socket mark'''</td><td>LLL</td><td></td><td style=text-align:left>Not 512 as the helpfile says.</td></tr><tr><br />
<td colspan=0>'''Hashtables'''</td></tr><tr><br />
<td>'''Hashtable name'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Hashtable size'''</td><td>10000</td><td>Error</td><td style=text-align:left>In number of buckets</td></tr><tr><br />
<td colspan=0>'''GUI'''</td></tr><tr><br />
<td>'''Edit box'''</td><td>1024</td><td>Sent</td><td style=text-align:left>Edit box is cleared afterwards, similar to pressing Enter.</td></tr><tr><br />
<td colspan=0>'''Dialogs'''</td></tr><tr><br />
<td>'''Dialog name'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Input dialog text field'''</td><td>1023</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Edit box'''</td><td>30000</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td colspan=0>'''Files'''</td></tr><tr><br />
<td>'''Line of text'''</td><td>4149</td><td>Split</td><td style=text-align:left>Excluding CR/LF. Applies to all file-related commands/identifiers.</td><br />
</tr></table><br />
<br />
[[Category:mIRC]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Limits&diff=5665
Limits
2011-03-06T15:03:38Z
<p>Albie: Updated nickname length</p>
<hr />
<div><font color=#009900>'''Warning: Not all of these values are updated for mIRC v6.32 and above. Sections which remain to be confirmed are marked with </font><font color=#AA0000>(Untested)'''</font><br />
<br />
This page explains various limits imposed by mIRC, however this may not be a complete list. The length is measured in bytes (equivalent to ASCII characters, including spaces.)<br />
<br />
You can find the original limits page [http://www.xise.nl/mirc/wiki/doku.php?id=limits here.]<br />
<br />
= mIRC =<br />
<table border=2 rules=all cellpadding=4 style=text-align:center><tr><br />
<td>'''Name'''</td><td>'''Length'''</td><td>'''When exceeded'''</td><td>'''Description'''</td></tr><tr><br />
<td colspan=0>'''Global limits'''</td></tr><tr><br />
<td>'''Line Length Limit'''<br>(''LLL'')</td><td>4150</td><td>Truncated or error<td style=text-align:left>To be precise: 4150 for evaluation results, 4151 for command lines (excluding command prefixes.)</td></tr><tr><br />
<td>'''Variables'''<br>(local or global)</td><td>4150</td><td>Unset</td><td style=text-align:left>This limit includes the variable's name. Example: using "%a" as a name uses 3 bytes (2 for the name and 1 for a space.)<br>This means that for every extra character in the variable name, the maximum length of the value is reduced.<br>'''Note:''' the /set command further reduces the length limit to 4144 due to the 4 characters used by "set ". (LLL)</td></tr><tr><br />
<td>'''Calculations'''</td><td>'''Max value:'''<br>9007199254740992</td><td>Inaccurate</td><td style=text-align:left>Calculations past this number will generally be incorrect. Only the first 15 numbers of the result will be accurately calculated.</td></tr><tr><br />
<td colspan=0>'''IRC server related'''</td></tr><tr><br />
<td>'''Incoming lines'''</td><td>511</td><td>Ignored</td><td style=text-align:left>Excludes CR/LF.</td></tr><tr><br />
<td>'''Outgoing lines'''</td><td>LLL</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Joined channel names'''</td><td>255</td><td>Parted immediately</td><td style=text-align:left>Includes channel prefix.</td></tr><tr><br />
<td>'''Channel keys'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Addresses'''</td><td>90</td><td>Truncated</td><td style=text-align:left><font color=#AA0000>'''(Untested)'''</font> The part of the full address after the "!"; only with JOIN/QUIT messages, addresses from WHO replies are not truncated.</td></tr><tr><br />
<td>'''Nicknames'''</td><td>111</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Server passwords'''</td><td>50</td><td>Truncated</td><td style=text-align:left><font color=#AA0000>'''(Untested)'''</font> As associated with server entries</td></tr><tr><br />
<td colspan=0>'''CTCPs'''</td></tr><tr><br />
<td>'''Incoming PING argument'''</td><td>24</td><td>No reply sent</td><td style=text-align:left><font color=#AA0000>'''(Untested)'''</font> First character must be a digit; leading spaces ignored.</td></tr><tr><br />
<td colspan=0>'''Sockets'''</td></tr><tr><br />
<td>'''Socket name'''</td><td>255</td><td>Error</td><td style=text-align:left></td></tr><tr><br />
<td>'''Send buffer'''</td><td>16384</td><td>Error</td><td style=text-align:left>mIRC's own buffers, not WinSock's.</td></tr><tr><br />
<td>'''Receive buffer'''</td><td>4096</td><td>Receipt stalls</td><td style=text-align:left>mIRC's own buffers, not WinSock's.</td></tr><tr><br />
<td>'''Socket mark'''</td><td>LLL</td><td></td><td style=text-align:left>Not 512 as the helpfile says.</td></tr><tr><br />
<td colspan=0>'''Hashtables'''</td></tr><tr><br />
<td>'''Hashtable name'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Hashtable size'''</td><td>10000</td><td>Error</td><td style=text-align:left>In number of buckets</td></tr><tr><br />
<td colspan=0>'''GUI'''</td></tr><tr><br />
<td>'''Edit box'''</td><td>1024</td><td>Sent</td><td style=text-align:left>Edit box is cleared afterwards, similar to pressing Enter.</td></tr><tr><br />
<td colspan=0>'''Dialogs'''</td></tr><tr><br />
<td>'''Dialog name'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Input dialog text field'''</td><td>1023</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Edit box'''</td><td>30000</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td colspan=0>'''Files'''</td></tr><tr><br />
<td>'''Line of text'''</td><td>4149</td><td>Split</td><td style=text-align:left>Excluding CR/LF. Applies to all file-related commands/identifiers.</td><br />
</tr></table><br />
<br />
[[Category:mIRC]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Limits&diff=5664
Limits
2011-03-06T14:56:57Z
<p>Albie: Updated incoming line limit</p>
<hr />
<div><font color=#009900>'''Warning: Not all of these values are updated for mIRC v6.32 and above. Sections which remain to be confirmed are marked with </font><font color=#AA0000>(Untested)'''</font><br />
<br />
This page explains various limits imposed by mIRC, however this may not be a complete list. The length is measured in bytes (equivalent to ASCII characters, including spaces.)<br />
<br />
You can find the original limits page [http://www.xise.nl/mirc/wiki/doku.php?id=limits here.]<br />
<br />
= mIRC =<br />
<table border=2 rules=all cellpadding=4 style=text-align:center><tr><br />
<td>'''Name'''</td><td>'''Length'''</td><td>'''When exceeded'''</td><td>'''Description'''</td></tr><tr><br />
<td colspan=0>'''Global limits'''</td></tr><tr><br />
<td>'''Line Length Limit'''<br>(''LLL'')</td><td>4150</td><td>Truncated or error<td style=text-align:left>To be precise: 4150 for evaluation results, 4151 for command lines (excluding command prefixes.)</td></tr><tr><br />
<td>'''Variables'''<br>(local or global)</td><td>4150</td><td>Unset</td><td style=text-align:left>This limit includes the variable's name. Example: using "%a" as a name uses 3 bytes (2 for the name and 1 for a space.)<br>This means that for every extra character in the variable name, the maximum length of the value is reduced.<br>'''Note:''' the /set command further reduces the length limit to 4144 due to the 4 characters used by "set ". (LLL)</td></tr><tr><br />
<td>'''Calculations'''</td><td>'''Max value:'''<br>9007199254740992</td><td>Inaccurate</td><td style=text-align:left>Calculations past this number will generally be incorrect. Only the first 15 numbers of the result will be accurately calculated.</td></tr><tr><br />
<td colspan=0>'''IRC server related'''</td></tr><tr><br />
<td>'''Incoming lines'''</td><td>511</td><td>Ignored</td><td style=text-align:left>Excludes CR/LF.</td></tr><tr><br />
<td>'''Outgoing lines'''</td><td>LLL</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Joined channel names'''</td><td>255</td><td>Parted immediately</td><td style=text-align:left>Includes channel prefix.</td></tr><tr><br />
<td>'''Channel keys'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Addresses'''</td><td>90</td><td>Truncated</td><td style=text-align:left><font color=#AA0000>'''(Untested)'''</font> The part of the full address after the "!"; only with JOIN/QUIT messages, addresses from WHO replies are not truncated.</td></tr><tr><br />
<td>'''Nicknames'''</td><td>50</td><td>Truncated</td><td style=text-align:left><font color=#AA0000>'''(Untested)'''</font></td></tr><tr><br />
<td>'''Server passwords'''</td><td>50</td><td>Truncated</td><td style=text-align:left><font color=#AA0000>'''(Untested)'''</font> As associated with server entries</td></tr><tr><br />
<td colspan=0>'''CTCPs'''</td></tr><tr><br />
<td>'''Incoming PING argument'''</td><td>24</td><td>No reply sent</td><td style=text-align:left><font color=#AA0000>'''(Untested)'''</font> First character must be a digit; leading spaces ignored.</td></tr><tr><br />
<td colspan=0>'''Sockets'''</td></tr><tr><br />
<td>'''Socket name'''</td><td>255</td><td>Error</td><td style=text-align:left></td></tr><tr><br />
<td>'''Send buffer'''</td><td>16384</td><td>Error</td><td style=text-align:left>mIRC's own buffers, not WinSock's.</td></tr><tr><br />
<td>'''Receive buffer'''</td><td>4096</td><td>Receipt stalls</td><td style=text-align:left>mIRC's own buffers, not WinSock's.</td></tr><tr><br />
<td>'''Socket mark'''</td><td>LLL</td><td></td><td style=text-align:left>Not 512 as the helpfile says.</td></tr><tr><br />
<td colspan=0>'''Hashtables'''</td></tr><tr><br />
<td>'''Hashtable name'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Hashtable size'''</td><td>10000</td><td>Error</td><td style=text-align:left>In number of buckets</td></tr><tr><br />
<td colspan=0>'''GUI'''</td></tr><tr><br />
<td>'''Edit box'''</td><td>1024</td><td>Sent</td><td style=text-align:left>Edit box is cleared afterwards, similar to pressing Enter.</td></tr><tr><br />
<td colspan=0>'''Dialogs'''</td></tr><tr><br />
<td>'''Dialog name'''</td><td>256</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Input dialog text field'''</td><td>1023</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td>'''Edit box'''</td><td>30000</td><td>Truncated</td><td style=text-align:left></td></tr><tr><br />
<td colspan=0>'''Files'''</td></tr><tr><br />
<td>'''Line of text'''</td><td>4149</td><td>Split</td><td style=text-align:left>Excluding CR/LF. Applies to all file-related commands/identifiers.</td><br />
</tr></table><br />
<br />
[[Category:mIRC]]</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Test2&diff=5622
Test2
2011-03-02T23:21:50Z
<p>Albie: Removed test link.</p>
<hr />
<div> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AUTH_UPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
;<br />
; by Vliedel -- #vliedel @ QuakeNet<br />
; version 1.1 (written and tested on mIRC 6.2)<br />
; made for networks supporting WHOX<br />
;<br />
;<br />
;What does this script do?<br />
;<br />
; - updates the auths of nicks and stores them in a hash table<br />
; - if a channel is too big, /who nick1,nick2,nick3 etc is done untill the auths for the channel is updated<br />
; - users who have a site with the auth in it will be saved without a /who<br />
; ie: "Vliedel" in "Vliedel.users.quakenet.org" will be treated as auth on the QuakeNet network<br />
; - users who are not authed (auth 0) will be checked every x time to see if they are authed yet<br />
; - script updates from largest to the smallest channel<br />
;<br />
;<br />
;How to use this script?<br />
;<br />
; - config the options below<br />
; - /load -rs auth_update.mrc to load the script<br />
; - script starts on load or on connect<br />
; - to get a nicks auth use: $auth(nick) or $auth(nick,cid)<br />
; - /authupdate.next <nick> [nick] [nick] ... can be used to get auths of those nicks as soon as possible<br />
; please note that this will use a bit less efficient way to get the auths.<br />
; You can use the following script to see when such a requested nick is updated<br />
; on *:SIGNAL:authupdate:{<br />
; if ($2 == $null) { echo -a Requested: $1 is not on a common channel }<br />
; elseif ($2 == 0) { echo -a Requested: $1 is not authed }<br />
; else { echo -a Requested: $1 is authed as $2 }<br />
; }<br />
;<br />
; Note that this signal returns $2 == $null when someone isn't on a common channel.<br />
; This may occur for example when someone parted a channel between the /who and the who reply.<br />
;<br />
; - /authupdate can be used to make the script update the auths without waiting for the timer to trigger it<br />
; - You can use the following script to see when a nick is updated<br />
; on *:SIGNAL:authupdate.new:{<br />
; if ($2 == 0) { echo -a $1 is not authed }<br />
; else { echo -a $1 is authed as $2 }<br />
; }<br />
;<br />
;<br />
;<br />
;Why is this script good?<br />
;<br />
; - sending /who chan for every channel is not needed and goes slow (lag)<br />
; - sending /who chan on join may cause Excess Flood or Max sendQ exceeded<br />
; - sending /who chan1,chan2,chan3 can be much faster, but only if there are not too many results (Max sendQ exceeded)<br />
; - unauthed users can auth without you knowing, so you need to check if they're authed every so many time.<br />
;<br />
;<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SETTINGS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] -l max.who {<br />
; maximum number of replies in a WHO, too high may cause 'Max sendQ exceeded' disconnection<br />
; too low may take the script a long time to update the auths, 1000 should be fine for most situations<br />
[[return]] 1000<br />
}<br />
<br />
[[alias]] -l len.who {<br />
; maximum length of the /who <string>, too long may cause the server to ignore the command<br />
; too low may slow things down, 400 should be fine in most cases<br />
[[return]] 400<br />
}<br />
<br />
[[alias]] -l delay.who {<br />
; N seconds after your first join, the script starts to update the auths<br />
[[return]] 10<br />
}<br />
<br />
[[alias]] -l repeat.who {<br />
; wait N seconds after doing /who to do the next check and /who<br />
[[return]] 20<br />
}<br />
<br />
[[alias]] -l minnicks.who {<br />
; minimum nr of nicks with unknown auth in a channel to do /who #channel rather then /who nick,nick,<br />
[[return]] 3<br />
}<br />
<br />
[[alias]] -l minratio.who {<br />
; minimum ratio of (nicks with unknown auth) / (total nicks) in a channel to do /who #channel rather then /who nick,nick,<br />
[[return]] 0.04<br />
}<br />
<br />
[[alias]] -l queue.repeat.who {<br />
; number of seconds to do the next /who to check if someone who wasn't authed is now authed<br />
[[return]] 600<br />
}<br />
<br />
[[alias]] -l next.wait {<br />
; wait N seconds to do the next /who check triggered by authupdate.next after the last /who<br />
[[return]] 10<br />
}<br />
<br />
[[alias]] -l used.network {<br />
; The networks the script is supposed to work on (case sensitive).<br />
; NOTE that the script ONLY works on networks supporting WHOX (ircu 2.10.* should work)<br />
; $1 is the network<br />
[[return]] [[$istokcs]](QuakeNet UnderNet GameSurge HanIRC NetGamers OGameNet,[[$1-|$1]],32)<br />
}<br />
<br />
[[alias]] -l auth.site {<br />
; For every network a check to see if a user has a site where his authname is in<br />
; $1 is the network, $2 is the site<br />
[[If-Then-Else|if]] ([[$1-|$1]] === QuakeNet) { [[return]] [[$iif]](*.users.quakenet.org iswm [[$1-|$2]],[[$true]]) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === UnderNet) { [[return]] [[$iif]](*.users.undernet.org iswm [[$1-|$2]],[[$true]]) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === GameSurge) { [[return]] [[$iif]](*.*.GameSurge iswm [[$1-|$2]],[[$true]]) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === HanIRC) { [[return]] [[$iif]](*.users.HanIRC.org iswm [[$1-|$2]],[[$true]]) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === NetGamers) { [[return]] [[$iif]](*.users.netgamers.org iswm [[$1-|$2]],[[$true]]) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === OGameNet) { [[return]] [[$iif]](*.user.OGameNet iswm [[$1-|$2]],[[$true]]) }<br />
}<br />
<br />
[[alias]] -l auth.from.site {<br />
; For every network the method to return the auth from the site<br />
; $1 is the network, $2 is the site<br />
[[If-Then-Else|if]] ([[$1-|$1]] === QuakeNet) { [[return]] [[$gettok]]([[$1-|$2]],1,46) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === UnderNet) { [[return]] [[$gettok]]([[$1-|$2]],1,46) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === GameSurge) { [[return]] [[$gettok]]([[$1-|$2]],1,46) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === HanIRC) { [[return]] [[$gettok]]([[$1-|$2]],1,46) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === NetGamers) { [[return]] [[$gettok]]([[$1-|$2]],1,46) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === OGameNet) { [[return]] [[$gettok]]([[$1-|$2]],1,46) }<br />
}<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] auth {<br />
[[If-Then-Else|if]] (![[$isid]]) { [[$iif]]([[$show]],.auth,auth) [[$1-|$1-]] | [[return]] }<br />
[[If-Then-Else|if]] ([[$1-|$1]] == [[$null]]) || (([[$1-|$2]] !== [[$null]]) && ((![[$scid]]([[$1-|$2]])) || (![[$1-|$2]]))) { [[return]] }<br />
[[return]] [[$hget]](auths. [[DollarPlus|$+]] [[$iif]]([[$1-|$2]] !== [[$null]],[[$1-|$2]],[[$cid]]),[[$1-|$1]])<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTHUPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] authupdate { [[echo]] -a Auth update: $auth_update.update }<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTHUPDATE.NEXT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] authupdate.next {<br />
[[Local_Variables|var]] %i = [[$0]]<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %n = [[$gettok]]([[$1-|$1-]],%i,32)<br />
[[If-Then-Else|if]] (![[$comchan]](%n,1)) { .[[signal]] authupdate %n }<br />
[[If-Then-Else|else]] { auth.n.add %n }<br />
[[dec]] %i<br />
}<br />
[[If-Then-Else|if]] (!$timer([[$cid]] [[DollarPlus|$+]] .auth_update.update)) { auth_update.update n }<br />
[[If-Then-Else|else]] {<br />
[[Local_Variables|var]] %d = $timer([[$cid]] [[DollarPlus|$+]] .auth_update.update).delay , %l = $timer([[$cid]] [[DollarPlus|$+]] .auth_update.update).secs<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 [[$iif]]([[$calc]](%d - %l) < $next.wait,[[$calc]]($v2 - $v1),0) auth_update.update n<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LOAD EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:LOAD:{ scon -at1 auth_load }<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_LOAD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] -l auth_load {<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 $delay.who auth_update.update<br />
[[If-Then-Else|if]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[hmake]] auths. [[DollarPlus|$+]] [[$cid]] 200<br />
[[hmake]] auths.l. [[DollarPlus|$+]] [[$cid]] 200<br />
[[hmake]] auths.q. [[DollarPlus|$+]] [[$cid]] 200<br />
[[hmake]] auths.n. [[DollarPlus|$+]] [[$cid]] 100<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$me]],0)<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %chan = [[$comchan]]([[$me]],%i)<br />
[[Local_Variables|var]] %j = [[$nick_(nick)|$nick(]]%chan,0)<br />
[[while]] (%j) {<br />
auth.l.add.wid [[$chan_(window)|$chan(]]%chan).wid [[$nick_(nick)|$nick(]]%chan,%j)<br />
[[dec]] %j<br />
}<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.UPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] -l auth_update.update {<br />
[[Local_Variables|var]] %who<br />
[[If-Then-Else|if]] (![[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]])) {<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update off<br />
[[hmake]] auths.u. [[DollarPlus|$+]] [[$cid]] 200<br />
[[Local_Variables|var]] %who = $auth_update.who<br />
[[If-Then-Else|if]] (%who) {<br />
[[hadd]] auths.u. [[DollarPlus|$+]] [[$cid]] -mask %who [[DollarPlus|$+]] ,,, [[DollarPlus|$+]] 273<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.timeout 1 [[$calc]]($repeat.who * 2) auth_update.timeout<br />
.quote WHO [[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]],-mask) % [[DollarPlus|$+]] nat,273<br />
}<br />
[[If-Then-Else|else]] {<br />
[[hfree]] auths.u. [[DollarPlus|$+]] [[$cid]]<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 $$repeat.who auth_update.update<br />
}<br />
}<br />
[[If-Then-Else|if]] (%who) { [[return]] updating }<br />
[[If-Then-Else|elseif]] ([[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]])) { [[return]] already in progress }<br />
[[If-Then-Else|else]] { [[return]] nothing to update }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.TIMEOUT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] -l auth_update.timeout {<br />
[[hfree]] auths.u. [[DollarPlus|$+]] [[$cid]]<br />
auth_update.update<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.SORT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; sorts channels by number of nicks in channel<br />
; <number of nicks>.<channel number><br />
; returns 127.1 23.2 <= means 127 nicks on comchan 1<br />
[[alias]] -l auth_update.sort {<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$me]],0) , %chans<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %chans = %chans [[$nick_(nick)|$nick(]][[$comchan]]([[$me]],%i),0) [[DollarPlus|$+]] . [[DollarPlus|$+]] %i<br />
[[dec]] %i<br />
}<br />
[[return]] [[$sorttok]](%chans,32,n)<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.WHO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $auth_update.who(N,L)<br />
; returns #chan,#chan,nick,nick<br />
[[alias]] -l auth_update.who {<br />
[[Local_Variables|var]] %t = auths.u. [[DollarPlus|$+]] [[$cid]] , %t.l = auths.l. [[DollarPlus|$+]] [[$cid]] , %t.q = auths.q. [[DollarPlus|$+]] [[$cid]] , %t.n = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[Local_Variables|var]] %n.max = $max.who , %l.max = $len.who , %n.min = $minnicks.who , %ratio = $minratio.who<br />
[[Local_Variables|var]] %len , %n.nr , %chans , %nicks , %chans.go<br />
[[If-Then-Else|if]] [[$hget]](auths.n.temp) { [[hfree]] auths.n.temp }<br />
[[hmake]] auths.n.temp<br />
[[Local_Variables|var]] %n = [[$hget]](%t.n,-firstnick)<br />
[[while]] (%n) {<br />
[[inc]] %len [[$calc]]([[$len]](%n) + 1)<br />
[[inc]] %n.nr<br />
[[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[dec]] %n.nr | [[dec]] %len [[$calc]]([[$len]](%n) + 1) | [[break]] }<br />
[[hadd]] auths.n.temp %n 1<br />
[[hadd]] %t %n 1<br />
[[Local_Variables|var]] %nicks = [[$addtok]](%nicks,%n,44) , %n = [[$gettok]]([[$hget]](%t.n,%n),2,32)<br />
}<br />
<br />
[[Local_Variables|var]] %sorted = $auth_update.sort , %i = [[$numtok]](%sorted,32) , %time = [[$calc]]([[$ctime]] - $queue.repeat.who)<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %comchan = [[$gettok]]([[$gettok]](%sorted,%i,32),2,46) , %chan = [[$comchan]]([[$me]],%comchan) , %id = [[$chan_(window)|$chan(]]%chan).wid [[DollarPlus|$+]] .<br />
[[Local_Variables|var]] %n.c = [[$nick_(nick)|$nick(]]%chan,0) , %left , %go<br />
[[If-Then-Else|if]] (%n.c > %n.max) { [[break]] }<br />
[[If-Then-Else|if]] [[$hget]](auths.temp) { [[hfree]] auths.temp }<br />
[[hmake]] auths.temp<br />
[[Local_Variables|var]] %n = [[$hget]](%t.n,%id [[DollarPlus|$+]] -firstnick)<br />
[[while]] (%n) {<br />
[[If-Then-Else|if]] (![[$hget]](%t,%n)) || ([[$hget]](auths.n.temp,%n)) { [[hadd]] auths.temp %n 1 | [[inc]] %left }<br />
[[If-Then-Else|if]] (((%left >= %n.min) && ([[$calc]](%left / %n.c) >= %ratio)) || (%left == %n.c)) { [[Local_Variables|var]] %go = 1 | [[break]] }<br />
[[Local_Variables|var]] %n = [[$gettok]]([[$hget]](%t.n,%id [[DollarPlus|$+]] %n),2,32)<br />
}<br />
[[Local_Variables|var]] %n = [[$hget]](%t.l,%id [[DollarPlus|$+]] -firstnick)<br />
[[while]] (%n) {<br />
[[If-Then-Else|if]] (![[$hget]](%t,%n)) && (![[$hget]](auths.temp,%n)) { [[inc]] %left }<br />
[[If-Then-Else|if]] (((%left >= %n.min) && ([[$calc]](%left / %n.c) >= %ratio)) || (%left == %n.c)) { [[Local_Variables|var]] %go = 1 | [[break]] }<br />
[[Local_Variables|var]] %n = [[$gettok]]([[$hget]](%t.l,%id [[DollarPlus|$+]] %n),2,32)<br />
}<br />
[[Local_Variables|var]] %n = [[$hget]](%t.q,%id [[DollarPlus|$+]] -firstnick)<br />
[[while]] (%n) {<br />
[[tokenize]] 32 [[$hget]](%t.q,%id [[DollarPlus|$+]] %n)<br />
[[If-Then-Else|if]] ([[$1-|$1]] > %time) { [[break]] }<br />
[[If-Then-Else|if]] (![[$hget]](%t,%n)) && (![[$hget]](auths.temp,%n)) { [[inc]] %left }<br />
[[If-Then-Else|if]] (((%left >= %n.min) && ([[$calc]](%left / %n.c) >= %ratio)) || (%left == %n.c)) { [[Local_Variables|var]] %go = 1 | [[break]] }<br />
[[Local_Variables|var]] %n = [[$1-|$3]]<br />
}<br />
[[If-Then-Else|if]] (!%go) { [[dec]] %i | [[continue]] }<br />
[[Local_Variables|var]] %j = %n.c , %n.tmp = %n.nr , %l.tmp = %len , %chans.go = %chans.go %comchan<br />
[[inc]] %l.tmp [[$calc]]([[$len]](%chan) + 1)<br />
[[while]] (%j) {<br />
[[Local_Variables|var]] %n = [[$nick_(nick)|$nick(]]%chan,%j)<br />
[[If-Then-Else|if]] (![[$hget]](%t,%n)) { [[inc]] %n.tmp }<br />
[[If-Then-Else|if]] ([[$hget]](auths.n.temp,%n)) { [[dec]] %l.tmp [[$calc]]([[$len]](%n) + 1) }<br />
[[dec]] %j<br />
}<br />
[[If-Then-Else|if]] (%l.tmp > %l.max) || (%n.tmp > %n.max) { [[dec]] %i | [[continue]] }<br />
[[Local_Variables|var]] %j = [[$nick_(nick)|$nick(]]%chan,0)<br />
[[while]] (%j) {<br />
[[Local_Variables|var]] %n = [[$nick_(nick)|$nick(]]%chan,%j)<br />
[[hadd]] %t %n 1<br />
[[hdel]] auths.n.temp %n<br />
[[Local_Variables|var]] %nicks = [[$remtok]](%nicks,%n,1,44)<br />
[[dec]] %j<br />
}<br />
[[Local_Variables|var]] %len = %l.tmp , %n.nr = %n.tmp , %chans = [[$addtok]](%chans,%chan,44)<br />
[[dec]] %i<br />
}<br />
<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$me]],0)<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %chan = [[$comchan]]([[$me]],%i)<br />
[[If-Then-Else|if]] (([[$nick_(nick)|$nick(]]%chan,0) > %n.max) || (![[$istok]](%chans.go,%i,32))) {<br />
[[Local_Variables|var]] %id = [[$chan_(window)|$chan(]]%chan).wid [[DollarPlus|$+]] . , %n = [[$hget]](%t.l,%id [[DollarPlus|$+]] -firstnick)<br />
[[while]] (%n) {<br />
[[If-Then-Else|if]] (![[$hget]](%t,%n)) {<br />
[[inc]] %len [[$calc]]([[$len]](%n) + 1)<br />
[[inc]] %n.nr<br />
[[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[break]] }<br />
[[hadd]] %t %n 1<br />
[[Local_Variables|var]] %nicks = [[$addtok]](%nicks,%n,44)<br />
}<br />
[[Local_Variables|var]] %n = [[$gettok]]([[$hget]](%t.l,%id [[DollarPlus|$+]] %n),2,32)<br />
}<br />
[[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[break]] }<br />
[[Local_Variables|var]] %n = [[$hget]](%t.q,%id [[DollarPlus|$+]] -firstnick)<br />
[[while]] (%n) {<br />
[[tokenize]] 32 [[$hget]](%t.q,%id [[DollarPlus|$+]] %n)<br />
[[If-Then-Else|if]] ([[$1-|$1]] > %time) { [[break]] }<br />
[[If-Then-Else|if]] (![[$hget]](%t,%n)) {<br />
[[inc]] %len [[$calc]]([[$len]](%n) + 1)<br />
[[inc]] %n.nr<br />
[[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[break]] }<br />
[[hadd]] %t %n 1<br />
[[Local_Variables|var]] %nicks = [[$addtok]](%nicks,%n,44)<br />
}<br />
[[Local_Variables|var]] %n = [[$1-|$3]]<br />
}<br />
}<br />
[[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[break]] }<br />
[[dec]] %i<br />
}<br />
[[If-Then-Else|if]] [[$hget]](auths.temp) { [[hfree]] auths.temp }<br />
[[If-Then-Else|if]] [[$hget]](auths.n.temp) { [[hfree]] auths.n.temp }<br />
[[return]] [[$addtok]](%chans,%nicks,44)<br />
}<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RAW 354 SPECIAL WHO REPLY ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; 354 <you> <nr> <nick> <auth><br />
; 354 Vliedel 273 L 0<br />
RAW 354:& 273 & &:{<br />
[[If-Then-Else|if]] ([[$comchan]]([[$1-|$3]],1)) { auth_update.nick [[$1-|$3]] [[$1-|$4]] }<br />
[[If-Then-Else|elseif]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]],[[$1-|$3]])) { auth.n.rem [[$1-|$3]] | .[[signal]] authupdate [[$1-|$3]] }<br />
[[haltdef]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RAW 315 WHO END ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; 315 <you> <requested> :End of /who list.<br />
; 315 Vliedel #vliedel,Rutix,fishbot :End of /WHO list.<br />
RAW 315:& & end of /WHO list.: {<br />
[[If-Then-Else|if]] ([[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]],-mask) == [[$1-|$2]]) {<br />
[[hfree]] auths.u. [[DollarPlus|$+]] [[$cid]]<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.timeout off<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 [[$iif]]([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]],1).item,$next.wait,$repeat.who) auth_update.update<br />
[[haltdef]]<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick $2 = auth<br />
[[alias]] -l auth_update.nick {<br />
[[If-Then-Else|if]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]],[[$1-|$1]]) != [[$1-|$2]]) {<br />
.[[signal]] authupdate.new [[$1-|$1]] [[$1-|$2]]<br />
auth.add [[$1-|$1]] [[$1-|$2]]<br />
}<br />
auth.l.rem [[$1-|$1]]<br />
[[If-Then-Else|if]] ([[$1-|$2]] == 0) { auth.q.add [[$1-|$1]] }<br />
[[If-Then-Else|else]] { auth.q.rem [[$1-|$1]] }<br />
[[If-Then-Else|if]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]],[[$1-|$1]])) { auth.n.rem [[$1-|$1]] | .[[signal]] authupdate [[$1-|$1]] [[$1-|$2]] }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; JOIN EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:JOIN:#:{<br />
[[If-Then-Else|if]] ([[$nick_(remote)|$nick]] == [[$me]]) && ($used.network([[$network]])) {<br />
[[If-Then-Else|if]] (![[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[hmake]] auths. [[DollarPlus|$+]] [[$cid]] 200 }<br />
[[If-Then-Else|if]] (![[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[hmake]] auths.l. [[DollarPlus|$+]] [[$cid]] 200 }<br />
[[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[hmake]] auths.q. [[DollarPlus|$+]] [[$cid]] 200 }<br />
[[If-Then-Else|if]] (![[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[hmake]] auths.n. [[DollarPlus|$+]] [[$cid]] 100 }<br />
[[If-Then-Else|if]] (!$timer([[$cid]] [[DollarPlus|$+]] .auth_update.update)) { .[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 $delay.who auth_update.update }<br />
[[return]]<br />
}<br />
[[If-Then-Else|if]] ($auth.site([[$network]],$site)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) | [[return]] }<br />
[[If-Then-Else|if]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]],[[$nick_(remote)|$nick]]) == [[$null]]) { auth.l.add.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid [[$nick_(remote)|$nick]] }<br />
[[If-Then-Else|elseif]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]],[[$nick_(remote)|$nick]]) == 0) {<br />
auth.q.add.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid [[$nick_(remote)|$nick]]<br />
[[If-Then-Else|if]] (![[$comchan]]([[$nick_(remote)|$nick]],2)) { auth.q.add.main [[$nick_(remote)|$nick]] }<br />
}<br />
[[If-Then-Else|if]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]],[[$nick_(remote)|$nick]])) { auth.n.add.wid [[$chan_(window)|$chan(]][[$1-|$2]]).wid [[$nick_(remote)|$nick]] }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RAW 366 - END OF NAMES LIST ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; 366 Vliedel #vliedel :End of /NAMES list.<br />
366 Vliedel #Help :End of /NAMES list<br />
RAW 366:& & end of /names list.:{<br />
[[Local_Variables|var]] %i = [[$nick_(nick)|$nick(]][[$1-|$2]],0) , %t = auths. [[DollarPlus|$+]] [[$cid]]<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %n = [[$nick_(nick)|$nick(]][[$1-|$2]],%i)<br />
[[If-Then-Else|if]] ([[$hget]](%t,%n) == [[$null]]) { auth.l.add.wid [[$chan_(window)|$chan(]][[$1-|$2]]).wid %n }<br />
[[If-Then-Else|elseif]] ([[$hget]](%t,%n) == 0) {<br />
auth.q.add.wid [[$chan_(window)|$chan(]][[$1-|$2]]).wid %n<br />
[[If-Then-Else|if]] (![[$comchan]](%n,2)) { auth.q.add.main %n }<br />
}<br />
[[If-Then-Else|if]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]],%n)) { auth.n.add.wid [[$chan_(window)|$chan(]][[$1-|$2]]).wid %n }<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PART EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:PART:#:{<br />
[[If-Then-Else|if]] ([[$nick_(remote)|$nick]] == [[$me]]) {<br />
auth.rem.chan [[$chan_(remote)|$chan]]<br />
auth.l.rem.chan.all [[$chan_(remote)|$chan]]<br />
auth.q.rem.chan.all [[$chan_(remote)|$chan]]<br />
auth.n.rem.chan.all [[$chan_(remote)|$chan]]<br />
}<br />
[[If-Then-Else|else]] {<br />
auth.l.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid [[$nick_(remote)|$nick]]<br />
auth.q.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid [[$nick_(remote)|$nick]]<br />
auth.n.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid [[$nick_(remote)|$nick]]<br />
[[If-Then-Else|if]] (![[$comchan]]([[$nick_(remote)|$nick]],2)) {<br />
auth.rem [[$nick_(remote)|$nick]]<br />
auth.q.rem.main [[$nick_(remote)|$nick]]<br />
auth.n.rem.main [[$nick_(remote)|$nick]]<br />
}<br />
[[If-Then-Else|elseif]] ($auth.site([[$network]],$site)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) }<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; KICK EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:KICK:#:{<br />
[[If-Then-Else|if]] ($knick == [[$me]]) {<br />
auth.rem.chan [[$chan_(remote)|$chan]]<br />
auth.l.rem.chan.all [[$chan_(remote)|$chan]]<br />
auth.q.rem.chan.all [[$chan_(remote)|$chan]]<br />
auth.n.rem.chan.all [[$chan_(remote)|$chan]]<br />
}<br />
[[If-Then-Else|else]] {<br />
auth.l.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid $knick<br />
auth.q.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid $knick<br />
auth.n.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid $knick<br />
[[If-Then-Else|if]] (![[$comchan]]($knick,2)) {<br />
auth.rem $knick<br />
auth.q.rem.main $knick<br />
auth.n.rem.main $knick<br />
}<br />
[[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) }<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; QUIT EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:QUIT:{<br />
auth.rem [[$nick_(remote)|$nick]]<br />
auth.l.rem [[$nick_(remote)|$nick]]<br />
auth.q.rem [[$nick_(remote)|$nick]]<br />
auth.n.rem [[$nick_(remote)|$nick]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NICK EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:NICK:{<br />
auth.nick [[$nick_(remote)|$nick]] $newnick<br />
auth.l.nick [[$nick_(remote)|$nick]] $newnick<br />
auth.q.nick [[$nick_(remote)|$nick]] $newnick<br />
auth.n.nick [[$nick_(remote)|$nick]] $newnick<br />
[[If-Then-Else|if]] ($auth.site([[$network]],$site)) { auth_update.nick $newnick $auth.from.site([[$network]],$site) }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IAL-UPDATING EVENTS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:TEXT:*:*:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
on *:ACTION:*:*:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
on *:NOTICE:*:*:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
on *:RAWMODE:#:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
on *:TOPIC:#:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
on *:INVITE:#:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
[[CTCP]] *:*:*:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
RAW 352:& & & & & & & & *: { [[If-Then-Else|if]] ($auth.site([[$network]],[[$1-|$4]])) && ([[$comchan]]([[$1-|$6]],1)) { auth_update.nick [[$1-|$6]] $auth.from.site([[$network]],[[$1-|$4]]) } }<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DISCONNECT EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:DISCONNECT:{<br />
[[If-Then-Else|if]] ([[$hget]](auths.u [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
}<br />
<br />
<br />
; 200<br />
; auths.cid nick --> auth<br />
<br />
; 200<br />
; auths.l.cid chanwid.nick --> lnick rnick<br />
; auths.l.cid chanwid.-firstnick --> first_nick_in_list<br />
; auths.l.cid chanwid.-lastnick --> last_nick_in_list<br />
<br />
; 200<br />
; auths.q.cid chanwid.nick --> ctime lnick rnick<br />
; auths.q.cid chanwid.-firstnick --> first_nick_in_queue<br />
; auths.q.cid chanwid.-lastnick --> last_nick_in_queue<br />
; auths.q.cid nick --> ctime<br />
<br />
; 100<br />
; auths.n.cid chanwid.nick --> lnick rnick<br />
; auths.n.cid chanwid.-firstnick --> first_nick_in_list<br />
; auths.n.cid chanwid.-lastnick --> last_nick_in_list<br />
; auths.n.cid nick --> lnick rnick<br />
; auths.n.cid -firstnick --> first_nick_in_list<br />
; auths.n.cid -lastnick --> last_nick_in_list<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------------------------<br />
; --------------------------------------- AUTHS - TABLE ---------------------------------------<br />
; ---------------------------------------------------------------------------------------------<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.ADD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick $2 = auth<br />
[[alias]] -l auth.add {<br />
[[If-Then-Else|if]] (![[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[hadd]] auths. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]] [[$1-|$2]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.rem {<br />
[[If-Then-Else|if]] (![[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[hdel]] auths. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.REM.CHAN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = chan<br />
[[alias]] -l auth.rem.chan {<br />
[[If-Then-Else|if]] (![[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$nick_(nick)|$nick(]][[$1-|$1]],0)<br />
[[while]] (%i) {<br />
[[If-Then-Else|if]] (![[$comchan]]([[$nick_(nick)|$nick(]][[$1-|$1]],%i),2)) { [[hdel]] auths. [[DollarPlus|$+]] [[$cid]] [[$nick_(nick)|$nick(]][[$1-|$1]],%i) }<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick $2 = newnick<br />
[[alias]] -l auth.nick {<br />
[[If-Then-Else|if]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]],[[$1-|$1]]) !== [[$null]]) { [[hdel]] auths. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]] | [[hadd]] auths. [[DollarPlus|$+]] [[$cid]] [[$1-|$2]] $v1 }<br />
}<br />
<br />
<br />
<br />
; ----------------------------------------------------------------------------------------------------<br />
; --------------------------------------- AUTHS - LEFT - TABLE ---------------------------------------<br />
; ----------------------------------------------------------------------------------------------------<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.ADD.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = wid $2 = nick<br />
[[alias]] -l auth.l.add.wid {<br />
[[Local_Variables|var]] %table = auths.l. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %lastnick = [[$hget]](%table,%id [[DollarPlus|$+]] -lastnick)<br />
[[If-Then-Else|if]] ([[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]])) { [[return]] }<br />
[[If-Then-Else|if]] (%lastnick) {<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %lastnick 0<br />
[[hadd]] %table %id [[DollarPlus|$+]] %lastnick [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %lastnick),1,32) [[$1-|$2]]<br />
}<br />
[[If-Then-Else|else]] {<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] 0 0<br />
[[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]]<br />
}<br />
[[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.l.rem {<br />
[[If-Then-Else|if]] (![[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0)<br />
[[while]] (%i) {<br />
auth.l.rem.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]]<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.REM.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = wid $2 = nick<br />
[[alias]] -l auth.l.rem.wid {<br />
[[Local_Variables|var]] %table = auths.l. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]])<br />
[[If-Then-Else|if]] (!%val) { [[return]] }<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32)<br />
[[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$2]]<br />
[[If-Then-Else|if]] (%nick.l == 0) && (%nick.r == 0) { [[hdel]] %table %id [[DollarPlus|$+]] -lastnick | [[hdel]] %table %id [[DollarPlus|$+]] -firstnick | [[return]] }<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1,32) %nick.r }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick %nick.r }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),2,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick %nick.l }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.REM.CHAN.ALL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = chan<br />
[[alias]] -l auth.l.rem.chan.all {<br />
[[If-Then-Else|if]] (![[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[hdel]] -w auths.l. [[DollarPlus|$+]] [[$cid]] [[$chan_(window)|$chan(]][[$1-|$1]]).wid [[DollarPlus|$+]] .*<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick $2 = newnick<br />
[[alias]] -l auth.l.nick {<br />
[[If-Then-Else|if]] ([[$1-|$1]] == [[$1-|$2]]) { [[return]] }<br />
[[Local_Variables|var]] %table = auths.l. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$2]],0)<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %id = [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$2]],%i)).wid [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$1]])<br />
[[If-Then-Else|if]] (%val) {<br />
[[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$1]]<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %val<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32)<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1,32) [[$1-|$2]] }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]] }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r [[$1-|$2]] [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),2,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]] }<br />
}<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
<br />
<br />
; -----------------------------------------------------------------------------------------------------<br />
; --------------------------------------- AUTHS - QUEUE - TABLE ---------------------------------------<br />
; -----------------------------------------------------------------------------------------------------<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.ADD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.q.add {<br />
[[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
auth.q.add.main [[$1-|$1]]<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0)<br />
[[while]] (%i) {<br />
auth.q.add.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]]<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.ADD.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = wid $2 = nick<br />
[[alias]] -l auth.q.add.wid {<br />
[[Local_Variables|var]] %table = auths.q. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %ctime = [[$iif]]([[$hget]](%table,[[$1-|$2]]) == [[$null]],[[$ctime]],$v1)<br />
auth.q.rem.wid [[$1-|$1]] [[$1-|$2]]<br />
[[Local_Variables|var]] %lastnick = [[$hget]](%table,%id [[DollarPlus|$+]] -lastnick)<br />
[[If-Then-Else|if]] (!%lastnick) {<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %ctime 0 0<br />
[[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]]<br />
[[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]]<br />
[[return]]<br />
}<br />
[[If-Then-Else|if]] (%ctime >= [[$hget]](%table,%lastnick)) {<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %ctime %lastnick 0<br />
[[hadd]] %table %id [[DollarPlus|$+]] %lastnick [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %lastnick),1-2,32) [[$1-|$2]]<br />
[[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]]<br />
[[return]]<br />
}<br />
[[Local_Variables|var]] %n = [[$hget]](%table,%id [[DollarPlus|$+]] -firstnick) , %nick = [[$1-|$2]]<br />
[[while]] (%n) {<br />
[[tokenize]] 32 [[$hget]](%table,%id [[DollarPlus|$+]] %n)<br />
[[If-Then-Else|if]] (%ctime <= [[$1-|$1]]) {<br />
[[hadd]] %table %id [[DollarPlus|$+]] %n [[$1-|$1]] %nick [[$1-|$3]]<br />
[[If-Then-Else|if]] ([[$1-|$2]] == 0) {<br />
[[hadd]] %table %id [[DollarPlus|$+]] %nick %ctime 0 %n<br />
[[hadd]] %table %id [[DollarPlus|$+]] -firstnick %nick<br />
}<br />
[[If-Then-Else|else]] {<br />
[[hadd]] %table %id [[DollarPlus|$+]] %nick %ctime [[$1-|$2]] %n<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]]),1-2,32) %nick<br />
}<br />
[[break]]<br />
}<br />
[[Local_Variables|var]] %n = [[$1-|$3]]<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.ADD.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.q.add.main {<br />
[[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[hadd]] auths.q. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]] [[$ctime]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.q.rem {<br />
[[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0)<br />
[[while]] (%i) {<br />
auth.q.rem.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]]<br />
[[dec]] %i<br />
}<br />
auth.q.rem.main [[$1-|$1]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = wid $2 = nick<br />
[[alias]] -l auth.q.rem.wid {<br />
[[Local_Variables|var]] %table = auths.q. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]])<br />
[[If-Then-Else|if]] (!%val) { [[return]] }<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,2,32) , %nick.r = [[$gettok]](%val,3,32)<br />
[[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$2]]<br />
[[If-Then-Else|if]] (%nick.l == 0) && (%nick.r == 0) { [[hdel]] %table %id [[DollarPlus|$+]] -lastnick | [[hdel]] %table %id [[DollarPlus|$+]] -firstnick | [[return]] }<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1-2,32) %nick.r }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick %nick.r }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),1,32) %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),3,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick %nick.l }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.q.rem.main {<br />
[[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[hdel]] auths.q. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM.CHAN.ALL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = chan<br />
[[alias]] -l auth.q.rem.chan.all {<br />
[[Local_Variables|var]] %table = auths.q. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[hdel]] -w %table [[$chan_(window)|$chan(]][[$1-|$1]]).wid [[DollarPlus|$+]] .*<br />
[[Local_Variables|var]] %i = [[$nick_(nick)|$nick(]][[$1-|$1]],0)<br />
[[while]] (%i) {<br />
[[If-Then-Else|if]] (![[$comchan]]([[$nick_(nick)|$nick(]][[$1-|$1]],%i),2)) { [[hdel]] %table [[$nick_(nick)|$nick(]][[$1-|$1]],%i) }<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick $2 = newnick<br />
[[alias]] -l auth.q.nick {<br />
[[If-Then-Else|if]] ([[$1-|$1]] == [[$1-|$2]]) { [[return]] }<br />
[[Local_Variables|var]] %table = auths.q. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$2]],0)<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %id = [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$2]],%i)).wid [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$1]])<br />
[[If-Then-Else|if]] (%val) {<br />
[[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$1]]<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %val<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,2,32) , %nick.r = [[$gettok]](%val,3,32)<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1-2,32) [[$1-|$2]] }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]] }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),1,32) [[$1-|$2]] [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),3,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]] }<br />
}<br />
[[dec]] %i<br />
}<br />
[[If-Then-Else|if]] ([[$hget]](%table,[[$1-|$1]]) !== [[$null]]) { [[hdel]] %table [[$1-|$1]] | [[hadd]] %table [[$1-|$2]] $v1 }<br />
}<br />
<br />
<br />
<br />
; ----------------------------------------------------------------------------------------------------<br />
; --------------------------------------- AUTHS - NEXT - TABLE ---------------------------------------<br />
; ----------------------------------------------------------------------------------------------------<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.ADD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.n.add {<br />
[[If-Then-Else|if]] (![[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
auth.n.add.main [[$1-|$1]]<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0)<br />
[[while]] (%i) {<br />
auth.n.add.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]]<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.ADD.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = wid $2 = nick<br />
[[alias]] -l auth.n.add.wid {<br />
[[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %lastnick = [[$hget]](%table,%id [[DollarPlus|$+]] -lastnick)<br />
[[If-Then-Else|if]] ([[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]])) { [[return]] }<br />
[[If-Then-Else|if]] (%lastnick) {<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %lastnick 0<br />
[[hadd]] %table %id [[DollarPlus|$+]] %lastnick [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %lastnick),1,32) [[$1-|$2]]<br />
}<br />
[[If-Then-Else|else]] {<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] 0 0<br />
[[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]]<br />
}<br />
[[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.ADD.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.n.add.main {<br />
[[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %lastnick = [[$hget]](%table,-lastnick)<br />
[[If-Then-Else|if]] ([[$hget]](%table,[[$1-|$1]])) { [[return]] }<br />
[[If-Then-Else|if]] (%lastnick) {<br />
[[hadd]] %table [[$1-|$1]] %lastnick 0<br />
[[hadd]] %table %lastnick [[$gettok]]([[$hget]](%table,%lastnick),1,32) [[$1-|$1]]<br />
}<br />
[[If-Then-Else|else]] {<br />
[[hadd]] %table [[$1-|$1]] 0 0<br />
[[hadd]] %table -firstnick [[$1-|$1]]<br />
}<br />
[[hadd]] %table -lastnick [[$1-|$1]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.n.rem {<br />
[[If-Then-Else|if]] (![[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0)<br />
[[while]] (%i) {<br />
auth.n.rem.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]]<br />
[[dec]] %i<br />
}<br />
auth.n.rem.main [[$1-|$1]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = wid $2 = nick<br />
[[alias]] -l auth.n.rem.wid {<br />
[[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]])<br />
[[If-Then-Else|if]] (!%val) { [[return]] }<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32)<br />
[[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$2]]<br />
[[If-Then-Else|if]] (%nick.l == 0) && (%nick.r == 0) { [[hdel]] %table %id [[DollarPlus|$+]] -lastnick | [[hdel]] %table %id [[DollarPlus|$+]] -firstnick | [[return]] }<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1,32) %nick.r }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick %nick.r }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),2,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick %nick.l }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.n.rem.main {<br />
[[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %val = [[$hget]](%table,[[$1-|$1]])<br />
[[If-Then-Else|if]] (!%val) { [[return]] }<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32)<br />
[[hdel]] %table [[$1-|$1]]<br />
[[If-Then-Else|if]] (%nick.l == 0) && (%nick.r == 0) { [[hdel]] %table -lastnick | [[hdel]] %table -firstnick | [[return]] }<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %nick.l [[$gettok]]([[$hget]](%table,%nick.l),1,32) %nick.r }<br />
[[If-Then-Else|else]] { [[hadd]] %table -firstnick %nick.r }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %nick.r %nick.l [[$gettok]]([[$hget]](%table,%nick.r),2,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table -lastnick %nick.l }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM.CHAN.ALL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = chan<br />
[[alias]] -l auth.n.rem.chan.all {<br />
[[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[hdel]] -w %table [[$chan_(window)|$chan(]][[$1-|$1]]).wid [[DollarPlus|$+]] .*<br />
[[Local_Variables|var]] %i = [[$nick_(nick)|$nick(]][[$1-|$1]],0)<br />
[[while]] (%i) {<br />
[[If-Then-Else|if]] (![[$comchan]]([[$nick_(nick)|$nick(]][[$1-|$1]],%i),2)) { auth.n.rem.main [[$nick_(nick)|$nick(]][[$1-|$1]],%i) }<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick $2 = newnick<br />
[[alias]] -l auth.n.nick {<br />
[[If-Then-Else|if]] ([[$1-|$1]] == [[$1-|$2]]) { [[return]] }<br />
[[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$2]],0)<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %id = [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$2]],%i)).wid [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$1]])<br />
[[If-Then-Else|if]] (%val) {<br />
[[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$1]]<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %val<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32)<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1,32) [[$1-|$2]] }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]] }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r [[$1-|$2]] [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),2,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]] }<br />
}<br />
[[dec]] %i<br />
}<br />
[[Local_Variables|var]] %val = [[$hget]](%table,[[$1-|$1]])<br />
[[If-Then-Else|if]] (%val) {<br />
[[hdel]] %table [[$1-|$1]]<br />
[[hadd]] %table [[$1-|$2]] %val<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32)<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %nick.l [[$gettok]]([[$hget]](%table,%nick.l),1,32) [[$1-|$2]] }<br />
[[If-Then-Else|else]] { [[hadd]] %table -firstnick [[$1-|$2]] }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %nick.r [[$1-|$2]] [[$gettok]]([[$hget]](%table,%nick.r),2,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table -lastnick [[$1-|$2]] }<br />
}<br />
}</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Test2&diff=5621
Test2
2011-03-02T23:21:17Z
<p>Albie: Testing count.</p>
<hr />
<div> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AUTH_UPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
;<br />
; by Vliedel -- #vliedel @ QuakeNet<br />
; version 1.1 (written and tested on mIRC 6.2)<br />
; made for networks supporting WHOX<br />
;<br />
;<br />
;What does this script do?<br />
;<br />
; - updates the auths of nicks and stores them in a hash table<br />
; - if a channel is too big, /who nick1,nick2,nick3 etc is done untill the auths for the channel is updated<br />
; - users who have a site with the auth in it will be saved without a /who<br />
; ie: "Vliedel" in "Vliedel.users.quakenet.org" will be treated as auth on the QuakeNet network<br />
; - users who are not authed (auth 0) will be checked every x time to see if they are authed yet<br />
; - script updates from largest to the smallest channel<br />
;<br />
;<br />
;How to use this script?<br />
;<br />
; - config the options below<br />
; - /[[load]] -rs auth_update.mrc to load the script<br />
; - script starts on load or on connect<br />
; - to get a nicks auth use: $auth(nick) or $auth(nick,cid)<br />
; - /authupdate.next <nick> [nick] [nick] ... can be used to get auths of those nicks as soon as possible<br />
; please note that this will use a bit less efficient way to get the auths.<br />
; You can use the following script to see when such a requested nick is updated<br />
; on *:SIGNAL:authupdate:{<br />
; if ($2 == $null) { echo -a Requested: $1 is not on a common channel }<br />
; elseif ($2 == 0) { echo -a Requested: $1 is not authed }<br />
; else { echo -a Requested: $1 is authed as $2 }<br />
; }<br />
;<br />
; Note that this signal returns $2 == $null when someone isn't on a common channel.<br />
; This may occur for example when someone parted a channel between the /who and the who reply.<br />
;<br />
; - /authupdate can be used to make the script update the auths without waiting for the timer to trigger it<br />
; - You can use the following script to see when a nick is updated<br />
; on *:SIGNAL:authupdate.new:{<br />
; if ($2 == 0) { echo -a $1 is not authed }<br />
; else { echo -a $1 is authed as $2 }<br />
; }<br />
;<br />
;<br />
;<br />
;Why is this script good?<br />
;<br />
; - sending /who chan for every channel is not needed and goes slow (lag)<br />
; - sending /who chan on join may cause Excess Flood or Max sendQ exceeded<br />
; - sending /who chan1,chan2,chan3 can be much faster, but only if there are not too many results (Max sendQ exceeded)<br />
; - unauthed users can auth without you knowing, so you need to check if they're authed every so many time.<br />
;<br />
;<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SETTINGS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] -l max.who {<br />
; maximum number of replies in a WHO, too high may cause 'Max sendQ exceeded' disconnection<br />
; too low may take the script a long time to update the auths, 1000 should be fine for most situations<br />
[[return]] 1000<br />
}<br />
<br />
[[alias]] -l len.who {<br />
; maximum length of the /who <string>, too long may cause the server to ignore the command<br />
; too low may slow things down, 400 should be fine in most cases<br />
[[return]] 400<br />
}<br />
<br />
[[alias]] -l delay.who {<br />
; N seconds after your first join, the script starts to update the auths<br />
[[return]] 10<br />
}<br />
<br />
[[alias]] -l repeat.who {<br />
; wait N seconds after doing /who to do the next check and /who<br />
[[return]] 20<br />
}<br />
<br />
[[alias]] -l minnicks.who {<br />
; minimum nr of nicks with unknown auth in a channel to do /who #channel rather then /who nick,nick,<br />
[[return]] 3<br />
}<br />
<br />
[[alias]] -l minratio.who {<br />
; minimum ratio of (nicks with unknown auth) / (total nicks) in a channel to do /who #channel rather then /who nick,nick,<br />
[[return]] 0.04<br />
}<br />
<br />
[[alias]] -l queue.repeat.who {<br />
; number of seconds to do the next /who to check if someone who wasn't authed is now authed<br />
[[return]] 600<br />
}<br />
<br />
[[alias]] -l next.wait {<br />
; wait N seconds to do the next /who check triggered by authupdate.next after the last /who<br />
[[return]] 10<br />
}<br />
<br />
[[alias]] -l used.network {<br />
; The networks the script is supposed to work on (case sensitive).<br />
; NOTE that the script ONLY works on networks supporting WHOX (ircu 2.10.* should work)<br />
; $1 is the network<br />
[[return]] [[$istokcs]](QuakeNet UnderNet GameSurge HanIRC NetGamers OGameNet,[[$1-|$1]],32)<br />
}<br />
<br />
[[alias]] -l auth.site {<br />
; For every network a check to see if a user has a site where his authname is in<br />
; $1 is the network, $2 is the site<br />
[[If-Then-Else|if]] ([[$1-|$1]] === QuakeNet) { [[return]] [[$iif]](*.users.quakenet.org iswm [[$1-|$2]],[[$true]]) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === UnderNet) { [[return]] [[$iif]](*.users.undernet.org iswm [[$1-|$2]],[[$true]]) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === GameSurge) { [[return]] [[$iif]](*.*.GameSurge iswm [[$1-|$2]],[[$true]]) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === HanIRC) { [[return]] [[$iif]](*.users.HanIRC.org iswm [[$1-|$2]],[[$true]]) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === NetGamers) { [[return]] [[$iif]](*.users.netgamers.org iswm [[$1-|$2]],[[$true]]) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === OGameNet) { [[return]] [[$iif]](*.user.OGameNet iswm [[$1-|$2]],[[$true]]) }<br />
}<br />
<br />
[[alias]] -l auth.from.site {<br />
; For every network the method to return the auth from the site<br />
; $1 is the network, $2 is the site<br />
[[If-Then-Else|if]] ([[$1-|$1]] === QuakeNet) { [[return]] [[$gettok]]([[$1-|$2]],1,46) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === UnderNet) { [[return]] [[$gettok]]([[$1-|$2]],1,46) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === GameSurge) { [[return]] [[$gettok]]([[$1-|$2]],1,46) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === HanIRC) { [[return]] [[$gettok]]([[$1-|$2]],1,46) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === NetGamers) { [[return]] [[$gettok]]([[$1-|$2]],1,46) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === OGameNet) { [[return]] [[$gettok]]([[$1-|$2]],1,46) }<br />
}<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] auth {<br />
[[If-Then-Else|if]] (![[$isid]]) { [[$iif]]([[$show]],.auth,auth) [[$1-|$1-]] | [[return]] }<br />
[[If-Then-Else|if]] ([[$1-|$1]] == [[$null]]) || (([[$1-|$2]] !== [[$null]]) && ((![[$scid]]([[$1-|$2]])) || (![[$1-|$2]]))) { [[return]] }<br />
[[return]] [[$hget]](auths. [[DollarPlus|$+]] [[$iif]]([[$1-|$2]] !== [[$null]],[[$1-|$2]],[[$cid]]),[[$1-|$1]])<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTHUPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] authupdate { [[echo]] -a Auth update: $auth_update.update }<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTHUPDATE.NEXT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] authupdate.next {<br />
[[Local_Variables|var]] %i = [[$0]]<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %n = [[$gettok]]([[$1-|$1-]],%i,32)<br />
[[If-Then-Else|if]] (![[$comchan]](%n,1)) { .[[signal]] authupdate %n }<br />
[[If-Then-Else|else]] { auth.n.add %n }<br />
[[dec]] %i<br />
}<br />
[[If-Then-Else|if]] (!$timer([[$cid]] [[DollarPlus|$+]] .auth_update.update)) { auth_update.update n }<br />
[[If-Then-Else|else]] {<br />
[[Local_Variables|var]] %d = $timer([[$cid]] [[DollarPlus|$+]] .auth_update.update).delay , %l = $timer([[$cid]] [[DollarPlus|$+]] .auth_update.update).secs<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 [[$iif]]([[$calc]](%d - %l) < $next.wait,[[$calc]]($v2 - $v1),0) auth_update.update n<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LOAD EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:LOAD:{ scon -at1 auth_load }<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_LOAD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] -l auth_load {<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 $delay.who auth_update.update<br />
[[If-Then-Else|if]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[hmake]] auths. [[DollarPlus|$+]] [[$cid]] 200<br />
[[hmake]] auths.l. [[DollarPlus|$+]] [[$cid]] 200<br />
[[hmake]] auths.q. [[DollarPlus|$+]] [[$cid]] 200<br />
[[hmake]] auths.n. [[DollarPlus|$+]] [[$cid]] 100<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$me]],0)<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %chan = [[$comchan]]([[$me]],%i)<br />
[[Local_Variables|var]] %j = [[$nick_(nick)|$nick(]]%chan,0)<br />
[[while]] (%j) {<br />
auth.l.add.wid [[$chan_(window)|$chan(]]%chan).wid [[$nick_(nick)|$nick(]]%chan,%j)<br />
[[dec]] %j<br />
}<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.UPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] -l auth_update.update {<br />
[[Local_Variables|var]] %who<br />
[[If-Then-Else|if]] (![[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]])) {<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update off<br />
[[hmake]] auths.u. [[DollarPlus|$+]] [[$cid]] 200<br />
[[Local_Variables|var]] %who = $auth_update.who<br />
[[If-Then-Else|if]] (%who) {<br />
[[hadd]] auths.u. [[DollarPlus|$+]] [[$cid]] -mask %who [[DollarPlus|$+]] ,,, [[DollarPlus|$+]] 273<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.timeout 1 [[$calc]]($repeat.who * 2) auth_update.timeout<br />
.quote WHO [[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]],-mask) % [[DollarPlus|$+]] nat,273<br />
}<br />
[[If-Then-Else|else]] {<br />
[[hfree]] auths.u. [[DollarPlus|$+]] [[$cid]]<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 $$repeat.who auth_update.update<br />
}<br />
}<br />
[[If-Then-Else|if]] (%who) { [[return]] updating }<br />
[[If-Then-Else|elseif]] ([[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]])) { [[return]] already in progress }<br />
[[If-Then-Else|else]] { [[return]] nothing to update }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.TIMEOUT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] -l auth_update.timeout {<br />
[[hfree]] auths.u. [[DollarPlus|$+]] [[$cid]]<br />
auth_update.update<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.SORT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; sorts channels by number of nicks in channel<br />
; <number of nicks>.<channel number><br />
; returns 127.1 23.2 <= means 127 nicks on comchan 1<br />
[[alias]] -l auth_update.sort {<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$me]],0) , %chans<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %chans = %chans [[$nick_(nick)|$nick(]][[$comchan]]([[$me]],%i),0) [[DollarPlus|$+]] . [[DollarPlus|$+]] %i<br />
[[dec]] %i<br />
}<br />
[[return]] [[$sorttok]](%chans,32,n)<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.WHO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $auth_update.who(N,L)<br />
; returns #chan,#chan,nick,nick<br />
[[alias]] -l auth_update.who {<br />
[[Local_Variables|var]] %t = auths.u. [[DollarPlus|$+]] [[$cid]] , %t.l = auths.l. [[DollarPlus|$+]] [[$cid]] , %t.q = auths.q. [[DollarPlus|$+]] [[$cid]] , %t.n = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[Local_Variables|var]] %n.max = $max.who , %l.max = $len.who , %n.min = $minnicks.who , %ratio = $minratio.who<br />
[[Local_Variables|var]] %len , %n.nr , %chans , %nicks , %chans.go<br />
[[If-Then-Else|if]] [[$hget]](auths.n.temp) { [[hfree]] auths.n.temp }<br />
[[hmake]] auths.n.temp<br />
[[Local_Variables|var]] %n = [[$hget]](%t.n,-firstnick)<br />
[[while]] (%n) {<br />
[[inc]] %len [[$calc]]([[$len]](%n) + 1)<br />
[[inc]] %n.nr<br />
[[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[dec]] %n.nr | [[dec]] %len [[$calc]]([[$len]](%n) + 1) | [[break]] }<br />
[[hadd]] auths.n.temp %n 1<br />
[[hadd]] %t %n 1<br />
[[Local_Variables|var]] %nicks = [[$addtok]](%nicks,%n,44) , %n = [[$gettok]]([[$hget]](%t.n,%n),2,32)<br />
}<br />
<br />
[[Local_Variables|var]] %sorted = $auth_update.sort , %i = [[$numtok]](%sorted,32) , %time = [[$calc]]([[$ctime]] - $queue.repeat.who)<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %comchan = [[$gettok]]([[$gettok]](%sorted,%i,32),2,46) , %chan = [[$comchan]]([[$me]],%comchan) , %id = [[$chan_(window)|$chan(]]%chan).wid [[DollarPlus|$+]] .<br />
[[Local_Variables|var]] %n.c = [[$nick_(nick)|$nick(]]%chan,0) , %left , %go<br />
[[If-Then-Else|if]] (%n.c > %n.max) { [[break]] }<br />
[[If-Then-Else|if]] [[$hget]](auths.temp) { [[hfree]] auths.temp }<br />
[[hmake]] auths.temp<br />
[[Local_Variables|var]] %n = [[$hget]](%t.n,%id [[DollarPlus|$+]] -firstnick)<br />
[[while]] (%n) {<br />
[[If-Then-Else|if]] (![[$hget]](%t,%n)) || ([[$hget]](auths.n.temp,%n)) { [[hadd]] auths.temp %n 1 | [[inc]] %left }<br />
[[If-Then-Else|if]] (((%left >= %n.min) && ([[$calc]](%left / %n.c) >= %ratio)) || (%left == %n.c)) { [[Local_Variables|var]] %go = 1 | [[break]] }<br />
[[Local_Variables|var]] %n = [[$gettok]]([[$hget]](%t.n,%id [[DollarPlus|$+]] %n),2,32)<br />
}<br />
[[Local_Variables|var]] %n = [[$hget]](%t.l,%id [[DollarPlus|$+]] -firstnick)<br />
[[while]] (%n) {<br />
[[If-Then-Else|if]] (![[$hget]](%t,%n)) && (![[$hget]](auths.temp,%n)) { [[inc]] %left }<br />
[[If-Then-Else|if]] (((%left >= %n.min) && ([[$calc]](%left / %n.c) >= %ratio)) || (%left == %n.c)) { [[Local_Variables|var]] %go = 1 | [[break]] }<br />
[[Local_Variables|var]] %n = [[$gettok]]([[$hget]](%t.l,%id [[DollarPlus|$+]] %n),2,32)<br />
}<br />
[[Local_Variables|var]] %n = [[$hget]](%t.q,%id [[DollarPlus|$+]] -firstnick)<br />
[[while]] (%n) {<br />
[[tokenize]] 32 [[$hget]](%t.q,%id [[DollarPlus|$+]] %n)<br />
[[If-Then-Else|if]] ([[$1-|$1]] > %time) { [[break]] }<br />
[[If-Then-Else|if]] (![[$hget]](%t,%n)) && (![[$hget]](auths.temp,%n)) { [[inc]] %left }<br />
[[If-Then-Else|if]] (((%left >= %n.min) && ([[$calc]](%left / %n.c) >= %ratio)) || (%left == %n.c)) { [[Local_Variables|var]] %go = 1 | [[break]] }<br />
[[Local_Variables|var]] %n = [[$1-|$3]]<br />
}<br />
[[If-Then-Else|if]] (!%go) { [[dec]] %i | [[continue]] }<br />
[[Local_Variables|var]] %j = %n.c , %n.tmp = %n.nr , %l.tmp = %len , %chans.go = %chans.go %comchan<br />
[[inc]] %l.tmp [[$calc]]([[$len]](%chan) + 1)<br />
[[while]] (%j) {<br />
[[Local_Variables|var]] %n = [[$nick_(nick)|$nick(]]%chan,%j)<br />
[[If-Then-Else|if]] (![[$hget]](%t,%n)) { [[inc]] %n.tmp }<br />
[[If-Then-Else|if]] ([[$hget]](auths.n.temp,%n)) { [[dec]] %l.tmp [[$calc]]([[$len]](%n) + 1) }<br />
[[dec]] %j<br />
}<br />
[[If-Then-Else|if]] (%l.tmp > %l.max) || (%n.tmp > %n.max) { [[dec]] %i | [[continue]] }<br />
[[Local_Variables|var]] %j = [[$nick_(nick)|$nick(]]%chan,0)<br />
[[while]] (%j) {<br />
[[Local_Variables|var]] %n = [[$nick_(nick)|$nick(]]%chan,%j)<br />
[[hadd]] %t %n 1<br />
[[hdel]] auths.n.temp %n<br />
[[Local_Variables|var]] %nicks = [[$remtok]](%nicks,%n,1,44)<br />
[[dec]] %j<br />
}<br />
[[Local_Variables|var]] %len = %l.tmp , %n.nr = %n.tmp , %chans = [[$addtok]](%chans,%chan,44)<br />
[[dec]] %i<br />
}<br />
<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$me]],0)<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %chan = [[$comchan]]([[$me]],%i)<br />
[[If-Then-Else|if]] (([[$nick_(nick)|$nick(]]%chan,0) > %n.max) || (![[$istok]](%chans.go,%i,32))) {<br />
[[Local_Variables|var]] %id = [[$chan_(window)|$chan(]]%chan).wid [[DollarPlus|$+]] . , %n = [[$hget]](%t.l,%id [[DollarPlus|$+]] -firstnick)<br />
[[while]] (%n) {<br />
[[If-Then-Else|if]] (![[$hget]](%t,%n)) {<br />
[[inc]] %len [[$calc]]([[$len]](%n) + 1)<br />
[[inc]] %n.nr<br />
[[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[break]] }<br />
[[hadd]] %t %n 1<br />
[[Local_Variables|var]] %nicks = [[$addtok]](%nicks,%n,44)<br />
}<br />
[[Local_Variables|var]] %n = [[$gettok]]([[$hget]](%t.l,%id [[DollarPlus|$+]] %n),2,32)<br />
}<br />
[[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[break]] }<br />
[[Local_Variables|var]] %n = [[$hget]](%t.q,%id [[DollarPlus|$+]] -firstnick)<br />
[[while]] (%n) {<br />
[[tokenize]] 32 [[$hget]](%t.q,%id [[DollarPlus|$+]] %n)<br />
[[If-Then-Else|if]] ([[$1-|$1]] > %time) { [[break]] }<br />
[[If-Then-Else|if]] (![[$hget]](%t,%n)) {<br />
[[inc]] %len [[$calc]]([[$len]](%n) + 1)<br />
[[inc]] %n.nr<br />
[[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[break]] }<br />
[[hadd]] %t %n 1<br />
[[Local_Variables|var]] %nicks = [[$addtok]](%nicks,%n,44)<br />
}<br />
[[Local_Variables|var]] %n = [[$1-|$3]]<br />
}<br />
}<br />
[[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[break]] }<br />
[[dec]] %i<br />
}<br />
[[If-Then-Else|if]] [[$hget]](auths.temp) { [[hfree]] auths.temp }<br />
[[If-Then-Else|if]] [[$hget]](auths.n.temp) { [[hfree]] auths.n.temp }<br />
[[return]] [[$addtok]](%chans,%nicks,44)<br />
}<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RAW 354 SPECIAL WHO REPLY ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; 354 <you> <nr> <nick> <auth><br />
; 354 Vliedel 273 L 0<br />
RAW 354:& 273 & &:{<br />
[[If-Then-Else|if]] ([[$comchan]]([[$1-|$3]],1)) { auth_update.nick [[$1-|$3]] [[$1-|$4]] }<br />
[[If-Then-Else|elseif]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]],[[$1-|$3]])) { auth.n.rem [[$1-|$3]] | .[[signal]] authupdate [[$1-|$3]] }<br />
[[haltdef]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RAW 315 WHO END ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; 315 <you> <requested> :End of /who list.<br />
; 315 Vliedel #vliedel,Rutix,fishbot :End of /WHO list.<br />
RAW 315:& & end of /WHO list.: {<br />
[[If-Then-Else|if]] ([[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]],-mask) == [[$1-|$2]]) {<br />
[[hfree]] auths.u. [[DollarPlus|$+]] [[$cid]]<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.timeout off<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 [[$iif]]([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]],1).item,$next.wait,$repeat.who) auth_update.update<br />
[[haltdef]]<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick $2 = auth<br />
[[alias]] -l auth_update.nick {<br />
[[If-Then-Else|if]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]],[[$1-|$1]]) != [[$1-|$2]]) {<br />
.[[signal]] authupdate.new [[$1-|$1]] [[$1-|$2]]<br />
auth.add [[$1-|$1]] [[$1-|$2]]<br />
}<br />
auth.l.rem [[$1-|$1]]<br />
[[If-Then-Else|if]] ([[$1-|$2]] == 0) { auth.q.add [[$1-|$1]] }<br />
[[If-Then-Else|else]] { auth.q.rem [[$1-|$1]] }<br />
[[If-Then-Else|if]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]],[[$1-|$1]])) { auth.n.rem [[$1-|$1]] | .[[signal]] authupdate [[$1-|$1]] [[$1-|$2]] }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; JOIN EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:JOIN:#:{<br />
[[If-Then-Else|if]] ([[$nick_(remote)|$nick]] == [[$me]]) && ($used.network([[$network]])) {<br />
[[If-Then-Else|if]] (![[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[hmake]] auths. [[DollarPlus|$+]] [[$cid]] 200 }<br />
[[If-Then-Else|if]] (![[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[hmake]] auths.l. [[DollarPlus|$+]] [[$cid]] 200 }<br />
[[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[hmake]] auths.q. [[DollarPlus|$+]] [[$cid]] 200 }<br />
[[If-Then-Else|if]] (![[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[hmake]] auths.n. [[DollarPlus|$+]] [[$cid]] 100 }<br />
[[If-Then-Else|if]] (!$timer([[$cid]] [[DollarPlus|$+]] .auth_update.update)) { .[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 $delay.who auth_update.update }<br />
[[return]]<br />
}<br />
[[If-Then-Else|if]] ($auth.site([[$network]],$site)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) | [[return]] }<br />
[[If-Then-Else|if]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]],[[$nick_(remote)|$nick]]) == [[$null]]) { auth.l.add.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid [[$nick_(remote)|$nick]] }<br />
[[If-Then-Else|elseif]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]],[[$nick_(remote)|$nick]]) == 0) {<br />
auth.q.add.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid [[$nick_(remote)|$nick]]<br />
[[If-Then-Else|if]] (![[$comchan]]([[$nick_(remote)|$nick]],2)) { auth.q.add.main [[$nick_(remote)|$nick]] }<br />
}<br />
[[If-Then-Else|if]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]],[[$nick_(remote)|$nick]])) { auth.n.add.wid [[$chan_(window)|$chan(]][[$1-|$2]]).wid [[$nick_(remote)|$nick]] }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RAW 366 - END OF NAMES LIST ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; 366 Vliedel #vliedel :End of /NAMES list.<br />
366 Vliedel #Help :End of /NAMES list<br />
RAW 366:& & end of /names list.:{<br />
[[Local_Variables|var]] %i = [[$nick_(nick)|$nick(]][[$1-|$2]],0) , %t = auths. [[DollarPlus|$+]] [[$cid]]<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %n = [[$nick_(nick)|$nick(]][[$1-|$2]],%i)<br />
[[If-Then-Else|if]] ([[$hget]](%t,%n) == [[$null]]) { auth.l.add.wid [[$chan_(window)|$chan(]][[$1-|$2]]).wid %n }<br />
[[If-Then-Else|elseif]] ([[$hget]](%t,%n) == 0) {<br />
auth.q.add.wid [[$chan_(window)|$chan(]][[$1-|$2]]).wid %n<br />
[[If-Then-Else|if]] (![[$comchan]](%n,2)) { auth.q.add.main %n }<br />
}<br />
[[If-Then-Else|if]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]],%n)) { auth.n.add.wid [[$chan_(window)|$chan(]][[$1-|$2]]).wid %n }<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PART EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:PART:#:{<br />
[[If-Then-Else|if]] ([[$nick_(remote)|$nick]] == [[$me]]) {<br />
auth.rem.chan [[$chan_(remote)|$chan]]<br />
auth.l.rem.chan.all [[$chan_(remote)|$chan]]<br />
auth.q.rem.chan.all [[$chan_(remote)|$chan]]<br />
auth.n.rem.chan.all [[$chan_(remote)|$chan]]<br />
}<br />
[[If-Then-Else|else]] {<br />
auth.l.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid [[$nick_(remote)|$nick]]<br />
auth.q.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid [[$nick_(remote)|$nick]]<br />
auth.n.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid [[$nick_(remote)|$nick]]<br />
[[If-Then-Else|if]] (![[$comchan]]([[$nick_(remote)|$nick]],2)) {<br />
auth.rem [[$nick_(remote)|$nick]]<br />
auth.q.rem.main [[$nick_(remote)|$nick]]<br />
auth.n.rem.main [[$nick_(remote)|$nick]]<br />
}<br />
[[If-Then-Else|elseif]] ($auth.site([[$network]],$site)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) }<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; KICK EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:KICK:#:{<br />
[[If-Then-Else|if]] ($knick == [[$me]]) {<br />
auth.rem.chan [[$chan_(remote)|$chan]]<br />
auth.l.rem.chan.all [[$chan_(remote)|$chan]]<br />
auth.q.rem.chan.all [[$chan_(remote)|$chan]]<br />
auth.n.rem.chan.all [[$chan_(remote)|$chan]]<br />
}<br />
[[If-Then-Else|else]] {<br />
auth.l.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid $knick<br />
auth.q.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid $knick<br />
auth.n.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid $knick<br />
[[If-Then-Else|if]] (![[$comchan]]($knick,2)) {<br />
auth.rem $knick<br />
auth.q.rem.main $knick<br />
auth.n.rem.main $knick<br />
}<br />
[[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) }<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; QUIT EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:QUIT:{<br />
auth.rem [[$nick_(remote)|$nick]]<br />
auth.l.rem [[$nick_(remote)|$nick]]<br />
auth.q.rem [[$nick_(remote)|$nick]]<br />
auth.n.rem [[$nick_(remote)|$nick]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NICK EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:NICK:{<br />
auth.nick [[$nick_(remote)|$nick]] $newnick<br />
auth.l.nick [[$nick_(remote)|$nick]] $newnick<br />
auth.q.nick [[$nick_(remote)|$nick]] $newnick<br />
auth.n.nick [[$nick_(remote)|$nick]] $newnick<br />
[[If-Then-Else|if]] ($auth.site([[$network]],$site)) { auth_update.nick $newnick $auth.from.site([[$network]],$site) }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IAL-UPDATING EVENTS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:TEXT:*:*:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
on *:ACTION:*:*:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
on *:NOTICE:*:*:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
on *:RAWMODE:#:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
on *:TOPIC:#:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
on *:INVITE:#:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
[[CTCP]] *:*:*:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
RAW 352:& & & & & & & & *: { [[If-Then-Else|if]] ($auth.site([[$network]],[[$1-|$4]])) && ([[$comchan]]([[$1-|$6]],1)) { auth_update.nick [[$1-|$6]] $auth.from.site([[$network]],[[$1-|$4]]) } }<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DISCONNECT EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:DISCONNECT:{<br />
[[If-Then-Else|if]] ([[$hget]](auths.u [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
}<br />
<br />
<br />
; 200<br />
; auths.cid nick --> auth<br />
<br />
; 200<br />
; auths.l.cid chanwid.nick --> lnick rnick<br />
; auths.l.cid chanwid.-firstnick --> first_nick_in_list<br />
; auths.l.cid chanwid.-lastnick --> last_nick_in_list<br />
<br />
; 200<br />
; auths.q.cid chanwid.nick --> ctime lnick rnick<br />
; auths.q.cid chanwid.-firstnick --> first_nick_in_queue<br />
; auths.q.cid chanwid.-lastnick --> last_nick_in_queue<br />
; auths.q.cid nick --> ctime<br />
<br />
; 100<br />
; auths.n.cid chanwid.nick --> lnick rnick<br />
; auths.n.cid chanwid.-firstnick --> first_nick_in_list<br />
; auths.n.cid chanwid.-lastnick --> last_nick_in_list<br />
; auths.n.cid nick --> lnick rnick<br />
; auths.n.cid -firstnick --> first_nick_in_list<br />
; auths.n.cid -lastnick --> last_nick_in_list<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------------------------<br />
; --------------------------------------- AUTHS - TABLE ---------------------------------------<br />
; ---------------------------------------------------------------------------------------------<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.ADD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick $2 = auth<br />
[[alias]] -l auth.add {<br />
[[If-Then-Else|if]] (![[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[hadd]] auths. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]] [[$1-|$2]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.rem {<br />
[[If-Then-Else|if]] (![[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[hdel]] auths. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.REM.CHAN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = chan<br />
[[alias]] -l auth.rem.chan {<br />
[[If-Then-Else|if]] (![[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$nick_(nick)|$nick(]][[$1-|$1]],0)<br />
[[while]] (%i) {<br />
[[If-Then-Else|if]] (![[$comchan]]([[$nick_(nick)|$nick(]][[$1-|$1]],%i),2)) { [[hdel]] auths. [[DollarPlus|$+]] [[$cid]] [[$nick_(nick)|$nick(]][[$1-|$1]],%i) }<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick $2 = newnick<br />
[[alias]] -l auth.nick {<br />
[[If-Then-Else|if]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]],[[$1-|$1]]) !== [[$null]]) { [[hdel]] auths. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]] | [[hadd]] auths. [[DollarPlus|$+]] [[$cid]] [[$1-|$2]] $v1 }<br />
}<br />
<br />
<br />
<br />
; ----------------------------------------------------------------------------------------------------<br />
; --------------------------------------- AUTHS - LEFT - TABLE ---------------------------------------<br />
; ----------------------------------------------------------------------------------------------------<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.ADD.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = wid $2 = nick<br />
[[alias]] -l auth.l.add.wid {<br />
[[Local_Variables|var]] %table = auths.l. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %lastnick = [[$hget]](%table,%id [[DollarPlus|$+]] -lastnick)<br />
[[If-Then-Else|if]] ([[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]])) { [[return]] }<br />
[[If-Then-Else|if]] (%lastnick) {<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %lastnick 0<br />
[[hadd]] %table %id [[DollarPlus|$+]] %lastnick [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %lastnick),1,32) [[$1-|$2]]<br />
}<br />
[[If-Then-Else|else]] {<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] 0 0<br />
[[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]]<br />
}<br />
[[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.l.rem {<br />
[[If-Then-Else|if]] (![[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0)<br />
[[while]] (%i) {<br />
auth.l.rem.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]]<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.REM.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = wid $2 = nick<br />
[[alias]] -l auth.l.rem.wid {<br />
[[Local_Variables|var]] %table = auths.l. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]])<br />
[[If-Then-Else|if]] (!%val) { [[return]] }<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32)<br />
[[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$2]]<br />
[[If-Then-Else|if]] (%nick.l == 0) && (%nick.r == 0) { [[hdel]] %table %id [[DollarPlus|$+]] -lastnick | [[hdel]] %table %id [[DollarPlus|$+]] -firstnick | [[return]] }<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1,32) %nick.r }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick %nick.r }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),2,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick %nick.l }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.REM.CHAN.ALL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = chan<br />
[[alias]] -l auth.l.rem.chan.all {<br />
[[If-Then-Else|if]] (![[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[hdel]] -w auths.l. [[DollarPlus|$+]] [[$cid]] [[$chan_(window)|$chan(]][[$1-|$1]]).wid [[DollarPlus|$+]] .*<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick $2 = newnick<br />
[[alias]] -l auth.l.nick {<br />
[[If-Then-Else|if]] ([[$1-|$1]] == [[$1-|$2]]) { [[return]] }<br />
[[Local_Variables|var]] %table = auths.l. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$2]],0)<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %id = [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$2]],%i)).wid [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$1]])<br />
[[If-Then-Else|if]] (%val) {<br />
[[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$1]]<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %val<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32)<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1,32) [[$1-|$2]] }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]] }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r [[$1-|$2]] [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),2,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]] }<br />
}<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
<br />
<br />
; -----------------------------------------------------------------------------------------------------<br />
; --------------------------------------- AUTHS - QUEUE - TABLE ---------------------------------------<br />
; -----------------------------------------------------------------------------------------------------<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.ADD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.q.add {<br />
[[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
auth.q.add.main [[$1-|$1]]<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0)<br />
[[while]] (%i) {<br />
auth.q.add.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]]<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.ADD.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = wid $2 = nick<br />
[[alias]] -l auth.q.add.wid {<br />
[[Local_Variables|var]] %table = auths.q. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %ctime = [[$iif]]([[$hget]](%table,[[$1-|$2]]) == [[$null]],[[$ctime]],$v1)<br />
auth.q.rem.wid [[$1-|$1]] [[$1-|$2]]<br />
[[Local_Variables|var]] %lastnick = [[$hget]](%table,%id [[DollarPlus|$+]] -lastnick)<br />
[[If-Then-Else|if]] (!%lastnick) {<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %ctime 0 0<br />
[[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]]<br />
[[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]]<br />
[[return]]<br />
}<br />
[[If-Then-Else|if]] (%ctime >= [[$hget]](%table,%lastnick)) {<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %ctime %lastnick 0<br />
[[hadd]] %table %id [[DollarPlus|$+]] %lastnick [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %lastnick),1-2,32) [[$1-|$2]]<br />
[[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]]<br />
[[return]]<br />
}<br />
[[Local_Variables|var]] %n = [[$hget]](%table,%id [[DollarPlus|$+]] -firstnick) , %nick = [[$1-|$2]]<br />
[[while]] (%n) {<br />
[[tokenize]] 32 [[$hget]](%table,%id [[DollarPlus|$+]] %n)<br />
[[If-Then-Else|if]] (%ctime <= [[$1-|$1]]) {<br />
[[hadd]] %table %id [[DollarPlus|$+]] %n [[$1-|$1]] %nick [[$1-|$3]]<br />
[[If-Then-Else|if]] ([[$1-|$2]] == 0) {<br />
[[hadd]] %table %id [[DollarPlus|$+]] %nick %ctime 0 %n<br />
[[hadd]] %table %id [[DollarPlus|$+]] -firstnick %nick<br />
}<br />
[[If-Then-Else|else]] {<br />
[[hadd]] %table %id [[DollarPlus|$+]] %nick %ctime [[$1-|$2]] %n<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]]),1-2,32) %nick<br />
}<br />
[[break]]<br />
}<br />
[[Local_Variables|var]] %n = [[$1-|$3]]<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.ADD.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.q.add.main {<br />
[[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[hadd]] auths.q. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]] [[$ctime]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.q.rem {<br />
[[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0)<br />
[[while]] (%i) {<br />
auth.q.rem.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]]<br />
[[dec]] %i<br />
}<br />
auth.q.rem.main [[$1-|$1]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = wid $2 = nick<br />
[[alias]] -l auth.q.rem.wid {<br />
[[Local_Variables|var]] %table = auths.q. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]])<br />
[[If-Then-Else|if]] (!%val) { [[return]] }<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,2,32) , %nick.r = [[$gettok]](%val,3,32)<br />
[[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$2]]<br />
[[If-Then-Else|if]] (%nick.l == 0) && (%nick.r == 0) { [[hdel]] %table %id [[DollarPlus|$+]] -lastnick | [[hdel]] %table %id [[DollarPlus|$+]] -firstnick | [[return]] }<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1-2,32) %nick.r }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick %nick.r }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),1,32) %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),3,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick %nick.l }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.q.rem.main {<br />
[[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[hdel]] auths.q. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM.CHAN.ALL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = chan<br />
[[alias]] -l auth.q.rem.chan.all {<br />
[[Local_Variables|var]] %table = auths.q. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[hdel]] -w %table [[$chan_(window)|$chan(]][[$1-|$1]]).wid [[DollarPlus|$+]] .*<br />
[[Local_Variables|var]] %i = [[$nick_(nick)|$nick(]][[$1-|$1]],0)<br />
[[while]] (%i) {<br />
[[If-Then-Else|if]] (![[$comchan]]([[$nick_(nick)|$nick(]][[$1-|$1]],%i),2)) { [[hdel]] %table [[$nick_(nick)|$nick(]][[$1-|$1]],%i) }<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick $2 = newnick<br />
[[alias]] -l auth.q.nick {<br />
[[If-Then-Else|if]] ([[$1-|$1]] == [[$1-|$2]]) { [[return]] }<br />
[[Local_Variables|var]] %table = auths.q. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$2]],0)<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %id = [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$2]],%i)).wid [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$1]])<br />
[[If-Then-Else|if]] (%val) {<br />
[[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$1]]<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %val<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,2,32) , %nick.r = [[$gettok]](%val,3,32)<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1-2,32) [[$1-|$2]] }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]] }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),1,32) [[$1-|$2]] [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),3,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]] }<br />
}<br />
[[dec]] %i<br />
}<br />
[[If-Then-Else|if]] ([[$hget]](%table,[[$1-|$1]]) !== [[$null]]) { [[hdel]] %table [[$1-|$1]] | [[hadd]] %table [[$1-|$2]] $v1 }<br />
}<br />
<br />
<br />
<br />
; ----------------------------------------------------------------------------------------------------<br />
; --------------------------------------- AUTHS - NEXT - TABLE ---------------------------------------<br />
; ----------------------------------------------------------------------------------------------------<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.ADD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.n.add {<br />
[[If-Then-Else|if]] (![[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
auth.n.add.main [[$1-|$1]]<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0)<br />
[[while]] (%i) {<br />
auth.n.add.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]]<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.ADD.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = wid $2 = nick<br />
[[alias]] -l auth.n.add.wid {<br />
[[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %lastnick = [[$hget]](%table,%id [[DollarPlus|$+]] -lastnick)<br />
[[If-Then-Else|if]] ([[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]])) { [[return]] }<br />
[[If-Then-Else|if]] (%lastnick) {<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %lastnick 0<br />
[[hadd]] %table %id [[DollarPlus|$+]] %lastnick [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %lastnick),1,32) [[$1-|$2]]<br />
}<br />
[[If-Then-Else|else]] {<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] 0 0<br />
[[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]]<br />
}<br />
[[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.ADD.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.n.add.main {<br />
[[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %lastnick = [[$hget]](%table,-lastnick)<br />
[[If-Then-Else|if]] ([[$hget]](%table,[[$1-|$1]])) { [[return]] }<br />
[[If-Then-Else|if]] (%lastnick) {<br />
[[hadd]] %table [[$1-|$1]] %lastnick 0<br />
[[hadd]] %table %lastnick [[$gettok]]([[$hget]](%table,%lastnick),1,32) [[$1-|$1]]<br />
}<br />
[[If-Then-Else|else]] {<br />
[[hadd]] %table [[$1-|$1]] 0 0<br />
[[hadd]] %table -firstnick [[$1-|$1]]<br />
}<br />
[[hadd]] %table -lastnick [[$1-|$1]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.n.rem {<br />
[[If-Then-Else|if]] (![[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0)<br />
[[while]] (%i) {<br />
auth.n.rem.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]]<br />
[[dec]] %i<br />
}<br />
auth.n.rem.main [[$1-|$1]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = wid $2 = nick<br />
[[alias]] -l auth.n.rem.wid {<br />
[[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]])<br />
[[If-Then-Else|if]] (!%val) { [[return]] }<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32)<br />
[[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$2]]<br />
[[If-Then-Else|if]] (%nick.l == 0) && (%nick.r == 0) { [[hdel]] %table %id [[DollarPlus|$+]] -lastnick | [[hdel]] %table %id [[DollarPlus|$+]] -firstnick | [[return]] }<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1,32) %nick.r }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick %nick.r }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),2,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick %nick.l }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.n.rem.main {<br />
[[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %val = [[$hget]](%table,[[$1-|$1]])<br />
[[If-Then-Else|if]] (!%val) { [[return]] }<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32)<br />
[[hdel]] %table [[$1-|$1]]<br />
[[If-Then-Else|if]] (%nick.l == 0) && (%nick.r == 0) { [[hdel]] %table -lastnick | [[hdel]] %table -firstnick | [[return]] }<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %nick.l [[$gettok]]([[$hget]](%table,%nick.l),1,32) %nick.r }<br />
[[If-Then-Else|else]] { [[hadd]] %table -firstnick %nick.r }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %nick.r %nick.l [[$gettok]]([[$hget]](%table,%nick.r),2,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table -lastnick %nick.l }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM.CHAN.ALL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = chan<br />
[[alias]] -l auth.n.rem.chan.all {<br />
[[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[hdel]] -w %table [[$chan_(window)|$chan(]][[$1-|$1]]).wid [[DollarPlus|$+]] .*<br />
[[Local_Variables|var]] %i = [[$nick_(nick)|$nick(]][[$1-|$1]],0)<br />
[[while]] (%i) {<br />
[[If-Then-Else|if]] (![[$comchan]]([[$nick_(nick)|$nick(]][[$1-|$1]],%i),2)) { auth.n.rem.main [[$nick_(nick)|$nick(]][[$1-|$1]],%i) }<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick $2 = newnick<br />
[[alias]] -l auth.n.nick {<br />
[[If-Then-Else|if]] ([[$1-|$1]] == [[$1-|$2]]) { [[return]] }<br />
[[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$2]],0)<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %id = [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$2]],%i)).wid [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$1]])<br />
[[If-Then-Else|if]] (%val) {<br />
[[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$1]]<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %val<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32)<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1,32) [[$1-|$2]] }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]] }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r [[$1-|$2]] [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),2,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]] }<br />
}<br />
[[dec]] %i<br />
}<br />
[[Local_Variables|var]] %val = [[$hget]](%table,[[$1-|$1]])<br />
[[If-Then-Else|if]] (%val) {<br />
[[hdel]] %table [[$1-|$1]]<br />
[[hadd]] %table [[$1-|$2]] %val<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32)<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %nick.l [[$gettok]]([[$hget]](%table,%nick.l),1,32) [[$1-|$2]] }<br />
[[If-Then-Else|else]] { [[hadd]] %table -firstnick [[$1-|$2]] }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %nick.r [[$1-|$2]] [[$gettok]]([[$hget]](%table,%nick.r),2,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table -lastnick [[$1-|$2]] }<br />
}<br />
}</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Test2&diff=5620
Test2
2011-03-02T23:20:38Z
<p>Albie: Reverted edits by Albie (talk) to last revision by Vliedel</p>
<hr />
<div> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AUTH_UPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
;<br />
; by Vliedel -- #vliedel @ QuakeNet<br />
; version 1.1 (written and tested on mIRC 6.2)<br />
; made for networks supporting WHOX<br />
;<br />
;<br />
;What does this script do?<br />
;<br />
; - updates the auths of nicks and stores them in a hash table<br />
; - if a channel is too big, /who nick1,nick2,nick3 etc is done untill the auths for the channel is updated<br />
; - users who have a site with the auth in it will be saved without a /who<br />
; ie: "Vliedel" in "Vliedel.users.quakenet.org" will be treated as auth on the QuakeNet network<br />
; - users who are not authed (auth 0) will be checked every x time to see if they are authed yet<br />
; - script updates from largest to the smallest channel<br />
;<br />
;<br />
;How to use this script?<br />
;<br />
; - config the options below<br />
; - /load -rs auth_update.mrc to load the script<br />
; - script starts on load or on connect<br />
; - to get a nicks auth use: $auth(nick) or $auth(nick,cid)<br />
; - /authupdate.next <nick> [nick] [nick] ... can be used to get auths of those nicks as soon as possible<br />
; please note that this will use a bit less efficient way to get the auths.<br />
; You can use the following script to see when such a requested nick is updated<br />
; on *:SIGNAL:authupdate:{<br />
; if ($2 == $null) { echo -a Requested: $1 is not on a common channel }<br />
; elseif ($2 == 0) { echo -a Requested: $1 is not authed }<br />
; else { echo -a Requested: $1 is authed as $2 }<br />
; }<br />
;<br />
; Note that this signal returns $2 == $null when someone isn't on a common channel.<br />
; This may occur for example when someone parted a channel between the /who and the who reply.<br />
;<br />
; - /authupdate can be used to make the script update the auths without waiting for the timer to trigger it<br />
; - You can use the following script to see when a nick is updated<br />
; on *:SIGNAL:authupdate.new:{<br />
; if ($2 == 0) { echo -a $1 is not authed }<br />
; else { echo -a $1 is authed as $2 }<br />
; }<br />
;<br />
;<br />
;<br />
;Why is this script good?<br />
;<br />
; - sending /who chan for every channel is not needed and goes slow (lag)<br />
; - sending /who chan on join may cause Excess Flood or Max sendQ exceeded<br />
; - sending /who chan1,chan2,chan3 can be much faster, but only if there are not too many results (Max sendQ exceeded)<br />
; - unauthed users can auth without you knowing, so you need to check if they're authed every so many time.<br />
;<br />
;<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SETTINGS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] -l max.who {<br />
; maximum number of replies in a WHO, too high may cause 'Max sendQ exceeded' disconnection<br />
; too low may take the script a long time to update the auths, 1000 should be fine for most situations<br />
[[return]] 1000<br />
}<br />
<br />
[[alias]] -l len.who {<br />
; maximum length of the /who <string>, too long may cause the server to ignore the command<br />
; too low may slow things down, 400 should be fine in most cases<br />
[[return]] 400<br />
}<br />
<br />
[[alias]] -l delay.who {<br />
; N seconds after your first join, the script starts to update the auths<br />
[[return]] 10<br />
}<br />
<br />
[[alias]] -l repeat.who {<br />
; wait N seconds after doing /who to do the next check and /who<br />
[[return]] 20<br />
}<br />
<br />
[[alias]] -l minnicks.who {<br />
; minimum nr of nicks with unknown auth in a channel to do /who #channel rather then /who nick,nick,<br />
[[return]] 3<br />
}<br />
<br />
[[alias]] -l minratio.who {<br />
; minimum ratio of (nicks with unknown auth) / (total nicks) in a channel to do /who #channel rather then /who nick,nick,<br />
[[return]] 0.04<br />
}<br />
<br />
[[alias]] -l queue.repeat.who {<br />
; number of seconds to do the next /who to check if someone who wasn't authed is now authed<br />
[[return]] 600<br />
}<br />
<br />
[[alias]] -l next.wait {<br />
; wait N seconds to do the next /who check triggered by authupdate.next after the last /who<br />
[[return]] 10<br />
}<br />
<br />
[[alias]] -l used.network {<br />
; The networks the script is supposed to work on (case sensitive).<br />
; NOTE that the script ONLY works on networks supporting WHOX (ircu 2.10.* should work)<br />
; $1 is the network<br />
[[return]] [[$istokcs]](QuakeNet UnderNet GameSurge HanIRC NetGamers OGameNet,[[$1-|$1]],32)<br />
}<br />
<br />
[[alias]] -l auth.site {<br />
; For every network a check to see if a user has a site where his authname is in<br />
; $1 is the network, $2 is the site<br />
[[If-Then-Else|if]] ([[$1-|$1]] === QuakeNet) { [[return]] [[$iif]](*.users.quakenet.org iswm [[$1-|$2]],[[$true]]) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === UnderNet) { [[return]] [[$iif]](*.users.undernet.org iswm [[$1-|$2]],[[$true]]) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === GameSurge) { [[return]] [[$iif]](*.*.GameSurge iswm [[$1-|$2]],[[$true]]) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === HanIRC) { [[return]] [[$iif]](*.users.HanIRC.org iswm [[$1-|$2]],[[$true]]) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === NetGamers) { [[return]] [[$iif]](*.users.netgamers.org iswm [[$1-|$2]],[[$true]]) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === OGameNet) { [[return]] [[$iif]](*.user.OGameNet iswm [[$1-|$2]],[[$true]]) }<br />
}<br />
<br />
[[alias]] -l auth.from.site {<br />
; For every network the method to return the auth from the site<br />
; $1 is the network, $2 is the site<br />
[[If-Then-Else|if]] ([[$1-|$1]] === QuakeNet) { [[return]] [[$gettok]]([[$1-|$2]],1,46) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === UnderNet) { [[return]] [[$gettok]]([[$1-|$2]],1,46) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === GameSurge) { [[return]] [[$gettok]]([[$1-|$2]],1,46) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === HanIRC) { [[return]] [[$gettok]]([[$1-|$2]],1,46) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === NetGamers) { [[return]] [[$gettok]]([[$1-|$2]],1,46) }<br />
[[If-Then-Else|elseif]] ([[$1-|$1]] === OGameNet) { [[return]] [[$gettok]]([[$1-|$2]],1,46) }<br />
}<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] auth {<br />
[[If-Then-Else|if]] (![[$isid]]) { [[$iif]]([[$show]],.auth,auth) [[$1-|$1-]] | [[return]] }<br />
[[If-Then-Else|if]] ([[$1-|$1]] == [[$null]]) || (([[$1-|$2]] !== [[$null]]) && ((![[$scid]]([[$1-|$2]])) || (![[$1-|$2]]))) { [[return]] }<br />
[[return]] [[$hget]](auths. [[DollarPlus|$+]] [[$iif]]([[$1-|$2]] !== [[$null]],[[$1-|$2]],[[$cid]]),[[$1-|$1]])<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTHUPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] authupdate { [[echo]] -a Auth update: $auth_update.update }<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTHUPDATE.NEXT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] authupdate.next {<br />
[[Local_Variables|var]] %i = [[$0]]<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %n = [[$gettok]]([[$1-|$1-]],%i,32)<br />
[[If-Then-Else|if]] (![[$comchan]](%n,1)) { .[[signal]] authupdate %n }<br />
[[If-Then-Else|else]] { auth.n.add %n }<br />
[[dec]] %i<br />
}<br />
[[If-Then-Else|if]] (!$timer([[$cid]] [[DollarPlus|$+]] .auth_update.update)) { auth_update.update n }<br />
[[If-Then-Else|else]] {<br />
[[Local_Variables|var]] %d = $timer([[$cid]] [[DollarPlus|$+]] .auth_update.update).delay , %l = $timer([[$cid]] [[DollarPlus|$+]] .auth_update.update).secs<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 [[$iif]]([[$calc]](%d - %l) < $next.wait,[[$calc]]($v2 - $v1),0) auth_update.update n<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LOAD EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:LOAD:{ scon -at1 auth_load }<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_LOAD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] -l auth_load {<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 $delay.who auth_update.update<br />
[[If-Then-Else|if]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[hmake]] auths. [[DollarPlus|$+]] [[$cid]] 200<br />
[[hmake]] auths.l. [[DollarPlus|$+]] [[$cid]] 200<br />
[[hmake]] auths.q. [[DollarPlus|$+]] [[$cid]] 200<br />
[[hmake]] auths.n. [[DollarPlus|$+]] [[$cid]] 100<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$me]],0)<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %chan = [[$comchan]]([[$me]],%i)<br />
[[Local_Variables|var]] %j = [[$nick_(nick)|$nick(]]%chan,0)<br />
[[while]] (%j) {<br />
auth.l.add.wid [[$chan_(window)|$chan(]]%chan).wid [[$nick_(nick)|$nick(]]%chan,%j)<br />
[[dec]] %j<br />
}<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.UPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] -l auth_update.update {<br />
[[Local_Variables|var]] %who<br />
[[If-Then-Else|if]] (![[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]])) {<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update off<br />
[[hmake]] auths.u. [[DollarPlus|$+]] [[$cid]] 200<br />
[[Local_Variables|var]] %who = $auth_update.who<br />
[[If-Then-Else|if]] (%who) {<br />
[[hadd]] auths.u. [[DollarPlus|$+]] [[$cid]] -mask %who [[DollarPlus|$+]] ,,, [[DollarPlus|$+]] 273<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.timeout 1 [[$calc]]($repeat.who * 2) auth_update.timeout<br />
.quote WHO [[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]],-mask) % [[DollarPlus|$+]] nat,273<br />
}<br />
[[If-Then-Else|else]] {<br />
[[hfree]] auths.u. [[DollarPlus|$+]] [[$cid]]<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 $$repeat.who auth_update.update<br />
}<br />
}<br />
[[If-Then-Else|if]] (%who) { [[return]] updating }<br />
[[If-Then-Else|elseif]] ([[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]])) { [[return]] already in progress }<br />
[[If-Then-Else|else]] { [[return]] nothing to update }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.TIMEOUT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
[[alias]] -l auth_update.timeout {<br />
[[hfree]] auths.u. [[DollarPlus|$+]] [[$cid]]<br />
auth_update.update<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.SORT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; sorts channels by number of nicks in channel<br />
; <number of nicks>.<channel number><br />
; returns 127.1 23.2 <= means 127 nicks on comchan 1<br />
[[alias]] -l auth_update.sort {<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$me]],0) , %chans<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %chans = %chans [[$nick_(nick)|$nick(]][[$comchan]]([[$me]],%i),0) [[DollarPlus|$+]] . [[DollarPlus|$+]] %i<br />
[[dec]] %i<br />
}<br />
[[return]] [[$sorttok]](%chans,32,n)<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.WHO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $auth_update.who(N,L)<br />
; returns #chan,#chan,nick,nick<br />
[[alias]] -l auth_update.who {<br />
[[Local_Variables|var]] %t = auths.u. [[DollarPlus|$+]] [[$cid]] , %t.l = auths.l. [[DollarPlus|$+]] [[$cid]] , %t.q = auths.q. [[DollarPlus|$+]] [[$cid]] , %t.n = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[Local_Variables|var]] %n.max = $max.who , %l.max = $len.who , %n.min = $minnicks.who , %ratio = $minratio.who<br />
[[Local_Variables|var]] %len , %n.nr , %chans , %nicks , %chans.go<br />
[[If-Then-Else|if]] [[$hget]](auths.n.temp) { [[hfree]] auths.n.temp }<br />
[[hmake]] auths.n.temp<br />
[[Local_Variables|var]] %n = [[$hget]](%t.n,-firstnick)<br />
[[while]] (%n) {<br />
[[inc]] %len [[$calc]]([[$len]](%n) + 1)<br />
[[inc]] %n.nr<br />
[[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[dec]] %n.nr | [[dec]] %len [[$calc]]([[$len]](%n) + 1) | [[break]] }<br />
[[hadd]] auths.n.temp %n 1<br />
[[hadd]] %t %n 1<br />
[[Local_Variables|var]] %nicks = [[$addtok]](%nicks,%n,44) , %n = [[$gettok]]([[$hget]](%t.n,%n),2,32)<br />
}<br />
<br />
[[Local_Variables|var]] %sorted = $auth_update.sort , %i = [[$numtok]](%sorted,32) , %time = [[$calc]]([[$ctime]] - $queue.repeat.who)<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %comchan = [[$gettok]]([[$gettok]](%sorted,%i,32),2,46) , %chan = [[$comchan]]([[$me]],%comchan) , %id = [[$chan_(window)|$chan(]]%chan).wid [[DollarPlus|$+]] .<br />
[[Local_Variables|var]] %n.c = [[$nick_(nick)|$nick(]]%chan,0) , %left , %go<br />
[[If-Then-Else|if]] (%n.c > %n.max) { [[break]] }<br />
[[If-Then-Else|if]] [[$hget]](auths.temp) { [[hfree]] auths.temp }<br />
[[hmake]] auths.temp<br />
[[Local_Variables|var]] %n = [[$hget]](%t.n,%id [[DollarPlus|$+]] -firstnick)<br />
[[while]] (%n) {<br />
[[If-Then-Else|if]] (![[$hget]](%t,%n)) || ([[$hget]](auths.n.temp,%n)) { [[hadd]] auths.temp %n 1 | [[inc]] %left }<br />
[[If-Then-Else|if]] (((%left >= %n.min) && ([[$calc]](%left / %n.c) >= %ratio)) || (%left == %n.c)) { [[Local_Variables|var]] %go = 1 | [[break]] }<br />
[[Local_Variables|var]] %n = [[$gettok]]([[$hget]](%t.n,%id [[DollarPlus|$+]] %n),2,32)<br />
}<br />
[[Local_Variables|var]] %n = [[$hget]](%t.l,%id [[DollarPlus|$+]] -firstnick)<br />
[[while]] (%n) {<br />
[[If-Then-Else|if]] (![[$hget]](%t,%n)) && (![[$hget]](auths.temp,%n)) { [[inc]] %left }<br />
[[If-Then-Else|if]] (((%left >= %n.min) && ([[$calc]](%left / %n.c) >= %ratio)) || (%left == %n.c)) { [[Local_Variables|var]] %go = 1 | [[break]] }<br />
[[Local_Variables|var]] %n = [[$gettok]]([[$hget]](%t.l,%id [[DollarPlus|$+]] %n),2,32)<br />
}<br />
[[Local_Variables|var]] %n = [[$hget]](%t.q,%id [[DollarPlus|$+]] -firstnick)<br />
[[while]] (%n) {<br />
[[tokenize]] 32 [[$hget]](%t.q,%id [[DollarPlus|$+]] %n)<br />
[[If-Then-Else|if]] ([[$1-|$1]] > %time) { [[break]] }<br />
[[If-Then-Else|if]] (![[$hget]](%t,%n)) && (![[$hget]](auths.temp,%n)) { [[inc]] %left }<br />
[[If-Then-Else|if]] (((%left >= %n.min) && ([[$calc]](%left / %n.c) >= %ratio)) || (%left == %n.c)) { [[Local_Variables|var]] %go = 1 | [[break]] }<br />
[[Local_Variables|var]] %n = [[$1-|$3]]<br />
}<br />
[[If-Then-Else|if]] (!%go) { [[dec]] %i | [[continue]] }<br />
[[Local_Variables|var]] %j = %n.c , %n.tmp = %n.nr , %l.tmp = %len , %chans.go = %chans.go %comchan<br />
[[inc]] %l.tmp [[$calc]]([[$len]](%chan) + 1)<br />
[[while]] (%j) {<br />
[[Local_Variables|var]] %n = [[$nick_(nick)|$nick(]]%chan,%j)<br />
[[If-Then-Else|if]] (![[$hget]](%t,%n)) { [[inc]] %n.tmp }<br />
[[If-Then-Else|if]] ([[$hget]](auths.n.temp,%n)) { [[dec]] %l.tmp [[$calc]]([[$len]](%n) + 1) }<br />
[[dec]] %j<br />
}<br />
[[If-Then-Else|if]] (%l.tmp > %l.max) || (%n.tmp > %n.max) { [[dec]] %i | [[continue]] }<br />
[[Local_Variables|var]] %j = [[$nick_(nick)|$nick(]]%chan,0)<br />
[[while]] (%j) {<br />
[[Local_Variables|var]] %n = [[$nick_(nick)|$nick(]]%chan,%j)<br />
[[hadd]] %t %n 1<br />
[[hdel]] auths.n.temp %n<br />
[[Local_Variables|var]] %nicks = [[$remtok]](%nicks,%n,1,44)<br />
[[dec]] %j<br />
}<br />
[[Local_Variables|var]] %len = %l.tmp , %n.nr = %n.tmp , %chans = [[$addtok]](%chans,%chan,44)<br />
[[dec]] %i<br />
}<br />
<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$me]],0)<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %chan = [[$comchan]]([[$me]],%i)<br />
[[If-Then-Else|if]] (([[$nick_(nick)|$nick(]]%chan,0) > %n.max) || (![[$istok]](%chans.go,%i,32))) {<br />
[[Local_Variables|var]] %id = [[$chan_(window)|$chan(]]%chan).wid [[DollarPlus|$+]] . , %n = [[$hget]](%t.l,%id [[DollarPlus|$+]] -firstnick)<br />
[[while]] (%n) {<br />
[[If-Then-Else|if]] (![[$hget]](%t,%n)) {<br />
[[inc]] %len [[$calc]]([[$len]](%n) + 1)<br />
[[inc]] %n.nr<br />
[[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[break]] }<br />
[[hadd]] %t %n 1<br />
[[Local_Variables|var]] %nicks = [[$addtok]](%nicks,%n,44)<br />
}<br />
[[Local_Variables|var]] %n = [[$gettok]]([[$hget]](%t.l,%id [[DollarPlus|$+]] %n),2,32)<br />
}<br />
[[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[break]] }<br />
[[Local_Variables|var]] %n = [[$hget]](%t.q,%id [[DollarPlus|$+]] -firstnick)<br />
[[while]] (%n) {<br />
[[tokenize]] 32 [[$hget]](%t.q,%id [[DollarPlus|$+]] %n)<br />
[[If-Then-Else|if]] ([[$1-|$1]] > %time) { [[break]] }<br />
[[If-Then-Else|if]] (![[$hget]](%t,%n)) {<br />
[[inc]] %len [[$calc]]([[$len]](%n) + 1)<br />
[[inc]] %n.nr<br />
[[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[break]] }<br />
[[hadd]] %t %n 1<br />
[[Local_Variables|var]] %nicks = [[$addtok]](%nicks,%n,44)<br />
}<br />
[[Local_Variables|var]] %n = [[$1-|$3]]<br />
}<br />
}<br />
[[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[break]] }<br />
[[dec]] %i<br />
}<br />
[[If-Then-Else|if]] [[$hget]](auths.temp) { [[hfree]] auths.temp }<br />
[[If-Then-Else|if]] [[$hget]](auths.n.temp) { [[hfree]] auths.n.temp }<br />
[[return]] [[$addtok]](%chans,%nicks,44)<br />
}<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RAW 354 SPECIAL WHO REPLY ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; 354 <you> <nr> <nick> <auth><br />
; 354 Vliedel 273 L 0<br />
RAW 354:& 273 & &:{<br />
[[If-Then-Else|if]] ([[$comchan]]([[$1-|$3]],1)) { auth_update.nick [[$1-|$3]] [[$1-|$4]] }<br />
[[If-Then-Else|elseif]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]],[[$1-|$3]])) { auth.n.rem [[$1-|$3]] | .[[signal]] authupdate [[$1-|$3]] }<br />
[[haltdef]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RAW 315 WHO END ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; 315 <you> <requested> :End of /who list.<br />
; 315 Vliedel #vliedel,Rutix,fishbot :End of /WHO list.<br />
RAW 315:& & end of /WHO list.: {<br />
[[If-Then-Else|if]] ([[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]],-mask) == [[$1-|$2]]) {<br />
[[hfree]] auths.u. [[DollarPlus|$+]] [[$cid]]<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.timeout off<br />
.[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 [[$iif]]([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]],1).item,$next.wait,$repeat.who) auth_update.update<br />
[[haltdef]]<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick $2 = auth<br />
[[alias]] -l auth_update.nick {<br />
[[If-Then-Else|if]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]],[[$1-|$1]]) != [[$1-|$2]]) {<br />
.[[signal]] authupdate.new [[$1-|$1]] [[$1-|$2]]<br />
auth.add [[$1-|$1]] [[$1-|$2]]<br />
}<br />
auth.l.rem [[$1-|$1]]<br />
[[If-Then-Else|if]] ([[$1-|$2]] == 0) { auth.q.add [[$1-|$1]] }<br />
[[If-Then-Else|else]] { auth.q.rem [[$1-|$1]] }<br />
[[If-Then-Else|if]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]],[[$1-|$1]])) { auth.n.rem [[$1-|$1]] | .[[signal]] authupdate [[$1-|$1]] [[$1-|$2]] }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; JOIN EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:JOIN:#:{<br />
[[If-Then-Else|if]] ([[$nick_(remote)|$nick]] == [[$me]]) && ($used.network([[$network]])) {<br />
[[If-Then-Else|if]] (![[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[hmake]] auths. [[DollarPlus|$+]] [[$cid]] 200 }<br />
[[If-Then-Else|if]] (![[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[hmake]] auths.l. [[DollarPlus|$+]] [[$cid]] 200 }<br />
[[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[hmake]] auths.q. [[DollarPlus|$+]] [[$cid]] 200 }<br />
[[If-Then-Else|if]] (![[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[hmake]] auths.n. [[DollarPlus|$+]] [[$cid]] 100 }<br />
[[If-Then-Else|if]] (!$timer([[$cid]] [[DollarPlus|$+]] .auth_update.update)) { .[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 $delay.who auth_update.update }<br />
[[return]]<br />
}<br />
[[If-Then-Else|if]] ($auth.site([[$network]],$site)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) | [[return]] }<br />
[[If-Then-Else|if]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]],[[$nick_(remote)|$nick]]) == [[$null]]) { auth.l.add.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid [[$nick_(remote)|$nick]] }<br />
[[If-Then-Else|elseif]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]],[[$nick_(remote)|$nick]]) == 0) {<br />
auth.q.add.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid [[$nick_(remote)|$nick]]<br />
[[If-Then-Else|if]] (![[$comchan]]([[$nick_(remote)|$nick]],2)) { auth.q.add.main [[$nick_(remote)|$nick]] }<br />
}<br />
[[If-Then-Else|if]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]],[[$nick_(remote)|$nick]])) { auth.n.add.wid [[$chan_(window)|$chan(]][[$1-|$2]]).wid [[$nick_(remote)|$nick]] }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RAW 366 - END OF NAMES LIST ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; 366 Vliedel #vliedel :End of /NAMES list.<br />
366 Vliedel #Help :End of /NAMES list<br />
RAW 366:& & end of /names list.:{<br />
[[Local_Variables|var]] %i = [[$nick_(nick)|$nick(]][[$1-|$2]],0) , %t = auths. [[DollarPlus|$+]] [[$cid]]<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %n = [[$nick_(nick)|$nick(]][[$1-|$2]],%i)<br />
[[If-Then-Else|if]] ([[$hget]](%t,%n) == [[$null]]) { auth.l.add.wid [[$chan_(window)|$chan(]][[$1-|$2]]).wid %n }<br />
[[If-Then-Else|elseif]] ([[$hget]](%t,%n) == 0) {<br />
auth.q.add.wid [[$chan_(window)|$chan(]][[$1-|$2]]).wid %n<br />
[[If-Then-Else|if]] (![[$comchan]](%n,2)) { auth.q.add.main %n }<br />
}<br />
[[If-Then-Else|if]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]],%n)) { auth.n.add.wid [[$chan_(window)|$chan(]][[$1-|$2]]).wid %n }<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PART EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:PART:#:{<br />
[[If-Then-Else|if]] ([[$nick_(remote)|$nick]] == [[$me]]) {<br />
auth.rem.chan [[$chan_(remote)|$chan]]<br />
auth.l.rem.chan.all [[$chan_(remote)|$chan]]<br />
auth.q.rem.chan.all [[$chan_(remote)|$chan]]<br />
auth.n.rem.chan.all [[$chan_(remote)|$chan]]<br />
}<br />
[[If-Then-Else|else]] {<br />
auth.l.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid [[$nick_(remote)|$nick]]<br />
auth.q.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid [[$nick_(remote)|$nick]]<br />
auth.n.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid [[$nick_(remote)|$nick]]<br />
[[If-Then-Else|if]] (![[$comchan]]([[$nick_(remote)|$nick]],2)) {<br />
auth.rem [[$nick_(remote)|$nick]]<br />
auth.q.rem.main [[$nick_(remote)|$nick]]<br />
auth.n.rem.main [[$nick_(remote)|$nick]]<br />
}<br />
[[If-Then-Else|elseif]] ($auth.site([[$network]],$site)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) }<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; KICK EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:KICK:#:{<br />
[[If-Then-Else|if]] ($knick == [[$me]]) {<br />
auth.rem.chan [[$chan_(remote)|$chan]]<br />
auth.l.rem.chan.all [[$chan_(remote)|$chan]]<br />
auth.q.rem.chan.all [[$chan_(remote)|$chan]]<br />
auth.n.rem.chan.all [[$chan_(remote)|$chan]]<br />
}<br />
[[If-Then-Else|else]] {<br />
auth.l.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid $knick<br />
auth.q.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid $knick<br />
auth.n.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid $knick<br />
[[If-Then-Else|if]] (![[$comchan]]($knick,2)) {<br />
auth.rem $knick<br />
auth.q.rem.main $knick<br />
auth.n.rem.main $knick<br />
}<br />
[[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) }<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; QUIT EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:QUIT:{<br />
auth.rem [[$nick_(remote)|$nick]]<br />
auth.l.rem [[$nick_(remote)|$nick]]<br />
auth.q.rem [[$nick_(remote)|$nick]]<br />
auth.n.rem [[$nick_(remote)|$nick]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NICK EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:NICK:{<br />
auth.nick [[$nick_(remote)|$nick]] $newnick<br />
auth.l.nick [[$nick_(remote)|$nick]] $newnick<br />
auth.q.nick [[$nick_(remote)|$nick]] $newnick<br />
auth.n.nick [[$nick_(remote)|$nick]] $newnick<br />
[[If-Then-Else|if]] ($auth.site([[$network]],$site)) { auth_update.nick $newnick $auth.from.site([[$network]],$site) }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IAL-UPDATING EVENTS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:TEXT:*:*:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
on *:ACTION:*:*:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
on *:NOTICE:*:*:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
on *:RAWMODE:#:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
on *:TOPIC:#:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
on *:INVITE:#:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
[[CTCP]] *:*:*:{ [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } }<br />
RAW 352:& & & & & & & & *: { [[If-Then-Else|if]] ($auth.site([[$network]],[[$1-|$4]])) && ([[$comchan]]([[$1-|$6]],1)) { auth_update.nick [[$1-|$6]] $auth.from.site([[$network]],[[$1-|$4]]) } }<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DISCONNECT EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
on *:DISCONNECT:{<br />
[[If-Then-Else|if]] ([[$hget]](auths.u [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
[[If-Then-Else|if]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 }<br />
}<br />
<br />
<br />
; 200<br />
; auths.cid nick --> auth<br />
<br />
; 200<br />
; auths.l.cid chanwid.nick --> lnick rnick<br />
; auths.l.cid chanwid.-firstnick --> first_nick_in_list<br />
; auths.l.cid chanwid.-lastnick --> last_nick_in_list<br />
<br />
; 200<br />
; auths.q.cid chanwid.nick --> ctime lnick rnick<br />
; auths.q.cid chanwid.-firstnick --> first_nick_in_queue<br />
; auths.q.cid chanwid.-lastnick --> last_nick_in_queue<br />
; auths.q.cid nick --> ctime<br />
<br />
; 100<br />
; auths.n.cid chanwid.nick --> lnick rnick<br />
; auths.n.cid chanwid.-firstnick --> first_nick_in_list<br />
; auths.n.cid chanwid.-lastnick --> last_nick_in_list<br />
; auths.n.cid nick --> lnick rnick<br />
; auths.n.cid -firstnick --> first_nick_in_list<br />
; auths.n.cid -lastnick --> last_nick_in_list<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------------------------<br />
; --------------------------------------- AUTHS - TABLE ---------------------------------------<br />
; ---------------------------------------------------------------------------------------------<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.ADD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick $2 = auth<br />
[[alias]] -l auth.add {<br />
[[If-Then-Else|if]] (![[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[hadd]] auths. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]] [[$1-|$2]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.rem {<br />
[[If-Then-Else|if]] (![[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[hdel]] auths. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.REM.CHAN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = chan<br />
[[alias]] -l auth.rem.chan {<br />
[[If-Then-Else|if]] (![[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$nick_(nick)|$nick(]][[$1-|$1]],0)<br />
[[while]] (%i) {<br />
[[If-Then-Else|if]] (![[$comchan]]([[$nick_(nick)|$nick(]][[$1-|$1]],%i),2)) { [[hdel]] auths. [[DollarPlus|$+]] [[$cid]] [[$nick_(nick)|$nick(]][[$1-|$1]],%i) }<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick $2 = newnick<br />
[[alias]] -l auth.nick {<br />
[[If-Then-Else|if]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]],[[$1-|$1]]) !== [[$null]]) { [[hdel]] auths. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]] | [[hadd]] auths. [[DollarPlus|$+]] [[$cid]] [[$1-|$2]] $v1 }<br />
}<br />
<br />
<br />
<br />
; ----------------------------------------------------------------------------------------------------<br />
; --------------------------------------- AUTHS - LEFT - TABLE ---------------------------------------<br />
; ----------------------------------------------------------------------------------------------------<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.ADD.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = wid $2 = nick<br />
[[alias]] -l auth.l.add.wid {<br />
[[Local_Variables|var]] %table = auths.l. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %lastnick = [[$hget]](%table,%id [[DollarPlus|$+]] -lastnick)<br />
[[If-Then-Else|if]] ([[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]])) { [[return]] }<br />
[[If-Then-Else|if]] (%lastnick) {<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %lastnick 0<br />
[[hadd]] %table %id [[DollarPlus|$+]] %lastnick [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %lastnick),1,32) [[$1-|$2]]<br />
}<br />
[[If-Then-Else|else]] {<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] 0 0<br />
[[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]]<br />
}<br />
[[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.l.rem {<br />
[[If-Then-Else|if]] (![[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0)<br />
[[while]] (%i) {<br />
auth.l.rem.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]]<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.REM.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = wid $2 = nick<br />
[[alias]] -l auth.l.rem.wid {<br />
[[Local_Variables|var]] %table = auths.l. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]])<br />
[[If-Then-Else|if]] (!%val) { [[return]] }<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32)<br />
[[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$2]]<br />
[[If-Then-Else|if]] (%nick.l == 0) && (%nick.r == 0) { [[hdel]] %table %id [[DollarPlus|$+]] -lastnick | [[hdel]] %table %id [[DollarPlus|$+]] -firstnick | [[return]] }<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1,32) %nick.r }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick %nick.r }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),2,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick %nick.l }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.REM.CHAN.ALL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = chan<br />
[[alias]] -l auth.l.rem.chan.all {<br />
[[If-Then-Else|if]] (![[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[hdel]] -w auths.l. [[DollarPlus|$+]] [[$cid]] [[$chan_(window)|$chan(]][[$1-|$1]]).wid [[DollarPlus|$+]] .*<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick $2 = newnick<br />
[[alias]] -l auth.l.nick {<br />
[[If-Then-Else|if]] ([[$1-|$1]] == [[$1-|$2]]) { [[return]] }<br />
[[Local_Variables|var]] %table = auths.l. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$2]],0)<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %id = [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$2]],%i)).wid [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$1]])<br />
[[If-Then-Else|if]] (%val) {<br />
[[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$1]]<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %val<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32)<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1,32) [[$1-|$2]] }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]] }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r [[$1-|$2]] [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),2,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]] }<br />
}<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
<br />
<br />
; -----------------------------------------------------------------------------------------------------<br />
; --------------------------------------- AUTHS - QUEUE - TABLE ---------------------------------------<br />
; -----------------------------------------------------------------------------------------------------<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.ADD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.q.add {<br />
[[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
auth.q.add.main [[$1-|$1]]<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0)<br />
[[while]] (%i) {<br />
auth.q.add.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]]<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.ADD.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = wid $2 = nick<br />
[[alias]] -l auth.q.add.wid {<br />
[[Local_Variables|var]] %table = auths.q. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %ctime = [[$iif]]([[$hget]](%table,[[$1-|$2]]) == [[$null]],[[$ctime]],$v1)<br />
auth.q.rem.wid [[$1-|$1]] [[$1-|$2]]<br />
[[Local_Variables|var]] %lastnick = [[$hget]](%table,%id [[DollarPlus|$+]] -lastnick)<br />
[[If-Then-Else|if]] (!%lastnick) {<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %ctime 0 0<br />
[[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]]<br />
[[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]]<br />
[[return]]<br />
}<br />
[[If-Then-Else|if]] (%ctime >= [[$hget]](%table,%lastnick)) {<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %ctime %lastnick 0<br />
[[hadd]] %table %id [[DollarPlus|$+]] %lastnick [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %lastnick),1-2,32) [[$1-|$2]]<br />
[[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]]<br />
[[return]]<br />
}<br />
[[Local_Variables|var]] %n = [[$hget]](%table,%id [[DollarPlus|$+]] -firstnick) , %nick = [[$1-|$2]]<br />
[[while]] (%n) {<br />
[[tokenize]] 32 [[$hget]](%table,%id [[DollarPlus|$+]] %n)<br />
[[If-Then-Else|if]] (%ctime <= [[$1-|$1]]) {<br />
[[hadd]] %table %id [[DollarPlus|$+]] %n [[$1-|$1]] %nick [[$1-|$3]]<br />
[[If-Then-Else|if]] ([[$1-|$2]] == 0) {<br />
[[hadd]] %table %id [[DollarPlus|$+]] %nick %ctime 0 %n<br />
[[hadd]] %table %id [[DollarPlus|$+]] -firstnick %nick<br />
}<br />
[[If-Then-Else|else]] {<br />
[[hadd]] %table %id [[DollarPlus|$+]] %nick %ctime [[$1-|$2]] %n<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]]),1-2,32) %nick<br />
}<br />
[[break]]<br />
}<br />
[[Local_Variables|var]] %n = [[$1-|$3]]<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.ADD.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.q.add.main {<br />
[[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[hadd]] auths.q. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]] [[$ctime]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.q.rem {<br />
[[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0)<br />
[[while]] (%i) {<br />
auth.q.rem.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]]<br />
[[dec]] %i<br />
}<br />
auth.q.rem.main [[$1-|$1]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = wid $2 = nick<br />
[[alias]] -l auth.q.rem.wid {<br />
[[Local_Variables|var]] %table = auths.q. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]])<br />
[[If-Then-Else|if]] (!%val) { [[return]] }<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,2,32) , %nick.r = [[$gettok]](%val,3,32)<br />
[[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$2]]<br />
[[If-Then-Else|if]] (%nick.l == 0) && (%nick.r == 0) { [[hdel]] %table %id [[DollarPlus|$+]] -lastnick | [[hdel]] %table %id [[DollarPlus|$+]] -firstnick | [[return]] }<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1-2,32) %nick.r }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick %nick.r }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),1,32) %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),3,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick %nick.l }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.q.rem.main {<br />
[[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[hdel]] auths.q. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM.CHAN.ALL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = chan<br />
[[alias]] -l auth.q.rem.chan.all {<br />
[[Local_Variables|var]] %table = auths.q. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[hdel]] -w %table [[$chan_(window)|$chan(]][[$1-|$1]]).wid [[DollarPlus|$+]] .*<br />
[[Local_Variables|var]] %i = [[$nick_(nick)|$nick(]][[$1-|$1]],0)<br />
[[while]] (%i) {<br />
[[If-Then-Else|if]] (![[$comchan]]([[$nick_(nick)|$nick(]][[$1-|$1]],%i),2)) { [[hdel]] %table [[$nick_(nick)|$nick(]][[$1-|$1]],%i) }<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick $2 = newnick<br />
[[alias]] -l auth.q.nick {<br />
[[If-Then-Else|if]] ([[$1-|$1]] == [[$1-|$2]]) { [[return]] }<br />
[[Local_Variables|var]] %table = auths.q. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$2]],0)<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %id = [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$2]],%i)).wid [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$1]])<br />
[[If-Then-Else|if]] (%val) {<br />
[[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$1]]<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %val<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,2,32) , %nick.r = [[$gettok]](%val,3,32)<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1-2,32) [[$1-|$2]] }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]] }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),1,32) [[$1-|$2]] [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),3,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]] }<br />
}<br />
[[dec]] %i<br />
}<br />
[[If-Then-Else|if]] ([[$hget]](%table,[[$1-|$1]]) !== [[$null]]) { [[hdel]] %table [[$1-|$1]] | [[hadd]] %table [[$1-|$2]] $v1 }<br />
}<br />
<br />
<br />
<br />
; ----------------------------------------------------------------------------------------------------<br />
; --------------------------------------- AUTHS - NEXT - TABLE ---------------------------------------<br />
; ----------------------------------------------------------------------------------------------------<br />
<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.ADD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.n.add {<br />
[[If-Then-Else|if]] (![[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
auth.n.add.main [[$1-|$1]]<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0)<br />
[[while]] (%i) {<br />
auth.n.add.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]]<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.ADD.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = wid $2 = nick<br />
[[alias]] -l auth.n.add.wid {<br />
[[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %lastnick = [[$hget]](%table,%id [[DollarPlus|$+]] -lastnick)<br />
[[If-Then-Else|if]] ([[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]])) { [[return]] }<br />
[[If-Then-Else|if]] (%lastnick) {<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %lastnick 0<br />
[[hadd]] %table %id [[DollarPlus|$+]] %lastnick [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %lastnick),1,32) [[$1-|$2]]<br />
}<br />
[[If-Then-Else|else]] {<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] 0 0<br />
[[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]]<br />
}<br />
[[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.ADD.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.n.add.main {<br />
[[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %lastnick = [[$hget]](%table,-lastnick)<br />
[[If-Then-Else|if]] ([[$hget]](%table,[[$1-|$1]])) { [[return]] }<br />
[[If-Then-Else|if]] (%lastnick) {<br />
[[hadd]] %table [[$1-|$1]] %lastnick 0<br />
[[hadd]] %table %lastnick [[$gettok]]([[$hget]](%table,%lastnick),1,32) [[$1-|$1]]<br />
}<br />
[[If-Then-Else|else]] {<br />
[[hadd]] %table [[$1-|$1]] 0 0<br />
[[hadd]] %table -firstnick [[$1-|$1]]<br />
}<br />
[[hadd]] %table -lastnick [[$1-|$1]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.n.rem {<br />
[[If-Then-Else|if]] (![[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0)<br />
[[while]] (%i) {<br />
auth.n.rem.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]]<br />
[[dec]] %i<br />
}<br />
auth.n.rem.main [[$1-|$1]]<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = wid $2 = nick<br />
[[alias]] -l auth.n.rem.wid {<br />
[[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]])<br />
[[If-Then-Else|if]] (!%val) { [[return]] }<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32)<br />
[[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$2]]<br />
[[If-Then-Else|if]] (%nick.l == 0) && (%nick.r == 0) { [[hdel]] %table %id [[DollarPlus|$+]] -lastnick | [[hdel]] %table %id [[DollarPlus|$+]] -firstnick | [[return]] }<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1,32) %nick.r }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick %nick.r }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),2,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick %nick.l }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick<br />
[[alias]] -l auth.n.rem.main {<br />
[[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %val = [[$hget]](%table,[[$1-|$1]])<br />
[[If-Then-Else|if]] (!%val) { [[return]] }<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32)<br />
[[hdel]] %table [[$1-|$1]]<br />
[[If-Then-Else|if]] (%nick.l == 0) && (%nick.r == 0) { [[hdel]] %table -lastnick | [[hdel]] %table -firstnick | [[return]] }<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %nick.l [[$gettok]]([[$hget]](%table,%nick.l),1,32) %nick.r }<br />
[[If-Then-Else|else]] { [[hadd]] %table -firstnick %nick.r }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %nick.r %nick.l [[$gettok]]([[$hget]](%table,%nick.r),2,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table -lastnick %nick.l }<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM.CHAN.ALL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = chan<br />
[[alias]] -l auth.n.rem.chan.all {<br />
[[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[hdel]] -w %table [[$chan_(window)|$chan(]][[$1-|$1]]).wid [[DollarPlus|$+]] .*<br />
[[Local_Variables|var]] %i = [[$nick_(nick)|$nick(]][[$1-|$1]],0)<br />
[[while]] (%i) {<br />
[[If-Then-Else|if]] (![[$comchan]]([[$nick_(nick)|$nick(]][[$1-|$1]],%i),2)) { auth.n.rem.main [[$nick_(nick)|$nick(]][[$1-|$1]],%i) }<br />
[[dec]] %i<br />
}<br />
}<br />
<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; $1 = nick $2 = newnick<br />
[[alias]] -l auth.n.nick {<br />
[[If-Then-Else|if]] ([[$1-|$1]] == [[$1-|$2]]) { [[return]] }<br />
[[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]]<br />
[[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] }<br />
[[Local_Variables|var]] %i = [[$comchan]]([[$1-|$2]],0)<br />
[[while]] (%i) {<br />
[[Local_Variables|var]] %id = [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$2]],%i)).wid [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$1]])<br />
[[If-Then-Else|if]] (%val) {<br />
[[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$1]]<br />
[[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %val<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32)<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1,32) [[$1-|$2]] }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]] }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r [[$1-|$2]] [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),2,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]] }<br />
}<br />
[[dec]] %i<br />
}<br />
[[Local_Variables|var]] %val = [[$hget]](%table,[[$1-|$1]])<br />
[[If-Then-Else|if]] (%val) {<br />
[[hdel]] %table [[$1-|$1]]<br />
[[hadd]] %table [[$1-|$2]] %val<br />
[[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32)<br />
[[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %nick.l [[$gettok]]([[$hget]](%table,%nick.l),1,32) [[$1-|$2]] }<br />
[[If-Then-Else|else]] { [[hadd]] %table -firstnick [[$1-|$2]] }<br />
[[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %nick.r [[$1-|$2]] [[$gettok]]([[$hget]](%table,%nick.r),2,32) }<br />
[[If-Then-Else|else]] { [[hadd]] %table -lastnick [[$1-|$2]] }<br />
}<br />
}</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Test2&diff=5619
Test2
2011-03-02T23:19:10Z
<p>Albie: </p>
<hr />
<div>[[$me]]<br />
lfhjdghodgh</div>
Albie
https://script.quakenet.org/wiki/index.php?title=Test2&diff=5618
Test2
2011-03-02T23:17:45Z
<p>Albie: </p>
<hr />
<div>[[$me]]</div>
Albie