Post
by AMadMonk » Thu Sep 26, 2002 11:34 am
Oh, forgot to add that I added a switch too, /filter conoutecho [on|off]
This will take NORMAL chat window text (through the chat detour) and echo it to the console window or not (depending upon the setting).
If you are JUST looking at the console window, it's useful to see the normal chat lines. IE, if Bozo The`Clown sends me a tell, unless I have /filter conoutecho on, I won't see it in the console window -- only the EQ window (only MQ-generated text goes to the console window unless /fiter conoutecho is on). Of course, when you can actually SEE the EQ spew, it's annoying to have to ALSO see it duplicated in your MQ spew window. Hence the switch.
---
I need to read about CVS so I can submit these changes. We use a source-control system here at work, but it's very different...
---
Work for today:
* further refine the console so that it's pluggable with other methods of output (IE, Plaz's original idea of a gui console, or redirect through a socket or named pipe)
* come up with a clever method of redirecting input. I'm THINKING of just echoing WM_KEYDOWN and KEYUP events directly through to the client, when it's "hooked". The benefit of this is that you could actually "drive" the client (including events that require key messages as opposed to just WM_CHAR streams) from the remote console. But I want to brainstorm on this to figure out the cleanest idea. I clearly can't do this with the text console I'm using now, because STDIN is too gimpy for this. Hence the need to make the remote input/output method pluggable.
* PRIVATE MOD: hook the /loc memory location and the spawn list, figure out the ShowEQ map format, and do a GUI ShowEQ based upon the in-memory /loc and spawn information. Not going to try to duplicate ShowEQ, just do the map and "radar" display. Obviously this is going to be a very private mod, because integrating ShowEQ and MQ would be a fabulous way to get MQ nerfed into the stone age. I've been wanting to do this for a while, but the guys over on the SEQ boards have conveniently stuffed all of their decrypt functions into a linux lib, and I've been too lazy to figure out how to convert that lib into a VC-linkable format. One benefit is that since the app won't have to do any encrypt/decrypt, it should be MUCH faster...
* resolve, once and for all, my dilemma over how I'm going to thread Perl. I've come up with a few solutions, but none of them are pleasant. Once this is resolved, the real work of hooking Perl in gets started. I needed to have the console working so that my test spew in Perl will go undetected by GM's.
* Perl integration work
I'm thinking of modding MQ so that all of the memory read, chat output, and keyboard/mouse input functions go through a DLL api.
The benefit of this is that add-on's can be written as separate self-contained DLL's. This makes testing MUCHO easier, and allows custom DLL's to be swapped in and out. One DLL could just encapsulate the existing macro functionality. Another DLL could add Perl macro functionality. Another DLL could be my private map/radar module. Etc. DLL's could just register interest in changes in any of the memory locations. We'd have a dedicated monitor thread that would send notifications to the chained DLL's when something changed, and when something DID change, it would go down the list of registered DLL's and call callbacks in them. Mouse and keyboard input would be queued (to avoid concurrency issues). Maybe mouse/keyboard input could be transacted, so that you wouldn't get one DLL telling the mouse to go to loc X,Y, then click, a second DLL saying to go to loc Z, Z', then click, and get those interleaved so the mouse goes to X,Y, then Z,Z', then click, then click. That Would Be Bad.
Hmm, must think about this.