You guys are going to love this

A forum for feature requests/discussions and user submitted patches that improve MQ2

Moderator: MacroQuest Developers

Amadeus
The Maestro
The Maestro
Posts: 2036
Joined: Sat Jun 29, 2002 3:51 pm

You guys are going to love this

Post by Amadeus » Tue Jun 17, 2003 12:16 am

Well...today I was trying to discover where I could find the new "spell descriptions"..and, I made an intriguing discovery. :) It seems that there are a buttload of strings stored in memory, very similar to how the spelllist is stored in memory.

Well, it turns out that there are 7282 strings stored in memory, and the fun part is that they all have an ID, but yet they're not stored in memory based on their ID. Sooooo....fun and games, of course.

The struct is as follows:

Code: Select all

// 06-11-2003	Amadeus
#define   TOTAL_STRING_COUNT	7282
typedef struct _STRINGLIST {
/*0x000*/	DWORD	ID;
/*0x004*/	CHAR	*String;
/*0x008*/	DWORD	Unknown0x008[2];
/*0x010*/	WORD	UnknownData0x010;
/*0x012*/	WORD	UnknownData0x012;
/*0x014*/	WORD	UnknownData0x014;
/*0x016*/	WORD	UnknownData0x016;
} STRINGLIST, *PSTRINGLIST;
And, just for shits and giggles, I wrote a routine that went through and read every single one and created a tilde delimited file that I could import to Excel. Using the cool excel version I have, I saved it as an interactive web page and uploaded it for all of you to see. (The web page itself is 5megs, the zip file is 220k ..gotta love zip). The address is: http://www.geocities.com/AmadeusMQ (there is only one file to download)

The first field marked "Idx" is the index by which they're stored in the pointer list.

Anyway....I'm posting hoping that someone might see some similarties in the list (the interactive webpage will let you sort by any of the fields) and perhaps help us determine what the unknown fields are in the struct.

--------------------------------------------
EDIT: Now that I look at it, it looks as though all of those UnknownData fields could be bitwise flags. It's also possible that they're two DWORDs instead of 4 WORDS ...but, I'm not sure there's any way of being sure....

cybernerd
a lesser mummy
a lesser mummy
Posts: 38
Joined: Tue May 13, 2003 11:05 pm

Post by cybernerd » Tue Jun 17, 2003 9:44 am

To me it looks like all the text in the game that is not typed by PCs. All your spell effects, every item combine/fail, forage, everything. My guess is that instead of the EQ server sending you a message they send you a bit code that tells it which message to give you on your screen. That would be a pain in the butt to set up, but once it's working it's all good. Personally, I'd rather send the text, but that would take up alot of bandwidth with 100k players on EQ at the same time. That's probably one of the ways that EQ saves on bandwidth. Maybe I shouldn't say this, but maybe if we ask the guys over at ShowEQ they might know what data inside the packets convert to messages because ShowEQ displays when you cast a spell and such. It's not like you see it on EQ, but their program knows that you cast a spell, which is a start. My favorite one is the GM message for EXP

-The Nerd :lol:

sprite
a lesser mummy
a lesser mummy
Posts: 51
Joined: Tue Apr 15, 2003 8:42 am

Post by sprite » Tue Jun 17, 2003 11:12 am

Hail eqstr_en.txt (found in your EverQuest directory) =P

Amadeus
The Maestro
The Maestro
Posts: 2036
Joined: Sat Jun 29, 2002 3:51 pm

Post by Amadeus » Tue Jun 17, 2003 11:24 am

Yes...it is a text file in the directory, just as the spelllist is as well. However, it is nice to know where it is located in memory and the struct definition in case anyone ever wanted to use it. It would negate the necessity of parsing the text file into memory 'again'.