How To Make a Clean Compile

Psycotic

Whats This Do?
Joined
Sep 28, 2005
Messages
1,460
Reaction score
0
Points
36
Location
Modesto, CA
I've been trying to compile a list of things that you need to do to make a clean "hackable" compile, with all the blocks the MQ2Devs have put in taken out.. Here's what I've come up with so far.. Please feel free to add to this to identify any other blocks in the code..

Code Changes
Code:
Legend:

++  = Add this line where specified
--   = Delete or comment out this line  (You can comment it out by typing a "//" in the front of the line)
Code:
####################
### MQ2Inlines.h ###
####################

-- #define SuccorFunc 0
-- #define Warp				 0


###################
### EQClasses.h ###
###################

-- #define ZoneToGoTo 0
-- #define SafeZLoc 0
-- #define SafeYLoc 0
-- #define HackPackHelp		 0


################
### EQData.h ###
################

Add the 3 SafeLoc's to get warp to work.

Look for "struct _ZONEINFO" and change the following 

   /*0x23b*/   BYTE    Unknown0x23b[0xd];
   /*0x248*/   FLOAT   ZoneExpModifier;    //This has been nerfed ..now reads 1.0 for all zones
-- /*0x24c*/   FLOAT   Unknown0x24c[3];
++ /*0x24c*/   FLOAT   SafeYLoc;
++ /*0x250*/   FLOAT   SafeXLoc;
++ /*0x254*/   FLOAT   SafeZLoc;
   /*0x258*/   FLOAT   Ceiling;
   /*0x25c*/   FLOAT   Floor; 
 

Look for MAX_ZONES and change this for DoDh zones.. (Needs updating for PoR)

-- #define   MAX_ZONES                                    0x15B   
++ #define   MAX_ZONES                                    0x18A   

-- #define ExactLocation		 0
-- #define zWarp				 0


#####################
### EQUIStructs.h ###
#####################

-- #define GateBind          0
-- #define Fly					 0
-- #define SafeXLoc 0


####################
### MQ2Globals.h ###
####################

   namespace MQ2Globals
   {
++ EQLIB_VAR float FPS;
   /* BENCHMARK HANDLES */ 

-- #define ZoneShift			 0


#####################
### MQ2Internal.h ###
#####################

-- #define PKT_CORPSE_DRAG		 0
-- #define PKT_CORPSE_DROP      0
`-- #define PKT_UPDATE_POSITION  0
-- #define _UPDATEPOSITIONPKT	 0


#################
### MQ2Main.h ###
#################

-- #define CDisplay__MoveLocalPlayerToSafeCoords 0


#######################
### MQ2Prototypes.h ###
#######################

-- #define DoWarp				 0


#########################
### MQ2CommandAPI.cpp ###
#########################

--	if (!stricmp(Command,"/warp"))
--	{
--		Function=0;
--	}


#######################
### MQ2Commands.cpp ###
#######################

   VOID PluginCmdSort(VOID)
   {
--     PMQCOMMAND pCmd=pCommands;
--     int i;
--     while(pCmd) {
--         if (pCmd->EQ==0) {
--             //
--             for(i=0;i<sizeof(keyarray)/4;i+=4) {
--                 if (!stricmp(pCmd->Command, (char *)&keyarray[i])) {
--	             pCmd->Function=CmdCmd;
--                 }
--             }
--         }
--         pCmd=pCmd->pNext;
--     }
   }


###################
### MQ2Data.cpp ###
###################

   TLO(dataString)
   {
--    WriteChatf("Due to complete misuse of the String Top-Level Object, it has been removed.");
--    return false;
-- /*
      if (!ISINDEX())
         return false;
      strcpy(DataTypeTemp,szIndex);
      Ret.Ptr=&DataTypeTemp[0];
      Ret.Type=pStringType;
      return true;
-- /**/
   }


#######################
### MQ2DataVars.cpp ###
#######################

-- #ifndef SafeXLoc
-- #error 1
-- #endif


########################
### MQ2DetourAPI.cpp ###
########################

-- #ifndef SuccorFunc
-- 	gFilterMQ=1;
-- 	gbHUDUnderUI=1;
-- 	gSpewToFile=1;
-- #endif


######################
### MQ2Globals.cpp ###
######################

   namespace MQ2Globals
   {
++    float FPS=0.0f;

   /* BENCHMARKS */ 

-- #ifndef DoWarp
-- BOOL bLaxColor=TRUE;
-- #else
   BOOL bLaxColor=FALSE;
-- #endif


##################
## MQ2Main.cpp ###
##################

-- #ifndef ExactLocation
-- 	bLaxColor=TRUE;
-- 	gSpewToFile=1;
-- 	gFilterMQ=1;
-- #endif


############################
### MQ2Pluginhandler.cpp ###
############################

-- static unsigned int mq2mainstamp = 0;
++ static unsigned int mq2mainstamp = 1;


--	if (!stricmp(Filename,"mq2warp")) // ^_^
--	{
--		return 0;
--	}

--    if (!mq2mainstamp) {
--        mq2mainstamp = checkme((char*)GetModuleHandle("mq2main.dll"));
--    }

--    if (mq2mainstamp > checkme((char*)hmod)) {
--        char tmpbuff[MAX_PATH];
--        sprintf(tmpbuff, "Please recompile %s -- it is out of date with respect to mq2main (%d>%d)", FullFilename, mq2mainstamp, checkme((char*)hmod));
--        DebugSpew(tmpbuff);
--        MessageBoxA(NULL, tmpbuff, "Plugin Load Failed", MB_OK);
--        FreeLibrary(hmod);
--        return 0;
--    }


#####################
### MQ2Spawns.cpp ###
#####################

-- #ifndef GateBind
-- 	ProcessGameEvents=0;
-- #endif


#####################
### MQ2MapAPI.cpp ###
#####################

-- #ifndef zWarp
--     gSpewToFile=1;
-- #endif
 
Last edited by a moderator:
What's the exact significance of this Psy?
 
Aneuren said:
What's the exact significance of this Psy?

These are bits of code that have been added to the MQ2 source to stop people from warping and other "cheats" that the MQ2 dev team don't want their "cheat" program to be used for.

Each time I post a compile, I have to manually remove and add all these things.
 
Fry said:
Each time I post a compile, I have to manually remove and add all these things.

You should try out "Beyond Compare" I use it whenever i'm making my own compile. I have a set of files that show just the differences that need to be changed. I open those files, lightlight the area and merge them. Save, move to next file.

The whole process of "modifying" the devs release of macroquest to a fully functional code takes mabye 5 minutes from start to finish. :)
 
That's pretty cool. Thanks for all the hard work. I know the devs over at MQ are trying to push their new program, as well as trying to remove the older program from circulation. Having said that, I have to really laugh at their line of reasoning. I guess it's only ok to hack if you hack their way...otherwise, you're clearly just an account phisher /sarcasm :rolleyes:
 
MQ2-20060705 - Major changes

We need to rewrite this perhaps, or maybe wait till next patch and see if it stays. However looking inside MAIN.H there is no
Code:
#define CDisplay__MoveLocalPlayerToSafeCoords 0
and there are a few minor like no "SuccorFunc" at all in MQ2DetourAPI.cpp to remove. So odd changes, wonder if this is just an oversight or will they revert back?
 
It looks like they took some of the blocks out if their latest code themselves.. I don't know if they'll be back in or not, but here's the latest version of the blocks. Slightly shorter now since about 3-4 files had their blocks already removed..

I'm leaving the old version up as well since they may choose to bring back the old ones in the next release..

Code:
####################
### MQ2Inlines.h ###
####################

-- #define Warp				 0


###################
### EQClasses.h ###
###################

-- #define ZoneToGoTo 0
-- #define SafeZLoc 0
-- #define SafeYLoc 0
-- #define HackPackHelp		 0


################
### EQData.h ###
################

Add the 3 SafeLoc's to get warp to work.

Look for "struct _ZONEINFO" and change the following 

   /*0x23b*/   BYTE    Unknown0x23b[0xd];
   /*0x248*/   FLOAT   ZoneExpModifier;    //This has been nerfed ..now reads 1.0 for all zones
-- /*0x24c*/   FLOAT   Unknown0x24c[3];
++ /*0x24c*/   FLOAT   SafeYLoc;
++ /*0x250*/   FLOAT   SafeXLoc;
++ /*0x254*/   FLOAT   SafeZLoc;
   /*0x258*/   FLOAT   Ceiling;
   /*0x25c*/   FLOAT   Floor; 
 

Look for MAX_ZONES and change this for DoDh zones.. (Needs updating for PoR)

-- #define   MAX_ZONES                                    0x15B   
++ #define   MAX_ZONES                                    0x188   

-- #define ExactLocation		 0
-- #define zWarp				 0


#####################
### EQUIStructs.h ###
#####################

-- #define GateBind          0
-- #define Fly					 0
-- #define SafeXLoc 0


####################
### MQ2Globals.h ###
####################

   namespace MQ2Globals
   {
++ EQLIB_VAR float FPS;
   /* BENCHMARK HANDLES */ 

-- #define ZoneShift			 0


#######################
### MQ2Prototypes.h ###
#######################

-- #define DoWarp				 0


#########################
### MQ2CommandAPI.cpp ###
#########################

--	if (!stricmp(Command,"/warp"))
--	{
--		Function=0;
--	}


#######################
### MQ2Commands.cpp ###
#######################

   VOID PluginCmdSort(VOID)
   {
--     PMQCOMMAND pCmd=pCommands;
--     int i;
--     while(pCmd) {
--         if (pCmd->EQ==0) {
--             //
--             for(i=0;i<sizeof(keyarray)/4;i+=4) {
--                 if (!stricmp(pCmd->Command, (char *)&keyarray[i])) {
--	             pCmd->Function=CmdCmd;
--                 }
--             }
--         }
--         pCmd=pCmd->pNext;
--     }
   }


###################
### MQ2Data.cpp ###
###################

   TLO(dataString)
   {
--    WriteChatf("Due to complete misuse of the String Top-Level Object, it has been removed.");
--    return false;
-- /*
      if (!ISINDEX())
         return false;
      strcpy(DataTypeTemp,szIndex);
      Ret.Ptr=&DataTypeTemp[0];
      Ret.Type=pStringType;
      return true;
-- /**/
   }


#######################
### MQ2DataVars.cpp ###
#######################

-- #ifndef SafeXLoc
-- #error 1
-- #endif


######################
### MQ2Globals.cpp ###
######################

-- #ifndef DoWarp
-- BOOL bLaxColor=TRUE;
-- #else
   BOOL bLaxColor=FALSE;
-- #endif


############################
### MQ2Pluginhandler.cpp ###
############################

-- static unsigned int mq2mainstamp = 0;
++ static unsigned int mq2mainstamp = 1;


--	if (!stricmp(Filename,"mq2warp")) // ^_^
--	{
--		return 0;
--	}

--    if (!mq2mainstamp) {
--        mq2mainstamp = checkme((char*)GetModuleHandle("mq2main.dll"));
--    }

--    if (mq2mainstamp > checkme((char*)hmod)) {
--        char tmpbuff[MAX_PATH];
--        sprintf(tmpbuff, "Please recompile %s -- it is out of date with respect to mq2main (%d>%d)", FullFilename, mq2mainstamp, checkme((char*)hmod));
--        DebugSpew(tmpbuff);
--        MessageBoxA(NULL, tmpbuff, "Plugin Load Failed", MB_OK);
--        FreeLibrary(hmod);
--        return 0;
--    }


#####################
### MQ2Spawns.cpp ###
#####################

-- #ifndef GateBind
-- 	ProcessGameEvents=0;
-- #endif


#####################
### MQ2MapAPI.cpp ###
#####################

-- #ifndef zWarp
--     gSpewToFile=1;
-- #endif
 
ok, I got a link to this thread. My question is this: Does this make MQ2 More detectable to the people who use active hacks to SoE?
 
TurkReno said:
ok, I got a link to this thread. My question is this: Does this make MQ2 More detectable to the people who use active hacks to SoE?

Doubt it. Until the last few weeks we've actually been removing them all. Now we don't bother. We just use our plugins to work around MQ2 rather than using MQ2 to work around our plugins.

Fry.
 
I know it would just be easier to rename the functions, but these specific modifications were not made to the compile that I did until just recently...and it still worked. So...that makes me wonder, I know they're anti-warp/active hack, but what else would they be capable of?
 
Thank you both of you. I guess it shows just how long that I've been compiling when I don't have certain tools like that. Thank you very much.
 
After the new change of source code of warping and zoning in MMOBugsTools and piggyzone

Do we still need to remove the anti-warp code in MQ2 zip?
Anything we still need to remove?

I was doing my own clean compile by removing all the mainstamp and anti-warp code, then just load MQ2mmobugstools plugin to use it
I think I just need to remove the mainstamp now?
 
Shiatzy said:
I think I just need to remove the mainstamp now?

That's true.. MQ2MMOBugsTools pretty much removes the blocks except the plugin mainstamp..
 
I am curious what program you are using to make these compiles. I have very little knowledge in programming but am looking to finish my degree in ethical hacking. I would greatly benefit if I could use code that I can see the results with. Any help would be appreciated.
Summo
 
MacroQuest2 and all the plugins are written in C++. You would need Microsoft Visual Studios C++.. Any version from 6.0 to 2005 works. You can download the source code directly from the MacroQuest2 Web Site (Source Code Download)

The MacroQuest2 Wiki has some detailed info on compiling the source code for the first time. That would be the place to start..
 
OLD

I know that this is kind of outdated but is there a recent list for us old-skool compilers that like to remove all that stuff?
 
This is indeed current. If any thing there is 1 or 2 that can be removed, but there are no new blocks.