What I've been up to... (aka ShowEQ 5)
Lately I've been working on some major changes to ShowEQ. These changes are very pervasive and aim to both clean up a lot of the code and add new/improved features. When I am done (or at least decide to declare victory) we will have ShowEQ 5.0. I have decided to do this development in a seperate branch within CVS to insulate the regular users from these changes until they stabilize. Once certain milestones are achieved and certain features stabilize I will be releasing beta versions.
Some of the changes related to this development have already been included in (4.3.17, 4.3.17.1, and 4.3.18).
Here are other changes that have already been completed or are nearing completion, but won't be released in 4.3.x:- Added zone safepoint support to ZoneMgr
- Some dependency cleanups.
- Fix to support people running EQ under winex.
- Switch to using QRegExp for filter pattern matching.
- Major cleanup/revamp of Filter handling (stage 1), filters are now stored in their own sub-directories, and now uses an XML format.
- Created a perl script filter2xml.pl which can be used to convert existing filter conf files to the new XML format.
- More major cleanup of packet handling (stage 2). Migrated opcode,implicitlen and dispatch handling to an XML based system (see worldopcodes.xml and zoneopcodes.xml).
- Modified logging of decoded world/zone packets to include which packet in the opcode DB they matched, when the entry was updated, and information about the type that is supposed to be in the payload.
- Fixed the spawn logger to log the adjusted x/y/z values for zone/new spawns..
- Slight improvement in map loading speeds.
- Properly support seperation of user data from distributed program data, including support for a .showeq directory or the like
- Migrated SEQWindow to be based off of QDockWindow so that all classes derived from it could take advantage of Qt's native dockable window support.
Here is what I currently see as the TODO list for 5.0 (this list will change with items being added and removed):[list][*]Packet handling:[list=1][*]Add support for an EQPacketSession concept that will support one SEQ process to monitor N EQ clients.[*]Organized packet capture display with the ability to filter in/out different
packets. [*]More general packet cleanup.[/list=1][*]Better support for running with SetUID.[*]Move all non-GUI related stuff out of EQInterface[*]Move terminal UI to its own class[*]Move eqstr_{}.txt handling to its own class[*]Improved filtering system[*]Map: - Support multiple user configurable icons (for spawns, pc's, items, etc...)
- Support display of zone safepoint (from zone packet)
- Support more map editing capabilities.
- Support simple map optimization
- Support rescaling the Z for a whole map to allow migration of old/borked maps.[/list=1]
- Move maps, filters, spawnpoints, and logs to their own subdirectories.
- New message storage, filtering, and UI.
- Support for LoY guild information capture/display.
- Redo the base UI so that it is loaded from a QT .ui file to make it easier for the users to reconfigure/add stuff.
- Seperate UI from data storage/handling in Combat Window and Experience Window
- Create new and improved item db support.
- Improved group/guild/raid support.
If people have specific feature requests I am willing to entertain them (or at least be entertained by them). Also, if people wish to volunteer to contribute to this effort it would be greatly appreciated.
Going forward my 4.3.x work will be limited to opcode and structure changes to keep up with EQLive as well as the occasional bug fix.
Thanks and Enjoy,
Zaphod (dohpaZ)
Re: Robust log configuration
Quote:
Originally posted by monklett
More robust configuration in logging of spawns, times, locs, etc.
This is the sort of data that is necessary to sort out many quests, etc. (I still haven't quite figured out the SRo AC spawn, although I have killed him over a dozen times).
Even a simple switch to just dump all this to disk, without packet information, would be nice.
Ummm, most of what you just mentioned can be gotten out of the spawnlog (which doesn't contain packet information). So, what are you requesting that is different then the spawn log?
Enjoy,
Zaphod (dohpaZ)
Re: Re: Robust log configuration
Quote:
Originally posted by Zaphod what are you requesting that is different then the spawn log?
I apologize; that post sucked. I shouldn't have flashed it out before bed. What I actually had in mind was log file support for Xylobot and other 3rd party apps.
You see, Xylobot can only accept input from a log file or by reading the colors of specific pixels on the screen (imagine a black screen with only your health/mana bar and chat window). With some programming, like looping a /loc key, you can do rudimentary things like move to a certain location or face a general direction. However, you cannot do things like chase a fleeing mob, or determine the distance between 2 mobs, or even (reliably) face a specific direction.
Of course, Macroquest can do all these things and more. However, it has its own issues in that: (1) its far more detectable, because of the way it reads and writes eqclient information, (2) its scripting language is much less robust (although Xylobot's isn't great either), and (3) it has been available in a functional state far less often than Xylobot over the last couple of years.
However, if ShowEQ could be coaxed into writing only a couple of facts to a disk file every second or so, Xylobot libraries could be easily written to perform nearly all of Macroquest's advanced features, without its issues.
These facts are:
1) your current loc and the direction you are facing in degrees. (I believe EQ's precision is only 2 degrees--at least that true for the client display--I am not sure how it is stored internally).
2) the loc and direction of your current target.
3) (optionally) the loc and direction of any mobs within configurable distance X of your loc.
An update would be made when values change, up to once per second.
When I looked into pulling this information out of the spawn file a few weeks back (you may remember my post about the changes in logger.cpp), it became evident that the best way to do this would be to use a perl or python script to parse the spawn log, strip out the relevant information, and then write it to another file. A better way would be through a config option within ShowEQ to output this information separately, which is what I was looking at doing when I made that post.
(Actually, the right way would be to connect directly to Xylobot via TCP, etc., but that has its own issues. Using the custom log file approach is adequate, well supported within Xylobot, and would allow this information to also be used from any other 3rd party app without any additional tweaks or support issues from the ShowEQ team).
Anyway, I have written some fairly complex Xylobot scripts (including one that will grind AAs without human intervention), and am quite familiar with its quirks and limitations. If this sounds like a feature that you would be interested in, I can provide much more detail on what to output, etc.