Post
by Lax » Sat Nov 15, 2003 11:21 am
In the last 3 days I have been working hard to redefine the future of Macroquest. The people who have seen the work this far are pleased, and the time draws near to actually allow public beta testing. Please note that nothing in the current MQ will be changed, or broken. This will be an entirely new distribution, from the same place. For now the project is dubbed MQ2.
So what is MQ2?
MQ2 is an EverQuest development platform, with some default functionality. The development platform is so good, in fact, that it is second only to having the current EQ source code. Gone are the days for inline assembly (99% of it anyway) in MQ. Now we have a much cleaner and easier method of stealing! What was previously 10 lines of inline assembly, is now 1 line that looks like pEverQuest->dsp_chat(Line,Color);...
MQ2 is plugin-based. There is a main DLL, MQ2Main, which contains the API needed to create plugins that do pretty much anything. Plugins simply include a "MQ2Plugin.h" header file and instantly gain access to everything in MQ2Main, all of the data structures, etc. To add custom commands, you use AddCommand. To add custom ParseMacroParameters parms, like $char, you use AddParm. To add a detour, you use AddDetour. To execute code on every MQ pulse, you make copy the plugin template function OnPulse(). And so on. It's incredibly simple.
Many people have great ideas like bazaar functionality.. .. and many have things they do not want to share, and don't want to have to diff in their changes every time they get a new source. Now, instead of the cumbersome "EQLib_Custom.cpp", you simply make a plugin and it's independent.
What sort of plugins...?
Several features of "old" Macroquest are removed from the main system. Namely: FPS Limiter, Chat (including the windows), Map labelling, UI Labels, Item display mods, Telnet. Plugins can handle all of these and more. In fact, most of the features just listed already have been developed in plugin form. A little more testing by developers and things will be ready.
Can my plugin use another plugin as an API?
Sure. You probably shouldn't try to use things from plugins that arent designed to be API. Export things from the API plugin, and import them in the functional plugin, and make sure the functional plugin is using the .lib from the API plugin in addition to the others needed.
What does this mean for us right NOW, not tomorrow when we can get this?
MQ2 is a couple days behind as far as new features and fixes implemented in the "old" macroquest CVS. Anything implemented since a few days ago will have to be re-done into MQ2. I'm working fast to keep this delta as small as possible.
WHEN DOES BETA START
It should not be long before we have a zip for you to download for beta testing. Beta testing will last as long as it takes to get the plugins tested, which will not be long.
Once the default set of plugins is working, we can call it a "stable" release.