General MQ2FPS and MQ2Clipper
Reply
MQ2FPS and MQ2Clipper
I'm new to emulator servers. I played EQ with MQ2 for a number of years. Picking them up again may not be easy as riding a bike, but I'm progressing. I have a rudimentary melee assist macro and cleric heal macro. None of my characters are over level 10 so I'm adding features as my characters grow. I'm running the Titanium build on a Titanium client.

I currently run 2 characters at once but I'm interested in running more. To that end, I'm playing around with the multibox tools available in this MQ2 distribution.

I looked in the Software and Documentation section for help and I can't find MQ2FPS listed. I have some questions about it.
1. Is the MQ2FPS contained within this distribution the same as http://www.macroquest2.com/wiki/index.php/MQ2FPS?

2. Is the "/fps x, y" command supposed to display on screen fps/lag information at the screen coordinates specified? If not what does it do? If so, why does it appear to do nothing for me?

3. For the command "/render bg 75" (in the wiki example in above link), will that EQ process render 1 out of every 75 frames while a background process?

4. Does the render command have any negative effect on MQ2 plugin/macro update speed?

5. Can the MQ2FPS.ini include [servername_username] sections for specific characters?

I also have some questions about MQ2Clipper. I realize Maudigan mentioned it's depricated but it appears to be available and working and I still want to know about the concepts and their affects on multiboxing.
6. Are there any help commands for MQ2Clipper? (/fgclip help, /bgclip help, /automin help list nothing)

7. The text displayed when first loading MQ2Clipper may contain a bug or misleading info. /fgclip 3000 doesn't appear to be a valid command. /fgclip 10 followed by /fgclip 3000 leaves the clipping plane the same as /fgclip 10. /fgclip 2999 appears to be working as expected, though I haven't been outside of Gloomingdeep to test it fully.

8. Does the /fgclip X command use distances akin to the rest of MQ2? If I type /fgclip 100 I should see anyone in range of heal spells and /fgclip 200 I should see all mobs in range of nukes, etc (not including focus items or AA, obviously).

9. Was the ini portion of MQ2Clipper disabled or not implemented?
Tue May 03, 2011 3:33 pm
Senior Project Member
I honestly didn't realize I had mq2fps in there, it was an oversight that it was added, though I suppose I can leave it. I hadn't planned on including it because it slows down game pulses which causes a myriad of issues. On thing is if you have two monitors and thus two game windows visible at once, certain settings can cause the background windows graphics to flash in and out of view. It slows down the pulse events of plugins like mq2melee and follow plugins which causes less accurate and timely behavior. Macros also run at a max lines parsed per game pulse, so slowing the frame rate slows macro parsing. To answer your questions though:

1. Yes, it should be very similar if not identical. I didn't even realize I had set it to include so it may not be up to date.

2. I'm going to have to defer to the documentation at the wiki you linked on this. I've never used the plugin for the reasons I listed, perhaps someone else can give you some info. It may be that the version is old.

3. From what little I understand of the plugin yes.

4. Yes (sorry I didn't read your questions before my rant). In addition to that your graphics will look like crap if you use any window tiling plugins.

This is a broken up snippet of the FPS code. The OnPulse event is in most plugins. Eact plugins onpulse gets executed by macroquest one at a time. So if you have MQ2Foo and MQ2Bar loaded. Then on a game pulse MQ2Foo gets run, then MQ2Bar, then the control returns to everquest for game rendering and actions to take place. If Foo takes 10 seconds to run... then Bar has to wait 10 seconds, and so does the game. In addition the next pulse of Foo also gets pushed back 10 seconds. If each run takes 10 seconds the game becomes unplayable. You can see in the FPS code below there is a Sleep command which literally puts the entire game and plugins into hybernation where it does absolutely nothing. "SleepTime" gets calculated off your settings.

c++
More +

PLUGIN_API VOID OnPulse(VOID)
{
...

               Sleep(SleepTime);    

...  
}


5. From looking at the source it doesn't look like it. You'll notice the GetPrivateProfileInt (the program that loads info from ini files) uses static section names and doesn't include any server names.

c++
More +
    Temp = GetPrivateProfileInt("MQ2FPS","ForegroundMaxFPS",50,INIFileName);
    SetForegroundMaxFPS(Temp);
    Temp = GetPrivateProfileInt("MQ2FPS","BackgroundMaxFPS",30,INIFileName);
    SetBackgroundMaxFPS(Temp);
    MaxFPSMode = GetPrivateProfileInt("MQ2FPS","Mode",FPS_CALCULATE,INIFileName);
    FPSIndicatorX = GetPrivateProfileInt("MQ2FPS","IndicatorX",5,INIFileName);
    FPSIndicatorY = GetPrivateProfileInt("MQ2FPS","IndicatorY",25,INIFileName);
   FPSIndicator = GetPrivateProfileInt("MQ2FPS","Indicator",TRUE,INIFileName);

   gBG_Rate = GetPrivateProfileInt("Rendering","BGRate",30,INIFileName);
   ReverseBG_Rate = GetPrivateProfileInt("Rendering","ReverseBGRate",0,INIFileName);
   gFG_Rate = GetPrivateProfileInt("Rendering","FGRate",1,INIFileName);
   ReverseFG_Rate = GetPrivateProfileInt("Rendering","ReverseFGRate",0,INIFileName);


6. Clipper still works, and shouldn't have any effects on performance (other than positive effects). It does seem to sometimes malfunction on underfoot and SoD. Moving the in game clipping slider seems to fix it sometimes. If you are using titanium it should work fine. The SoD/Underfoot fix will require some investigation of the client.

7. Your right =)
Looks like a nooby logic error on my part, i used less than instead of less than or equal too.

c++
More +
(Arg>0 && Arg<3000)


8. Yes, clipping range and game location uses the same methods of calculation. It is all actually based on the 3D models loaded into direct X. If a tree is 1 wide in game, its coordinates in its geometry file would also actually be 1 wide. The game camera even uses the same coordinate system. So when you get your /loc, everquest is actually just looking at your models coordinates in comparison to the zones model. You're literally seeing model coordinates pumped out by directx.

9. It was never implemented. That plugin is maybe 4 years old and represents the first thing I ever wrote in C++. It's kind of embarrassing actually =). Unfortunately it became popular even though it was just an exercise in learning.
Tue May 03, 2011 8:10 pm
Project Lead
General MQ2FPS and MQ2Clipper
Reply