Page 2 of 4

Posted: Thu Apr 24, 2003 2:56 am
by Amadeus
I'd give anything to know how you guys do this ..hehe. C++ makes so much sense...but this structure finding business just seems as ethereal as hell.

Posted: Thu Apr 24, 2003 4:44 am
by dont_know_at_all
No, it's not like pulling them out of thin air.

Take AFK in the SPAWNINFO struct. I found the command table with the entry with "/afk". I looked at the code till I found where it was setting a byte in the structure.

For LFG, since they "gave" use the LFG window, I haven't been able to figure it out. So, I dump my structure with it on and with it off to see what's changed.

It sucks, basically.

Posted: Thu Apr 24, 2003 4:46 am
by zedisdeadbaby
what tools do you use for looking through memory?

all i have is the VC++ debugger (which has always worked for my needs), but i know you guys have better tools than that.
dont_know_at_all wrote:No, it's not like pulling them out of thin air.

Take AFK in the SPAWNINFO struct. I found the command table with the entry with "/afk". I looked at the code till I found where it was setting a byte in the structure.

For LFG, since they "gave" use the LFG window, I haven't been able to figure it out. So, I dump my structure with it on and with it off to see what's changed.

It sucks, basically.

Posted: Thu Apr 24, 2003 5:11 am
by dont_know_at_all
Updated eqgame.ini and mq.h in CVS depot. Killed six things in twenty minutes -- /who does not crash but shows wrong data.

Still missing Linkdead, LFG, and all the SpeedXXX offsets in SPAWNINFO. They are clearly marked wrong in mq.h.

hera are some more...

Posted: Thu Apr 24, 2003 7:29 am
by EqMule
http://macroquest2.com/phpBB2/viewtopic ... 3556#13556

I moved this to developers forum instead...

WARNING NOOB ALERT

Posted: Thu Apr 24, 2003 8:24 am
by compuboy
Hello all, I just got turned onto this by my friend, and I really think that this is an excellent group of people creating things that I would never think would be possible.

I know the subject says noob, but i and not computer illiterate, and can definetly find my way around a comp. I am just wondering, if anyone would mind posting a VERY short thing on what to do when a new patch comes out, I have VS6 Enterprise so instructions for that would be GREAT

Thanks
compuboy

Posted: Thu Apr 24, 2003 8:47 am
by ap50
Any time there's a patch that updates EQGAME.EXE a new set of memory addresses aka the offsets need to be found, a number of people already do this, some better than others though :roll:

Once that's done, if there's been any structure changes to the areas we're messing with, the code gurus nozy around the code and see what's changed, and hopefully update the source code in the CVS.

You then download the CVS updates, assuming you have the complete codebase already, or download the whole thing if you don't, find the relevant posts in here that tell you how to create a VC6 project for the DLL and EXE files, compile them.

Even if there hasn't been any structure changes, you need to modify your EQGAME.INI file which contains the old offsets, and replace them with the current working ones.

Posted: Thu Apr 24, 2003 8:51 am
by compuboy
Cool thanks a lot!

I will read around the site, and try to figure this crap out.... I will post if i run into any brick walls at full spead.

thanks
compuboy

remember: "you dont have to run faster than the bear, you only have to run faster than the slowest person running from the bear"

Re: hera are some more...

Posted: Thu Apr 24, 2003 10:09 am
by eqjoe
EqMule00 wrote:

Code: Select all

typedef struct _SPAWNINFO { 
/*000*/   BYTE   SpawnFlag; 
/*001*/   CHAR   Name[64]; 
/*065*/   BYTE   Unknown065[7];
/*072*/   FLOAT   MovingZ;    //DeltaHeading but not sure if its Z yet
/*076*/   FLOAT   Heading; 
/*080*/   FLOAT   X; 
/*084*/   FLOAT   RunSpeed;
/*088*/   FLOAT   Y; 
/*092*/   FLOAT   Z; 
/*096*/   BYTE   Unknown096[4];
/*100*/   FLOAT  MovingX;   //DeltaHeading but not sure if its X yet
/*104*/   FLOAT  MovingY;   //DeltaHeading but not sure if its Y yet
/*108*/   BYTE   Unknown108[8];
/*116*/   FLOAT   CameraAngle; 
/*120*/   BYTE   Unknown120[12]; 
/*132*/   PACTORINFO   pActorInfo; 
/*136*/   BYTE   Unknown136[7];
/*144*/   BYTE   LFG;
/*145*/   BYTE   Unknown145[76];
/*220*/   DWORD   Zone; 
/*224*/   DWORD   Unknown224; 
/*228*/   struct _SPAWNINFO *pNext; 
/*232*/   PCHARINFO   pCharInfo; 
/*236*/   BYTE   Unknown236[4]; 
/*240*/   struct _SPAWNINFO *pPrev; 
/*244*/   DWORD   Unknown244; 
/*248*/   CHAR   Lastname[32]; 
/*280*/   BYTE   Unknown280[36]; 
/*316*/   BYTE   Level; 
/*317*/   BYTE   Type; 
/*318*/   BYTE   Gender; 
/*319*/   BYTE   Unknown319;
/*320*/   BYTE   HideMode; //1=hidden 2=invis? 3=invis versus undead 4=invis v animals?
/*321*/   BYTE   StandState; 
/*322*/   BYTE   Class; 
/*323*/   BYTE   Unknown323[5]; 
/*328*/   DWORD   SpawnID; 
/*332*/   DWORD   MasterID; 
/*336*/   DWORD   Race; 
/*340*/   BYTE   Unknown340[16]; 
/*356*/	  DWORD   HPCurrent; 
/*360*/   BYTE   Unknown360[8];
/*368*/   DWORD   Deity;
/*372*/   DWORD   HPMax; 
/*376*/   DWORD   GuildID; 
} SPAWNINFO, *PSPAWNINFO;
I can use some help on figuring out the speedheading X Y or Z... /shrug
Thanks Mule!

We need:
Light
SpeedRun
GM
AFK
LinkDead
Anon
Speedheading
AARank
SpeedX
SpeedY


I will try to get AFK, Anon, Light and SpeedRun so at least SuperWho will be close to working by today. We can pad the rest in unknown data so we have placeholders and variables that EQlib.cpp needs so we have a clean build.

At least we will have a working MQ while we find the rest of these........

Posted: Thu Apr 24, 2003 10:30 am
by lostinspace
Edit: I'm not using AFk and Anon, but for those who use, I think that:
AFK = 348
ANON = 340

Edit2: well, speeds probably look like this:
SpeedRun = 100
SpeedX=104
SpeedY=84
SpeedZ=72

Edit3:
LFG= 143

Posted: Thu Apr 24, 2003 10:45 am
by eqjoe
Putting updates in dev section...

Posted: Thu Apr 24, 2003 3:17 pm
by kaz
speed x,y,z are at either

spawninfo+0x48, 0x54, 0x64, 0x68 from what I tested so far, as to which is what I am not sure yet.

Posted: Thu Apr 24, 2003 7:19 pm
by iluvseq
CHARINFO_ posted earlier is not correct at all. Working on decifering it now.

Posted: Fri Apr 25, 2003 1:38 am
by Gengis
K I got latest CVS and Compiled with offsets and seems to be working but I get a constant fast pingage. The left number seems to refresh insanely too fast and the right number is highly high. When I don't use MQ I can play fine.

Posted: Fri Apr 25, 2003 6:47 am
by ewiggins
Gengis wrote:K I got latest CVS and Compiled with offsets and seems to be working but I get a constant fast pingage. The left number seems to refresh insanely too fast and the right number is highly high. When I don't use MQ I can play fine.
I too am having the same problem, a slight workaround is if your setup is like mine, VS 6.0, don't build it as a Release, make a Debug build, that helped stabilize the left-hand ping. If I did a Release build, the left hand number bounces around like crazy between 60-200, whereas Debug build keeps it pretty steady between 120-130 without jumping around alot. (I also set the Byte Alignment from 8 to 1).