Difference between revisions of "Test2"
From Scriptwiki
m |
m (Removed test link.) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | [[$me]] | + | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AUTH_UPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
− | + | ; | |
+ | ; by Vliedel -- #vliedel @ QuakeNet | ||
+ | ; version 1.1 (written and tested on mIRC 6.2) | ||
+ | ; made for networks supporting WHOX | ||
+ | ; | ||
+ | ; | ||
+ | ;What does this script do? | ||
+ | ; | ||
+ | ; - updates the auths of nicks and stores them in a hash table | ||
+ | ; - if a channel is too big, /who nick1,nick2,nick3 etc is done untill the auths for the channel is updated | ||
+ | ; - users who have a site with the auth in it will be saved without a /who | ||
+ | ; ie: "Vliedel" in "Vliedel.users.quakenet.org" will be treated as auth on the QuakeNet network | ||
+ | ; - users who are not authed (auth 0) will be checked every x time to see if they are authed yet | ||
+ | ; - script updates from largest to the smallest channel | ||
+ | ; | ||
+ | ; | ||
+ | ;How to use this script? | ||
+ | ; | ||
+ | ; - config the options below | ||
+ | ; - /load -rs auth_update.mrc to load the script | ||
+ | ; - script starts on load or on connect | ||
+ | ; - to get a nicks auth use: $auth(nick) or $auth(nick,cid) | ||
+ | ; - /authupdate.next <nick> [nick] [nick] ... can be used to get auths of those nicks as soon as possible | ||
+ | ; please note that this will use a bit less efficient way to get the auths. | ||
+ | ; You can use the following script to see when such a requested nick is updated | ||
+ | ; on *:SIGNAL:authupdate:{ | ||
+ | ; if ($2 == $null) { echo -a Requested: $1 is not on a common channel } | ||
+ | ; elseif ($2 == 0) { echo -a Requested: $1 is not authed } | ||
+ | ; else { echo -a Requested: $1 is authed as $2 } | ||
+ | ; } | ||
+ | ; | ||
+ | ; Note that this signal returns $2 == $null when someone isn't on a common channel. | ||
+ | ; This may occur for example when someone parted a channel between the /who and the who reply. | ||
+ | ; | ||
+ | ; - /authupdate can be used to make the script update the auths without waiting for the timer to trigger it | ||
+ | ; - You can use the following script to see when a nick is updated | ||
+ | ; on *:SIGNAL:authupdate.new:{ | ||
+ | ; if ($2 == 0) { echo -a $1 is not authed } | ||
+ | ; else { echo -a $1 is authed as $2 } | ||
+ | ; } | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ;Why is this script good? | ||
+ | ; | ||
+ | ; - sending /who chan for every channel is not needed and goes slow (lag) | ||
+ | ; - sending /who chan on join may cause Excess Flood or Max sendQ exceeded | ||
+ | ; - sending /who chan1,chan2,chan3 can be much faster, but only if there are not too many results (Max sendQ exceeded) | ||
+ | ; - unauthed users can auth without you knowing, so you need to check if they're authed every so many time. | ||
+ | ; | ||
+ | ; | ||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | |||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SETTINGS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | [[alias]] -l max.who { | ||
+ | ; maximum number of replies in a WHO, too high may cause 'Max sendQ exceeded' disconnection | ||
+ | ; too low may take the script a long time to update the auths, 1000 should be fine for most situations | ||
+ | [[return]] 1000 | ||
+ | } | ||
+ | |||
+ | [[alias]] -l len.who { | ||
+ | ; maximum length of the /who <string>, too long may cause the server to ignore the command | ||
+ | ; too low may slow things down, 400 should be fine in most cases | ||
+ | [[return]] 400 | ||
+ | } | ||
+ | |||
+ | [[alias]] -l delay.who { | ||
+ | ; N seconds after your first join, the script starts to update the auths | ||
+ | [[return]] 10 | ||
+ | } | ||
+ | |||
+ | [[alias]] -l repeat.who { | ||
+ | ; wait N seconds after doing /who to do the next check and /who | ||
+ | [[return]] 20 | ||
+ | } | ||
+ | |||
+ | [[alias]] -l minnicks.who { | ||
+ | ; minimum nr of nicks with unknown auth in a channel to do /who #channel rather then /who nick,nick, | ||
+ | [[return]] 3 | ||
+ | } | ||
+ | |||
+ | [[alias]] -l minratio.who { | ||
+ | ; minimum ratio of (nicks with unknown auth) / (total nicks) in a channel to do /who #channel rather then /who nick,nick, | ||
+ | [[return]] 0.04 | ||
+ | } | ||
+ | |||
+ | [[alias]] -l queue.repeat.who { | ||
+ | ; number of seconds to do the next /who to check if someone who wasn't authed is now authed | ||
+ | [[return]] 600 | ||
+ | } | ||
+ | |||
+ | [[alias]] -l next.wait { | ||
+ | ; wait N seconds to do the next /who check triggered by authupdate.next after the last /who | ||
+ | [[return]] 10 | ||
+ | } | ||
+ | |||
+ | [[alias]] -l used.network { | ||
+ | ; The networks the script is supposed to work on (case sensitive). | ||
+ | ; NOTE that the script ONLY works on networks supporting WHOX (ircu 2.10.* should work) | ||
+ | ; $1 is the network | ||
+ | [[return]] [[$istokcs]](QuakeNet UnderNet GameSurge HanIRC NetGamers OGameNet,[[$1-|$1]],32) | ||
+ | } | ||
+ | |||
+ | [[alias]] -l auth.site { | ||
+ | ; For every network a check to see if a user has a site where his authname is in | ||
+ | ; $1 is the network, $2 is the site | ||
+ | [[If-Then-Else|if]] ([[$1-|$1]] === QuakeNet) { [[return]] [[$iif]](*.users.quakenet.org iswm [[$1-|$2]],[[$true]]) } | ||
+ | [[If-Then-Else|elseif]] ([[$1-|$1]] === UnderNet) { [[return]] [[$iif]](*.users.undernet.org iswm [[$1-|$2]],[[$true]]) } | ||
+ | [[If-Then-Else|elseif]] ([[$1-|$1]] === GameSurge) { [[return]] [[$iif]](*.*.GameSurge iswm [[$1-|$2]],[[$true]]) } | ||
+ | [[If-Then-Else|elseif]] ([[$1-|$1]] === HanIRC) { [[return]] [[$iif]](*.users.HanIRC.org iswm [[$1-|$2]],[[$true]]) } | ||
+ | [[If-Then-Else|elseif]] ([[$1-|$1]] === NetGamers) { [[return]] [[$iif]](*.users.netgamers.org iswm [[$1-|$2]],[[$true]]) } | ||
+ | [[If-Then-Else|elseif]] ([[$1-|$1]] === OGameNet) { [[return]] [[$iif]](*.user.OGameNet iswm [[$1-|$2]],[[$true]]) } | ||
+ | } | ||
+ | |||
+ | [[alias]] -l auth.from.site { | ||
+ | ; For every network the method to return the auth from the site | ||
+ | ; $1 is the network, $2 is the site | ||
+ | [[If-Then-Else|if]] ([[$1-|$1]] === QuakeNet) { [[return]] [[$gettok]]([[$1-|$2]],1,46) } | ||
+ | [[If-Then-Else|elseif]] ([[$1-|$1]] === UnderNet) { [[return]] [[$gettok]]([[$1-|$2]],1,46) } | ||
+ | [[If-Then-Else|elseif]] ([[$1-|$1]] === GameSurge) { [[return]] [[$gettok]]([[$1-|$2]],1,46) } | ||
+ | [[If-Then-Else|elseif]] ([[$1-|$1]] === HanIRC) { [[return]] [[$gettok]]([[$1-|$2]],1,46) } | ||
+ | [[If-Then-Else|elseif]] ([[$1-|$1]] === NetGamers) { [[return]] [[$gettok]]([[$1-|$2]],1,46) } | ||
+ | [[If-Then-Else|elseif]] ([[$1-|$1]] === OGameNet) { [[return]] [[$gettok]]([[$1-|$2]],1,46) } | ||
+ | } | ||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | |||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | [[alias]] auth { | ||
+ | [[If-Then-Else|if]] (![[$isid]]) { [[$iif]]([[$show]],.auth,auth) [[$1-|$1-]] | [[return]] } | ||
+ | [[If-Then-Else|if]] ([[$1-|$1]] == [[$null]]) || (([[$1-|$2]] !== [[$null]]) && ((![[$scid]]([[$1-|$2]])) || (![[$1-|$2]]))) { [[return]] } | ||
+ | [[return]] [[$hget]](auths. [[DollarPlus|$+]] [[$iif]]([[$1-|$2]] !== [[$null]],[[$1-|$2]],[[$cid]]),[[$1-|$1]]) | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTHUPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | [[alias]] authupdate { [[echo]] -a Auth update: $auth_update.update } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTHUPDATE.NEXT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | [[alias]] authupdate.next { | ||
+ | [[Local_Variables|var]] %i = [[$0]] | ||
+ | [[while]] (%i) { | ||
+ | [[Local_Variables|var]] %n = [[$gettok]]([[$1-|$1-]],%i,32) | ||
+ | [[If-Then-Else|if]] (![[$comchan]](%n,1)) { .[[signal]] authupdate %n } | ||
+ | [[If-Then-Else|else]] { auth.n.add %n } | ||
+ | [[dec]] %i | ||
+ | } | ||
+ | [[If-Then-Else|if]] (!$timer([[$cid]] [[DollarPlus|$+]] .auth_update.update)) { auth_update.update n } | ||
+ | [[If-Then-Else|else]] { | ||
+ | [[Local_Variables|var]] %d = $timer([[$cid]] [[DollarPlus|$+]] .auth_update.update).delay , %l = $timer([[$cid]] [[DollarPlus|$+]] .auth_update.update).secs | ||
+ | .[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 [[$iif]]([[$calc]](%d - %l) < $next.wait,[[$calc]]($v2 - $v1),0) auth_update.update n | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LOAD EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | on *:LOAD:{ scon -at1 auth_load } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_LOAD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | [[alias]] -l auth_load { | ||
+ | .[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 $delay.who auth_update.update | ||
+ | [[If-Then-Else|if]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 } | ||
+ | [[If-Then-Else|if]] ([[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 } | ||
+ | [[If-Then-Else|if]] ([[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 } | ||
+ | [[If-Then-Else|if]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 } | ||
+ | [[If-Then-Else|if]] ([[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 } | ||
+ | [[hmake]] auths. [[DollarPlus|$+]] [[$cid]] 200 | ||
+ | [[hmake]] auths.l. [[DollarPlus|$+]] [[$cid]] 200 | ||
+ | [[hmake]] auths.q. [[DollarPlus|$+]] [[$cid]] 200 | ||
+ | [[hmake]] auths.n. [[DollarPlus|$+]] [[$cid]] 100 | ||
+ | [[Local_Variables|var]] %i = [[$comchan]]([[$me]],0) | ||
+ | [[while]] (%i) { | ||
+ | [[Local_Variables|var]] %chan = [[$comchan]]([[$me]],%i) | ||
+ | [[Local_Variables|var]] %j = [[$nick_(nick)|$nick(]]%chan,0) | ||
+ | [[while]] (%j) { | ||
+ | auth.l.add.wid [[$chan_(window)|$chan(]]%chan).wid [[$nick_(nick)|$nick(]]%chan,%j) | ||
+ | [[dec]] %j | ||
+ | } | ||
+ | [[dec]] %i | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.UPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | [[alias]] -l auth_update.update { | ||
+ | [[Local_Variables|var]] %who | ||
+ | [[If-Then-Else|if]] (![[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]])) { | ||
+ | .[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update off | ||
+ | [[hmake]] auths.u. [[DollarPlus|$+]] [[$cid]] 200 | ||
+ | [[Local_Variables|var]] %who = $auth_update.who | ||
+ | [[If-Then-Else|if]] (%who) { | ||
+ | [[hadd]] auths.u. [[DollarPlus|$+]] [[$cid]] -mask %who [[DollarPlus|$+]] ,,, [[DollarPlus|$+]] 273 | ||
+ | .[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.timeout 1 [[$calc]]($repeat.who * 2) auth_update.timeout | ||
+ | .quote WHO [[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]],-mask) % [[DollarPlus|$+]] nat,273 | ||
+ | } | ||
+ | [[If-Then-Else|else]] { | ||
+ | [[hfree]] auths.u. [[DollarPlus|$+]] [[$cid]] | ||
+ | .[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 $$repeat.who auth_update.update | ||
+ | } | ||
+ | } | ||
+ | [[If-Then-Else|if]] (%who) { [[return]] updating } | ||
+ | [[If-Then-Else|elseif]] ([[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]])) { [[return]] already in progress } | ||
+ | [[If-Then-Else|else]] { [[return]] nothing to update } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.TIMEOUT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | [[alias]] -l auth_update.timeout { | ||
+ | [[hfree]] auths.u. [[DollarPlus|$+]] [[$cid]] | ||
+ | auth_update.update | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.SORT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; sorts channels by number of nicks in channel | ||
+ | ; <number of nicks>.<channel number> | ||
+ | ; returns 127.1 23.2 <= means 127 nicks on comchan 1 | ||
+ | [[alias]] -l auth_update.sort { | ||
+ | [[Local_Variables|var]] %i = [[$comchan]]([[$me]],0) , %chans | ||
+ | [[while]] (%i) { | ||
+ | [[Local_Variables|var]] %chans = %chans [[$nick_(nick)|$nick(]][[$comchan]]([[$me]],%i),0) [[DollarPlus|$+]] . [[DollarPlus|$+]] %i | ||
+ | [[dec]] %i | ||
+ | } | ||
+ | [[return]] [[$sorttok]](%chans,32,n) | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.WHO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $auth_update.who(N,L) | ||
+ | ; returns #chan,#chan,nick,nick | ||
+ | [[alias]] -l auth_update.who { | ||
+ | [[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]] | ||
+ | [[Local_Variables|var]] %n.max = $max.who , %l.max = $len.who , %n.min = $minnicks.who , %ratio = $minratio.who | ||
+ | [[Local_Variables|var]] %len , %n.nr , %chans , %nicks , %chans.go | ||
+ | [[If-Then-Else|if]] [[$hget]](auths.n.temp) { [[hfree]] auths.n.temp } | ||
+ | [[hmake]] auths.n.temp | ||
+ | [[Local_Variables|var]] %n = [[$hget]](%t.n,-firstnick) | ||
+ | [[while]] (%n) { | ||
+ | [[inc]] %len [[$calc]]([[$len]](%n) + 1) | ||
+ | [[inc]] %n.nr | ||
+ | [[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[dec]] %n.nr | [[dec]] %len [[$calc]]([[$len]](%n) + 1) | [[break]] } | ||
+ | [[hadd]] auths.n.temp %n 1 | ||
+ | [[hadd]] %t %n 1 | ||
+ | [[Local_Variables|var]] %nicks = [[$addtok]](%nicks,%n,44) , %n = [[$gettok]]([[$hget]](%t.n,%n),2,32) | ||
+ | } | ||
+ | |||
+ | [[Local_Variables|var]] %sorted = $auth_update.sort , %i = [[$numtok]](%sorted,32) , %time = [[$calc]]([[$ctime]] - $queue.repeat.who) | ||
+ | [[while]] (%i) { | ||
+ | [[Local_Variables|var]] %comchan = [[$gettok]]([[$gettok]](%sorted,%i,32),2,46) , %chan = [[$comchan]]([[$me]],%comchan) , %id = [[$chan_(window)|$chan(]]%chan).wid [[DollarPlus|$+]] . | ||
+ | [[Local_Variables|var]] %n.c = [[$nick_(nick)|$nick(]]%chan,0) , %left , %go | ||
+ | [[If-Then-Else|if]] (%n.c > %n.max) { [[break]] } | ||
+ | [[If-Then-Else|if]] [[$hget]](auths.temp) { [[hfree]] auths.temp } | ||
+ | [[hmake]] auths.temp | ||
+ | [[Local_Variables|var]] %n = [[$hget]](%t.n,%id [[DollarPlus|$+]] -firstnick) | ||
+ | [[while]] (%n) { | ||
+ | [[If-Then-Else|if]] (![[$hget]](%t,%n)) || ([[$hget]](auths.n.temp,%n)) { [[hadd]] auths.temp %n 1 | [[inc]] %left } | ||
+ | [[If-Then-Else|if]] (((%left >= %n.min) && ([[$calc]](%left / %n.c) >= %ratio)) || (%left == %n.c)) { [[Local_Variables|var]] %go = 1 | [[break]] } | ||
+ | [[Local_Variables|var]] %n = [[$gettok]]([[$hget]](%t.n,%id [[DollarPlus|$+]] %n),2,32) | ||
+ | } | ||
+ | [[Local_Variables|var]] %n = [[$hget]](%t.l,%id [[DollarPlus|$+]] -firstnick) | ||
+ | [[while]] (%n) { | ||
+ | [[If-Then-Else|if]] (![[$hget]](%t,%n)) && (![[$hget]](auths.temp,%n)) { [[inc]] %left } | ||
+ | [[If-Then-Else|if]] (((%left >= %n.min) && ([[$calc]](%left / %n.c) >= %ratio)) || (%left == %n.c)) { [[Local_Variables|var]] %go = 1 | [[break]] } | ||
+ | [[Local_Variables|var]] %n = [[$gettok]]([[$hget]](%t.l,%id [[DollarPlus|$+]] %n),2,32) | ||
+ | } | ||
+ | [[Local_Variables|var]] %n = [[$hget]](%t.q,%id [[DollarPlus|$+]] -firstnick) | ||
+ | [[while]] (%n) { | ||
+ | [[tokenize]] 32 [[$hget]](%t.q,%id [[DollarPlus|$+]] %n) | ||
+ | [[If-Then-Else|if]] ([[$1-|$1]] > %time) { [[break]] } | ||
+ | [[If-Then-Else|if]] (![[$hget]](%t,%n)) && (![[$hget]](auths.temp,%n)) { [[inc]] %left } | ||
+ | [[If-Then-Else|if]] (((%left >= %n.min) && ([[$calc]](%left / %n.c) >= %ratio)) || (%left == %n.c)) { [[Local_Variables|var]] %go = 1 | [[break]] } | ||
+ | [[Local_Variables|var]] %n = [[$1-|$3]] | ||
+ | } | ||
+ | [[If-Then-Else|if]] (!%go) { [[dec]] %i | [[continue]] } | ||
+ | [[Local_Variables|var]] %j = %n.c , %n.tmp = %n.nr , %l.tmp = %len , %chans.go = %chans.go %comchan | ||
+ | [[inc]] %l.tmp [[$calc]]([[$len]](%chan) + 1) | ||
+ | [[while]] (%j) { | ||
+ | [[Local_Variables|var]] %n = [[$nick_(nick)|$nick(]]%chan,%j) | ||
+ | [[If-Then-Else|if]] (![[$hget]](%t,%n)) { [[inc]] %n.tmp } | ||
+ | [[If-Then-Else|if]] ([[$hget]](auths.n.temp,%n)) { [[dec]] %l.tmp [[$calc]]([[$len]](%n) + 1) } | ||
+ | [[dec]] %j | ||
+ | } | ||
+ | [[If-Then-Else|if]] (%l.tmp > %l.max) || (%n.tmp > %n.max) { [[dec]] %i | [[continue]] } | ||
+ | [[Local_Variables|var]] %j = [[$nick_(nick)|$nick(]]%chan,0) | ||
+ | [[while]] (%j) { | ||
+ | [[Local_Variables|var]] %n = [[$nick_(nick)|$nick(]]%chan,%j) | ||
+ | [[hadd]] %t %n 1 | ||
+ | [[hdel]] auths.n.temp %n | ||
+ | [[Local_Variables|var]] %nicks = [[$remtok]](%nicks,%n,1,44) | ||
+ | [[dec]] %j | ||
+ | } | ||
+ | [[Local_Variables|var]] %len = %l.tmp , %n.nr = %n.tmp , %chans = [[$addtok]](%chans,%chan,44) | ||
+ | [[dec]] %i | ||
+ | } | ||
+ | |||
+ | [[Local_Variables|var]] %i = [[$comchan]]([[$me]],0) | ||
+ | [[while]] (%i) { | ||
+ | [[Local_Variables|var]] %chan = [[$comchan]]([[$me]],%i) | ||
+ | [[If-Then-Else|if]] (([[$nick_(nick)|$nick(]]%chan,0) > %n.max) || (![[$istok]](%chans.go,%i,32))) { | ||
+ | [[Local_Variables|var]] %id = [[$chan_(window)|$chan(]]%chan).wid [[DollarPlus|$+]] . , %n = [[$hget]](%t.l,%id [[DollarPlus|$+]] -firstnick) | ||
+ | [[while]] (%n) { | ||
+ | [[If-Then-Else|if]] (![[$hget]](%t,%n)) { | ||
+ | [[inc]] %len [[$calc]]([[$len]](%n) + 1) | ||
+ | [[inc]] %n.nr | ||
+ | [[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[break]] } | ||
+ | [[hadd]] %t %n 1 | ||
+ | [[Local_Variables|var]] %nicks = [[$addtok]](%nicks,%n,44) | ||
+ | } | ||
+ | [[Local_Variables|var]] %n = [[$gettok]]([[$hget]](%t.l,%id [[DollarPlus|$+]] %n),2,32) | ||
+ | } | ||
+ | [[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[break]] } | ||
+ | [[Local_Variables|var]] %n = [[$hget]](%t.q,%id [[DollarPlus|$+]] -firstnick) | ||
+ | [[while]] (%n) { | ||
+ | [[tokenize]] 32 [[$hget]](%t.q,%id [[DollarPlus|$+]] %n) | ||
+ | [[If-Then-Else|if]] ([[$1-|$1]] > %time) { [[break]] } | ||
+ | [[If-Then-Else|if]] (![[$hget]](%t,%n)) { | ||
+ | [[inc]] %len [[$calc]]([[$len]](%n) + 1) | ||
+ | [[inc]] %n.nr | ||
+ | [[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[break]] } | ||
+ | [[hadd]] %t %n 1 | ||
+ | [[Local_Variables|var]] %nicks = [[$addtok]](%nicks,%n,44) | ||
+ | } | ||
+ | [[Local_Variables|var]] %n = [[$1-|$3]] | ||
+ | } | ||
+ | } | ||
+ | [[If-Then-Else|if]] (%n.nr > %n.max) || (%len > %l.max) { [[break]] } | ||
+ | [[dec]] %i | ||
+ | } | ||
+ | [[If-Then-Else|if]] [[$hget]](auths.temp) { [[hfree]] auths.temp } | ||
+ | [[If-Then-Else|if]] [[$hget]](auths.n.temp) { [[hfree]] auths.n.temp } | ||
+ | [[return]] [[$addtok]](%chans,%nicks,44) | ||
+ | } | ||
+ | |||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RAW 354 SPECIAL WHO REPLY ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; 354 <you> <nr> <nick> <auth> | ||
+ | ; 354 Vliedel 273 L 0 | ||
+ | RAW 354:& 273 & &:{ | ||
+ | [[If-Then-Else|if]] ([[$comchan]]([[$1-|$3]],1)) { auth_update.nick [[$1-|$3]] [[$1-|$4]] } | ||
+ | [[If-Then-Else|elseif]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]],[[$1-|$3]])) { auth.n.rem [[$1-|$3]] | .[[signal]] authupdate [[$1-|$3]] } | ||
+ | [[haltdef]] | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RAW 315 WHO END ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; 315 <you> <requested> :End of /who list. | ||
+ | ; 315 Vliedel #vliedel,Rutix,fishbot :End of /WHO list. | ||
+ | RAW 315:& & end of /WHO list.: { | ||
+ | [[If-Then-Else|if]] ([[$hget]](auths.u. [[DollarPlus|$+]] [[$cid]],-mask) == [[$1-|$2]]) { | ||
+ | [[hfree]] auths.u. [[DollarPlus|$+]] [[$cid]] | ||
+ | .[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.timeout off | ||
+ | .[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 [[$iif]]([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]],1).item,$next.wait,$repeat.who) auth_update.update | ||
+ | [[haltdef]] | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = nick $2 = auth | ||
+ | [[alias]] -l auth_update.nick { | ||
+ | [[If-Then-Else|if]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]],[[$1-|$1]]) != [[$1-|$2]]) { | ||
+ | .[[signal]] authupdate.new [[$1-|$1]] [[$1-|$2]] | ||
+ | auth.add [[$1-|$1]] [[$1-|$2]] | ||
+ | } | ||
+ | auth.l.rem [[$1-|$1]] | ||
+ | [[If-Then-Else|if]] ([[$1-|$2]] == 0) { auth.q.add [[$1-|$1]] } | ||
+ | [[If-Then-Else|else]] { auth.q.rem [[$1-|$1]] } | ||
+ | [[If-Then-Else|if]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]],[[$1-|$1]])) { auth.n.rem [[$1-|$1]] | .[[signal]] authupdate [[$1-|$1]] [[$1-|$2]] } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; JOIN EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | on *:JOIN:#:{ | ||
+ | [[If-Then-Else|if]] ([[$nick_(remote)|$nick]] == [[$me]]) && ($used.network([[$network]])) { | ||
+ | [[If-Then-Else|if]] (![[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[hmake]] auths. [[DollarPlus|$+]] [[$cid]] 200 } | ||
+ | [[If-Then-Else|if]] (![[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[hmake]] auths.l. [[DollarPlus|$+]] [[$cid]] 200 } | ||
+ | [[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[hmake]] auths.q. [[DollarPlus|$+]] [[$cid]] 200 } | ||
+ | [[If-Then-Else|if]] (![[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[hmake]] auths.n. [[DollarPlus|$+]] [[$cid]] 100 } | ||
+ | [[If-Then-Else|if]] (!$timer([[$cid]] [[DollarPlus|$+]] .auth_update.update)) { .[[timer]] [[DollarPlus|$+]] [[$cid]] [[DollarPlus|$+]] .auth_update.update 1 $delay.who auth_update.update } | ||
+ | [[return]] | ||
+ | } | ||
+ | [[If-Then-Else|if]] ($auth.site([[$network]],$site)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) | [[return]] } | ||
+ | [[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]] } | ||
+ | [[If-Then-Else|elseif]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]],[[$nick_(remote)|$nick]]) == 0) { | ||
+ | auth.q.add.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid [[$nick_(remote)|$nick]] | ||
+ | [[If-Then-Else|if]] (![[$comchan]]([[$nick_(remote)|$nick]],2)) { auth.q.add.main [[$nick_(remote)|$nick]] } | ||
+ | } | ||
+ | [[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]] } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RAW 366 - END OF NAMES LIST ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; 366 Vliedel #vliedel :End of /NAMES list. | ||
+ | 366 Vliedel #Help :End of /NAMES list | ||
+ | RAW 366:& & end of /names list.:{ | ||
+ | [[Local_Variables|var]] %i = [[$nick_(nick)|$nick(]][[$1-|$2]],0) , %t = auths. [[DollarPlus|$+]] [[$cid]] | ||
+ | [[while]] (%i) { | ||
+ | [[Local_Variables|var]] %n = [[$nick_(nick)|$nick(]][[$1-|$2]],%i) | ||
+ | [[If-Then-Else|if]] ([[$hget]](%t,%n) == [[$null]]) { auth.l.add.wid [[$chan_(window)|$chan(]][[$1-|$2]]).wid %n } | ||
+ | [[If-Then-Else|elseif]] ([[$hget]](%t,%n) == 0) { | ||
+ | auth.q.add.wid [[$chan_(window)|$chan(]][[$1-|$2]]).wid %n | ||
+ | [[If-Then-Else|if]] (![[$comchan]](%n,2)) { auth.q.add.main %n } | ||
+ | } | ||
+ | [[If-Then-Else|if]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]],%n)) { auth.n.add.wid [[$chan_(window)|$chan(]][[$1-|$2]]).wid %n } | ||
+ | [[dec]] %i | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PART EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | on *:PART:#:{ | ||
+ | [[If-Then-Else|if]] ([[$nick_(remote)|$nick]] == [[$me]]) { | ||
+ | auth.rem.chan [[$chan_(remote)|$chan]] | ||
+ | auth.l.rem.chan.all [[$chan_(remote)|$chan]] | ||
+ | auth.q.rem.chan.all [[$chan_(remote)|$chan]] | ||
+ | auth.n.rem.chan.all [[$chan_(remote)|$chan]] | ||
+ | } | ||
+ | [[If-Then-Else|else]] { | ||
+ | auth.l.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid [[$nick_(remote)|$nick]] | ||
+ | auth.q.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid [[$nick_(remote)|$nick]] | ||
+ | auth.n.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid [[$nick_(remote)|$nick]] | ||
+ | [[If-Then-Else|if]] (![[$comchan]]([[$nick_(remote)|$nick]],2)) { | ||
+ | auth.rem [[$nick_(remote)|$nick]] | ||
+ | auth.q.rem.main [[$nick_(remote)|$nick]] | ||
+ | auth.n.rem.main [[$nick_(remote)|$nick]] | ||
+ | } | ||
+ | [[If-Then-Else|elseif]] ($auth.site([[$network]],$site)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; KICK EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | on *:KICK:#:{ | ||
+ | [[If-Then-Else|if]] ($knick == [[$me]]) { | ||
+ | auth.rem.chan [[$chan_(remote)|$chan]] | ||
+ | auth.l.rem.chan.all [[$chan_(remote)|$chan]] | ||
+ | auth.q.rem.chan.all [[$chan_(remote)|$chan]] | ||
+ | auth.n.rem.chan.all [[$chan_(remote)|$chan]] | ||
+ | } | ||
+ | [[If-Then-Else|else]] { | ||
+ | auth.l.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid $knick | ||
+ | auth.q.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid $knick | ||
+ | auth.n.rem.wid [[$chan_(window)|$chan(]][[$chan_(remote)|$chan]]).wid $knick | ||
+ | [[If-Then-Else|if]] (![[$comchan]]($knick,2)) { | ||
+ | auth.rem $knick | ||
+ | auth.q.rem.main $knick | ||
+ | auth.n.rem.main $knick | ||
+ | } | ||
+ | [[If-Then-Else|if]] ($auth.site([[$network]],$site)) && ([[$comchan]]([[$nick_(remote)|$nick]],1)) { auth_update.nick [[$nick_(remote)|$nick]] $auth.from.site([[$network]],$site) } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; QUIT EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | on *:QUIT:{ | ||
+ | auth.rem [[$nick_(remote)|$nick]] | ||
+ | auth.l.rem [[$nick_(remote)|$nick]] | ||
+ | auth.q.rem [[$nick_(remote)|$nick]] | ||
+ | auth.n.rem [[$nick_(remote)|$nick]] | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NICK EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | on *:NICK:{ | ||
+ | auth.nick [[$nick_(remote)|$nick]] $newnick | ||
+ | auth.l.nick [[$nick_(remote)|$nick]] $newnick | ||
+ | auth.q.nick [[$nick_(remote)|$nick]] $newnick | ||
+ | auth.n.nick [[$nick_(remote)|$nick]] $newnick | ||
+ | [[If-Then-Else|if]] ($auth.site([[$network]],$site)) { auth_update.nick $newnick $auth.from.site([[$network]],$site) } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IAL-UPDATING EVENTS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | 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) } } | ||
+ | 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) } } | ||
+ | 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) } } | ||
+ | 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) } } | ||
+ | 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) } } | ||
+ | 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) } } | ||
+ | [[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) } } | ||
+ | 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]]) } } | ||
+ | |||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DISCONNECT EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | on *:DISCONNECT:{ | ||
+ | [[If-Then-Else|if]] ([[$hget]](auths.u [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 } | ||
+ | [[If-Then-Else|if]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 } | ||
+ | [[If-Then-Else|if]] ([[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 } | ||
+ | [[If-Then-Else|if]] ([[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 } | ||
+ | [[If-Then-Else|if]] ([[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[hfree]] $v1 } | ||
+ | } | ||
+ | |||
+ | |||
+ | ; 200 | ||
+ | ; auths.cid nick --> auth | ||
+ | |||
+ | ; 200 | ||
+ | ; auths.l.cid chanwid.nick --> lnick rnick | ||
+ | ; auths.l.cid chanwid.-firstnick --> first_nick_in_list | ||
+ | ; auths.l.cid chanwid.-lastnick --> last_nick_in_list | ||
+ | |||
+ | ; 200 | ||
+ | ; auths.q.cid chanwid.nick --> ctime lnick rnick | ||
+ | ; auths.q.cid chanwid.-firstnick --> first_nick_in_queue | ||
+ | ; auths.q.cid chanwid.-lastnick --> last_nick_in_queue | ||
+ | ; auths.q.cid nick --> ctime | ||
+ | |||
+ | ; 100 | ||
+ | ; auths.n.cid chanwid.nick --> lnick rnick | ||
+ | ; auths.n.cid chanwid.-firstnick --> first_nick_in_list | ||
+ | ; auths.n.cid chanwid.-lastnick --> last_nick_in_list | ||
+ | ; auths.n.cid nick --> lnick rnick | ||
+ | ; auths.n.cid -firstnick --> first_nick_in_list | ||
+ | ; auths.n.cid -lastnick --> last_nick_in_list | ||
+ | |||
+ | |||
+ | |||
+ | ; --------------------------------------------------------------------------------------------- | ||
+ | ; --------------------------------------- AUTHS - TABLE --------------------------------------- | ||
+ | ; --------------------------------------------------------------------------------------------- | ||
+ | |||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.ADD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = nick $2 = auth | ||
+ | [[alias]] -l auth.add { | ||
+ | [[If-Then-Else|if]] (![[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[return]] } | ||
+ | [[hadd]] auths. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]] [[$1-|$2]] | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = nick | ||
+ | [[alias]] -l auth.rem { | ||
+ | [[If-Then-Else|if]] (![[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[return]] } | ||
+ | [[hdel]] auths. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]] | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.REM.CHAN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = chan | ||
+ | [[alias]] -l auth.rem.chan { | ||
+ | [[If-Then-Else|if]] (![[$hget]](auths. [[DollarPlus|$+]] [[$cid]])) { [[return]] } | ||
+ | [[Local_Variables|var]] %i = [[$nick_(nick)|$nick(]][[$1-|$1]],0) | ||
+ | [[while]] (%i) { | ||
+ | [[If-Then-Else|if]] (![[$comchan]]([[$nick_(nick)|$nick(]][[$1-|$1]],%i),2)) { [[hdel]] auths. [[DollarPlus|$+]] [[$cid]] [[$nick_(nick)|$nick(]][[$1-|$1]],%i) } | ||
+ | [[dec]] %i | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = nick $2 = newnick | ||
+ | [[alias]] -l auth.nick { | ||
+ | [[If-Then-Else|if]] ([[$hget]](auths. [[DollarPlus|$+]] [[$cid]],[[$1-|$1]]) !== [[$null]]) { [[hdel]] auths. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]] | [[hadd]] auths. [[DollarPlus|$+]] [[$cid]] [[$1-|$2]] $v1 } | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | ; ---------------------------------------------------------------------------------------------------- | ||
+ | ; --------------------------------------- AUTHS - LEFT - TABLE --------------------------------------- | ||
+ | ; ---------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.ADD.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = wid $2 = nick | ||
+ | [[alias]] -l auth.l.add.wid { | ||
+ | [[Local_Variables|var]] %table = auths.l. [[DollarPlus|$+]] [[$cid]] | ||
+ | [[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] } | ||
+ | [[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %lastnick = [[$hget]](%table,%id [[DollarPlus|$+]] -lastnick) | ||
+ | [[If-Then-Else|if]] ([[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]])) { [[return]] } | ||
+ | [[If-Then-Else|if]] (%lastnick) { | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %lastnick 0 | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] %lastnick [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %lastnick),1,32) [[$1-|$2]] | ||
+ | } | ||
+ | [[If-Then-Else|else]] { | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] 0 0 | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]] | ||
+ | } | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]] | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = nick | ||
+ | [[alias]] -l auth.l.rem { | ||
+ | [[If-Then-Else|if]] (![[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[return]] } | ||
+ | [[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0) | ||
+ | [[while]] (%i) { | ||
+ | auth.l.rem.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]] | ||
+ | [[dec]] %i | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.REM.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = wid $2 = nick | ||
+ | [[alias]] -l auth.l.rem.wid { | ||
+ | [[Local_Variables|var]] %table = auths.l. [[DollarPlus|$+]] [[$cid]] | ||
+ | [[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] } | ||
+ | [[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]]) | ||
+ | [[If-Then-Else|if]] (!%val) { [[return]] } | ||
+ | [[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32) | ||
+ | [[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$2]] | ||
+ | [[If-Then-Else|if]] (%nick.l == 0) && (%nick.r == 0) { [[hdel]] %table %id [[DollarPlus|$+]] -lastnick | [[hdel]] %table %id [[DollarPlus|$+]] -firstnick | [[return]] } | ||
+ | [[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1,32) %nick.r } | ||
+ | [[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick %nick.r } | ||
+ | [[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),2,32) } | ||
+ | [[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick %nick.l } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.REM.CHAN.ALL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = chan | ||
+ | [[alias]] -l auth.l.rem.chan.all { | ||
+ | [[If-Then-Else|if]] (![[$hget]](auths.l. [[DollarPlus|$+]] [[$cid]])) { [[return]] } | ||
+ | [[hdel]] -w auths.l. [[DollarPlus|$+]] [[$cid]] [[$chan_(window)|$chan(]][[$1-|$1]]).wid [[DollarPlus|$+]] .* | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = nick $2 = newnick | ||
+ | [[alias]] -l auth.l.nick { | ||
+ | [[If-Then-Else|if]] ([[$1-|$1]] == [[$1-|$2]]) { [[return]] } | ||
+ | [[Local_Variables|var]] %table = auths.l. [[DollarPlus|$+]] [[$cid]] | ||
+ | [[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] } | ||
+ | [[Local_Variables|var]] %i = [[$comchan]]([[$1-|$2]],0) | ||
+ | [[while]] (%i) { | ||
+ | [[Local_Variables|var]] %id = [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$2]],%i)).wid [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$1]]) | ||
+ | [[If-Then-Else|if]] (%val) { | ||
+ | [[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$1]] | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %val | ||
+ | [[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32) | ||
+ | [[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1,32) [[$1-|$2]] } | ||
+ | [[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]] } | ||
+ | [[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r [[$1-|$2]] [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),2,32) } | ||
+ | [[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]] } | ||
+ | } | ||
+ | [[dec]] %i | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | ; ----------------------------------------------------------------------------------------------------- | ||
+ | ; --------------------------------------- AUTHS - QUEUE - TABLE --------------------------------------- | ||
+ | ; ----------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.ADD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = nick | ||
+ | [[alias]] -l auth.q.add { | ||
+ | [[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[return]] } | ||
+ | auth.q.add.main [[$1-|$1]] | ||
+ | [[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0) | ||
+ | [[while]] (%i) { | ||
+ | auth.q.add.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]] | ||
+ | [[dec]] %i | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.ADD.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = wid $2 = nick | ||
+ | [[alias]] -l auth.q.add.wid { | ||
+ | [[Local_Variables|var]] %table = auths.q. [[DollarPlus|$+]] [[$cid]] | ||
+ | [[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] } | ||
+ | [[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %ctime = [[$iif]]([[$hget]](%table,[[$1-|$2]]) == [[$null]],[[$ctime]],$v1) | ||
+ | auth.q.rem.wid [[$1-|$1]] [[$1-|$2]] | ||
+ | [[Local_Variables|var]] %lastnick = [[$hget]](%table,%id [[DollarPlus|$+]] -lastnick) | ||
+ | [[If-Then-Else|if]] (!%lastnick) { | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %ctime 0 0 | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]] | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]] | ||
+ | [[return]] | ||
+ | } | ||
+ | [[If-Then-Else|if]] (%ctime >= [[$hget]](%table,%lastnick)) { | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %ctime %lastnick 0 | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] %lastnick [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %lastnick),1-2,32) [[$1-|$2]] | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]] | ||
+ | [[return]] | ||
+ | } | ||
+ | [[Local_Variables|var]] %n = [[$hget]](%table,%id [[DollarPlus|$+]] -firstnick) , %nick = [[$1-|$2]] | ||
+ | [[while]] (%n) { | ||
+ | [[tokenize]] 32 [[$hget]](%table,%id [[DollarPlus|$+]] %n) | ||
+ | [[If-Then-Else|if]] (%ctime <= [[$1-|$1]]) { | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] %n [[$1-|$1]] %nick [[$1-|$3]] | ||
+ | [[If-Then-Else|if]] ([[$1-|$2]] == 0) { | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] %nick %ctime 0 %n | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] -firstnick %nick | ||
+ | } | ||
+ | [[If-Then-Else|else]] { | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] %nick %ctime [[$1-|$2]] %n | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]]),1-2,32) %nick | ||
+ | } | ||
+ | [[break]] | ||
+ | } | ||
+ | [[Local_Variables|var]] %n = [[$1-|$3]] | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.ADD.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = nick | ||
+ | [[alias]] -l auth.q.add.main { | ||
+ | [[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[return]] } | ||
+ | [[hadd]] auths.q. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]] [[$ctime]] | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = nick | ||
+ | [[alias]] -l auth.q.rem { | ||
+ | [[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[return]] } | ||
+ | [[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0) | ||
+ | [[while]] (%i) { | ||
+ | auth.q.rem.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]] | ||
+ | [[dec]] %i | ||
+ | } | ||
+ | auth.q.rem.main [[$1-|$1]] | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = wid $2 = nick | ||
+ | [[alias]] -l auth.q.rem.wid { | ||
+ | [[Local_Variables|var]] %table = auths.q. [[DollarPlus|$+]] [[$cid]] | ||
+ | [[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] } | ||
+ | [[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]]) | ||
+ | [[If-Then-Else|if]] (!%val) { [[return]] } | ||
+ | [[Local_Variables|var]] %nick.l = [[$gettok]](%val,2,32) , %nick.r = [[$gettok]](%val,3,32) | ||
+ | [[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$2]] | ||
+ | [[If-Then-Else|if]] (%nick.l == 0) && (%nick.r == 0) { [[hdel]] %table %id [[DollarPlus|$+]] -lastnick | [[hdel]] %table %id [[DollarPlus|$+]] -firstnick | [[return]] } | ||
+ | [[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 } | ||
+ | [[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick %nick.r } | ||
+ | [[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) } | ||
+ | [[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick %nick.l } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = nick | ||
+ | [[alias]] -l auth.q.rem.main { | ||
+ | [[If-Then-Else|if]] (![[$hget]](auths.q. [[DollarPlus|$+]] [[$cid]])) { [[return]] } | ||
+ | [[hdel]] auths.q. [[DollarPlus|$+]] [[$cid]] [[$1-|$1]] | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM.CHAN.ALL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = chan | ||
+ | [[alias]] -l auth.q.rem.chan.all { | ||
+ | [[Local_Variables|var]] %table = auths.q. [[DollarPlus|$+]] [[$cid]] | ||
+ | [[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] } | ||
+ | [[hdel]] -w %table [[$chan_(window)|$chan(]][[$1-|$1]]).wid [[DollarPlus|$+]] .* | ||
+ | [[Local_Variables|var]] %i = [[$nick_(nick)|$nick(]][[$1-|$1]],0) | ||
+ | [[while]] (%i) { | ||
+ | [[If-Then-Else|if]] (![[$comchan]]([[$nick_(nick)|$nick(]][[$1-|$1]],%i),2)) { [[hdel]] %table [[$nick_(nick)|$nick(]][[$1-|$1]],%i) } | ||
+ | [[dec]] %i | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = nick $2 = newnick | ||
+ | [[alias]] -l auth.q.nick { | ||
+ | [[If-Then-Else|if]] ([[$1-|$1]] == [[$1-|$2]]) { [[return]] } | ||
+ | [[Local_Variables|var]] %table = auths.q. [[DollarPlus|$+]] [[$cid]] | ||
+ | [[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] } | ||
+ | [[Local_Variables|var]] %i = [[$comchan]]([[$1-|$2]],0) | ||
+ | [[while]] (%i) { | ||
+ | [[Local_Variables|var]] %id = [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$2]],%i)).wid [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$1]]) | ||
+ | [[If-Then-Else|if]] (%val) { | ||
+ | [[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$1]] | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %val | ||
+ | [[Local_Variables|var]] %nick.l = [[$gettok]](%val,2,32) , %nick.r = [[$gettok]](%val,3,32) | ||
+ | [[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]] } | ||
+ | [[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]] } | ||
+ | [[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) } | ||
+ | [[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]] } | ||
+ | } | ||
+ | [[dec]] %i | ||
+ | } | ||
+ | [[If-Then-Else|if]] ([[$hget]](%table,[[$1-|$1]]) !== [[$null]]) { [[hdel]] %table [[$1-|$1]] | [[hadd]] %table [[$1-|$2]] $v1 } | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | ; ---------------------------------------------------------------------------------------------------- | ||
+ | ; --------------------------------------- AUTHS - NEXT - TABLE --------------------------------------- | ||
+ | ; ---------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.ADD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = nick | ||
+ | [[alias]] -l auth.n.add { | ||
+ | [[If-Then-Else|if]] (![[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[return]] } | ||
+ | auth.n.add.main [[$1-|$1]] | ||
+ | [[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0) | ||
+ | [[while]] (%i) { | ||
+ | auth.n.add.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]] | ||
+ | [[dec]] %i | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.ADD.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = wid $2 = nick | ||
+ | [[alias]] -l auth.n.add.wid { | ||
+ | [[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]] | ||
+ | [[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] } | ||
+ | [[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %lastnick = [[$hget]](%table,%id [[DollarPlus|$+]] -lastnick) | ||
+ | [[If-Then-Else|if]] ([[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]])) { [[return]] } | ||
+ | [[If-Then-Else|if]] (%lastnick) { | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %lastnick 0 | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] %lastnick [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %lastnick),1,32) [[$1-|$2]] | ||
+ | } | ||
+ | [[If-Then-Else|else]] { | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] 0 0 | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]] | ||
+ | } | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]] | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.ADD.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = nick | ||
+ | [[alias]] -l auth.n.add.main { | ||
+ | [[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]] | ||
+ | [[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] } | ||
+ | [[Local_Variables|var]] %lastnick = [[$hget]](%table,-lastnick) | ||
+ | [[If-Then-Else|if]] ([[$hget]](%table,[[$1-|$1]])) { [[return]] } | ||
+ | [[If-Then-Else|if]] (%lastnick) { | ||
+ | [[hadd]] %table [[$1-|$1]] %lastnick 0 | ||
+ | [[hadd]] %table %lastnick [[$gettok]]([[$hget]](%table,%lastnick),1,32) [[$1-|$1]] | ||
+ | } | ||
+ | [[If-Then-Else|else]] { | ||
+ | [[hadd]] %table [[$1-|$1]] 0 0 | ||
+ | [[hadd]] %table -firstnick [[$1-|$1]] | ||
+ | } | ||
+ | [[hadd]] %table -lastnick [[$1-|$1]] | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = nick | ||
+ | [[alias]] -l auth.n.rem { | ||
+ | [[If-Then-Else|if]] (![[$hget]](auths.n. [[DollarPlus|$+]] [[$cid]])) { [[return]] } | ||
+ | [[Local_Variables|var]] %i = [[$comchan]]([[$1-|$1]],0) | ||
+ | [[while]] (%i) { | ||
+ | auth.n.rem.wid [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$1]],%i)).wid [[$1-|$1]] | ||
+ | [[dec]] %i | ||
+ | } | ||
+ | auth.n.rem.main [[$1-|$1]] | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = wid $2 = nick | ||
+ | [[alias]] -l auth.n.rem.wid { | ||
+ | [[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]] | ||
+ | [[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] } | ||
+ | [[Local_Variables|var]] %id = [[$1-|$1]] [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$2]]) | ||
+ | [[If-Then-Else|if]] (!%val) { [[return]] } | ||
+ | [[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32) | ||
+ | [[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$2]] | ||
+ | [[If-Then-Else|if]] (%nick.l == 0) && (%nick.r == 0) { [[hdel]] %table %id [[DollarPlus|$+]] -lastnick | [[hdel]] %table %id [[DollarPlus|$+]] -firstnick | [[return]] } | ||
+ | [[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1,32) %nick.r } | ||
+ | [[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick %nick.r } | ||
+ | [[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),2,32) } | ||
+ | [[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick %nick.l } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = nick | ||
+ | [[alias]] -l auth.n.rem.main { | ||
+ | [[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]] | ||
+ | [[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] } | ||
+ | [[Local_Variables|var]] %val = [[$hget]](%table,[[$1-|$1]]) | ||
+ | [[If-Then-Else|if]] (!%val) { [[return]] } | ||
+ | [[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32) | ||
+ | [[hdel]] %table [[$1-|$1]] | ||
+ | [[If-Then-Else|if]] (%nick.l == 0) && (%nick.r == 0) { [[hdel]] %table -lastnick | [[hdel]] %table -firstnick | [[return]] } | ||
+ | [[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %nick.l [[$gettok]]([[$hget]](%table,%nick.l),1,32) %nick.r } | ||
+ | [[If-Then-Else|else]] { [[hadd]] %table -firstnick %nick.r } | ||
+ | [[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %nick.r %nick.l [[$gettok]]([[$hget]](%table,%nick.r),2,32) } | ||
+ | [[If-Then-Else|else]] { [[hadd]] %table -lastnick %nick.l } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM.CHAN.ALL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = chan | ||
+ | [[alias]] -l auth.n.rem.chan.all { | ||
+ | [[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]] | ||
+ | [[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] } | ||
+ | [[hdel]] -w %table [[$chan_(window)|$chan(]][[$1-|$1]]).wid [[DollarPlus|$+]] .* | ||
+ | [[Local_Variables|var]] %i = [[$nick_(nick)|$nick(]][[$1-|$1]],0) | ||
+ | [[while]] (%i) { | ||
+ | [[If-Then-Else|if]] (![[$comchan]]([[$nick_(nick)|$nick(]][[$1-|$1]],%i),2)) { auth.n.rem.main [[$nick_(nick)|$nick(]][[$1-|$1]],%i) } | ||
+ | [[dec]] %i | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; $1 = nick $2 = newnick | ||
+ | [[alias]] -l auth.n.nick { | ||
+ | [[If-Then-Else|if]] ([[$1-|$1]] == [[$1-|$2]]) { [[return]] } | ||
+ | [[Local_Variables|var]] %table = auths.n. [[DollarPlus|$+]] [[$cid]] | ||
+ | [[If-Then-Else|if]] (![[$hget]](%table)) { [[return]] } | ||
+ | [[Local_Variables|var]] %i = [[$comchan]]([[$1-|$2]],0) | ||
+ | [[while]] (%i) { | ||
+ | [[Local_Variables|var]] %id = [[$chan_(window)|$chan(]][[$comchan]]([[$1-|$2]],%i)).wid [[DollarPlus|$+]] . , %val = [[$hget]](%table,%id [[DollarPlus|$+]] [[$1-|$1]]) | ||
+ | [[If-Then-Else|if]] (%val) { | ||
+ | [[hdel]] %table %id [[DollarPlus|$+]] [[$1-|$1]] | ||
+ | [[hadd]] %table %id [[DollarPlus|$+]] [[$1-|$2]] %val | ||
+ | [[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32) | ||
+ | [[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.l [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.l),1,32) [[$1-|$2]] } | ||
+ | [[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -firstnick [[$1-|$2]] } | ||
+ | [[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %id [[DollarPlus|$+]] %nick.r [[$1-|$2]] [[$gettok]]([[$hget]](%table,%id [[DollarPlus|$+]] %nick.r),2,32) } | ||
+ | [[If-Then-Else|else]] { [[hadd]] %table %id [[DollarPlus|$+]] -lastnick [[$1-|$2]] } | ||
+ | } | ||
+ | [[dec]] %i | ||
+ | } | ||
+ | [[Local_Variables|var]] %val = [[$hget]](%table,[[$1-|$1]]) | ||
+ | [[If-Then-Else|if]] (%val) { | ||
+ | [[hdel]] %table [[$1-|$1]] | ||
+ | [[hadd]] %table [[$1-|$2]] %val | ||
+ | [[Local_Variables|var]] %nick.l = [[$gettok]](%val,1,32) , %nick.r = [[$gettok]](%val,2,32) | ||
+ | [[If-Then-Else|if]] (%nick.l !== 0) { [[hadd]] %table %nick.l [[$gettok]]([[$hget]](%table,%nick.l),1,32) [[$1-|$2]] } | ||
+ | [[If-Then-Else|else]] { [[hadd]] %table -firstnick [[$1-|$2]] } | ||
+ | [[If-Then-Else|if]] (%nick.r !== 0) { [[hadd]] %table %nick.r [[$1-|$2]] [[$gettok]]([[$hget]](%table,%nick.r),2,32) } | ||
+ | [[If-Then-Else|else]] { [[hadd]] %table -lastnick [[$1-|$2]] } | ||
+ | } | ||
+ | } |
Latest revision as of 00:21, 3 March 2011
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AUTH_UPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; by Vliedel -- #vliedel @ QuakeNet ; version 1.1 (written and tested on mIRC 6.2) ; made for networks supporting WHOX ; ; ;What does this script do? ; ; - updates the auths of nicks and stores them in a hash table ; - if a channel is too big, /who nick1,nick2,nick3 etc is done untill the auths for the channel is updated ; - users who have a site with the auth in it will be saved without a /who ; ie: "Vliedel" in "Vliedel.users.quakenet.org" will be treated as auth on the QuakeNet network ; - users who are not authed (auth 0) will be checked every x time to see if they are authed yet ; - script updates from largest to the smallest channel ; ; ;How to use this script? ; ; - config the options below ; - /load -rs auth_update.mrc to load the script ; - script starts on load or on connect ; - to get a nicks auth use: $auth(nick) or $auth(nick,cid) ; - /authupdate.next <nick> [nick] [nick] ... can be used to get auths of those nicks as soon as possible ; please note that this will use a bit less efficient way to get the auths. ; You can use the following script to see when such a requested nick is updated ; on *:SIGNAL:authupdate:{ ; if ($2 == $null) { echo -a Requested: $1 is not on a common channel } ; elseif ($2 == 0) { echo -a Requested: $1 is not authed } ; else { echo -a Requested: $1 is authed as $2 } ; } ; ; Note that this signal returns $2 == $null when someone isn't on a common channel. ; This may occur for example when someone parted a channel between the /who and the who reply. ; ; - /authupdate can be used to make the script update the auths without waiting for the timer to trigger it ; - You can use the following script to see when a nick is updated ; on *:SIGNAL:authupdate.new:{ ; if ($2 == 0) { echo -a $1 is not authed } ; else { echo -a $1 is authed as $2 } ; } ; ; ; ;Why is this script good? ; ; - sending /who chan for every channel is not needed and goes slow (lag) ; - sending /who chan on join may cause Excess Flood or Max sendQ exceeded ; - sending /who chan1,chan2,chan3 can be much faster, but only if there are not too many results (Max sendQ exceeded) ; - unauthed users can auth without you knowing, so you need to check if they're authed every so many time. ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SETTINGS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; alias -l max.who { ; maximum number of replies in a WHO, too high may cause 'Max sendQ exceeded' disconnection ; too low may take the script a long time to update the auths, 1000 should be fine for most situations return 1000 } alias -l len.who { ; maximum length of the /who <string>, too long may cause the server to ignore the command ; too low may slow things down, 400 should be fine in most cases return 400 } alias -l delay.who { ; N seconds after your first join, the script starts to update the auths return 10 } alias -l repeat.who { ; wait N seconds after doing /who to do the next check and /who return 20 } alias -l minnicks.who { ; minimum nr of nicks with unknown auth in a channel to do /who #channel rather then /who nick,nick, return 3 } alias -l minratio.who { ; minimum ratio of (nicks with unknown auth) / (total nicks) in a channel to do /who #channel rather then /who nick,nick, return 0.04 } alias -l queue.repeat.who { ; number of seconds to do the next /who to check if someone who wasn't authed is now authed return 600 } alias -l next.wait { ; wait N seconds to do the next /who check triggered by authupdate.next after the last /who return 10 } alias -l used.network { ; The networks the script is supposed to work on (case sensitive). ; NOTE that the script ONLY works on networks supporting WHOX (ircu 2.10.* should work) ; $1 is the network return $istokcs(QuakeNet UnderNet GameSurge HanIRC NetGamers OGameNet,$1,32) } alias -l auth.site { ; For every network a check to see if a user has a site where his authname is in ; $1 is the network, $2 is the site if ($1 === QuakeNet) { return $iif(*.users.quakenet.org iswm $2,$true) } elseif ($1 === UnderNet) { return $iif(*.users.undernet.org iswm $2,$true) } elseif ($1 === GameSurge) { return $iif(*.*.GameSurge iswm $2,$true) } elseif ($1 === HanIRC) { return $iif(*.users.HanIRC.org iswm $2,$true) } elseif ($1 === NetGamers) { return $iif(*.users.netgamers.org iswm $2,$true) } elseif ($1 === OGameNet) { return $iif(*.user.OGameNet iswm $2,$true) } } alias -l auth.from.site { ; For every network the method to return the auth from the site ; $1 is the network, $2 is the site if ($1 === QuakeNet) { return $gettok($2,1,46) } elseif ($1 === UnderNet) { return $gettok($2,1,46) } elseif ($1 === GameSurge) { return $gettok($2,1,46) } elseif ($1 === HanIRC) { return $gettok($2,1,46) } elseif ($1 === NetGamers) { return $gettok($2,1,46) } elseif ($1 === OGameNet) { return $gettok($2,1,46) } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; alias auth { if (!$isid) { $iif($show,.auth,auth) $1- | return } if ($1 == $null) || (($2 !== $null) && ((!$scid($2)) || (!$2))) { return } return $hget(auths. $+ $iif($2 !== $null,$2,$cid),$1) } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTHUPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; alias authupdate { echo -a Auth update: $auth_update.update } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTHUPDATE.NEXT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; alias authupdate.next { var %i = $0 while (%i) { var %n = $gettok($1-,%i,32) if (!$comchan(%n,1)) { .signal authupdate %n } else { auth.n.add %n } dec %i } if (!$timer($cid $+ .auth_update.update)) { auth_update.update n } else { var %d = $timer($cid $+ .auth_update.update).delay , %l = $timer($cid $+ .auth_update.update).secs .timer $+ $cid $+ .auth_update.update 1 $iif($calc(%d - %l) < $next.wait,$calc($v2 - $v1),0) auth_update.update n } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LOAD EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; on *:LOAD:{ scon -at1 auth_load } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_LOAD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; alias -l auth_load { .timer $+ $cid $+ .auth_update.update 1 $delay.who auth_update.update if ($hget(auths. $+ $cid)) { hfree $v1 } if ($hget(auths.l. $+ $cid)) { hfree $v1 } if ($hget(auths.q. $+ $cid)) { hfree $v1 } if ($hget(auths.n. $+ $cid)) { hfree $v1 } if ($hget(auths.u. $+ $cid)) { hfree $v1 } hmake auths. $+ $cid 200 hmake auths.l. $+ $cid 200 hmake auths.q. $+ $cid 200 hmake auths.n. $+ $cid 100 var %i = $comchan($me,0) while (%i) { var %chan = $comchan($me,%i) var %j = $nick(%chan,0) while (%j) { auth.l.add.wid $chan(%chan).wid $nick(%chan,%j) dec %j } dec %i } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.UPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; alias -l auth_update.update { var %who if (!$hget(auths.u. $+ $cid)) { .timer $+ $cid $+ .auth_update.update off hmake auths.u. $+ $cid 200 var %who = $auth_update.who if (%who) { hadd auths.u. $+ $cid -mask %who $+ ,,, $+ 273 .timer $+ $cid $+ .auth_update.timeout 1 $calc($repeat.who * 2) auth_update.timeout .quote WHO $hget(auths.u. $+ $cid,-mask) % $+ nat,273 } else { hfree auths.u. $+ $cid .timer $+ $cid $+ .auth_update.update 1 $$repeat.who auth_update.update } } if (%who) { return updating } elseif ($hget(auths.u. $+ $cid)) { return already in progress } else { return nothing to update } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.TIMEOUT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; alias -l auth_update.timeout { hfree auths.u. $+ $cid auth_update.update } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.SORT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; sorts channels by number of nicks in channel ; <number of nicks>.<channel number> ; returns 127.1 23.2 <= means 127 nicks on comchan 1 alias -l auth_update.sort { var %i = $comchan($me,0) , %chans while (%i) { var %chans = %chans $nick($comchan($me,%i),0) $+ . $+ %i dec %i } return $sorttok(%chans,32,n) } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.WHO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $auth_update.who(N,L) ; returns #chan,#chan,nick,nick alias -l auth_update.who { var %t = auths.u. $+ $cid , %t.l = auths.l. $+ $cid , %t.q = auths.q. $+ $cid , %t.n = auths.n. $+ $cid var %n.max = $max.who , %l.max = $len.who , %n.min = $minnicks.who , %ratio = $minratio.who var %len , %n.nr , %chans , %nicks , %chans.go if $hget(auths.n.temp) { hfree auths.n.temp } hmake auths.n.temp var %n = $hget(%t.n,-firstnick) while (%n) { inc %len $calc($len(%n) + 1) inc %n.nr if (%n.nr > %n.max) || (%len > %l.max) { dec %n.nr | dec %len $calc($len(%n) + 1) | break } hadd auths.n.temp %n 1 hadd %t %n 1 var %nicks = $addtok(%nicks,%n,44) , %n = $gettok($hget(%t.n,%n),2,32) } var %sorted = $auth_update.sort , %i = $numtok(%sorted,32) , %time = $calc($ctime - $queue.repeat.who) while (%i) { var %comchan = $gettok($gettok(%sorted,%i,32),2,46) , %chan = $comchan($me,%comchan) , %id = $chan(%chan).wid $+ . var %n.c = $nick(%chan,0) , %left , %go if (%n.c > %n.max) { break } if $hget(auths.temp) { hfree auths.temp } hmake auths.temp var %n = $hget(%t.n,%id $+ -firstnick) while (%n) { if (!$hget(%t,%n)) || ($hget(auths.n.temp,%n)) { hadd auths.temp %n 1 | inc %left } if (((%left >= %n.min) && ($calc(%left / %n.c) >= %ratio)) || (%left == %n.c)) { var %go = 1 | break } var %n = $gettok($hget(%t.n,%id $+ %n),2,32) } var %n = $hget(%t.l,%id $+ -firstnick) while (%n) { if (!$hget(%t,%n)) && (!$hget(auths.temp,%n)) { inc %left } if (((%left >= %n.min) && ($calc(%left / %n.c) >= %ratio)) || (%left == %n.c)) { var %go = 1 | break } var %n = $gettok($hget(%t.l,%id $+ %n),2,32) } var %n = $hget(%t.q,%id $+ -firstnick) while (%n) { tokenize 32 $hget(%t.q,%id $+ %n) if ($1 > %time) { break } if (!$hget(%t,%n)) && (!$hget(auths.temp,%n)) { inc %left } if (((%left >= %n.min) && ($calc(%left / %n.c) >= %ratio)) || (%left == %n.c)) { var %go = 1 | break } var %n = $3 } if (!%go) { dec %i | continue } var %j = %n.c , %n.tmp = %n.nr , %l.tmp = %len , %chans.go = %chans.go %comchan inc %l.tmp $calc($len(%chan) + 1) while (%j) { var %n = $nick(%chan,%j) if (!$hget(%t,%n)) { inc %n.tmp } if ($hget(auths.n.temp,%n)) { dec %l.tmp $calc($len(%n) + 1) } dec %j } if (%l.tmp > %l.max) || (%n.tmp > %n.max) { dec %i | continue } var %j = $nick(%chan,0) while (%j) { var %n = $nick(%chan,%j) hadd %t %n 1 hdel auths.n.temp %n var %nicks = $remtok(%nicks,%n,1,44) dec %j } var %len = %l.tmp , %n.nr = %n.tmp , %chans = $addtok(%chans,%chan,44) dec %i } var %i = $comchan($me,0) while (%i) { var %chan = $comchan($me,%i) if (($nick(%chan,0) > %n.max) || (!$istok(%chans.go,%i,32))) { var %id = $chan(%chan).wid $+ . , %n = $hget(%t.l,%id $+ -firstnick) while (%n) { if (!$hget(%t,%n)) { inc %len $calc($len(%n) + 1) inc %n.nr if (%n.nr > %n.max) || (%len > %l.max) { break } hadd %t %n 1 var %nicks = $addtok(%nicks,%n,44) } var %n = $gettok($hget(%t.l,%id $+ %n),2,32) } if (%n.nr > %n.max) || (%len > %l.max) { break } var %n = $hget(%t.q,%id $+ -firstnick) while (%n) { tokenize 32 $hget(%t.q,%id $+ %n) if ($1 > %time) { break } if (!$hget(%t,%n)) { inc %len $calc($len(%n) + 1) inc %n.nr if (%n.nr > %n.max) || (%len > %l.max) { break } hadd %t %n 1 var %nicks = $addtok(%nicks,%n,44) } var %n = $3 } } if (%n.nr > %n.max) || (%len > %l.max) { break } dec %i } if $hget(auths.temp) { hfree auths.temp } if $hget(auths.n.temp) { hfree auths.n.temp } return $addtok(%chans,%nicks,44) } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RAW 354 SPECIAL WHO REPLY ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 354 <you> <nr> <nick> <auth> ; 354 Vliedel 273 L 0 RAW 354:& 273 & &:{ if ($comchan($3,1)) { auth_update.nick $3 $4 } elseif ($hget(auths.n. $+ $cid,$3)) { auth.n.rem $3 | .signal authupdate $3 } haltdef } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RAW 315 WHO END ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 315 <you> <requested> :End of /who list. ; 315 Vliedel #vliedel,Rutix,fishbot :End of /WHO list. RAW 315:& & end of /WHO list.: { if ($hget(auths.u. $+ $cid,-mask) == $2) { hfree auths.u. $+ $cid .timer $+ $cid $+ .auth_update.timeout off .timer $+ $cid $+ .auth_update.update 1 $iif($hget(auths.n. $+ $cid,1).item,$next.wait,$repeat.who) auth_update.update haltdef } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH_UPDATE.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = nick $2 = auth alias -l auth_update.nick { if ($hget(auths. $+ $cid,$1) != $2) { .signal authupdate.new $1 $2 auth.add $1 $2 } auth.l.rem $1 if ($2 == 0) { auth.q.add $1 } else { auth.q.rem $1 } if ($hget(auths.n. $+ $cid,$1)) { auth.n.rem $1 | .signal authupdate $1 $2 } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; JOIN EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; on *:JOIN:#:{ if ($nick == $me) && ($used.network($network)) { if (!$hget(auths. $+ $cid)) { hmake auths. $+ $cid 200 } if (!$hget(auths.l. $+ $cid)) { hmake auths.l. $+ $cid 200 } if (!$hget(auths.q. $+ $cid)) { hmake auths.q. $+ $cid 200 } if (!$hget(auths.n. $+ $cid)) { hmake auths.n. $+ $cid 100 } if (!$timer($cid $+ .auth_update.update)) { .timer $+ $cid $+ .auth_update.update 1 $delay.who auth_update.update } return } if ($auth.site($network,$site)) { auth_update.nick $nick $auth.from.site($network,$site) | return } if ($hget(auths. $+ $cid,$nick) == $null) { auth.l.add.wid $chan($chan).wid $nick } elseif ($hget(auths. $+ $cid,$nick) == 0) { auth.q.add.wid $chan($chan).wid $nick if (!$comchan($nick,2)) { auth.q.add.main $nick } } if ($hget(auths.n. $+ $cid,$nick)) { auth.n.add.wid $chan($2).wid $nick } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RAW 366 - END OF NAMES LIST ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 366 Vliedel #vliedel :End of /NAMES list. 366 Vliedel #Help :End of /NAMES list RAW 366:& & end of /names list.:{ var %i = $nick($2,0) , %t = auths. $+ $cid while (%i) { var %n = $nick($2,%i) if ($hget(%t,%n) == $null) { auth.l.add.wid $chan($2).wid %n } elseif ($hget(%t,%n) == 0) { auth.q.add.wid $chan($2).wid %n if (!$comchan(%n,2)) { auth.q.add.main %n } } if ($hget(auths.n. $+ $cid,%n)) { auth.n.add.wid $chan($2).wid %n } dec %i } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PART EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; on *:PART:#:{ if ($nick == $me) { auth.rem.chan $chan auth.l.rem.chan.all $chan auth.q.rem.chan.all $chan auth.n.rem.chan.all $chan } else { auth.l.rem.wid $chan($chan).wid $nick auth.q.rem.wid $chan($chan).wid $nick auth.n.rem.wid $chan($chan).wid $nick if (!$comchan($nick,2)) { auth.rem $nick auth.q.rem.main $nick auth.n.rem.main $nick } elseif ($auth.site($network,$site)) { auth_update.nick $nick $auth.from.site($network,$site) } } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; KICK EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; on *:KICK:#:{ if ($knick == $me) { auth.rem.chan $chan auth.l.rem.chan.all $chan auth.q.rem.chan.all $chan auth.n.rem.chan.all $chan } else { auth.l.rem.wid $chan($chan).wid $knick auth.q.rem.wid $chan($chan).wid $knick auth.n.rem.wid $chan($chan).wid $knick if (!$comchan($knick,2)) { auth.rem $knick auth.q.rem.main $knick auth.n.rem.main $knick } if ($auth.site($network,$site)) && ($comchan($nick,1)) { auth_update.nick $nick $auth.from.site($network,$site) } } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; QUIT EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; on *:QUIT:{ auth.rem $nick auth.l.rem $nick auth.q.rem $nick auth.n.rem $nick } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NICK EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; on *:NICK:{ auth.nick $nick $newnick auth.l.nick $nick $newnick auth.q.nick $nick $newnick auth.n.nick $nick $newnick if ($auth.site($network,$site)) { auth_update.nick $newnick $auth.from.site($network,$site) } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IAL-UPDATING EVENTS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; on *:TEXT:*:*:{ if ($auth.site($network,$site)) && ($comchan($nick,1)) { auth_update.nick $nick $auth.from.site($network,$site) } } on *:ACTION:*:*:{ if ($auth.site($network,$site)) && ($comchan($nick,1)) { auth_update.nick $nick $auth.from.site($network,$site) } } on *:NOTICE:*:*:{ if ($auth.site($network,$site)) && ($comchan($nick,1)) { auth_update.nick $nick $auth.from.site($network,$site) } } on *:RAWMODE:#:{ if ($auth.site($network,$site)) && ($comchan($nick,1)) { auth_update.nick $nick $auth.from.site($network,$site) } } on *:TOPIC:#:{ if ($auth.site($network,$site)) && ($comchan($nick,1)) { auth_update.nick $nick $auth.from.site($network,$site) } } on *:INVITE:#:{ if ($auth.site($network,$site)) && ($comchan($nick,1)) { auth_update.nick $nick $auth.from.site($network,$site) } } CTCP *:*:*:{ if ($auth.site($network,$site)) && ($comchan($nick,1)) { auth_update.nick $nick $auth.from.site($network,$site) } } RAW 352:& & & & & & & & *: { if ($auth.site($network,$4)) && ($comchan($6,1)) { auth_update.nick $6 $auth.from.site($network,$4) } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DISCONNECT EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; on *:DISCONNECT:{ if ($hget(auths.u $+ $cid)) { hfree $v1 } if ($hget(auths. $+ $cid)) { hfree $v1 } if ($hget(auths.q. $+ $cid)) { hfree $v1 } if ($hget(auths.l. $+ $cid)) { hfree $v1 } if ($hget(auths.n. $+ $cid)) { hfree $v1 } } ; 200 ; auths.cid nick --> auth ; 200 ; auths.l.cid chanwid.nick --> lnick rnick ; auths.l.cid chanwid.-firstnick --> first_nick_in_list ; auths.l.cid chanwid.-lastnick --> last_nick_in_list ; 200 ; auths.q.cid chanwid.nick --> ctime lnick rnick ; auths.q.cid chanwid.-firstnick --> first_nick_in_queue ; auths.q.cid chanwid.-lastnick --> last_nick_in_queue ; auths.q.cid nick --> ctime ; 100 ; auths.n.cid chanwid.nick --> lnick rnick ; auths.n.cid chanwid.-firstnick --> first_nick_in_list ; auths.n.cid chanwid.-lastnick --> last_nick_in_list ; auths.n.cid nick --> lnick rnick ; auths.n.cid -firstnick --> first_nick_in_list ; auths.n.cid -lastnick --> last_nick_in_list ; --------------------------------------------------------------------------------------------- ; --------------------------------------- AUTHS - TABLE --------------------------------------- ; --------------------------------------------------------------------------------------------- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.ADD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = nick $2 = auth alias -l auth.add { if (!$hget(auths. $+ $cid)) { return } hadd auths. $+ $cid $1 $2 } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = nick alias -l auth.rem { if (!$hget(auths. $+ $cid)) { return } hdel auths. $+ $cid $1 } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.REM.CHAN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = chan alias -l auth.rem.chan { if (!$hget(auths. $+ $cid)) { return } var %i = $nick($1,0) while (%i) { if (!$comchan($nick($1,%i),2)) { hdel auths. $+ $cid $nick($1,%i) } dec %i } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = nick $2 = newnick alias -l auth.nick { if ($hget(auths. $+ $cid,$1) !== $null) { hdel auths. $+ $cid $1 | hadd auths. $+ $cid $2 $v1 } } ; ---------------------------------------------------------------------------------------------------- ; --------------------------------------- AUTHS - LEFT - TABLE --------------------------------------- ; ---------------------------------------------------------------------------------------------------- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.ADD.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = wid $2 = nick alias -l auth.l.add.wid { var %table = auths.l. $+ $cid if (!$hget(%table)) { return } var %id = $1 $+ . , %lastnick = $hget(%table,%id $+ -lastnick) if ($hget(%table,%id $+ $2)) { return } if (%lastnick) { hadd %table %id $+ $2 %lastnick 0 hadd %table %id $+ %lastnick $gettok($hget(%table,%id $+ %lastnick),1,32) $2 } else { hadd %table %id $+ $2 0 0 hadd %table %id $+ -firstnick $2 } hadd %table %id $+ -lastnick $2 } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = nick alias -l auth.l.rem { if (!$hget(auths.l. $+ $cid)) { return } var %i = $comchan($1,0) while (%i) { auth.l.rem.wid $chan($comchan($1,%i)).wid $1 dec %i } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.REM.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = wid $2 = nick alias -l auth.l.rem.wid { var %table = auths.l. $+ $cid if (!$hget(%table)) { return } var %id = $1 $+ . , %val = $hget(%table,%id $+ $2) if (!%val) { return } var %nick.l = $gettok(%val,1,32) , %nick.r = $gettok(%val,2,32) hdel %table %id $+ $2 if (%nick.l == 0) && (%nick.r == 0) { hdel %table %id $+ -lastnick | hdel %table %id $+ -firstnick | return } if (%nick.l !== 0) { hadd %table %id $+ %nick.l $gettok($hget(%table,%id $+ %nick.l),1,32) %nick.r } else { hadd %table %id $+ -firstnick %nick.r } if (%nick.r !== 0) { hadd %table %id $+ %nick.r %nick.l $gettok($hget(%table,%id $+ %nick.r),2,32) } else { hadd %table %id $+ -lastnick %nick.l } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.REM.CHAN.ALL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = chan alias -l auth.l.rem.chan.all { if (!$hget(auths.l. $+ $cid)) { return } hdel -w auths.l. $+ $cid $chan($1).wid $+ .* } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.L.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = nick $2 = newnick alias -l auth.l.nick { if ($1 == $2) { return } var %table = auths.l. $+ $cid if (!$hget(%table)) { return } var %i = $comchan($2,0) while (%i) { var %id = $chan($comchan($2,%i)).wid $+ . , %val = $hget(%table,%id $+ $1) if (%val) { hdel %table %id $+ $1 hadd %table %id $+ $2 %val var %nick.l = $gettok(%val,1,32) , %nick.r = $gettok(%val,2,32) if (%nick.l !== 0) { hadd %table %id $+ %nick.l $gettok($hget(%table,%id $+ %nick.l),1,32) $2 } else { hadd %table %id $+ -firstnick $2 } if (%nick.r !== 0) { hadd %table %id $+ %nick.r $2 $gettok($hget(%table,%id $+ %nick.r),2,32) } else { hadd %table %id $+ -lastnick $2 } } dec %i } } ; ----------------------------------------------------------------------------------------------------- ; --------------------------------------- AUTHS - QUEUE - TABLE --------------------------------------- ; ----------------------------------------------------------------------------------------------------- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.ADD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = nick alias -l auth.q.add { if (!$hget(auths.q. $+ $cid)) { return } auth.q.add.main $1 var %i = $comchan($1,0) while (%i) { auth.q.add.wid $chan($comchan($1,%i)).wid $1 dec %i } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.ADD.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = wid $2 = nick alias -l auth.q.add.wid { var %table = auths.q. $+ $cid if (!$hget(%table)) { return } var %id = $1 $+ . , %ctime = $iif($hget(%table,$2) == $null,$ctime,$v1) auth.q.rem.wid $1 $2 var %lastnick = $hget(%table,%id $+ -lastnick) if (!%lastnick) { hadd %table %id $+ $2 %ctime 0 0 hadd %table %id $+ -firstnick $2 hadd %table %id $+ -lastnick $2 return } if (%ctime >= $hget(%table,%lastnick)) { hadd %table %id $+ $2 %ctime %lastnick 0 hadd %table %id $+ %lastnick $gettok($hget(%table,%id $+ %lastnick),1-2,32) $2 hadd %table %id $+ -lastnick $2 return } var %n = $hget(%table,%id $+ -firstnick) , %nick = $2 while (%n) { tokenize 32 $hget(%table,%id $+ %n) if (%ctime <= $1) { hadd %table %id $+ %n $1 %nick $3 if ($2 == 0) { hadd %table %id $+ %nick %ctime 0 %n hadd %table %id $+ -firstnick %nick } else { hadd %table %id $+ %nick %ctime $2 %n hadd %table %id $+ $2 $gettok($hget(%table,%id $+ $2),1-2,32) %nick } break } var %n = $3 } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.ADD.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = nick alias -l auth.q.add.main { if (!$hget(auths.q. $+ $cid)) { return } hadd auths.q. $+ $cid $1 $ctime } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = nick alias -l auth.q.rem { if (!$hget(auths.q. $+ $cid)) { return } var %i = $comchan($1,0) while (%i) { auth.q.rem.wid $chan($comchan($1,%i)).wid $1 dec %i } auth.q.rem.main $1 } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = wid $2 = nick alias -l auth.q.rem.wid { var %table = auths.q. $+ $cid if (!$hget(%table)) { return } var %id = $1 $+ . , %val = $hget(%table,%id $+ $2) if (!%val) { return } var %nick.l = $gettok(%val,2,32) , %nick.r = $gettok(%val,3,32) hdel %table %id $+ $2 if (%nick.l == 0) && (%nick.r == 0) { hdel %table %id $+ -lastnick | hdel %table %id $+ -firstnick | return } if (%nick.l !== 0) { hadd %table %id $+ %nick.l $gettok($hget(%table,%id $+ %nick.l),1-2,32) %nick.r } else { hadd %table %id $+ -firstnick %nick.r } if (%nick.r !== 0) { hadd %table %id $+ %nick.r $gettok($hget(%table,%id $+ %nick.r),1,32) %nick.l $gettok($hget(%table,%id $+ %nick.r),3,32) } else { hadd %table %id $+ -lastnick %nick.l } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = nick alias -l auth.q.rem.main { if (!$hget(auths.q. $+ $cid)) { return } hdel auths.q. $+ $cid $1 } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.REM.CHAN.ALL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = chan alias -l auth.q.rem.chan.all { var %table = auths.q. $+ $cid if (!$hget(%table)) { return } hdel -w %table $chan($1).wid $+ .* var %i = $nick($1,0) while (%i) { if (!$comchan($nick($1,%i),2)) { hdel %table $nick($1,%i) } dec %i } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.Q.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = nick $2 = newnick alias -l auth.q.nick { if ($1 == $2) { return } var %table = auths.q. $+ $cid if (!$hget(%table)) { return } var %i = $comchan($2,0) while (%i) { var %id = $chan($comchan($2,%i)).wid $+ . , %val = $hget(%table,%id $+ $1) if (%val) { hdel %table %id $+ $1 hadd %table %id $+ $2 %val var %nick.l = $gettok(%val,2,32) , %nick.r = $gettok(%val,3,32) if (%nick.l !== 0) { hadd %table %id $+ %nick.l $gettok($hget(%table,%id $+ %nick.l),1-2,32) $2 } else { hadd %table %id $+ -firstnick $2 } if (%nick.r !== 0) { hadd %table %id $+ %nick.r $gettok($hget(%table,%id $+ %nick.r),1,32) $2 $gettok($hget(%table,%id $+ %nick.r),3,32) } else { hadd %table %id $+ -lastnick $2 } } dec %i } if ($hget(%table,$1) !== $null) { hdel %table $1 | hadd %table $2 $v1 } } ; ---------------------------------------------------------------------------------------------------- ; --------------------------------------- AUTHS - NEXT - TABLE --------------------------------------- ; ---------------------------------------------------------------------------------------------------- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.ADD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = nick alias -l auth.n.add { if (!$hget(auths.n. $+ $cid)) { return } auth.n.add.main $1 var %i = $comchan($1,0) while (%i) { auth.n.add.wid $chan($comchan($1,%i)).wid $1 dec %i } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.ADD.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = wid $2 = nick alias -l auth.n.add.wid { var %table = auths.n. $+ $cid if (!$hget(%table)) { return } var %id = $1 $+ . , %lastnick = $hget(%table,%id $+ -lastnick) if ($hget(%table,%id $+ $2)) { return } if (%lastnick) { hadd %table %id $+ $2 %lastnick 0 hadd %table %id $+ %lastnick $gettok($hget(%table,%id $+ %lastnick),1,32) $2 } else { hadd %table %id $+ $2 0 0 hadd %table %id $+ -firstnick $2 } hadd %table %id $+ -lastnick $2 } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.ADD.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = nick alias -l auth.n.add.main { var %table = auths.n. $+ $cid if (!$hget(%table)) { return } var %lastnick = $hget(%table,-lastnick) if ($hget(%table,$1)) { return } if (%lastnick) { hadd %table $1 %lastnick 0 hadd %table %lastnick $gettok($hget(%table,%lastnick),1,32) $1 } else { hadd %table $1 0 0 hadd %table -firstnick $1 } hadd %table -lastnick $1 } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = nick alias -l auth.n.rem { if (!$hget(auths.n. $+ $cid)) { return } var %i = $comchan($1,0) while (%i) { auth.n.rem.wid $chan($comchan($1,%i)).wid $1 dec %i } auth.n.rem.main $1 } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = wid $2 = nick alias -l auth.n.rem.wid { var %table = auths.n. $+ $cid if (!$hget(%table)) { return } var %id = $1 $+ . , %val = $hget(%table,%id $+ $2) if (!%val) { return } var %nick.l = $gettok(%val,1,32) , %nick.r = $gettok(%val,2,32) hdel %table %id $+ $2 if (%nick.l == 0) && (%nick.r == 0) { hdel %table %id $+ -lastnick | hdel %table %id $+ -firstnick | return } if (%nick.l !== 0) { hadd %table %id $+ %nick.l $gettok($hget(%table,%id $+ %nick.l),1,32) %nick.r } else { hadd %table %id $+ -firstnick %nick.r } if (%nick.r !== 0) { hadd %table %id $+ %nick.r %nick.l $gettok($hget(%table,%id $+ %nick.r),2,32) } else { hadd %table %id $+ -lastnick %nick.l } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = nick alias -l auth.n.rem.main { var %table = auths.n. $+ $cid if (!$hget(%table)) { return } var %val = $hget(%table,$1) if (!%val) { return } var %nick.l = $gettok(%val,1,32) , %nick.r = $gettok(%val,2,32) hdel %table $1 if (%nick.l == 0) && (%nick.r == 0) { hdel %table -lastnick | hdel %table -firstnick | return } if (%nick.l !== 0) { hadd %table %nick.l $gettok($hget(%table,%nick.l),1,32) %nick.r } else { hadd %table -firstnick %nick.r } if (%nick.r !== 0) { hadd %table %nick.r %nick.l $gettok($hget(%table,%nick.r),2,32) } else { hadd %table -lastnick %nick.l } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.REM.CHAN.ALL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = chan alias -l auth.n.rem.chan.all { var %table = auths.n. $+ $cid if (!$hget(%table)) { return } hdel -w %table $chan($1).wid $+ .* var %i = $nick($1,0) while (%i) { if (!$comchan($nick($1,%i),2)) { auth.n.rem.main $nick($1,%i) } dec %i } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS AUTH.N.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = nick $2 = newnick alias -l auth.n.nick { if ($1 == $2) { return } var %table = auths.n. $+ $cid if (!$hget(%table)) { return } var %i = $comchan($2,0) while (%i) { var %id = $chan($comchan($2,%i)).wid $+ . , %val = $hget(%table,%id $+ $1) if (%val) { hdel %table %id $+ $1 hadd %table %id $+ $2 %val var %nick.l = $gettok(%val,1,32) , %nick.r = $gettok(%val,2,32) if (%nick.l !== 0) { hadd %table %id $+ %nick.l $gettok($hget(%table,%id $+ %nick.l),1,32) $2 } else { hadd %table %id $+ -firstnick $2 } if (%nick.r !== 0) { hadd %table %id $+ %nick.r $2 $gettok($hget(%table,%id $+ %nick.r),2,32) } else { hadd %table %id $+ -lastnick $2 } } dec %i } var %val = $hget(%table,$1) if (%val) { hdel %table $1 hadd %table $2 %val var %nick.l = $gettok(%val,1,32) , %nick.r = $gettok(%val,2,32) if (%nick.l !== 0) { hadd %table %nick.l $gettok($hget(%table,%nick.l),1,32) $2 } else { hadd %table -firstnick $2 } if (%nick.r !== 0) { hadd %table %nick.r $2 $gettok($hget(%table,%nick.r),2,32) } else { hadd %table -lastnick $2 } } }