CRACK.cd

Don't Pay, We Know Another Way!

Ads

DCCASSIST V1.72

Download the crack/serial/keygen for "dccAssist v1.72".
Download with DSL speed using USENExT.

NFO

readme.txt: dccAssist v1.72 - Installation Instructions -------------------------------------------------------------------------------- ---------- Extract dccAssist.mrc from the zip file either into your mIRC directory, or create a subfolder for it, then launch mIRC and type. /load -rs1 dccAssist.mrc If you installed into a subfolder, include that path in the above command. You'll get a script warning, you MUST select YES to this question for the in stallation to go smoothly. Next you'll need to ensure a few mIRC options (Alt-O) are set correctly to ensure the script runs efficiently. IRC / Rejoin channels on connect (OFF) ...handled by dccAssist to allow nickserv identify. IRC / Keep channels open (ON) DCC / Auto-get file and minimize (ON) DCC / If file exists (RESUME) DCC / Options / Flush files (ON) DCC / Options / Show warning (OFF) After that, all is done. Note: You don't need to put the /load command into the auto perform section in mIRC. Upgrading From a Previous Version -------------------------------------------------------------------------------- ---------- Close mIRC, overwrite dccAssist.mrc and relaunch, it is not necessary to /load t he script again. Failure in following this procedure, may result in corruption to the scri pts files. Note: v1.7x now stores all it's networks in mIRC's servers.ini, if you wish to convert all those you have setup use the following command. /DA.NetworksIni.Convert [-c to clear servers.ini first] Getting Help -------------------------------------------------------------------------------- ---------- If you have any queries about how to use the script, or wish to report requests for improvements, or bugs please use the forum at http://forum.dccassist.com Alternatively there is usually someone in #dccAssist on irc.bararcade.com who ma ybe able to help. Version History ( + Added, / Fixed or Changed, - Removed, * Broken ) -------------------------------------------------------------------------------- ---------- v1.72 (7th July 2004) / using the NOT boolean search was failing in some circumstances. / when editing a filter it would add another window rather than replacing the ol d one. / fixed issues with shutdown. / rearranged a few more menus. / syntax error at line 955. - removed xdccsearch & isohunt from add pack search. v1.72rc4b (5th June 2004) / yet another syntax error at line 4045. v1.72rc4a (5th June 2004) / another syntax error at line 4851. v1.72rc4 (5th June 2004) + when joining a full channel, DA will now retry upto 10 times automatic ally. / pack command parsing now ignores /msg <nick> xdcc info. / found another instance where da.status would stay at 99%. / syntax error at line 4607 when starting with mIRC v6.15. * problems with shutdown still occur. v1.72rc3 (20th April 2004) / double clicking title in da.search caused an entry to be added to da.status. / rerequesting packs for da.log would cause garbage to be entered in fields. / save & exit wasn't working. - diagnostic line was actually left in which wrote to debug.txt (can be del eted). * there are some intermittent problems with shutdown. v1.72rc2 (13th April 2004) / rearranged some of the popups to make them look cleaner when running with othe r scripts. / the other networks list is now split into sections if necessary. / sorting by using the keyboard shortcuts now work beyond 9 columns. / sorting by age wasn't working correctly. - exit from all popups. connections from popups in DA.*. v1.72rc1 (12th April 2004) + close redundant servers is now also assigned to a function key (Ctrl-F1 9; by default). / spam filtering was only working if the global message window was enabled. / regex filters which matched just the description were failing. / minor change to the spam bouncing notice. / when adding a pack from nicklist, a description was put in the pack field. v1.72b15 (10th April 2004) + the pack description can now be included in typed dcc requests, by placing a & #39;/' after the pack number. + when a pack fails in da.status the switchbar will turn green. + pressing <shift> while adding packs from da.packs or requeuing from da .log reverses the default status it's added as, i.e. waiting or paused. + messages caught by the spam filters can be bounced back to the sender together with a notice to say they've been blocked. + ability to shutdown windows when all transfers have completed. + when adding single packs to da.status ability to confirm details, i.e to ensur e pack request format is correct. / failed packs are no longer moved to the log, only successfully completed packs are. / the shortcut dialog now uses a listbox rather than a dropdown scroller. / if there are 2 bots on da.status and one of the bots had a name which was the subset of the other, i.e. MP3-XDCC4 & MP3-XDCC, DA got awfully confused! v1.72b14 (6th April 2004) + when using find/find next in a window the search string is now remembered for just that window so that find next will search for the relevent string in each wind ow. / when connecting to a new server, DA now adds the server which it first connect s to rather than the server it eventually connects to. / responses from certain bot weren't always being processed. / when requesting from some bots, da.status would always show 99% even w hen the transfer had completed, causing DA to repeatedly request. v1.72b13 (26th January 2004) + if you're receiving a file and another dcc send comes in with the same fil ename it'll get rejected and paused on da.status. + da.status now shows the total transferred that day. (this is the beginning of statistics which will be expanded in a future release) + ability to request a pack on da.status immediately, regardless of your downloa d settings. / when creating a filter, no horizontal scrollbar would be added. / new filter shortcut was accidently removed. / re-requesting a pack from da.log wasn't working. / custom pack commands were picking up rubbish from fserve channels. / if the title line was highlighted when using the priority shortcuts, lines wou ld be deleted. / if the pack and age columns were enabled on da.packs they'd appear mix ;ed up. / better support for networks that have variations in their network id. / requesting from mp3 lists wasn't added correct filename. v1.72b12 (14th November 2003) / when a server was slow at connecting it would attempt joining profile channels too early, usually causing a 'please register first' error from the server and then failing to join the channels. / channel pack hotlinks weren't working on some obscure formats. / upgrade routines weren't interpreting versions correctly, i.e it thought b 10 < b6. / if starting multiple profiles that share the same network, some channels would n't get joined, aswell as joining nonsensical channels. / when adding a pack to da.status the description would be ignored. / if a bot doesn't respond to a request it will be retried as per the 'r etries before fail' option, after which point if will get set to failed. v1.72b11 (13th November 2003) / definately fixed problem with da.packs only showing description. / if you requested multiple packs from the same bot, where the #pack number of o ne matched the start of another pack number, i.e. #1 & #11, then da.status wo uld update the wrong line, sometimes causing da to flood the bot constantly requesting the same pac k. v1.72b10 (13th November 2003) / da.status would frequently stop processing. v1.72b9 (13th November 2003) / adding of permanent filters/highlights wasn't working. / flashing of da.messages wasn't working if it was enabled. / at times da.packs would screw up and only show description. / some stopped dcc gets weren't getting their window closed. / custom pack commands weren't being noticed. v1.72b8 (12th November 2003) + server windows can be set to always show, as you can already do with channels. + basic scheduling facilities to allow you to pause & unpause downloads on da.st atus at a designated time. / find function key wasn't working. / tidy up of da.status wouldn't work if use of log was enabled, but da.log w asn't open. / hide server windows only works for connected networks. / when opening profiles which would cause network connections to close, their se rver windows weren't being closed. / filters attached to profiles should now work correctly. / moved a few items around on the options dialog. / requesting a large number of dcc lists would cause a line too long error. - hide profile filters & append profiles tick boxes in main options dialog, you can access the options from the select profiles dialog. v1.72b7 (9th November 2003) / typed dcc requests would be ignored if prompt for description was enabled. / opening of da.packs when first installed would cause a /hadd error. / not joining channels requested by da.status if connecting to server at same ti me. / after nickserv identify was joining channels too fast. / on the dialog, copying a network to a profile would blank out favourite networ ks. v1.72b6 (7th November 2003) / filters and highlights would cease to work on b5, you'll need to recreate any that you defined yourself. / despite following the upgrade procedure da.packs windows would still show inco rrectly. v1.72b5 (6th November 2003) + columns on da.packs can now be removed by setting the width to zero. + the fserve command bar can now be disabled. + filters are now sorted when created. + when starting a profile which only consists of filters the connected networks will remain unaffected. + the use of timers to repeatedly request until queued or to resend can be disab led on channels that don't like that method. + connections/networks now has a menu option to add the current network to favou rites. + improved support for custom request formats, so that the sysreset format of '/msg <nick> xdcc get poolname #pack' will work. + nicklist menu item to filter by selected nick. + option to only include packs from voiced, op'd bots. + quick filter window which allows you to filter on whatever is entered in the w indows editbox. + if no description is entered when manually adding a pack, it will be replaced by the filename once receiving of the file starts. + upon first loading, da.packs is now opened, hopefully this'll stop the str eam of messages saying the script doesn't work. / sorting of da.packs or filters failed and caused a /filter error if pack monit oring was disabled. / close redundant networks would sometimes close networks in use. / unknown command error whenever dcc chat windows opened. / improved fserve command bar to hopefully prevent it from appearing in normal d cc chat sessions. / profile list in networks dialog is now sorted. / remembered pack windows at startup wouldn't have a horizontal scrollbar. / adding or editing of servers was working intermittently. / cursor position wasn't remembered when updating pack windows. / new messages weren't highlighting the da.messages switchbar button. / further improvements to the detection of free slots, queue, min, record speed. / channels wouldn't rejoin upon reconnect if nick registration was required. / uppercase pack request formats caused problems when adding packs. / clearing selected in da.log would at times cause other packs to be removed fro m queues. / da.status wouldn't always update when a bot came back online. / global highlights would vanish if a profile with filters or highlights was loa ded. / slots update was totally broken. / add server to server list was broken. / close redundant networks now checks to see whether there are any dcc gets or s ends before closing a network. / when removing files from da.status or da.log it will prompt for confirmation i f the confirm deletions option is on. / /me actions sent from a query window weren't captured by da.messages if th e mIRC options 'use single message window' was switched on. / queue status messages that are sent as private messages no longer appear in da .messages. / double clicking on header in da.packs would cause it to be added to da.status. / dcc gets not requested thru DA would at times cause da.status to move lines to log. / moved items around in some menus and clarified descriptions. / when connecting to FEFnet & EFnet one of the connections would get autoclosed. / confirm deletion now works with <del> shortcut from da.status & da.log . / deleted files now goto the recycle bin. / if a filter/highlight was edited but left unchanged, it would get deleted. / da.status sort by 'done' at startup wasn't working. / when opening da.packs monitoring wasn't being enabled if it wasn't alr eady. / the keyboard shortcut for sorting now requires Ctrl to be used, i.e Ctrl-3. / mIRC v6.12 is now required, in light of the recent security issues. / if a bot fails to respond to a request the pack is now paused, rather than it keep requesting. - function key definitions from window titlebars. (function keys still work) * filters attached to profiles may have problems. v1.72b4 (26th August 2003) / at times when a download completed it would still show 99% and thus ge t requested again. / editing of profile filters. / bot denied response was being processed as request accepted at times. v1.72b3 (25th June 2003) + can now save filters at exit (with contents) and will be restored nex ;t time you launch, i said in the past i wouldn't add this... but I needed it last night, so t here you go. :) / eta on da.status was showing excessive times sometimes. / the pack commands were getting deleted each time mIRC was started. / da.messages was blocking messages from people you'd responded too if they matched a spam filter. / when starting profiles, focus to active winndow is now maintained. / somehow managed to remove the options menu from the popup in b2. / if write log was on, but auto remove was off, pack wouldn't get added to l og. / at certain times 'connection lost' would be shown when pack was comple te. / line too long errors when da.packs was processing certain highlights. / if da.packs automatic sort is on it would sort even if you'd not pressed t ab to update. / if you do a manual sort on da.packs and there are new packs waiting, they are added. v1.72b2 (24th June 2003) / shortcuts that don't have function keys assigned to them no longer appear in titlebar. / if close redundant channels closed all connection, it would clear whatever the active window was. / altered pack processing routines to try and smooth out cpu usage. / change of nick before connect wasn't implemented correctly. / popups would sometimes do nothing. / highlights weren't getting saved. / new filters now use the active window to filter from, rather than da.packs, if a filter window isn't active it'll use da.packs if it's open. v1.72b1 (23rd June 2003) + you can now collapse/expand all networks with a shortcut, ctrl-f1 is default. + if you've specified a particular nickserv for a network, your nick will be changed automatically upon connect. + ability to search xdccsearch. + desktop windows now let mirc handle remembering positions. + session start & end markers now in spamlog, same format at mirc's log file s. + made big changes to the way da.status works, it should be faster now and hopef ully more reliable. + more backend efficiency improvements to pack processing. / error when editing server. / re added support for #altrock on efnet, i removed support awhile back to impro ve the accuracy of the pack detection routines ...as I thought the channel has stoppe d putting pack ads in the channel. / removing a server didn't work. / changing the status of a line on da.status would cause the selected line to ch ange. / bizarre join alias conflict with mirc which caused mirc to not rejoin channels after a disconnect. / da.status would show wrong remaining time intermittently. / copy/paste lines from packetnews would add invalid networks to the network lis t. / switching off pack monitoring then switching it back on would cause continuous /filter errors. / invalid window error at line 2064 / sorting now keeps the the same cursor position, rather than the same item. / mp3assist wouldn't remember received lists. / reduced the size of the main dialog a little (now it fits on my mini notebooks screen!) / sort by size wasn't working on status & log (why do i keep breaking this!? ) - xdccspy search option as the site is unreliable. - pack & status refresh delay, with recent changes, they aren't that releven t anymore. v1.71a (19th June 2003) + the delay upon 'connection lost' is now definable. / when using the free slots checkbox on filters, it also included n/a. / serious bug that was introduced by previous release that caused the requests o f packs to use 'remove' and other nonsense. / when starting a profile wouldn't always join channels. v1.71 (18th June 2003) + few backend improvements to the way packs listings are processed. + all networks list now has focus when opening networks dialog. + blocked spam messages can now be logged and viewed. + entering the descriptions for manually typed dcc requests can now be bypassed. / pressing tab in da.packs when no new packs would add filter. / moving servers up/down wasn't working. / flaw with network connections which would cause multiple connections for 1 network to open (hopefully fixed!). / line too long error at line 4151. / if someone messages you and they happened to be in an mp3 channel that you wer e in, the message wouldn't get thru. / manually typed dcc requests were using the default request format, rather than what was typed. - removed code that determined whether to show 'collapse/expand all con nections', it always shows both now, this will make the popups appear faster. - 'ignore messages from mp3 channels' option removed, was causing other messaging problems, need to rewrite the method of filtering these messages out, will reappear in a future release. v1.70 (15th June 2003) + ability to suppress dcc & mp3 spam, dcc listings will still be processed, you just won't see them in the channel after their initial listing. + support for channels like #datavault on Addictz which has a different request format, i.e /msg <nick> cunt send #1. + support for programs like coolmon, samurize, etc. script writes out dccAssist- export.txt at the interval of status refresh. + spam filters are ignored if you've replied to someone listed in da.message s + manually entered /msg or /ctcp <nick> xdcc send #pack are now pro cessed via da.status. + ability to set expirations to zero to disable them. + EFnet #xdcc-hub list processing. + all open DA windows are now remembered upon exit, and are re-opened when you relaunch. + popup that appears in the server & channels windows now also appears under the commands menu on the mIRC menubar. + redesigned filter options, ability to use boolean expressions, i.e (a OR b) AND c NOT d + redesigned network & profile dialogs. + 'other networks' listing in the same vain as 'other channels' + nickserv functionality overhauled, you can specify nickserv's by nick whic h will automatically be used on all servers that support nickerv, or you can specify nickserv's for individual networks. + automatic nickserv registration. + when using the add pack dialog you can now enter packs in the format of 1- 4 rather than entering 1,2,3,4. + ability to configure the colours that DA uses. + fserve navigation, removes the need to type anything in fserves, simply double click on folders/files. + option to prevent update of da.packs if it's active, pressing <tab> ; will force an update. + winrar will now be used to extract lists if it's installed. + the statusbar button for pack windows now gets highlighted when new packs arri ve, also applies to da.log & da.messages. + ability to redefine the function keys used by DA. + 'close redundant connections' which closes any network connection and channels for packs with aren't queued, receiving or for channels that are set as 'always show'. + when adding packs to da.status if the network isn't one known by the scrip t, it's added. + option to sort status be % done upon startup. + option to randomize request timeout. + option to auto collapse networks. + ability to add filters for network,channel,nick from da.status. + nick menu under connections, lists nicks you've defined in nickserv. + current sort column is now highlighted in title. + option for flashing for da.messages & da.log. + any DA window can now be placed on desktop. + ability to connect to servers, join and list channels from networks dialog. + ability to select more than one profile to be used at startup. + you can now sort by pressing the key for the relevent numbered column. + estimated queue time is now shown on queued items in da.status. / line not being added correctly if description was left blank on add/edit pack. / when switching to desktop window for da.status, it stopped updating. / on small files, the status line wasn't remembering the filename. / when changing font, horizontal scrollbar wasn't updated. / expire packs wasn't working. / da.status not updating file size on manually added packs, was overwriting nick instead. / min & record speed sorting not working on da.packs. / filter by channel would include other channels if they had the same start, i.e #iso would include #isoworld. / script wouldn't save all setting if the status window wasn't open upon exiting mIRC. / default setting weren't getting set under certain circumstances. / error messages when adding filters when the packs window isn't open. / rewrote slot/queue/min/record parsing routines to improve detection performanc e and flexibility. / done column on status no longer briefly resets to 0% after 'connection lost'. / script will no longer constantly try to join channels that are invite only or you've been banned from, pack will fail instead. / joining channels upon connecting to servers is now delayed until nickserv iden tify is complete. / when pausing or removing packs from da.status a dccallow -nick would be done t wice. - show progress menu option, as was pretty pointless with recent addition of don e column on da.status. - auto request option for consolidated lists. - @, + prefix on nick, I'm sick of the ongoing problems with them. - da.status automatic pausing that was added as a workaround to stalling issues. - xdccspider search option as site no longer exists. v1.63 (20th February 2003) - workaround for issues caused by scripts like invision and polaris which overri de the internal mIRC join alias, this will stop the script joining #-n. - fixed the invalid $regex error at line 5079 error. - fixed the hdel insufficient parameters at line 2081 error. v1.62 (22nd January 2003) + where there is a query window open, messages are sent there rather than going to DA.Messages. + double clicking on a nick in DA.Messages will open a query window. + improved $network id detection for networks such as Tmirc which don't retu rn one. + improved trigger detection for #von + added 'request failed' delay, this represents the period of time a pac k will be paused for if the bot isn't responding, setting it to 0 will pause the pack i ndefinately. + added column to da.status to show % complete / altered pack parsing to pick up some packs it was previously missing. / altered parsing code the xdcc search engines to cater for their changing formats. / fixed the #-n bug, can't be 100% sure as it's never o ccured for me. / fixed url weblinks not launching bug. / fixed useless folders being created in the root. / fixed 'line too long error' when requesting lists. / fixed da.packs would open when da.logs was closed. / fixed double click on pack problems where the nick would contain a dot. / fixed problem with some passwords on nickserv ...you'll have to re-en ter all your nickserv's due to this, sorry. v1.61 (25th December 2002) / fixed reopening networks, for networks that failed to connect and were ma nually closed. / removed 'what network' dialog, now using a different method to get the network ID for networks that don't give it. / nickserv problems with it not identifying at times are now fixed. / connecting to some networks in the network list, would cause to to connect to the wrong network, this is now fixed v1.60 (24th December 2002) Main new features only, there have absolutely hundreds of minor features and twe aks added since the previous version, and I simply cannot remember all that i've added ! + mp3Assist module for use with channels like #mp3passion on Undernet, where you 'd normally use @find to search for stuff. Automates searching for mp3's and requesting lists, integrated with the status window to allow you to locally queue request s. + profiles, define lists of networks, channels & filters and then save them for later use. Ability to define a profile that will be used upon launching mirc. + improved filters, allowing you to either use a AND or OR boolean search or use a regular expression, together the being able to only list bots that have free slot s. + global private message window, so rather than either having seperate windows f or each nick that messages you or single message windows for each network, you can now have one window for all messages, together with the ability to setup filters to remove spam. + log window, ability to automatically move completed or failed items from the s tatus window to the log. + improved network & channel management, the script now comes complete with an e xtensive list of networks & channels which you can choose to list from the popup menu. + ability to queue packs straight from the channel, simply double click on the p ack number, also ability to add packs manually. + integrated search for packetnews, mydownloader & xdccspider. once you hav e results from these you can highlight the line in your web browser and copy it to the clipbo ard and it will then instantly appear in the add pack dialog. + improved logic for the status window, so that downloads will now be processed more efficiently, also ability to move items up and down to effectively change the priority, and also sorting options. v1.21 (27th October 2002) + when a bot goes offline, it is now reported correctly in the status window. v1.20 (15th October 2002) + further speed optimizations, all incoming lines from the channels are now buffered and processed at an even rate, so cpu spikes of heavy usage should no longer happen. + monitor slots option, this updates the slots/queues for all listed packs every 10 minutes. + monitor nick option, on/off option for preferred nick. + nick is now listed on the pack & status windows. + ability to collapse/expand servers (same as alt clicking on them), also collapse/expand all. + option to view channel from the pack & status windows. + improved parsing to pick up more line variations. + lots of small tweaks to improve usability. / highlight editing now updates all packs, as it worked previously. / unwanted entries are no longer added to the server lists. / DA.All renamed to DA.Packs to avoid future confusion... / when a pack is requested, it waits 5 minutes before retry rather than 1 minute. / dccallow now removes nick immediately after transfer starts, rather than waiting until the download had finished. / identical listings from different channels on the same network are no longer included. / rearranged some of the menus. v1.15 (10th October 2002) + rewrote routines that add packs to the consolidated lists, they now update alot faster and sorting is faster too. + rewrote the way items in the status window are monitored, cpu usage should now be low no matter how many items are listed. + rewrote routines that parse pack description, no more partial descriptions or chopped off characters. + option to update status window or not with latest receiving speed etc. + basic support for servers that don't give their network ID. + highlights are now stored when mIRC is closed. / manual listings are now added correctly to the consolidated lists. / status.txt renamed to dccAssist.txt to avoid conflicts with other scripts. / script no longer fails to automatically unload when installed on mIRC earlier than version 6 v1.10 (2nd October 2002) + sorting implemented on columns slots/queue, min. speed, record speed file size, description sorting can either be triggered manually by F7 or set to sort periodically (currently 30 seconds) + improved the way updates are made to the consolidated lists, processor usage should now be lower and alot more evened out, this is particularly noticable if you're in 20+ channels + downloads can now either by limited by number, or if total kb/s is less than designated figure another download will be allowed + Added several function keys ...all you having problems with the function keys ...v1.2 will have definable keys + ability to add/remove networks, servers, channels and rearrange them. + automatic nickserv identify upon connection + monitor channels on/off option + transfers that just stop now get closed by the script + ability to set font + network, channel columns added to the packs & status windows + ability to pause packs in the status window + manual listings of packs are now added to the consolidated lists + status window can now be placed on the desktop / when using proportional fonts, the description column is no longer prefixed by a character (may not work with all fonts) / refreshes of pack & status windows maintain selected lines / speeded up highlight refresh / double clicking on pack in channel to request it now works reliably (i think!) / ETA no longer reads 00:00:00 or just the wrong time / script no longer sends out /ctcp xdcc removes for packs that weren't requested by itself! / queue format of 05/20 changed to show free queues rather than used que ued so it matches the slots value / resetting packs in the status window now works correctly, it no longer resets them all / bot nick now removed from dccallow after receiving pack (sidenote. is dccallow used only on DALnet & Criten?) / network windows that won't connect and are closed by the user no longer keep popping up v1.00 (22nd September 2002) + Initial release dccAssist.mrc: ; -------------------------------------------- ; dccAssist v1.72 ; Written by BlackAle ; email: feedback@dccassist.com ; www: http://www.dcc assist.com ; ; Last Updated: 7th July 2004 ; --------------------------------------------- ; Events ; --------------------------------------------- on *:START: { set %DA.Start $true set %DA.Reset $true DA.Ini.Load DA.Ini.Defaults DA.Initialize DA.Profiles.Open DA.Lists.Expire DA.Packs.Load DA.Packs.Filter.Open DA.Windows.Open DA.Slots.Monitor.OnOff DA.Status.Scheduler.OnOff DA.Fkeys.Assign } on *:EXIT: { DA.Exit -s } on *:LOAD: { if $version < 6.12 { echo $color(info) -ste * dccAssist - Requires mIRC 6.12 or above, You ar e running version $version, upgrade before installing! .timer 1 1 .unload -rs $quoted($scriptdir $+ dccAssist.mrc) halt } .timerda.packs.open -io 1 1 DA.Packs.Open echo $color(info) -ste * dccAssist - Successfully installed } on *:UNLOAD: { .timerda.* off close -@ @da.* hfree -w DA.* unset %DA.* echo $color(info) -ste * dccAssist - Successfully uninstalled } on ^*:LOGON:*: { if $DA.NickDetails(1).nick && $ifmatch != $me { NICK $ifmatch USER $replace($email, @, $chr(32)) $server : $+ $ifmatch halt } } on *:LOGON:*: { set -u60 %DA.RootServer_ $+ $cid $server } on *:CONNECT: { if $findtok($networks, $netid, 0, 44) > 1 { var %DA.Network = $netid window -c "status window" scid $getcid(%DA.Network) window -a "status window" halt } if !$read($DA.ServersIni, w, $+(*GROUP:, $netid, *)) { DA.Server.Add $eval(% $ + DA.RootServer_ $+ $cid, 2) $netid } while $hfind(DA.Networks, $cid).data { hdel DA.Networks $ifmatch } hadd DA.Networks $netid $cid DA.Status.MassUpdate $netid Waiting (Connecting|Requested|Offline) DA.Nickserv IDENTIFY } on *:DISCONNECT: { if $netid && $rxfline(@DA.Status, /(?i)^(?!Complete|Paused|Failed).*? $+ $netid $+ .* $+ $chan(%DA.Inner) $+ /, 1, 2) { DA.Connect $netid } } on ^*:OPEN:?:*: { DA.Search.Add $1- if !$DA.Status.Response($1-) { DA.Messages.Add $1- } else { haltdef } } on ^*:OPEN:=: { if $nick == $DA.Fserves(0).nick { window -a $+(=, $nick) } } on *:CLOSE:*: { if $active == status window { while $hfind(DA.mp3Chans, $+($netid, *), 1, w).data { hdel DA.mp3Chans $ ifmatch } hdel DA.Profile $netid } elseif $active == @DA.Status { DA.Status.Save } elseif $active == @DA.Log { DA.Log.Save } elseif $hget(DA.Filters, $mid($active, 5)) { DA.Packs.Close } } on *:JOIN:#: { if $nick == $me { .timer $+ $chan off if $DA.Readini(Options, AutoCollapse) == Yes && !$istok($DA.Readini(Options, AlwaysShow), $index, 44) { .timerda.collapseauto -io 1 5 DA.CollapseAl l $true } if $fline(@DA.Status, $+(*, $chan, *)) && !$timer(da.status.requestquery) { .timerda.status.requestquery -io 4 5 DA.Status.RequestQuery } } elseif $hfind(DA.Offline, $index) { DA.Status.MassUpdate $index Waiting Offline hdel DA.Offline $index } } on *:PART:*: { if $nick == $me { hdel DA.mp3Chans $chan if $window(@DA.Search) { titlebar @DA.Search $DA.Search.Titlebar } if $hfind(DA.Offline, $chan).data && $istok($ifmatch, $netid, 8) { .timerda. rejoin -m 1 1 .join -n $chan } } } on ^*:ACTION:*:*: { if $target == $me { DA.Messages.Add $1- } } on *:NICK: { if $nick == $me && $status == connected { DA.Nickserv IDENTIFY } } on ^*:TEXT:*:#: { if $window(@DA.Buffer1) && ($DA.Readini(Options, VoicedBots) != Yes || ($D A.Readini(Options, VoicedBots) == Yes && $nick($chan, $nick, ohv))) { aline @DA.Buffer1 $+($netid, $chr(8), $nick) $chan $1- } if $DA.Readini(Options, SuppressDcc) == Yes { if $hfind(DA.PackNicks, $+($netid, $chr(8), $nick)) { haltdef } elseif $hget(DA.Mp3Chans, $chan) && $regex($1-, /^[@!]/) { haltdef } } } on ^*:TEXT:*:?: { if $regex($1-, /^!/) { DA.Search.Add $1- } elseif $window(@DA.Buffer1) { aline @DA.Buffer1 $+($netid, $chr(8), $n ick) $chan $1- } if $DA.Status.Response($1-) { haltdef } else { DA.Messages.Add $1- } } on *:CHAT:*: { var %DA.Window = Chat $nick if $DA.Readini(Options, UseFserveBar) == Yes && ($fline(%DA.Window, *fserve*, 1) || $fline(%DA.Window, *file server*, 1) || $fline(%DA.Window, *comman ds*, 1)) { .timerda.fserves.commandbar -mio 1 750 echo $cname(title) -t $+(=, $ nick) $+(<, $nick, >) DIR - CD_UP - QUEUES - SENDS - CLR_QUEUES - EXIT } } on ^*:HOTLINK:*:=: { var %DA.Text = $strip($hotline) var %DA.Nick = $mid($active, 2) var %DA.Window = Chat %DA.Nick if $regex($1, /(?i)'(c|s)'/) || $regex($1, /\b(DIR|C D_UP|QUEUES|SENDS|CLR_QUEUES|EXIT)\b/) { var %DA.Valid = $true } elseif $regex(%DA.Text, /(?i)queue.*?\s $+ $chr(35) $+ ?\d+.* $+ $me $+ /) { var %DA.Valid = $true } else { var %DA.StartList = $fline(%DA.Window, *> dir, $fline(%DA.Window, *> dir, 0)) var %DA.EndList = $fline(%DA.Window, *> DIR - CD_UP*, $fline(%DA.Window, *> DIR - CD_UP*, 0)) var %DA.Current = $fline(%DA.Window, $hotline, $fline(%DA.Window, $hotline, 0)) if (%DA.Current > %DA.StartList && %DA.Current < %DA.EndList) { if $regex(%DA.Text, /(?i)>\s(.*)\s\d+\.?\d*?\s?[bkmg]/) { var %DA.Valid = $true } elseif $regex(%DA.Text, />\s(.*)/) { var %DA.Valid = $true } } } if !%DA.Valid { haltdef } } on *:HOTLINK:*:=:{ var %DA.Text = $strip($hotline) var %DA.Nick = $mid($active, 2) var %DA.Window = Chat %DA.Nick if $regex($1, /(?i)'(c|s)'/) { .msg $active $regml(1) } elseif $regex($1, /\b(DIR|CD_UP|QUEUES|SENDS|CLR_QUEUES|EXIT)\b/) { if $regml(1) == CD_UP { .msg $active cd .. .msg $active dir } else { .msg $active $lower($regml(1)) } } elseif $regex(%DA.Text, /(?i)queue.*?\s $+ $chr(35) $+ ?(\d+).* $+ $ me $+ /) { .msg $active clr_queue $regml(1) } else { var %DA.StartList = $fline(%DA.Window, *> dir, $fline(%DA.Window, *> dir, 0)) var %DA.EndList = $fline(%DA.Window, *> DIR - CD_UP*, $fline(%DA.Window, *> DIR - CD_UP*, 0)) var %DA.Current = $fline(%DA.Window, $hotline, $fline(%DA.Window, $hotline, 0)) if (%DA.Current > %DA.StartList && %DA.Current < %DA.EndList) { if $regex(%DA.Text, /(?i)>\s(.*)\s\d+\.?\d*?\s?[bkmg]/) { .msg $active get $regml(1) } elseif $regex(%DA.Text, />\s(?:<dir>)?(.*?)(?:<d ir>|$)/) { .msg $active cd $regml(1) .msg $active dir } } } } on ^*:HOTLINK:*:*: { var %DA.Regex = /^\D{0,5}[(.#]\d{1,2}(\D|$)/ if $regex($1, %DA.Regex) { var %DA.Valid = $true } if $active == @DA.Messages && $regex($1, /^\S+>$/) { var %DA.Vali d = $true } if !%DA.Valid { haltdef } } on *:HOTLINK:*:*:{ var %DA.Text = $strip($hotline) var %DA.Regex = /<(.*),\s(.*?)>/ if $active == @DA.Messages && $regex(%DA.Text, %DA.Regex) { scid $getcid($regml(1)) if $window($regml(2)) { window -a $regml(2) } else { query $regml(2) } } elseif $regex(%DA.Text, /[<-](?:[+@]|)(.*?)[>-]\s(.*)/) { set %DA.Hotlink = $true DA.Packs.Add $newtok($netid, $regml(1), 8) $chan $regml(2) } } on *:INPUT:#: { if $netid && $chan && (($DA.Readini(Options, CtrlRequired) == Yes && $ctrlente r) || $DA.Readini(Options, CtrlRequired) != Yes) { if $regex(typed, $1-, /(?i)^/(msg|ctcp)\s(.*?)\s(.*)\s([.#]\d+)(?:/ (.*)|)/) { var %DA.PackIndex = $fnewtok($netid, $regml(typed, 2), $regml(typed, 4), 8) DA.PackCmd.Add $fnewtok($netid, $regml(typed, 2), 8) $1- DA.Status.Add %DA.PackIndex $regml(typed, 5) haltdef } } } on *:INPUT:@DA.Messages: { if $regex(nick, $1-, /^/(\w+)\s(.*?)\s/) && $wildtok(%DA.Nicks, $regm l(nick, 2) $+ *, 1, 44) { if $scid($gettok($ifmatch, 2, 8)) { scid $ifmatch . $+ $regml(nick, 1) $eval($2-, 1) if $regex($1-, /^/msg\s(.*?)\s(.*)/) { echo -t $+($chr(3), $color(own text), -> <, $netid, $chr(44 ) $regml(1), >) $regml(2) editbox -p @DA.Messages %DA.NicksCmd $regml(nick, 2) set %DA.NicksNo $findtok(%DA.Nicks, $wildtok(%DA.Nicks, $regml(nick, 2) $+ *, 1, 44), 1, 44) set %DA.NicksWild * } } haltdef } } on *:KEYDOWN:@DA.Messages:*: { if $keyval == 9 && %DA.Nicks { inc %DA.NicksNo if %DA.NicksNo > $wildtok(%DA.Nicks, %DA.NicksWild, 0, 44) { set %DA.NicksNo 1 } editbox -p @DA.Messages %DA.NicksCmd $gettok($wildtok(%DA.Nicks, %DA.Ni cksWild, %DA.NicksNo, 44), 1, 8) } haltdef } on *:KEYUP:@DA.Messages:*: { if $keyval != 9 && $keyval != 13 && $regex($editbox(@DA.Mess ages), /^(?:(/\w+)|())\s?([^/\s]*)/) { set %DA.NicksNo 0 set %DA.NicksCmd $iif($regml(1), $ifmatch, /msg) set %DA.NicksWild $regml(2) $+ * } } on *:KEYDOWN:@DA.Global:*: { if $regex(key, $keychar, /(?i)[\w\\/"#]/) { DA.Lists.Search $keychar } } on *:KEYDOWN:@DA.*:*: { if $keyval == 16 { set -u5 %DA.Shift $true } if !$keychar && $findtok(49 50 51 52 53 54 55 56 57 48 189 187, $keyval, 32) { var %DA.Column = $ifmatch if $gettok($DA.Titles($active), %DA.Column, 9) { var %DA.Item = $strip($ifmatch) if %DA.Item != Pack { DA.Sort -r $active %DA.Item } } } elseif $active == @DA.Quick && $keyval == 13 { var %DA.Regex = $rxmake($editbox(@DA.Quick), L).regex hdel -w DA.Packs Quick* hadd DA.Filters Quick $fnewtok(Quick, %DA.Regex, $fnewtok(*, F,, 12 4), Quick, 8) filter -cbrwwg 2- $+ $line(@DA.Packs, 0) @DA.Packs @DA.Quick %DA.Rege 20; DA.SetTitle @DA.Quick DA.Sort @DA.Quick set %DA.PF_Window $addtok(%DA.PF_Window, @DA.Quick, 8) .timerda.packs.filter.process -mio 0 5 DA.Packs.Filter.Process } elseif $active == @DA.Status && $sline(@DA.Status, 1).ln > 1 { if $keychar == 0 { DA.Status.Priority top } elseif $keychar == - { DA.Status.Priority up } elseif $keychar == = { DA.Status.Priority down } elseif $keychar == $chr(8) { DA.Status.Priority bottom } elseif $keyval == 45 && $sline($active, 1).ln > 1 { DA.Status.Ac tion $iif($DA.Status(0).status == Paused, unpause, pause) } elseif $keyval == 46 && $sline($active, 1).ln > 1 { DA.Status.Ac tion remove } } elseif $active == @DA.Log && $sline($active, 1).ln > 1 { if $keyval == 46 { DA.Log.Clear selected } } elseif $active == @DA.Search { if $hfind(DA.mp3Chans, *mp3, 0, w).data && $regex(key, $keychar, /( ?i)\w/) { DA.Search.RequestSearch $keychar } } elseif $hget(DA.Filters, $mid($active, 5)) { if $keyval == 9 { if TAB isin $window($active).title { DA.Packs.Refresh refresh } else { DA.Sort } } elseif $active != @DA.Quick && $regex(key, $keychar, /(?!\xD|\t)[\ w\s\(\)/#]/) { DA.Filter $keychar F* } } } on *:KEYUP:@DA.*:*: { if $keyval == 16 { unset %DA.Shift } } on *:NOTICE:*:*: { var %DA.Buffer = $index $lower($iif($chan, $chan, $comchan($nick, 1)) ) $1- if $nick == nickserv { DA.NickServ $1- } if $window(@DA.Buffer1) { aline @DA.Buffer1 %DA.Buffer } DA.PackCmd.Add %DA.Buffer DA.Status.Response %DA.Buffer } ctcp *:DCC SEND:*: { .timer $+ $index off if $fline(@DA.Status, $+(*, $chr(22), *, $index, *)) { var %DA.Line = $ifmatch if $regex($1-, /SEND\s(?:"(.*)"|(.+?)\s).*\s(\d+)$/) { var %DA.File = $regml(1) var %DA.FileSize = $regml(2) } if $getfile(%DA.File) { DA.Status.Update %DA.Line 0 Paused dcc reject } else { .timerda.status.refresh -io 0 5 DA.Status.Refresh DA.DccAllow - $nick $DA.Status(%DA.Line).ext var %DA.NewLine = $puttok($DA.Status(%DA.Line).line, $cleanFS(%DA.FileSize ), 6, 9) var %DA.NewLine = $puttok($puttok($puttok(%DA.Newline, %DA.File, 5, 8), &# 48;, 6, 8), %DA.FileSize, 7, 8) if $regex($DA.Status(%DA.Line).desc, /n/a\x2C\spack\s#\d+/) { var %DA.NewLine = $puttok(%DA.NewLine, %DA.File, 8, 9) } rsline @DA.Status %DA.Line %DA.NewLine DA.Status.Usage -s $getdir(%DA.File) $+ %DA.File } } elseif $DA.Readini(Options, RejectDcc) == Yes && !$istok($DA.Trusted, $nick, 4 4) { dcc reject } } on *:FILERCVD:*: { if $istok($comchans($nick), #xdcc-hub, 44) && (xh.* iswm $nopath($fi lename)) { DA.Packs.XdccHubList.Add $netid $filename } elseif $DA.mp3Lists_H($index) && $regex(file, $ext($filename), /txt|zip|rar/) { DA.List.Received $index $filename } else { var %DA.Index = $index $+ $iif($DA.Status($index).ismp3, $chr (8) $+ $id($nopath($filename))) if $rxfline(@DA.Status, /(?i) $+ $rxreplace(%DA.Index) $+ \&# 120;8.* $+ $rxreplace($nopath($filename)) $+ \x8/, 1, 2) { var %DA.Line = $ifmatch DA.Status.Usage $filename DA.Status.Update %DA.Line 0 $+(Complete, $chr(9), 100% ) if $DA.Readini(Options, Shutdown) == Yes && $appactive && $rxfline(@D A.Status, /^(?:\x3|Queued|Requested|Offline)/, 0, 2) == 0 { .timerd a.shutdown -io 1 1 DA.ShutDown } } } } on *:GETFAIL:*: { if $DA.mp3Lists_H($index) && $regex(file, $filename, /(?i)(zip|t 0;t)$/) { hadd DA.mp3Lists $index $DA.mp3Lists_H($index).chan failed_list .remove $filename } } ctcp *:SLOTS:*: { hadd DA.mp3Slots $index $chan $2-8 if $DA.mp3Chans($chan).count < 5 && $DA.mp3Chans($chan).count != mp3 { hadd -u60 DA.mp3Chans $chan $netid $calc($DA.mp3Chans($chan).count +  9;) } else { hadd DA.mp3Chans $chan $netid mp3 } if $window(@DA.Search) { titlebar @DA.Search $DA.Search.Titlebar } cline $iif($DA.mp3Lists_H($index).file, $cname(saved), $cname(available)) $chan $fline($chan, $nick, 1, 1) haltdef } ctcp *:MP3:*: { haltdef } ctcp *:WMA:*: { haltdef } ctcp *:ASF:*: { haltdef } ; Start Channels List raw 321:*: { if $dialog(DA.Dialog.Config) { set %DA.Chans 0 set %DA.ChansFile $quoted($+($scriptdir, clists\, $netid, .txt)) window -h "channels list" write -c %DA.ChansFile } } ; Listing Channels raw 322:*: { if $dialog(DA.Dialog.Config) && $regex(chan, $2, /^#[^#]/) { inc %DA.Chans did -o DA.Dialog.Config 123 1 Channels found %DA.Chans write %DA.ChansFile $+($lower($2) $chr(40), $3, $chr(41)) } } ; End Channels List raw 323:*: { if %DA.ChansFile { window -c "channels list" filter -ctffeu 2 40 %DA.ChansFile %DA.ChansFile if $dialog(DA.Dialog.Config) { filter -cfo %DA.ChansFile DA.Dialog.Config 123 set %DA.NumChannels $filtered DA.Networks.Switch } unset %DA.Chans unset %DA.ChansFile } } ; User offline raw 401:*: { var %DA.Index = $+($netid, $chr(8), $2) if $fline(@DA.Status, $+(*, %DA.Index, *)) { DA.Status.MassUpdate %DA.Ind ex Offline (?!Paused|Complete|Failed) } } ; DccAllow & Nickserv unknown command raw 421:*: { if $2- == dccallow unknown command { haltdef } elseif $2- == nickserv unknown command { DA.Command | haltdef } } ; Channel is full raw 471:*: { if !$timer($2) { .timer $+ $2 10 10 .join $2 } } ; Channel is invite only raw 473:*: { DA.Status.MassUpdate $fnewtok($netid, $2, 9) Failed (Requested|Waiting) } ; Banned from channel raw 474:*: { DA.Status.MassUpdate $fnewtok($netid, $2, 9) Failed (Requested|Waiting) } ; DccAllow add & remove raw 617:*: { var %DA.Index = $fnewtok($netid, $2, 8) if $rxfline(@DA.Status, /^(?!Complete|Status).* $+ $rxreplace(%DA.In dex) $+ /, 0) { haltdef } } on *:DIALOG:DA.Dialog.Config:*:*: { var %DA.Event = $+($devent, $did) if %DA.Event == init0 { set %DA.ServerScroll 250 filter -cwo @DA.Networks DA.Dialog.Config 122 did -c $dname 122 $iif($didwm(122, $netid), $ifmatch, 1) didtok $dname 130 44 $DA.Readini(Options, FavNetworks) did -c $dname 130 $iif($didwm(130, $netid), $ifmatch, 1) didtok $dname 128 44 $DA.Profiles did -c $dname 128 1 did -c $dname 15 %DA.ServerScroll did $iif($DA.Readini(Options, SuppressDcc) == Yes, -c, -u) $dname 5 did $iif($DA.Readini(Options, AutoRemove) == Yes, -c, -u) $dname 27 did $iif($DA.Readini(Options, WriteLog) == Yes, -c, -u) $dname 28 did $iif($DA.Readini(Options, AddPaused) == Yes, -c, -u) $dname 69 did $iif($DA.Readini(Options, ConfirmAdd) == Yes, -c, -u) $dname 75 did $iif($DA.Readini(Options, StatusSort) == Yes, -c, -u) $dname 68 did $iif($DA.Readini(Options, ExportDownloads) == Yes, -c, -u) $dname 8 5 did $iif($DA.Readini(Options, RandomDelay) == Yes, -c, -u) $dname 83 did $iif($DA.Readini(Options, MsgGlobal) == Yes, -c, -u) $dname 47 did $iif($DA.Readini(Options, MsgIgnoreSpam) == Yes, -c, -u) $dname 61 did $iif($DA.Readini(Options, MsgBounceSpam) == Yes, -c, -u) $dname 71 did $iif($DA.Readini(Options, MsgLogSpam) == Yes, -c, -u) $dname 30 did $iif($DA.Readini(Options, ProfileSelect) == Yes, -c, -u) $dname 1 9;8 did $iif($DA.Readini(Options, AutoCollapse) == Yes, -c, -u) $dname 87 did $iif($DA.Readini(Options, CtrlRequired) == Yes, -c, -u) $dname 95 did $iif($DA.Readini(Options, DescRequired) == Yes, -c, -u) $dname 33 did $iif($DA.Readini(Options, RejectDcc) == Yes, -c, -u) $dname 11&# 57; did $iif($DA.Readini(Options, UseFserveBar) == Yes, -c, -u) $dname 26 did $iif($DA.Readini(Options, ConfirmDel) == Yes, -c, -u) $dname 13 did $iif($DA.Readini(Options, MonitorSlots) == Yes, -c, -u) $dname 11 ;3 did $iif($DA.Readini(Options, HideStatus) == Yes, -c, -u) $dname 39 did $iif($DA.Readini(Options, SavePacks) == Yes, -c, -u) $dname 21 did $iif($DA.Readini(Options, VoicedBots) == Yes, -c, -u) $dname 45 did $iif($DA.Readini(Options, StatusPause) == Yes, -c, -u) $dname 51 did $iif($DA.Readini(Options, StatusUnpause) == Yes, -c, -u) $dname 52 did $iif($DA.Readini(Options, Shutdown) == Yes, -c, -u) $dname 74 did -c $dname $iif($DA.Readini(Options, CollapseMethod) == Standard, 43, 48) did -c $dname $iif($DA.Readini(Options, DownloadType) == MaxDownloads, 16, 19) did -o $dname 17 1 $DA.Readini(Options, MaxDownloads) did -o $dname 20 1 $DA.Readini(Options, MinSpeed) did -o $dname 67 1 $DA.Readini(Options, NumRetries) did -o $dname 49 1 $DA.Readini(Options, RequestDelay) did -o $dname 76 1 $DA.Readini(Options, QueueFullDelay) did -o $dname 59 1 $DA.Readini(Options, QueueTimeoutDelay) did -o $dname 34 1 $DA.Readini(Options, ConnLostDelay) did -o $dname 23 1 $DA.Readini(Options, PacksExpire) did -o $dname 25 1 $DA.Readini(Options, mp3ListsExpire) did -o $dname 54 1 $DA.Readini(Options, StatusPauseTime) did -o $dname 55 1 $DA.Readini(Options, StatusUnpauseTime) ; Network Tab - Fill Nickserv var %DA.Count = 1 while $gettok($line(@DA.Nicks, %DA.Count), 1, 8) { did -a $dname 125 $ifmatch inc %DA.Count } ; Options Tab - Fill Spam Filters var %DA.Count = 1 while $gettok($hfind(DA.Ini, $+(Spam, $chr(7), *), %DA.Count, w), 2, 7) { did -a $dname 62 $ifmatch inc %DA.Count } ; Options Tab - Fill Filters var %DA.Count = 1 while $hget(DA.Filters, %DA.Count).item { var %DA.Filter = $ifmatch var %DA.Types = $gettok($hget(DA.Filters, %DA.Filter), 3, 8) var %DA.Type = $iif($regex(%DA.Types, /([HF])/), $regml(1)) if $iif($regex(%DA.Types, /([+-])/), $regml(1)) { did -a $dname 97 $+(%DA.Filter, $chr(32), $chr(40), %DA.Type, $i fmatch, $chr(41)) } inc %DA.Count } ; More Options Tab - Fill Columns didtok $dname 148 44 Packs,Status,Log,Search (mp3),Lists (mp3) did -c $dname 148 1 DA.Networks.Populate DA.Favourites.Populate DA.Profiles.Populate DA.Columns.Populate DA.Colours.Populate DA.Functions.Populate DA.Fkeys.Populate DA.Options.Switch DA.Status.Switch if $dialog($dname).tab == 1 { .timerda.dialog.config -mio 1 1 di d -f $dname 122 } } ; Network Tab - Select Network if %DA.Event == sclick122 { DA.Networks.Populate } ; Network Tab - Select Favourite Network if %DA.Event == sclick130 { DA.Favourites.Populate } ; Network Tab - Select Profile if %DA.Event == sclick128 { DA.Profiles.Populate } ; Network Tab - Select Profile Network if %DA.Event == sclick138 { DA.Profiles.Network.Populate } ; Network Tab - Select Channel, Server, Nickserv if $regex(%DA.Event, /^sclick(123|124|125)$/) { DA.Networks.S witch } ; Network Tab - Select Favourite Channel if %DA.Event == sclick132 { DA.Favourites.Switch } ; Network Tab - Select Profile Network, Channel, Filter if $regex(%DA.Event, /^sclick(137|138|139)$/) { DA.Profil es.Switch } ; Network Tab - Delete Networks if %DA.Event == sclick100 { set %DA.DText $crlf delete the selected networks? if $DA.Readini(Options, ConfirmDel) != Yes || $dialog(DA.Dialog.Confirm, DA. DialogDef.Confirm, -4) { var %DA.Count = $did(122, 0).sel while %DA.Count > 0 { var %DA.Sel = $did(122, %DA.Count).sel var %DA.Network = $did(122, %DA.Sel) filter -cffx $DA.ServersIni $DA.ServersIni $+(*GROUP:, %DA.Network, *) if $fline(@DA.Networks, %DA.Network) { dline @DA.Networks $ifmatch } .remove $+(", $scriptdir, clists\, %DA.Network, .txt") did -d $dname 122 %DA.Sel dec %DA.Count } did -c $dname 122 $iif($calc(%DA.Sel - 1), $ifmatch, 1) DA.Networks.Populate } } ; Network Tab - Delete Favourite Networks if %DA.Event == sclick14 { set %DA.DText $crlf delete the selected favourite networks? if $DA.Readini(Options, ConfirmDel) != Yes || $dialog(DA.Dialog.Confirm, DA. DialogDef.Confirm, -4) { var %DA.Count = $did(130, 0).sel while %DA.Count > 0 { var %DA.Sel = $did(130, %DA.Count).sel DA.Writeini Channels $did(130, %DA.Sel) did -d $dname 130 %DA.Sel dec %DA.Count } did -c $dname 130 $iif($calc(%DA.Sel - 1), $ifmatch, 1) DA.Writeini Options FavNetworks $didtok(130, 44) DA.Favourites.Populate } } ; Network Tab - Add Favourite Channel if %DA.Event == sclick3 { set %DA.DText Add channel set %DA.DEdit $null if $dialog(DA.Dialog.Edit, DA.DialogDef.Edit, -4) { var %DA.Chans = $remtoks($cleanchan($ifmatch), $didtok(132, 44), 44) didtok $dname 132 44 %DA.Chans did -c $dname 132 $didwm(132, $gettok(%DA.Chans, 1, 44)) DA.Writeini Channels $did(130).seltext $didtok(132, 44) DA.Favourites.Switch } } ; Network Tab - Edit Favourite Channel if %DA.Event == dclick132 && $did(132).sel { set %DA.DText Edit channel set %DA.DEdit $did(132).seltext if $dialog(DA.Dialog.Edit, DA.DialogDef.Edit, -4) { did -oc $dname 132 $did(132).sel $cleanchan($ifmatch) DA.Writeini Channels $did(130).seltext $didtok(132, 44) } } ; Network Tab - Delete Favourite Channels if %DA.Event == sclick2 { set %DA.DText $crlf delete the selected favourite channels? if $DA.Readini(Options, ConfirmDel) != Yes || $dialog(DA.Dialog.Confirm, DA. DialogDef.Confirm, -4) { didsdel $dname 132 DA.Writeini Channels $did(130).seltext $didtok(132, 44) DA.Favourites.Switch } } ; Network Tab - Copy Networks To Favourites if %DA.Event == sclick135 { didtok $dname 130 44 $remtoks($didstok(122, 44), $didtok(13& #48;, 44), 44) did -c $dname 130 $didwm(130, $did(122).seltext) DA.Writeini Options FavNetworks $didtok(130, 44) DA.Favourites.Populate } ; Network Tab - Copy Channels To Favourites if %DA.Event == sclick134 { if !$didwm(130, $did(122).seltext) { did -a $dname 130 $did(122).seltext DA.Writeini Options FavNetworks $didtok(130, 44) } did -c $dname 130 $didwm(130, $did(122).seltext) DA.Favourites.Populate if $regex(chans, $didstok(123, 44), /(#\S+)/g) { didtok $dname 132 44 $remtoks($regmls(chans, 44), $didtok(132, 44) , 44) DA.Writeini Channels $did(130).seltext $didtok(132, 44) DA.Favourites.Switch } } ; Network Tab - Filter Channels if %DA.Event == edit129 { filter -cfo $quoted($+($scriptdir, clists\, $did(122).seltext, .t&# 120;t)) $dname 123 $+(*, $did(129), *) DA.Networks.Switch } ; Network Tab - Toggle Search All Channels if %DA.Event == sclick79 { did $iif($did(79).state, -b, -e) $dname 122 } ; Network Tab - Connect to Networks if $regex(%DA.Event, /^(dclick122|sclick96)$/) && $did(122).s el { var %DA.Count = 1 while $did(122, %DA.Count).sel { DA.Connect $did(122, $ifmatch) $iif($did(122, 0).sel == 1, $true) inc %DA.Count } } ; Network Tab - Connect to Favourite Networks if $regex(%DA.Event, /^(dclick130|sclick53)$/) && $did(130 ;).sel { var %DA.Count = 1 while $did(130, %DA.Count).sel { DA.Connect $did(130, $ifmatch) $iif($did(130, 0).sel = = 1, $true) inc %DA.Count } } ; Network Tab - List Channels if %DA.Event == sclick114 { var %DA.Cid = $getcid($did(122).seltext) did -r $dname 123,129 if $scid(%DA.Cid).status == connected { scid %DA.Cid .!list -min 10 } else { did -o $dname 123 1 Connecting to $did(122).seltext $+ .. . hadd DA.Profile $DA.Connect($did(122).seltext, $true) !list -min 10 } } ; Network Tab - Join Channels if $regex(%DA.Event, /^(dclick123|sclick115)$/) && $did(1 23).sel { if $regex(chans, $didstok(123, 44), /(#\S+)/g) { join $iif($did(123, 0).sel > 1, -n) $did(122).selte 20;t $iif($did(123, 0).sel > 1, $remtoks($regmls(chans, 44), $ch ans, 44), $regml(chans, 1)) } } ; Network Tab - Join Favourite Channels if %DA.Event == sclick116 { join $iif($did(132, 0).sel > 1, -n) $did(130).selte& #120;t $iif($did(132, 0).sel > 1, $remtoks($didstok(132, 44) , $chans, 44), $did(132).seltext) } ; Network Tab - Add Server if %DA.Event == sclick9 { set %DA.DText Add server set %DA.DEdit $null if $dialog(DA.Dialog.Edit, DA.DialogDef.Edit, -4) { var %DA.Server = $ifmatch if !$istok($didtok(124, 44), %DA.Server, 44) { DA.Server.Add %DA.Server $did(122).seltext did -ac $dname 124 %DA.Server DA.Networks.Switch } } } ; Network Tab - Edit Server if %DA.Event == dclick124 && $did(124).sel { set %DA.DText Edit server set %DA.DEdit $did(124).seltext if $dialog(DA.Dialog.Edit, DA.DialogDef.Edit, -4) { var %DA.Server = $ifmatch if %DA.Server != $did(124).seltext { !server -r $did(124).sel text } DA.Server.Add %DA.Server $did(122).seltext did -oc $dname 124 $did(124).sel %DA.Server } } ; Network Tab - Delete Servers if %DA.Event == sclick10 { set %DA.DText $crlf delete the selected servers? if $DA.Readini(Options, ConfirmDel) != Yes || $dialog(DA.Dialog.Confirm, DA. DialogDef.Confirm, -4) { var %DA.Count = $did(124, 0).sel while %DA.Count > 0 { var %DA.Sel = $did(124, %DA.Count).sel !server -r $did(124, %DA.Sel) did -d $dname 124 %DA.Sel dec %DA.Count } did -c $dname 124 $iif($calc(%DA.Sel - 1), $ifmatch, 1) DA.Networks.Switch } } ; Network Tab - Move Server Up/Down if %DA.Event == scroll15 && $did(124).sel { if $did(15).sel > %DA.ServerScroll && $did(124).sel < $did(& #49;24).lines { var %DA.MoveTo = $calc($did(124).sel + 1) var %DA.Tmp = $did(124, %DA.MoveTo).text var %DA.Moved = $true } elseif $did(15).sel < %DA.ServerScroll && $did(124).sel > &# 49; { var %DA.MoveTo = $calc($did(124).sel - 1) var %DA.Tmp = $did(124, %DA.MoveTo).text var %DA.Moved = $true } if %DA.Moved { if $read($DA.ServersIni, w, $+(*SERVER:, $did(124).seltext, *)) { var %DA.SwapItem1 = $ifmatch var %DA.SwapLine1 = $readn } if $read($DA.ServersIni, w, $+(*SERVER:, $did(124, %DA.MoveTo), *)) { var %DA.SwapItem2 = $ifmatch var %DA.SwapLine2 = $readn } write -l $+ %DA.SwapLine1 $DA.ServersIni %DA.SwapItem2 write -l $+ %DA.SwapLine2 $DA.ServersIni %DA.SwapItem1 did -o $dname 124 %DA.MoveTo $did(124).seltext did -o $dname 124 $did(124).sel %DA.Tmp did -c $dname 124 %DA.MoveTo } set %DA.ServerScroll $did(15).sel } ; Network Tab - Add Nickserv if %DA.Event == sclick6 { set %DA.DEdit $null if $dialog(DA.Dialog.Nickserv, DA.DialogDef.Nickserv, -4) { did -ac $dname 125 $ifmatch $iif(%DA.DEdit, on %DA.DEdit) DA.Networks.Switch } } ; Network Tab - Edit Nickserv if %DA.Event == dclick125 && $regex($did(125).seltext, /(?:( .*)\son\s(.*))|(.*)/) { set %DA.DEdit $newtok($regml(1), $regml(2), 8) if $dialog(DA.Dialog.Nickserv, DA.DialogDef.Nickserv, -4) { var %DA.Item = $ifmatch $iif(%DA.DEdit, on %DA.DEdit) if $didwm(125, %DA.Item) && $ifmatch != $did(125).sel { did -d $dname 125 $did(125).sel did -oc $dname 125 $didwm(125, %DA.Item) %DA.Item } else { did -oc $dname 125 $did(125).sel %DA.Item } } } ; Network Tab - Delete Nickservs if %DA.Event == sclick7 { set %DA.DText $crlf delete the selected nickservs? if $DA.Readini(Options, ConfirmDel) != Yes || $dialog(DA.Dialog.Confirm, DA. DialogDef.Confirm, -4) { var %DA.Count = $did(125, 0).sel while %DA.Count > 0 { var %DA.Sel = $did(125, %DA.Count).sel dline @DA.Nicks $fline(@DA.Nicks, $+($did(125, %DA.Sel), $chr(8), *) ) did -d $dname 125 %DA.Sel dec %DA.Count } did -c $dname 125 $iif($calc(%DA.Sel - 1), $ifmatch, 1) DA.Networks.Switch } } ; Network Tab - Use Profile at Startup if %DA.Event == sclick66 { var %DA.Networks = $DA.Readini(Options, StartProfile) DA.Writeini Options StartProfile $iif($didtick(66), $addtok(%DA.Networks, $d id(128), 44), $remtok(%DA.Networks, $did(128), 44)) } ; Network Tab - Add Profile if %DA.Event == sclick90 { set %DA.DText Add profile set %DA.DEdit $null if $dialog(DA.Dialog.Edit, DA.DialogDef.Edit, -4) { var %DA.Profile = $ifmatch if !$didwm(128, %DA.Profile) { did -ac $dname 128 %DA.Profile did -u $dname 66 DA.Profiles.Populate DA.Networks.Switch } } } ; Network Tab - Delete Profile if %DA.Event == sclick35 { set %DA.DText $crlf delete this profile? if $DA.Readini(Options, ConfirmDel) != Yes || $dialog(DA.Dialog.Confirm, DA. DialogDef.Confirm, -4) { var %DA.Profiles = $DA.Readini(Options, StartProfile) if $istok(%DA.Profiles, $did(128), 44) { DA.Writeini Options StartProf ile $remtok(%DA.Profiles, $did(128), 44) } DA.Writeini $nbsp(Profile $did(128).seltext) did -d $dname 128 $did(128).sel did -c $dname 128 1 DA.Profiles.Populate DA.Networks.Switch } } ; Network Tab - Copy Networks To Profiles if %DA.Event == sclick136 { var %DA.Networks = $remtoks($didstok(122, 44), $didtok(138, 44), 44) didtok $dname 138 44 %DA.Networks did -c $dname 138 $didwm(138, $did(122).seltext) var %DA.Count = 1 while $gettok(%DA.Networks, %DA.Count, 44) { DA.Writeini $nbsp(Profile $did(128)) $ifmatch $chr(160) inc %DA.Count } DA.Profiles.Network.Populate } ; Network Tab - Copy Channels To Profiles if %DA.Event == sclick133 { if !$didwm(138, $did(122).seltext) { did -a $dname 138 $did(122).seltext } did -c $dname 138 $didwm(138, $did(122).seltext) DA.Profiles.Network.Populate if $regex(chans, $didstok(123, 44), /(#\S+)/g) { didtok $dname 137 44 $remtoks($regmls(chans, 44), $didtok(137, 44) , 44) DA.Writeini $nbsp(Profile $did(128)) $did(122).seltext $didto k(137, 44) } } ; Network Tab - Delete Networks From Profile if %DA.Event == sclick38 { set %DA.DText $crlf delete the selected networks from profile? if $DA.Readini(Options, ConfirmDel) != Yes || $dialog(DA.Dialog.Confirm, DA. DialogDef.Confirm, -4) { var %DA.Count = $did(138, 0).sel while %DA.Count > 0 { var %DA.Sel = $did(138, %DA.Count).sel DA.Writeini $nbsp(Profile $did(128)) $did(138, %DA.Sel) did -d $dname 138 %DA.Sel dec %DA.Count } did -c $dname 138 $iif($calc(%DA.Sel - 1), $ifmatch, 1) DA.Profiles.Network.Populate } } ; Network Tab - Start Profile if %DA.Event == sclick8 { DA.Profiles.Open $did(128) } ; Network Tab - Add Profile Channel if %DA.Event == sclick89 { set %DA.DText Add channel set %DA.DEdit $null if $dialog(DA.Dialog.Edit, DA.DialogDef.Edit, -4) { var %DA.Chans = $remtoks($cleanchan($ifmatch), $didtok(137, 44), 44) didtok $dname 137 44 %DA.Chans did -c $dname 137 $didwm(137, $gettok(%DA.Chans, 1, 44)) DA.Writeini $nbsp(Profile $did(128)) $did(138).seltext $didto k(137, 44) DA.Profiles.Switch } } ; Network Tab - Edit Profile Channel if %DA.Event == dclick137 && $did(137).sel { set %DA.DText Edit channel set %DA.DEdit $did(137).seltext if $dialog(DA.Dialog.Edit, DA.DialogDef.Edit, -4) { did -oc $dname 137 $did(137).sel $cleanchan($ifmatch) DA.Writeini $nbsp(Profile $did(128)) $did(138).seltext $didto k(137, 44) } } ; Network Tab - Delete Profile Channels if %DA.Event == sclick42 { set %DA.DText $crlf delete the selected channels from profile? if $DA.Readini(Options, ConfirmDel) != Yes || $dialog(DA.Dialog.Confirm, DA. DialogDef.Confirm, -4) { didsdel $dname 137 DA.Writeini $nbsp(Profile $did(128)) $did(138).seltext $iif($ didtok(137, 44), $ifmatch, $chr(160)) DA.Profiles.Switch } } ; Network Tab - Add Profile Filters if %DA.Event == sclick73 && $dialog(DA.Dialog.ProfileFilters, DA.DialogDef.Pro fileFilters, -4) { var %DA.Count = 1 while $did(139, %DA.Count) { if $regex(filter, $ifmatch, /(.+?)\s\((H|F)\)/) { var %DA.AddFilters = $addtok(%DA.AddFilters, $regml(filter, 1), 8) } inc %DA.Count } DA.Writeini $nbsp(Profile $did(128)) Filters %DA.AddFilters DA.Profiles.Switch } ; Network Tab - Delete Profile Filters if %DA.Event == sclick72 { set %DA.DText $crlf delete the selected filters from profile? if $DA.Readini(Options, ConfirmDel) != Yes || $dialog(DA.Dialog.Confirm, DA. DialogDef.Confirm, -4) { var %DA.Count = $did(139, 0).sel while %DA.Count > 0 { var %DA.Sel = $did(139, %DA.Count).sel if $regex(filter, $did(139, %DA.Sel), /(.+?)\s\((H|F)\)/) { var %DA.DelFilters = $addtok(%DA.DelFilters, $regml(filter, 1), 8) did -d $dname 139 %DA.Sel } dec %DA.Count } did -c $dname 139 $iif($calc(%DA.Sel - 1), $ifmatch, 1) DA.Writeini $nbsp(Profile $did(128)) Filters $remtoks($DA.Readini($nbs p(Profile $did(128)), Filters), %DA.DelFilters, 8) DA.Profiles.Switch } } ; Options Tab - Select Spam, Filter ------------------------------------------ -------- if $regex(%DA.Event, /^(sclick|dclick)(43|48|62|97)$/) { DA.Options.S witch } ; Options Tab - Add Filter if %DA.Event == sclick99 && $DA.Filter(F-) { var %DA.Filter = $ifmatch if $didwm(97, %DA.Filter $chr(40) $+ *) { did -d $dname 97 $ifmat ch } did -ac $dname 97 %DA.Filter $iif($regex($gettok(%DA.Data, 3, 8), /( H|F)/), $bracketed($regml(1) $+ -)) DA.Options.Switch } ; Options Tab - Edit Filter if %DA.Event == dclick97 && $regex(params, $did(97).seltext, /(.+?)\s\([HF]([+-])\)/) && $DA.Filter($regml(params, 1), F) { if $didwm(97, %DA.Filter $chr(40) $+ *) && $ifmatch != $did(97).s el { did -d $dname 97 $ifmatch } did -oc $dname 97 $did(97).sel %DA.Filter $iif($regex($gettok(%D A.Data, 3, 8), /(H|F)/), $bracketed($regml(1) $+ $regml(params, 2))) } ; Options Tab - Delete Filter if %DA.Event == sclick98 { set %DA.DText $crlf delete the selected filters? if $DA.Readini(Options, ConfirmDel) != Yes || $dialog(DA.Dialog.Confirm, DA. DialogDef.Confirm, -4) { var %DA.Count = $did(97, 0).sel while %DA.Count > 0 { var %DA.Sel = $did(97, %DA.Count).sel if !$regex($did(97, %DA.Sel), /Free\xA0slots\s\(H[+-]\ )/) && $regex(filter, $did(97, %DA.Sel), /(.*)\s\(([HF])[+-]\)/) { did -d $dname 97 %DA.Sel DA.Packs.Close $+(@DA., $regml(filter, 1)) hdel DA.Filters $regml(filter, 1) if $regml(filter, 2) == H { set %DA.HighDelete $true } } dec %DA.Count } did -c $dname 97 $iif($calc(%DA.Sel - 1), $ifmatch, 1) DA.Options.Switch } } ; Options Tab - Toggle Filter if %DA.Event == sclick50 { var %DA.Count = 1 while $did(97, %DA.Count).sel { var %DA.Sel = $ifmatch var %DA.Item = $did(97, %DA.Sel) var %DA.State = $iif($regex(%DA.Item, /(.+?)\s\((H|F)([+-])\)/) && $r egml(3) == +, -, +) var %DA.Filter = $regml(1) did -ock $dname 97 %DA.Sel %DA.Filter $bracketed($regml(2) $+ %DA.Stat e) hadd DA.Filters %DA.Filter $replace($hget(DA.Filters, %DA.Filter), $regml( 3) $+ $chr(124), %DA.State $+ $chr(124)) inc %DA.Count } } ; Options Tab - Toggle Ignore Spam if %DA.Event == sclick61 { DA.Options.Switch } ; Options Tab - Add Spam Filter if %DA.Event == sclick64 && $DA.Filter(S) { var %DA.Spam = $ifmatch if $didwm(62, %DA.Spam) { did -d $dname 62 %DA.Spam } did -ac $dname 62 %DA.Spam DA.Options.Switch } ; Options Tab - Edit Spam Filter if %DA.Event == dclick62 && $DA.Filter($did(62).seltext, S) { var %DA.Spam = $ifmatch if $didwm(62, %DA.Spam) && $ifmatch != $did(62).sel { did -d $dname 97 % DA.Spam } did -oc $dname 62 $did(62).sel %DA.Spam } ; Options Tab - Delete Spam Filter if %DA.Event == sclick65 { set %DA.DText $crlf delete the selected spam filters? if $DA.Readini(Options, ConfirmDel) != Yes || $dialog(DA.Dialog.Confirm, DA. DialogDef.Confirm, -4) { var %DA.Count = $did(62, 0).sel while %DA.Count > 0 { var %DA.Sel = $did(62, %DA.Count).sel var %DA.Spam = $did(62, %DA.Sel) did -d $dname 62 %DA.Sel DA.Writeini Spam %DA.Spam dec %DA.Count } did -c $dname 62 $iif($calc(%DA.Sel - 1), $ifmatch, 1) DA.Options.Switch } } ; Options Tab - Toggle Paused/Unpaused if $regex(%DA.Event, /^sclick(51|52)$/) { DA.Status.Switch } ; More Options Tab - Select Function ----------------------------------------- --------- if $devent == sclick && $istok(32 109 110, $did, 32) { set %DA.ActiveID $did } if %DA.Event == sclick109 && $regex($did(109).sel text, /\((.*)\)/) { DA.Fkeys.Populate } ; More Options Tab - Change Function Key if %DA.Event == sclick110 && $did(109).sel && $rege 20;(func, $did(109).seltext, /(.*)\((.*)\)/) { did -oc $dname 109 $did(109).sel $+($regml(func,  9;) $chr(40), $did(110).seltext, $chr(41)) DA.Writeini Fkeys $regml(func, 1) $did(110).seltext DA.Fkeys.Assign DA.Fkeys.Populate } ; More Options - Reset Function Keys to Default if %DA.Event == sclick40 && $istok(109 110, %DA.Ac tiveID, 32) { did -b $dname 111 DA.Writeini Fkeys DA.Ini.Defaults DA.Functions.Populate DA.Fkeys.Populate DA.Fkeys.Assign } ; More Options - Select Columns if %DA.Event == sclick148 { DA.Columns.Save %DA.PrevColumns DA.Columns.Populate } ; More Options - Edit Column if %DA.Event == dclick149 && $regex(column, $did(149).sel text, /(.*)\((\d+)\)/) { set %DA.DText Edit column size set %DA.DEdit $regml(column, 2) if $dialog(DA.Dialog.Edit, DA.DialogDef.Edit, -4) != $null { var %DA.ColumnSize = $ifmatch if %DA.Columnsize isnum && ($did(148).Seltext == Packs || %DA.Col umnSize) { did -oc $dname 149 $did(149).sel $regml(column, 1) $ +($chr(40), %DA.ColumnSize, $chr(41)) did -e $dname 111 } } } ; More Options - Apply Columns if %DA.Event == sclick111 { DA.Columns.Save $did(148).selte 20;t $true } ; More Options Tab - Colour Picker if %DA.Event == sclick31 && $did(32).sel && $inrect($mouse.x, $mouse. y, 434, 48, 192, 16) { var %DA.Regex = /(.*?)(\(|$)/ if $regex(col, $did(32).seltext, %DA.Regex) { var %DA.Colour = $int($calc(($mouse.x - 422) / 12)) if %DA.Colour != $color(background) { did -oc $dname 32 $did(32).sel $regml(col, 1) $+($chr(40), $cnam e(%DA.Colour), $chr(41)) DA.Writeini Colours $regml(col, 1) $cname(%DA.Colour) if sort isin $regml(col, 1) || title isin $regml(col, 1) { DA.SetTitle @DA.Status DA.SetTitle @DA.Log DA.SetTitle @DA.Search DA.SetTitle @DA.Lists var %DA.Count = 1 while $hget(DA.Filters, %DA.Count).data { if $istok($gettok($ifmatch, 3, 8), F, 124) { DA.SetTitle $+(@DA. , $hget(DA.Filters, %DA.Count).item) } inc %DA.Count } } } } } ; More Options Tab - Reset Colours to Default if %DA.Event == sclick40 && %DA.ActiveID == 32 { DA.Writeini Colours DA.Ini.Defaults DA.Colours.Populate } ; More Options Tab - Confirm Deletions if %DA.Event == sclick13 { DA.Writeini Options ConfirmDel $iif($did(13 ).state, Yes, No) } ; Close if %DA.Event == close0 { DA.Writeini Options DownloadType $iif($did(16).state, MaxDownloads, MinSpeed) DA.Writeini Options CollapseMethod $iif($did(43).state, Standard, Alternativ e) DA.Writeini Options MaxDownloads $iif($int($did(17)) >= 1, $did(17), 1) DA.Writeini Options SuppressDcc $iif($did(5).state, Yes, No) DA.Writeini Options AutoRemove $iif($did(27).state, Yes, No) DA.Writeini Options WriteLog $iif($did(28).state, Yes, No) DA.Writeini Options AddPaused $iif($did(69).state, Yes, No) DA.Writeini Options ConfirmAdd $iif($did(75).state, Yes, No) DA.Writeini Options StatusSort $iif($did(68).state, Yes, No) DA.Writeini Options ExportDownloads $iif($did(85).state, Yes, No) DA.Writeini Options RandomDelay $iif($did(83).state, Yes, No) DA.Writeini Options MsgGlobal $iif($did(47).state, Yes, No) DA.Writeini Options MsgIgnoreSpam $iif($did(61).state, Yes, No) DA.Writeini Options MsgBounceSpam $iif($did(71).state, Yes, No) DA.Writeini Options MsgLogSpam $iif($did(30).state, Yes, No) DA.Writeini Options ProfileSelect $iif($did(118).state, Yes, No) DA.Writeini Options AutoCollapse $iif($did(87).state, Yes, No) DA.Writeini Options CtrlRequired $iif($did(95).state, Yes, No) DA.Writeini Options DescRequired $iif($did(33).state, Yes, No) DA.Writeini Options RejectDcc $iif($did(119).state, Yes, No) DA.Writeini Options UseFserveBar $iif($did(26).state, Yes, No) DA.Writeini Options MonitorSlots $iif($did(113).state, Yes, No) DA.Writeini Options HideStatus $iif($did(39).state, Yes, No) DA.Writeini Options SavePacks $iif($did(21).state, Yes, No) DA.Writeini Options VoicedBots $iif($did(45).state, Yes, No) DA.Writeini Options Shutdown $iif($did(74).state, Yes, No) DA.Writeini Options StatusPauseTime $iif($cleanTime($did(54)), $ifmatch) DA.Writeini Options StatusUnpauseTime $iif($cleanTime($did(55)), $ifmatch) DA.Writeini Options MinSpeed $iif($int($did(20)) >= 1, $did(2 8;), 1) DA.Writeini Options NumRetries $iif($int($did(20)) >= 0, $did(67 ), 0) DA.Writeini Options RequestDelay $iif($int($did(49)) >= 120, $did(49), 120) DA.Writeini Options QueueFullDelay $iif($int($did(76)) >= 120, $ did(76), 120) DA.Writeini Options QueueTimeoutDelay $iif($int($did(59)) >= 60& #48;, $did(59), 600) DA.Writeini Options ConnLostDelay $iif($int($did(34)) >= 10, $di d(34), 10) DA.Writeini Options PacksExpire $iif($int($did(23)) >= 0, $did( 23), 0) DA.Writeini Options mp3ListsExpire $iif($int($did(25)) >= 0, $d id(25), 0) DA.Writeini Options StatusPause $iif($did(51).state && $cleanTime($did(5 4)), Yes, No) DA.Writeini Options StatusUnpause $iif($did(52).state && $cleanTime($did(55) ), Yes, No) DA.Columns.Save $did(148).seltext DA.Packs.Monitor.OnOff DA.Slots.Monitor.OnOff DA.Status.Scheduler.OnOff DA.Packs.Filter.Open if !$timer(da.status.requestquery) { .timerda.status.requestquery -io 4 5 DA .Status.RequestQuery } if %DA.HighDelete { DA.Packs.Highlight } unset %DA.ServerScroll unset %DA.PrevColumns unset %DA.NumChannels unset %DA.DelFilters unset %DA.HighDelete } did $iif($dialog($dname).tab == 41 && $istok(32 109 11 0, $dialog($dname).focus, 32), -e, -b) $dname 40 did $iif($did(125).sel, -e, -b) $dname 7 } on *:DIALOG:DA.Dialog.Filter:*:*: { var %DA.Event = $+($devent, $did) if %DA.Event == init0 { var %DA.Boolean = $gettok(%DA.Data, 1, 8) var %DA.Switch = $gettok(%DA.Data, 3, 8) var %DA.Desc = $gettok(%DA.Data, 4, 8) if $istok(%DA.Switch, H, 124) && $wildtok(%DA.Switch, N*, 1, 124 ) { did -v $dname $calc(20 + $int($right($ifmatch, 2))) } if $wildtok(%DA.Switch, M*, 1, 124) { did -o $dname 14 1 $in t($mid($ifmatch, 2))) } if $wildtok(%DA.Switch, R*, 1, 124) { did -o $dname 15 1 $in t($mid($ifmatch, 2))) } if $istok(%DA.Switch, H, 124) { did -c $dname 7 } elseif $istok(%DA.Switch, M, 124) { did -c $dname 8 } else { did -c $dname 6 } did $iif($istok(%DA.Switch, L, 124) && S !isin %DA.Type, -c, -u) $dname 4 did $iif($istok(%DA.Switch, S, 124), -c, -u) $dname 5 did $iif($istok(%DA.Switch, W, 124), -c, -u) $dname 9 did $iif($istok(%DA.Switch, D, 124), -c, -u) $dname 10 did $iif($istok(%DA.Switch, C, 124), -c, -u) $dname 13 did $iif($istok(%DA.Switch, H, 124), -v, -h) $dname 18 did $iif(S !isin %DA.Type, -v, -h) $dname 4,5,6,7,10 did -a $dname 2 %DA.Boolean did -a $dname 12 %DA.Desc if $regex(%DA.Desc, /^(Packs|Free(\xA0|\s)slots)$/) { did -b $ dname 2,4,5,6,7,8,10,12 } } if %DA.Event == sclick18 && $inrect($mouse.x, $mouse.y, 40, 1 40, 306, 18) { did -h $dname 21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,3 6 did -v $dname $calc(18 + (($mouse.x + 2) / 18)) } if %DA.Event == sclick3 { var %DA.Count = 1 while %DA.Count <= 16 { if $did($calc(20 + %DA.Count)).visible { var %DA.Colour = N $+ $base(%DA.Count, 10, 10, 2) break } inc %DA.Count } if S !isin %DA.Type { if $did(6).state { var %DA.FilterType = F } elseif $did(7).state { var %DA.FilterType = H } elseif $did(8).state { var %DA.FilterType = M } } var %DA.MinSpeed = $iif($did(14), M $+ $ifmatch) var %DA.RecordSpeed = $iif($did(15), R $+ $ifmatch) var %DA.AutoDownload = $didtick(10, D) var %DA.WholeLine = $iif($did(4).state || S isin %DA.Type, L) var %DA.WordsOnly = $didtick(9, W) var %DA.FreeSlots = $didtick(5, S) var %DA.CaseSensitive = $didtick(13, C) var %DA.State = $iif($regex($gettok(%DA.Data, 3, 8), /([*+-])\|/), $reg ml(1), $iif(* isin %DA.Type, *, -)) var %DA.Switch = $sorttok($fnewtok(%DA.State, %DA.AutoDownload, %DA.WholeLin e, %DA.WordsOnly, %DA.FreeSlots, %DA.CaseSensitive, %DA.FilterType, %DA.Colour, %DA.Min, %DA.Record, 124), 124) $+ $chr(124) var %DA.Boolean = $rxmake($did(2), %DA.Switch).boolean var %DA.Regex = $rxmake($did(2), %DA.Switch).regex var %DA.Desc = $iif($did(12), $ifmatch, $iif($regex(%DA.Boolean, /^ //), $nbsp(Regex # $+ $calc(($window(@DA.Regex*, 0) / 2) + 1)) )) set %DA.Filter $nbsp($iif(%DA.Desc, $ifmatch, %DA.Boolean)) set %DA.Data $newtok(%DA.Boolean, %DA.Regex, %DA.Switch, %DA.Desc, 8) if %DA.OldFilter !== %DA.Filter && $hget(DA.Filters, %DA.Filter) { haltdef } } if %DA.Event = sclick7 { did -v $dname 18 } if $regex(%DA.Event, /sclick(6|8)/) { did -h $dname 18,21,22,23,2 4,25,26,27,28,29,30,31,32,33,34,35,36 } did $iif($regex($did(2), /^//), -b, -e) $dname 9,13 } on *:DIALOG:DA.Dialog.Edit:*:*: { var %DA.Event = $+($devent, $did) if %DA.Event == init0 { did -a $dname 2 %DA.DEdit } } on *:DIALOG:DA.Dialog.Pack:*:*: { var %DA.Event = $+($devent, $did) var %DA.Type = $iif($regex($dialog($dname).title, /Add/), Add, Edit) if %DA.Event == init0 { filter -cwo @DA.Networks DA.Dialog.Pack 8 if %DA.Type == Add { clipboard .timerda.pack.import -mio 0 200 DA.Pack.Import var %DA.Network = $iif($gettok(%DA.DEdit, 1, 8), $ifmatch, $netid) var %DA.Chan = $lower($gettok(%DA.DEdit, 2, 8)) var %DA.Nick = $gettok(%DA.DEdit, 3, 8) var %DA.Pack = $gettok(%DA.DEdit, 4, 8) var %DA.Desc = $gettok(%DA.DEdit, 5, 8) var %DA.SearchSite = $iif($DA.Readini(Options, SearchSite), $ifmatch, pack etnews) } else { var %DA.Network = $DA.Status(0).network var %DA.Chan = $DA.Status(0).chan var %DA.Nick = $DA.Status(0).nick var %DA.Pack = $iif(!$DA.Status(0).ismp3, $DA.Status(0).pack) var %DA.Desc = $DA.Status(0).desc did -b $dname 3,13,18,24 } did -c $dname 8 $iif($didwm($dname, 8, %DA.Network), $ifmatch, 1) didtok $dname 9 44 $addtoks($DA.Readini(Channels, %DA.Network), %DA.Chan , 44) did -o $dname 10 1 %DA.Nick did -o $dname 11 1 %DA.Pack did -o $dname 12 1 %DA.Desc if %DA.Type == Edit && $DA.Status(0).ismp3 { did -b $dname 11 } else { did -o $dname 11 1 %DA.Pack } didtok $dname 19 32 msg ctcp did -c $dname 19 1 did -o $dname 20 1 xdcc did -o $dname 21 1 send if $regex($hget(DA.PackCmd, $fnewtok($did(8), $did(10), 8)), /( ?i)(ctcp|msg|)\s(\S+)\s(.*)/) { if $regml(1) { did -c $dname 19 $didwm(19, $regml(1 ;)) } did -o $dname 20 1 $regml(2) did -o $dname 21 1 $regml(3) } if %DA.SearchSite == packetnews { did -c $dname 3 } elseif %DA.SearchSite == ircspy { did -c $dname 24 } if %DA.Chan { if !$didwm($dname, 9, %DA.Chan) { did -a $dname 9 %DA.Chan } did -c $dname 9 $iif($didwm($dname, 9, %DA.Chan), $ifmatch, 1) if !$did(12) { did -f $dname 12 } if !$did(11) { did -f $dname 11 } if !$did(10) { did -f $dname 10 } } else { did -c $dname 9 1 did -f $dname 13 } } if $regex(event, %DA.Event, /sclick8|edit10|edit11/) { if %DA.Type == Add && $did(8) && $did(10) && $did(11) && $DA .Packs($fnewtok($did(8), $did(10), $cleanchan($did(11)), 8)).des c { did -o $dname 12 1 $ifmatch } } if %DA.Event == edit10 && $did(10) && $hget(DA.PackCmd, $fnewt ok($did(8), $did(10), 8)) && $regex($ifmatch, /(?i)(ctcp|msg|)(.*)\ s(.*)/) { if $regml(1) { did -c $dname 19 $didwm(19, $ifmatch) } if $regml(2) { did -o $dname 20 1 $regml(2) } if $regml(3) { did -o $dname 21 1 $regml(3) } } did $iif(%DA.Type == Add && $did(8) && $did(9) && $did(10) && $isp ack($cleanchan($did(11))), -e, -b) $dname 18 if %DA.Event == sclick8 { did -r $dname 9 didtok $dname 9 44 $DA.Readini(Channels, $did(8)) did -c $dname 9 $iif($didwm(9, $did(9)), $ifmatch, 1) } if $regex(event, %DA.Event, /edit13|sclick3|sclick14|sclick15 |sclick24|sclick25/) { if $did(13) { if $did(3).state { set %DA.SearchSite packetnews } elseif $did(24).state { set %DA.SearchSite ircspy } .timerda.dialog.pack -io 1 2 .run $DA.SearchSite(%DA.SearchSite, $did( 13)) } did -f $dname 13 } if (%DA.Event == sclick17 || %DA.Event == sclick18) && %DA.Type == Add { if $did(8) && $did(9) && $did(10) && $ispack($cleanchan($did( 9;1))) { DA.PackCmd.Add $fnewtok($did(8), $did(10), 8) / $+ $did(19 ) $did(10) $did(20) $did(21) #0 if $regex($did(11), /#?(\d+)-#?(\d+)/) { var %DA.Count = $regml(1) while %DA.Count <= $regml(2) { var %DA.Packs = $addtok(%DA.Packs, %DA.Count, 44) inc %DA.Count } } else { var %DA.Packs = $did(11) } var %DA.Count = 1 while $gettok(%DA.Packs, %DA.Count, 44) { var %DA.Pack = $cleanchan($ifmatch) var %DA.PackIndex = $fnewtok($did(8), $did(10), %DA.Pack, 8 ) var %DA.Desc = $iif($iif($gettok($did(12), %DA.Count, 44), $ifmatch, $did(12)), $ifmatch, n/a $+ $chr(44) pack %DA.Pack) DA.Status.Add %DA.PackIndex $did(9) %DA.Desc inc %DA.Count } did -r $dname 10,11,12 did -f $dname 10 } } if %DA.Event == sclick17 && %DA.Type == Edit { if $+($did(8),$did(9), $did(10), $did(11), $did(12)) != ($DA.Status(0).network, $DA.Status(0).chan, $DA.Status(0).nick, $DA.Status(0).pack, $DA.Status(0).desc) { var %DA.OldIndex = $newtok($DA.Status(0).network, $DA.Status(0 ;).nick, 8) DA.PackCmd.Add $fnewtok($did(8), $did(10), 8) / $+ $did(19 ) $did(10) $did(20) $did(21) #0 var %DA.Count = 1 while $fline(@DA.Status, $+(*, %DA.OldIndex, $chr(8), *), %DA.Count) { var %DA.Line = $ifmatch if %DA.Line == $sline(@DA.Status, 1).ln { if !$DA.Status(0).ismp3 { var %DA.Pack = $+($chr(35), $remove($did (11), $chr(35))) } else { var %DA.Pack = $DA.Status(%DA.Line).pack } var %DA.Desc = $did(12) var %DA.Switch = -a } else { var %DA.Pack = $DA.Status(%DA.Line).pack var %DA.Desc = $iif($DA.Status(%DA.Line).desc, $ifmatch, n/a) var %DA.Switch = $null } var %DA.NewIndex = $newtok($did(8), $did(10), 8) var %DA.Data = $str($chr(160), 10) $+ $newtok(,%DA.NewIn dex, %DA.Pack, $gettok($DA.Status(%DA.Line).line, 5-7, 8),,8) rline %DA.Switch @DA.Status %DA.Line $newtok($DA.Status(%DA.Line).status , $DA.Status(%DA.Line).done, $did(8), $did(9), $+($did(10)), $iif($D A.Status(%DA.Line).size, $ifmatch, n/a), %DA.Data, %DA.Desc, 9) if %DA.OldIndex == %DA.NewIndex { inc %DA.Count } } } } if %DA.Event == close0 && %DA.Type = Add { if %DA.SearchSite { DA.Writeini Options SearchSite %DA.SearchSite unset %DA.SearchSite } .timerda.pack.import off } } on *:DIALOG:DA.Dialog.Nickserv:*:*: { var %DA.Event = $+($devent, $did) if %DA.Event == init0 { var %DA.OldNetwork = $gettok(%DA.DEdit, 2, 8) var %DA.OldNick = $gettok(%DA.DEdit, 1, 8) set %DA.OldLine $fline(@DA.Nicks, $+(%DA.OldNick, $iif(%DA.OldNetwork, $chr( 32) $+ on $ifmatch), $chr(8), *)) filter -cwo @DA.Networks DA.Dialog.Nickserv 8 did -a $dname 8 $null did -c $dname 8 $didwm(8, %DA.OldNetwork) did -of $dname 3 1 %DA.OldNick did -o $dname 5 1 $gettok($line(@DA.Nicks, %DA.OldLine), 2, 8) } if %DA.Event == sclick6 { if %DA.OldLine { dline @DA.Nicks %DA.OldLine } aline -n @DA.Nicks $newtok($did(3) $+ $iif($did(8), $chr(32) $+ on $ifmatch) , $did(5), 8) set %DA.DEdit $did(8) } if %DA.Event == close0 { unset %DA.OldLine } did $iif($did(3) && $did(5), -e, -b) $dname 6 } on *:DIALOG:DA.Dialog.Profiles:*:*: { var %DA.Event = $+($devent, $did) if %DA.Event == init0 { did $iif($DA.Readini(Options, ProfileHide) == Yes, -c, -u) $dname 4 did $iif($DA.Readini(Options, ProfileAdd) == Yes, -c, -u) $dname 5 didtok $dname 2 44 $DA.Profiles var %DA.Count = 1 while %DA.Start && $gettok($DA.Readini(Options, StartProfile), %DA.Count, 44 ) { did -ck $dname 2 $didwm(2, $ifmatch) inc %DA.Count } } if %DA.Event == sclick4 { DA.Writeini Options ProfileHide $iif($did(4).state, Yes, No) } if %DA.Event == sclick5 { DA.Writeini Options ProfileAdd $iif($did(5).state, Y es, No) } if %DA.Event == sclick3 || %DA.Event == dclick2 { var %DA.Count = 1 while %DA.Count <= $did(2, 0).sel { set -u1 %DA.DialogResult $addtok(%DA.DialogResult, $did(2, $did(2, %DA .Count).sel), 44) inc %DA.Count } dialog -k $dname } } on *:DIALOG:DA.Dialog.ProfileFilters:*:*: { var %DA.Event = $+($devent, $did) if %DA.Event == init0 { var %DA.Count = 1 while $hfind(DA.Filters, /[-+]\|/, %DA.Count, r).data { var %DA.Filter = $ifmatch var %DA.Types = $gettok($hget(DA.Filters, %DA.Filter), 3, 8) var %DA.Type = $iif($regex(%DA.Types, /(H|F)/), $regml(1)) did -a $dname 2 $+(%DA.Filter, $chr(32), $chr(40), %DA.Type, $chr(4 9;)) inc %DA.Count } } elseif %DA.Event == sclick3 || %DA.Event == dclick2 { var %DA.Count = 1 while $did(2, %DA.Count).sel { var %DA.Filter = $did(2, $ifmatch) if !$didwm(DA.Dialog.Config, 139, %DA.Filter) { did -a DA.Dialog.C onfig 139 %DA.Filter } inc %DA.Count } dialog -k $dname } } on *:DIALOG:DA.Dialog.ProfileFilters:*:*: { var %DA.Event = $+($devent, $did) if %DA.Event == init0 { .timerda.packs.details -mio 0 500 DA.P acks.Details } elseif %DA.Event == close0 { DA.Writeini Options PackDetails $dialog(DA.Di alog.PackDetails).x $dialog(DA.Dialog.PackDetails).y $dialog(DA.Dialog.Pack Details).w $dialog(DA.Dialog.PackDetails).h } } on *:DIALOG:DA.Dialog.Confirm:*:*: { var %DA.Event = $+($devent, $did) if shutdown isin $did(2) && %DA.Event == sclick4 { DA.Exit -s if $regex($os, /XP|NT/) { .run shutdown.exe -s -t 1 } else { .run rundll.exe user.exe,exitwindows } } } ; Dialog Aliases ; --------------------------------------------- alias DA.Config { if $dialog(DA.Dialog.Config) { dialog -ve DA.Dialog.Config } else { dialog -mv DA.Dialog.Config DA.DialogDef.Config } did -fu DA.Dialog.Config $1 } alias DA.PackDetails { if $dialog(DA.Dialog.PackDetails) { dialog -ve DA.Dialog.PackDetails } else { dialog -mv DA.Dialog.PackDetails DA.DialogDef.PackDetails } } alias DA.Networks.Populate { did -r $dname 123,124 set %DA.NumChannels $null if $did(122, 0).sel == 1 { var %DA.Network = $did(122).seltext if $isfile($+($scriptdir, clists\, %DA.Network, .txt)) { filter -cfo $quoted($+($scriptdir, clists\, %DA.Network, .txt)) $dnam e 123 $+(*, $did(129), *) set %DA.NumChannels $filtered } var %DA.Count = 1 while %DA.Count && $read($DA.ServersIni, w, $+(*GROUP:, %DA.Network), %DA.Co unt) { if $regex(server, $ifmatch, /SERVER:(.*?):/) { did -a $dname 124 $regml(server, 1) } var %DA.Count = $calc($readn + 1) } } DA.Networks.Switch } alias DA.Networks.Switch { var %DA.Dialog = DA.Dialog.Config did $iif($did(%DA.Dialog, 122, 0).sel != 0, -e, -b) %DA.Dialog  7;6,100,135 did $iif($did(%DA.Dialog, 122, 0).sel != 0 && $did(%DA.Dialog,  9;28), -e, -b) %DA.Dialog 136 did $iif($did(%DA.Dialog, 122, 0).sel == 1, -e, -b) %DA.Dialog  9;23,124,114,15,9,10 did $iif($did(%DA.Dialog, 123).sel, -e, -b) %DA.Dialog 115,134 did $iif($did(%DA.Dialog, 123).sel && $did(%DA.Dialog, 128), -e, -b) % DA.Dialog 133 did $iif(%DA.NumChannels, -e, -b) %DA.Dialog 129 did $iif($did(%DA.Dialog, 124).sel && $calc($did(%DA.Dialog, 124).line s - $did(%DA.Dialog, 124, 0).sel) > 0, -e, -b) %DA.Dialog 1& #48; did $iif($did(%DA.Dialog, 124).sel && $did(%DA.Dialog, 124).lines > ; 1 && $did(%DA.Dialog, 124, 0).sel == 1, -e, -b) %DA.Dialog  9;5 did $iif($did(%DA.Dialog, 125).sel && $did(%DA.Dialog, 125).lines > ; 1 && $did(%DA.Dialog, 125, 0).sel == 1, -e, -b) %DA.Dialog 37 } alias DA.Favourites.Populate { did -r $dname 132 if $did(130, 0).sel == 1 { didtok $dname 132 44 $DA.Readin i(Channels, $did(130).seltext) } DA.Favourites.Switch } alias DA.Favourites.Switch { did $iif($did(130).sel, -e, -b) $dname 3,14,53 did $iif($did(132).sel, -e, -b) $dname 2,116 } alias DA.Profiles.Populate { var %DA.Profile = $nbsp(Profile $did(128).seltext) did -r $dname 137,138,139 var %DA.Count = 1 while $gettok($hfind(DA.Ini, $+(%DA.Profile, $chr(7), *), %DA.Count, w), 2, 7) { var %DA.Item = $ifmatch var %DA.Data = $DA.Readini(%DA.Profile, %DA.Item) var %DA.Types = $gettok(%DA.Data, 3, 8) if %DA.Item == Filters { var %DA.Inner = 1 while $gettok(%DA.Data, %DA.Inner, 8) { did -a $dname 139 $ifmatch $+($chr(40), $iif($istok($gettok( $hget(DA.Filters, $ifmatch), 3, 8), F, 124), F, H), $chr(41)) inc %DA.Inner } } else { did -a $dname 138 %DA.Item } inc %DA.Count } did $iif($istok($DA.Readini(Options, StartProfile), $did(128).seltext , 44), -c, -u) $dname 66 did -c $dname 138 1 DA.Profiles.Network.Populate } alias DA.Profiles.Network.Populate { var %DA.Profile = $nbsp(Profile $did(128).seltext) did -r $dname 137 if $did(138, 0).sel == 1 { var %DA.Network = $did(138).seltext didtok $dname 137 44 $remove($DA.Readini(%DA.Profile, %DA.Network), $chr (160)) } DA.Profiles.Switch } alias DA.Profiles.Switch { did $iif($did(128).lines, -e, -b) $dname 128,35,66,73 did $iif($did(128).lines && $did(138).lines, -e, -b) $dname 8 did $iif($did(138).sel, -e, -b) $dname 38,89 did $iif($did(137).sel, -e, -b) $dname 42 did $iif($did(139).sel, -e, -b) $dname 72 } alias DA.Columns.Populate { var %DA.Item = $gettok($did(148).seltext, 1, 32) var %DA.Columns = $strip($DA.Titles(%DA.Item, a)) var %DA.ColumnSizes = $DA.Readini(Columns, %DA.Item) did -r $dname 149 var %DA.Count = 1 while $gettok(%DA.Columns, %DA.Count, 9) { did -a $dname 149 $ifmatch $+($chr(40), $iif($gettok(%DA.ColumnS izes, %DA.Count, 44) isnum, $ifmatch, n/a), $chr(41)) inc %DA.Count } set %DA.PrevColumns %DA.Item } alias DA.Columns.Save { var %DA.Item = $gettok($1, 1, 32) var %DA.Activate = $2 var %DA.Count = 1 while $did(149, %DA.Count) { if $regex($ifmatch, /\((\d+)\)/) { var %DA.Columns = $instok(%DA.Column s, $regml(1), 0, 44) } inc %DA.Count } if %DA.Columns != $DA.Readini(Columns, %DA.Item) { DA.Writeini Columns %DA.Item %DA.Columns if %DA.Item == Packs { var %DA.Count = 1 while $hfind(DA.Filters, /[*+]\|.*?F\|/, %DA.Count, r).data { var %DA.Window = $+(@DA., $ifmatch) DA.Columns.Window %DA.Item %DA.Window inc %DA.Count } } elseif %DA.Item { var %DA.Window = $+(@DA., %DA.Item) DA.Columns.Window %DA.Item %DA.Window } if %DA.Activate && %DA.Window { window -a %DA.Window } } } alias DA.Columns.Window { var %DA.Item = $1 var %DA.Window = $2 var %DA.Sort = $strip($wildtok($line(%DA.Window, 1), $+(*, $chr(3), $cname (sort), *), 1, 9)) if $window(%DA.Window) { if $strip($line(%DA.Window, 1)) == $strip($DA.Titles(%DA.Window, h)) { window -h %DA.Window renwin %DA.Window %DA.Window $+ _old DA. $+ %DA.Item $+ .Open %DA.Window filter -cww %DA.Window $+ _old %DA.Window window -c %DA.Window $+ _old } else { window -c %DA.Window clear %DA.Window $+ _H hdel -w DA.Packs $mid(%DA.Window, 5) $+ * DA. $+ %DA.Item $+ .Open %DA.Window } DA.SetTitle %DA.Window %DA.Sort window -b %DA.Window } } alias DA.Colours.Populate { did -r $dname 32 var %DA.Count = 1 while $gettok($hfind(DA.Ini, $+(Colours, $chr(7), *), %DA.Count, w), 2, 7) { var %DA.Item = $ifmatch var %DA.Colour = $DA.Readini(Colours, %DA.Item) did -a $dname 32 %DA.Item $bracketed(%DA.Colour) inc %DA.Count } did -c $dname 32 1 } alias DA.Functions.Populate { did -r $dname 109 var %DA.Count = 1 while $gettok($hfind(DA.Ini, $+(Fkeys, $chr(7), *), %DA.Count, w), 2, 7) { did -a $dname 109 $ifmatch $bracketed($DA.Readini(Fkeys, $ifmatc h)) inc %DA.Count } did -c $dname 109 1 } alias DA.Fkeys.Populate { did -r $dname 110 did -a $dname 110 None var %DA.Count = 1 while %DA.Count <= 3 { var %DA.Inner = 1 while %DA.Inner <= 12 { var %DA.Fkey = $gettok(F Shift-F Ctrl-F, %DA.Count, 32) $+ %DA.Inner if %DA.Fkey != F1 && (* $+ $bracketed(%DA.Fkey) iswm $did(10&# 57;).seltext || !$didwm(109, * $+ $bracketed(%DA.Fkey))) { did -a $dname 110 %DA.Fkey } inc %DA.Inner } inc %DA.Count } if $regex($did(109).seltext, /\((.*)\)/) { did -c $dname 110 $didwm(110, $regml(1)) } } alias DA.Options.Switch { did $iif($did(62, 0).sel, -e, -b) $dname 65 did $iif(($did(97, 0).sel && !$regex($did(DA.Dialog.Config, 9 7, 1).seltext, /Free\xA0slots\s\(H[+-]\)/)) || $did(97, &# 48;).sel > 1, -e, -b) $dname 98 did $iif($did(97, 0).sel, -e, -b) $dname 50 did $iif($did(48).state, -e, -b) $dname 39 did $iif($did(61).state, -e, -b) $dname 71 did $iif($did(61).state, -e, -b) $dname 30 } alias DA.Status.Switch { did $iif($did(51).state, -e, -b) $dname 54 did $iif($did(52).state, -e, -b) $dname 55 } alias DA.Pack.Import { var %DA.Dialog = DA.Dialog.Pack var %DA.Count = 1 while $cb(%DA.Count) { var %DA.Clips = $addtok(%DA.Clips, $ifmatch, 8) inc %DA.Count } var %DA.Count = 1 while $cb(%DA.Count) { var %DA.Clip = $replace($gettok(%DA.Clips, %DA.Count, 8), $chr(8), $chr(32)) var %DA.Network = $null var %DA.Chan = $null var %DA.Nick = $null var %DA.Pack = $null var %DA.Desc = $null if $regex(network, %DA.Clip, /(?i)^(?:network|server):\s(.*?)(?:\s|$)/) { var %DA.Network = $regml(network, 1) } if $didwm(%DA.Dialog, 8, %DA.Clip) { var %DA.Network = %DA.Clip } if $regex(chan, %DA.Clip, /(?i)^(?:channel:\s|)(#\S+)$/) { var %DA.Chan = $regml(chan, 1) } if $did(%DA.Dialog, 3).state && $regex(line, %DA.Clip, /(?i)^(.*?)[\s]. *?(#\d+)\s.*?(\d+\.?\d{0,2}[bkmg])\s(.*)/) { var %DA.Nick = $regml(line, 1) var %DA.Pack = $regml(line, 2) var %DA.Desc = $regml(line, 4) } if %DA.Network { if $didwm(%DA.Dialog, 8, %DA.Network) { did -c %DA.Dialog 8 $ifmatch } var %DA.Current = $did(%DA.Dialog, 9) did -r %DA.Dialog 9 didtok %DA.Dialog 9 44 $DA.Readini(Channels, $did(%DA.Dialog, 8)) did -c %DA.Dialog 9 $didwm(%DA.Dialog, 9, %DA.Current) } if %DA.Chan { if !$didwm(%DA.Dialog, 9, %DA.Chan) { did -a %DA.Dialog 9 %DA.Chan } did -c %DA.Dialog 9 $didwm(%DA.Dialog, 9, %DA.Chan) } if %DA.Nick { did -o %DA.Dialog 10 1 %DA.Nick } if %DA.Pack { did -o %DA.Dialog 11 1 $chr(35) $+ $remove($ltrim( %DA.Pack), $chr(35)) } if %DA.Desc { did -o %DA.Dialog 12 1 %DA.Desc } if %DA.Network || %DA.Chan || %DA.Nick || %DA.Pack || %DA.Desc { var %DA.Cli ps = $deltok(%DA.Clips, %DA.Count, 8) } inc %DA.Count } clipboard $replace(%DA.Clips, $chr(44), $crlf) did $iif($did(%DA.Dialog, 8) && $did(%DA.Dialog, 9) && $did(%DA.Dialog, &# 49;0) && $ispack($cleanchan($did(%DA.Dialog, 11))), -e, -b) %DA.Dial og 18 } ; Profile Aliases ; --------------------------------------------- alias DA.Profile.Add { set %DA.DText Add profile set %DA.DEdit $null var %DA.Profile = $iif($1-, $1-, $dialog(DA.Dialog.Edit, DA.DialogDef. Edit, -3)) if %DA.Profile { DA.Profile.Save $replace(%DA.Profile, $chr(44), _) } } alias DA.Profile.Save { var %DA.Profile = $nbsp($iif($1-, Profile $1-, Profile Saved)) DA.Writeini %DA.Profile var %DA.Count = 1 while $scon(%DA.Count) { if $scon(%DA.Count).netid { DA.Writeini %DA.Profile $ifmatch $iif($scon(%DA. Count).chans, $ifmatch, $chr(160)) } inc %DA.Count } } alias DA.Profiles.Open { set -u5 %DA.ActiveWin $active set -u5 %DA.ActiveCid $cid if $hfind(DA.Ini, $+($nbsp(Profile Saved), $chr(7), *), 1, w) { var %DA.Profiles = Saved } elseif $1 && $1 != select && !%DA.Start { var %DA.Profiles = $1- } elseif ($DA.Readini(Options, ProfileSelect) == Yes || $1 == select) && $di alog(DA.Dialog.Profiles, DA.DialogDef.Profiles, -3) { var %DA.Profiles = %DA.DialogResult } elseif %DA.Start { var %DA.Profiles = $DA.Readini(Options, StartProfile) } hdel -w DA.Profile * unset %DA.Start ; Consolidate selected profiles var %DA.Count = 1 while $gettok(%DA.Profiles, %DA.Count, 44) { var %DA.Profile = $nbsp(Profile $ifmatch) var %DA.Inner = 1 while $gettok($hfind(DA.Ini, $+(%DA.Profile, $chr(7), *), %DA.Inner, w), 2, 7) { var %DA.Item = $ifmatch var %DA.Value = $iif($DA.Readini(%DA.Profile, %DA.Item) != $chr(160 ;), $ifmatch) if $chr(8) !isin %DA.Item && $hget(DA.Profile, %DA.Item) { hadd DA.Profile %DA.Item $addtoks($ifmatch, %DA.Value, 44) } else { hadd DA.Profile %DA.Item %DA.Value } inc %DA.Inner } inc %DA.Count } if !$hget(DA.Profile, 0).item { return } ; Open and close filters if $hget(DA.Profile, Filters) { var %DA.Filters = $ifmatch hdel DA.Profile Filters var %DA.Count = $hfind(DA.Filters, /[+-]\|/, 0, r).data while %DA.Count > 0 { var %DA.Filter = $hfind(DA.Filters, /[+-]\|/, %DA.Count, r).data var %DA.Types = $gettok($hget(DA.Filters, %DA.Filter), 3, 8) if $istok(%DA.Filters, %DA.Filter, 8) { if $istok(%DA.Types, F, 124) && !$window(@DA. $+ %DA.Filter) { DA.Fi lter %DA.Filter CN } elseif $istok(%DA.Types, H, 124) { DA.Packs.Filter.OnOff %DA.Filter + } } elseif $DA.Readini(Options, ProfileAdd) != Yes { if $window(@DA. $+ %DA.Filter) { DA.Packs.Close $ifmatch } else { DA.Packs.Filter.OnOff %DA.Filter - } } dec %DA.Count } if !$hget(DA.Profile, 0).item { return } } ; Disconnect networks & channels, for networks that aren't connected or ar en't being used by da.status. if $DA.Readini(Options, ProfileAdd) != Yes { var %DA.Count = 1 while $scon(%DA.Count) { scid $ifmatch if !$hget(DA.Profile, $netid) && ($status != connected || !$rxfline(@ DA.Status, /(?i)^(\x3|Queued).* $+ $rxreplace($netid) $+ /, 0, 2)) { while $hfind(DA.mp3Chans, $netid $+ *, 1, w).data { hdel DA.mp3Chans $ifmatch } if $status == connected { disconnect .partall } } inc %DA.Count } } ; Close channels which aren't in profile & join channels for networks that exist var %DA.Count = 1 while $scon(%DA.Count) { scid $ifmatch if ($status == connected && $hget(DA.Profile, $netid)) || $rxfline(@DA. Status, /(?i)^(\x3|Queued).* $+ $rxreplace($netid) $+ /, 0, 2) { var %DA.Chans = $hget(DA.Profile, $netid) var %DA.Inner = 1 while $chan(%DA.Inner) { if $DA.Readini(Options, ProfileAdd) != Yes { if !$rxfline(@DA.Status, /(?i)^(\x3|Requested|Queued|Offline ).* $+ $rxreplace($fnewtok($netid, $chan(%DA.Inner), 9)) $+ /, 0) & & !$istok(%DA.Chans, $chan(%DA.Inner), 44) { part $chan(%DA.Inner) if $hget(DA.mp3Chans, $chan(%DA.Inner)) { hdel DA.mp3Chans $chan(%DA .Inner) } } } inc %DA.Inner } if $numtok(%DA.Chans, 44) { join -n $remtoks(%DA.Chans, $chans, 44) } if $hget(DA.Profile, $netid) { hdel DA.Profile $netid } } inc %DA.Count } ; Create necessary networks var %DA.Count = 1 while $hget(DA.Profile, %DA.Count).item { var %DA.Network = $ifmatch if $DA.Connect(%DA.Network) { hadd DA.Profile $ifmatch $hget(DA.Profile, %DA.Network) hdel DA.Profile %DA.Network } inc %DA.Count } ; Close unused networks var %DA.Count = $scon(0) while %DA.Count > 0 { scid $scon($ifmatch) if $status == disconnected && $scon(0) > 1 { window -c "Stat us Window" } dec %DA.Count } DA.Writeini $nbsp(Profile Saved) } alias DA.Profile.List { if $1 == begin { set -u1 %DA.Profiles $sorttok($DA.Profiles, 44) } elseif $int($1) && $gettok(%DA.Profiles, $1, 44) { return $ifmatch : D A.Profiles.Open $ifmatch } } alias DA.Profiles { var %DA.Count = 1 while $mid($gettok($hfind(DA.Ini, $+(Profile, $chr(160), *), %DA.Count , w), 1, 7), 9) { var %DA.Result = $addtok(%DA.Result, $ifmatch, 44) inc %DA.Count } return %DA.Result } ; dccAssist Packs Aliases ; --------------------------------------------- alias DA.Packs.Open { if !$regex($1-, /(?:-([ahn])|())\s?(@\S+|)/) { return } var %DA.Switch = $regml(1) var %DA.Window = $iif($regml(2), $ifmatch, @DA.Packs) var %DA.Filter = $mid(%DA.Window, 5) DA.Packs.Filter.OnOff %DA.Filter + if !$window(%DA.Window) { if n !isin %DA.Switch { if %DA.Window == @DA.Packs { hadd DA.Filters Packs $fnewtok(//, //, $fnewt ok(*, F, $chr(160), 124),Packs, 8) } elseif %DA.Window = @DA.Quick { hadd DA.Filters Quick $fnewtok(Quick, /^$/ , $fnewtok(*, F,, 124), Quick, 8) } } window -lk0nzR $+ $iif(h isin %DA.Switch, h, $DA.Desktop(@DA.Packs).para ms) $+ $iif(%DA.Window == @DA.Quick, e) $DA.Columns(Packs) %DA.Window @DA.Packs $DA.Readini(Options, Font) DA.SetTitle %DA.Window window -lhk0nz %DA.Window $+ _H DA.Packs.Monitor.OnOff Yes } if a isin %DA.Switch { window -a %DA.Window } } alias DA.Packs.Clear { var %DA.Window = $iif($1, $1, $active) var %DA.Sort = $strip($wildtok($line(%DA.Window, 1), $+(*, $chr(3), $cname (sort), *), 1, 9)) clear %DA.Window clear %DA.Window $+ _H hdel -w DA.Packs $mid(%DA.Window, 5) $+ * if $window(%DA.Window).title { titlebar %DA.Window } DA.SetTitle %DA.Window %DA.Sort window -b %DA.Window } alias DA.Packs.Close { var %DA.Window = $iif($1, $1, $active) var %DA.Filter = $mid(%DA.Window, 5) if $istok($gettok($hget(DA.Filters, %DA.Filter), 3, 8), *, 124) { hdel DA .Filters %DA.Filter } else { DA.Packs.Filter.OnOff %DA.Filter - } if $hfind(DA.Filters, /[*+]\|.*?F\|/, 0, r).data == 0 { hdel -w DA.Packs * hdel -w DA.Slots * } else { hdel -w DA.Packs %DA.Filter $+ * } close -@ %DA.Window $+ * DA.Packs.Monitor.OnOff } alias DA.Packs.Add { if !$2 { tokenize 32 $1 } if $1 == list { var %DA.PackIndex = $2 var %DA.Nick = $gettok(%DA.PackIndex, 2, 8) var %DA.Chan = $3 var %DA.Line = $4- } else { var %DA.Regex1 = /(?i)^\D{0,5}[.#\(\[](\d{1,2})[\s\]\}].{&# 48;,15}?(\d+\.?\d{0,2}[\s\xA0]?[bkmg]i?b?|n/a).+?([\w\(\[].*?)( ?:[-\s\(\[]+\d+\sgets.*|$)/ var %DA.Regex2 = /(?i)^\D{0,5}#(\d{1,2})[\s\]\}].+?([\w\(\[].+? )(\d+\.?\d{0,2}[\s\xA0]?[bkmg]i?b?|n/a)/ if $regex(pack, $3-, %DA.Regex1) { var %DA.Line = $chr(35) $+ $regml(pack, 1) $cleanFS($regml(pack, 2)) $ replace($regml(pack, 3), _, $chr(32)) } elseif $regex(pack, $3-, %DA.Regex2) { var %DA.Line = $chr(35) $+ $regml(pack, 1) $cleanFS($regml(pack, 3)) $ replace($regml(pack, 2), _, $chr(32)) } else { return } var %DA.PackIndex = $addtok($1, $gettok(%DA.Line, 1, 32), 8) var %DA.Nick = $gettok(%DA.PackIndex, 2, 8) var %DA.Chan = $lower($2) } var %DA.Index = $gettok(%DA.PackIndex, 1-2, 8) var %DA.Network = $gettok(%DA.PackIndex, 1, 8) var %DA.Pack = $gettok(%DA.PackIndex, 3, 8) var %DA.Size = $gettok(%DA.Line, 2, 32) var %DA.SizeSort = $round($calc($numbytes(%DA.Size) / 1024), 0) var %DA.Age = $ctime var %DA.Desc = $gettok(%DA.Line, 3-, 32) if $hget(DA.Slots, %DA.Index) { var %DA.Slots = $gettok($ifmatch, 1, 9) var %DA.Queue = $gettok($ifmatch, 2, 9) var %DA.Min = $gettok($ifmatch, 3, 9) var %DA.Record = $gettok($ifmatch, 4, 9) var %DA.SlotsSort = $gettok($ifmatch, 5, 9) var %DA.MinSort = $gettok($ifmatch, 6, 9) var %DA.RecSort = $gettok($ifmatch, 7, 9) } else { var %DA.Slots = n/a var %DA.Queue = n/a var %DA.Min = n/a var %DA.Record = n/a var %DA.SlotsSort = ---- var %DA.MinSort = 0 var %DA.RecSort = 0 } var %DA.SortData = $+(%DA.SlotsSort, $chr(8), %DA.MinSort, $chr(8), %DA.RecSor t, $chr(8), %DA.Age, $chr(8), %DA.SizeSort, $str($chr(8), 2)) var %DA.Line = $null if $istok(%DA.PacksTitle, Slots, 9) { var %DA.Line = $instok(%DA.Line, %DA .Slots, 0, 9) } if $istok(%DA.PacksTitle, Queue, 9) { var %DA.Line = $instok(%DA.Line, %DA .Queue, 0, 9) } if $istok(%DA.PacksTitle, Min, 9) { var %DA.Line = $instok(%DA.Line, %DA.M in, 0, 9) } if $istok(%DA.PacksTitle, Record, 9) { var %DA.Line = $instok(%DA.Line, %D A.Record, 0, 9) } if $istok(%DA.PacksTitle, Network, 9) { var %DA.Line = $instok(%DA.Line, % DA.Network, 0, 9) } if $istok(%DA.PacksTitle, Channel, 9) { var %DA.Line = $instok(%DA.Line, % DA.Chan, 0, 9) } if $istok(%DA.PacksTitle, Nick, 9) { var %DA.Line = $instok(%DA.Line, %DA. Nick, 0, 9) } if $istok(%DA.PacksTitle, Pack, 9) { var %DA.Line = $instok(%DA.Line, %DA. Pack, 0, 9) } if $istok(%DA.PacksTitle, Age, 9) { var %DA.Line = $instok(%DA.Line, $asct ime(%DA.Age, HH:nn), 0, 9) } if $istok(%DA.PacksTitle, Size, 9) { var %DA.Line = $instok(%DA.Line, %DA. Size, 0, 9) } var %DA.Line = %DA.Line $+($chr(9), $str($chr(160), 10), $ chr(8), %DA.PackIndex, $chr(8), %DA.Chan, $chr(8), %DA.SortData, $chr(9 ), %DA.Desc) if $DA.Packs.Highlight.Apply(packs, %DA.Line) { var %DA.Line = $ifmatch } var %DA.Count = 1 while $hfind(DA.Filters, /[*+]\|.*?F\|/, %DA.Count, r).data { var %DA.Filter = $ifmatch var %DA.Index = $+(%DA.Filter, $chr(8), %DA.PackIndex) var %DA.Window = $+(@DA., %DA.Filter) if $window(%DA.Window $+ _H) { var %DA.Data = $hget(DA.Filters, %DA.Filter) if !$hfind(DA.Packs, %DA.Index, 1) && $regex($strip(%DA.Line ), $gettok(%DA.Data, 2, 8)) { hadd DA.Packs %DA.Index $uptime(mirc, 3) aline %DA.Window $+ _H %DA.Line if $istok($gettok(%DA.Data, 3, 8), D, 124) { var %DA.AutoDownload = $true } } } inc %DA.Count } if %DA.AutoDownload { DA.Status.Add %DA.PackIndex %DA.Chan %DA.Size %DA.Desc } elseif %DA.Hotlink { DA.Status.Add $iif($DA.Readini(Options, ConfirmAdd) == Yes, -d) %DA.PackInde x %DA.Chan %DA.Size %DA.Desc unset %DA.Hotlink } hadd DA.PackNicks $gettok(%DA.PackIndex, 1-2, 8) } alias DA.PackCmd.Add { if $numtok($1, 8) == 2 { if $regex(cmd, $2-, /(?i)/(msg|ctcp)\s\S+\s(\S+)\s([a-z]+\s?[a-z]*)\s[. #]/) && $regmls(cmd, 32) != msg xdcc send && $regml(cmd, 0) == 3 && $re gml(cmd, 3) != info && $regmls(cmd, 32) { hadd DA.PackCmd $1 $regmls(cmd, 32) } elseif $regmls(cmd, 32) == msg xdcc send { hdel DA.PackCmd $1 } } } alias DA.Packs.Process { inc %DA.BufferLine if $line(@DA.Buffer2, %DA.BufferLine) { var %DA.Buffer = $strip($ifmatch) if !$DA.Packs.Add(%DA.Buffer) { DA.PackCmd.Add %DA.Buffer DA.Slots.Add %DA.Buffer } } } alias DA.Packs.Refresh { var %DA.Count = 1 while $hfind(DA.Filters, /[*+]\|.*?F\|/, %DA.Count, r).data { var %DA.Window = $+(@DA., $ifmatch) if $window(%DA.Window) { if $line(%DA.Window $+ _H, 0) > 0 && ($active != %DA.Window || !$appactive || $sline(%DA.Window, 1).ln == 1 || !$sline(%DA.Window,  8;) || $1 == refresh) { DA.Selected.Store %DA.Window filter -ww %DA.Window $+ _H %DA.Window clear %DA.Window $+ _H if %DA.Window == $active && $DA.Readini(Sort, PacksAuto) == Yes { DA.Sor t %DA.Window } DA.Selected.Restore %DA.Window window -bg1 %DA.Window } titlebar %DA.Window $iif($line(%DA.Window $+ _H, 0), $chr(124) $if match new packs $+ $chr(44) press TAB to update) } inc %DA.Count } if %DA.Bufferline { dline @DA.Buffer2 1- $+ %DA.BufferLine unset %DA.Bufferline } if $window(@DA.Buffer1) { filter -wwg @DA.Buffer1 @DA.Buffer2 /(?i)([\ x28.#]\d+|\b(sends?|sl[ou]ts?|queues?)\b|\d+\.?\d{0,2}[\s\xA0] ?[bkmg]i?b?|/msg|/ctcp)/ } if $filtered { set %DA.Average $instok(%DA.Average, $filtered, 0, 43) if $numtok(%DA.Average, 43) > 24 { set %DA.Average $gettok(%DA.Average, 2-, 43) } var %DA.Delay = $iif($int($calc(4000 / ((%DA.Average) / $numtok (%DA.Average, 43)))) < 250, $ifmatch, 250) if $abs($calc((%DA.Delay -$timer(da.packs.process).delay) / %DA.Delay)) > ; 0.2 { .timerda.packs.process -mio 0 %DA.Delay DA.Packs.Process } } clear @DA.Buffer1 } alias DA.Packs.Request { if $sline($active, 0) == 1 && $DA.Readini(Options, ConfirmAdd) == Yes { var %DA.Switch = -d } var %DA.Count = 1 while $sline($active, %DA.Count).ln { var %DA.Line = $ifmatch if %DA.Line != 1 { DA.Status.Add %DA.Switch $DA.Packs(%DA.Line).packinde x $DA.Packs(%DA.Line).chan $DA.Packs(%DA.Line).size $DA.Packs(%DA.Line).des c } inc %DA.Count } unset %DA.Shift } alias DA.Packs.Monitor.OnOff { if $hfind(DA.Filters, /[*+]\|.*?F\|/, 0, r).data { .timerda.packs.refresh -io 0 5 DA.Packs.Refresh .timerda.packs.process -mio 0 100 DA.Packs.Process if $DA.Readini(Options, PacksExpire) { .timerda.packs.expire -io & #48; 600 DA.Packs.Expire } else { .timerda.packs.expire off } cwindow -hlk0z @DA.Buffer1 cwindow -hlk0z @DA.Buffer2 } else { .timerda.packs* off close -@ @DA.Buffer* } unset %DA.Average unset %DA.BufferLine } alias DA.Filter { if !$regex($1-, /(?:(?:@DA\.|)(\S+)\s|())([CFTSN*+-]{1,})/) { ret urn } set %DA.Filter $regml(1) set %DA.Type $regml(2) if F isin %DA.Type { set %DA.Title Filter set %DA.Prompt Filter text matching if $hget(DA.Filters, %DA.Filter) { set %DA.Data $ifmatch } elseif $len(%DA.Filter) == 1 { set %DA.Data %DA.Filter } else { unset %DA.Data } } elseif T isin %DA.Type { set %DA.Data $newtok(%DA.Filter, $rxmake(%DA.Filter, T).regex, $fn ewtok(*, F, T,, 124),, 8) } elseif S isin %DA.Type { set %DA.Title Spam set %DA.Prompt Ignore messages matching set %DA.Data $DA.Readini(Spam, %DA.Filter) } elseif C isin %DA.Type { DA.Packs.Filter.OnOff %DA.Filter + set %DA.Data $hget(DA.Filters, %DA.Filter) } set %DA.OldFilter %DA.Filter var %DA.OldData = %DA.Data if $regex(%DA.Type, /[FS]/) { if !$dialog(DA.Dialog.Filter, DA.DialogDef.Filter, $iif($dialog(DA.Dialog.Co nfig), -4, -3)) || %DA.Data === %DA.OldData { return } if %DA.Filter != %DA.OldFilter { if F isin %DA.Type && $hget(DA.Filters, %DA.OldFilter) { hdel DA.Filters %DA.OldFilter window -c @DA. $+ %DA.OldFilter var %DA.Changed = $true } if S isin %DA.Type && $DA.Readini(Spam, %DA.OldFilter) { DA.Writeini Spam %DA.OldFilter } } } if $regex(%DA.Type, /[CFT]/) { hadd DA.Filters %DA.Filter %DA.Data if $regex($gettok(%DA.Data, 3, 8), /[*+]\|/) { if $istok($gettok(%DA.Data, 3, 8), F, 124) { var %DA.Window = $+(@DA., %DA.Filter) var %DA.FWindow = $iif($hget(DA.Filters, $mid($active, 5)), $active, $ii f($window(@DA.Packs), $ifmatch)) if $window(@DA. $+ %DA.Filter) { var %DA.Sort = $strip($wildtok($line($ifmatch, 1), $+(*, $chr(3), $cname(sort), *), 1, 9)) DA.Packs.Close $ifmatch } DA.Packs.Open %DA.Window if %DA.FWindow { filter -brwwg 2- $+ $line(%DA.FWindow, 0) %DA.FWindow %DA.Window $ gettok(%DA.Data, 2, 8) set %DA.PF_Window $addtok(%DA.PF_Window, %DA.Window, 8) .timerda.packs.filter.process -mio 0 5 DA.Packs.Filter.Process } DA.Sort %DA.Window %DA.Sort window -b $+ $iif((N !isin %DA.Type && $line(%DA.Window, 0) > &# 49;) || %DA.Changed, a) %DA.Window } else { DA.Packs.Highlight } } } elseif $regex(%DA.Type, /S/) { DA.Writeini Spam %