CRACK.cdDon't Pay, We Know Another Way! |
|
DCCASSIST V1.72
Download the crack/serial/keygen for "dccAssist v1.72".
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 % |