New _ZONELIST structure *complete*

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

New _ZONELIST structure *complete*

Post by Amadeus » Thu May 15, 2003 11:21 pm

The offset currently given (Zones=007600D4) is correct; however, similar to spelllist, there is now an offset for the first zone (0x1c).

The function, GetFullZone was essentually 'hacked' to make work even though the structure/offset was not lining up before. So, I have included a fixed version of that function below. If should replace the one currently found in EQLib.cpp once this structure is introduced.

Code: Select all

// 5-15-2003	Amadeus
#define   ZONELIST_STARTOFFSET      0x1c
typedef struct _ZONELIST {
/*0x000*/	DWORD	Header;
/*0x004*/	DWORD	Expansion;		  // 0=Old World, 1=Kunark, 2=Velious, 3=Luclin, 4=PoP, 5=LoY
/*0x008*/	DWORD	Id;
/*0x00c*/	CHAR	 ShortName[129];
/*0x08d*/	CHAR	 LongName[259];
/*0x190*/	DWORD	Flags;				// (ie, N. Qeynos is 7..which is 1|2|4.  OOT is 32768, etc)
/*0x194*/	DWORD	Id2;				  // This is Id+2242 
/*0x198*/	DWORD	PoPValue;			// This has something to do with Planes of Power zones.	
/*0x19c*/	DWORD	MinLevel;			// Minimum level to access
/*0x1a0*/	WORD	 Revamped;			// 53=original, 4981=revamped (??) 
/*0x1a2*/	WORD	 Unknown0x1a2[3];  // The 3 values here never changed (53, 257, 8)
} ZONELIST, *PZONELIST;

For EQLib.cpp (replace current GetFullZone() with:

Code: Select all

// ***************************************************************************
// Function:    GetFullZone
// Description: Returns a full zone name from a short name
// ***************************************************************************
PCHAR GetFullZone(DWORD ZoneID)
{
	PZONELIST *pZone = NULL;
	if (!EQADDR_ZONELIST) return NULL;
	if (!*EQADDR_ZONELIST) return NULL;
	pZone = (PZONELIST*) (((DWORD)*EQADDR_ZONELIST) + ZONELIST_STARTOFFSET);

	return (*pZone[ZoneID]).LongName;
}
Last edited by Amadeus on Fri May 16, 2003 4:53 am, edited 2 times in total.

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

Post by Amadeus » Thu May 15, 2003 11:26 pm

I will write a function in the next few days that will go through and print out this info for all the zones while in game. I'll post here, and let all you eager beavers try to figure out all the zone flag values ;)

One little tidbit I discovered is that Michiefplane does not have a minimum level....of course, ToV does, so....but hey, it's some interesting info all the same.

eq_freak
a ghoul
a ghoul
Posts: 105
Joined: Mon Jun 24, 2002 7:17 am

Post by eq_freak » Fri May 16, 2003 10:07 am

If you could find the exp modifier somewhere in there it would be cool hehe.

I seem to recall an old post here on the board that mentioned its whereabouts in relation to zone structs.

edit: http://macroquest2.com/phpBB2/viewtopic ... 20modifier

Lax
We're not worthy!
We're not worthy!
Posts: 3524
Joined: Thu Oct 17, 2002 1:01 pm
Location: ISBoxer
Contact:

ZEM

Post by Lax » Fri May 16, 2003 4:39 pm

The ZEM is only in the CURRENT ZONE struct, not in the list. Or, I wouldn't expect it to be in the list that is :)
Lax Lacks
Master of MQ2 Disaster
Purveyor of premium, EULA-safe MMORPG Multiboxing Software
* Multiboxing with ISBoxer: Quick Start Video
* EQPlayNice, WinEQ 2.0

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

Post by Amadeus » Fri May 16, 2003 11:25 pm

Lax's ZONEINFO structure and ZEM information at http://macroquest2.com/phpBB2/viewtopic.php?t=2270

:)

eq_freak
a ghoul
a ghoul
Posts: 105
Joined: Mon Jun 24, 2002 7:17 am

Post by eq_freak » Sat May 17, 2003 2:47 pm

Nice! Thank you both :)