For those on TEST -- pre-June 11

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

For those on TEST -- pre-June 11

Post by Amadeus » Thu Jun 05, 2003 5:36 am

I thought that we could get a headstart on the June 11 patch by having those that play on the test server have some small fixes in advance and help by letting us (or, "me", if no one else is interested..hehe) know what has changed dramatically, and what has not.

After the June 11 patch, I will ask the thread be deleted as to avoid confusion. Also, if you are not playing on test currently, you should ignore the changes on this thread. If you are currently playing on a LIVE server, do not use anything in this thread to alter your MQ after the patch...USE THE CVS AFTER THE PATCH INSTEAD. This thread is simply for anyone that wishes to run MQ on test and help with the patch transition. (And, yes, I know the offsets will probably be different after patch and the structs may very well change too...but it's better than being blind)

Also, I will not be checking EVERYTHING as I'm not attempting to support MQ on the test server. So, please don't start asking for offsets for everything...hehe
-------------------------------------------------------------------

Cofirmed Offsets

Code: Select all

Char=00761028 
CharInfo=00761044
SpawnHeader=0076100
Spells=0076E770
-------------------------------------------------------------------

Comments on Structcs
* CHARINFO :: Tested. Everything seems fine inasmuch as the data I have to work with until you get to the first large Unknown chunk, which now has some data sprinkled throughout it. Also, the CHARINFO struct is quite a bit bigger (about 450 BYTES or so), but it seems as though most of the extra crap was thrown in with the other unknown stuff. Also, I may be dreaming, but I have this sneaky suspicion that they removed the "Birth" related floats for whatever reason or else it's just not obvious on my test char as only lvl 25..hehe. Finally, I was unable to test the bank slots and so forth until it goes live; however, it shouldn't be too hard to fly right through and make the corrections with this framework already in place. (See code below -- NOTES: The data out to the right of the new unknowndata is the data I got with my /testbuffed lvl 25 druid in gfay)

I know the comments in this struct might make it difficult to understand. However, if it's in bold or does not have comments stating specificaly that is UNTESTED, then it is tested and in the proper location at the moment. (ie, Server is definately at 0x3908)

* SPAWNINFO :: Tested. As far as I can tell, there doesn't seem to be any major changes. MQ 'should' run without any adjustments.

* COMMON :: Tested. As far as I can tell, there doesn't seem to be any major changes. MQ 'should' run without any adjustments.

* ITEMINFO :: Tested. So far, I've only confirmed that there is an extra DWORD inserted at 0xf0

* SPELLLIST :: Tested. Some new data and flags were added in the middle of the structure, bumping everything down a bit. See struct below.
-------------------------------------------------------------------

Known Struct Changes (New/Modified code is bolded)

Code: Select all

typedef struct _CHARINFO { 
/*0x0000*/   BYTE        Unknown00000; 
/*0x0001*/   BYTE        Unknown00001; 
/*0x0002*/   CHAR        Name[64]; 
/*0x0042*/   CHAR        Lastname[70]; 
/*0x0088*/   DWORD       Gender; 
/*0x008c*/   DWORD       Race; 
/*0x0090*/   DWORD       Class; 
/*0x0094*/   DWORD       Unknown0x0094; 
/*0x0098*/   DWORD       Level; 
/*0x009c*/   DWORD       Exp; 
/*0x00a0*/   DWORD       PracticePoints; 
/*0x00a4*/   DWORD       Mana; 
/*0x00a8*/   DWORD       BaseHP; 
/*0x00ac*/   DWORD       Stunned; 
/*0x00b0*/   DWORD       BaseSTR; 
/*0x00b4*/   DWORD       BaseSTA; 
/*0x00b8*/   DWORD       BaseCHA; 
/*0x00bc*/   DWORD       BaseDEX; 
/*0x00c0*/   DWORD       BaseINT; 
/*0x00c4*/   DWORD       BaseAGI; 
/*0x00c8*/   DWORD       BaseWIS; 
/*0x00cc*/   DWORD       Face;			
/*0x00d0*/   BYTE        EquipType[8];	 
/*0x00d8*/   BYTE        emptyforexpansion[4]; 
/*0x00dc*/   DWORD       EquipColor[8]; 
/*0x00fc*/   DWORD       Equipment[22];				// equipment ids 
/*0x0154*/   DWORD       InventoryBagIDs[9];		// 8 inventory + 1 cursor 
/*0x0178*/   BYTE        languages[48];				// List of languages (MAX_KNOWN_LANGS) 
/*0x01a8*/   BYTE        Unknown00512[480]; 
/*0x0388*/   struct		 _SPELLBUFF    Buff[15];    // Buffs currently on the player 
/*0x0478*/   DWORD       InventoryBag1[10];			//IDs of what it contains 
/*0x04a0*/   DWORD       InventoryBag2[10]; 
/*0x04c8*/   DWORD       InventoryBag3[10]; 
/*0x04f0*/   DWORD       InventoryBag4[10]; 
/*0x0518*/   DWORD       InventoryBag5[10]; 
/*0x0540*/   DWORD       InventoryBag6[10]; 
/*0x0568*/   DWORD       InventoryBag7[10]; 
/*0x0590*/   DWORD       InventoryBag8[10]; 
/*0x05b8*/   DWORD       InventoryBag9[10]; 
/*0x05e0*/   DWORD       Unknown0x05e0[2]; 
/*0x05e8*/   BYTE        Unknown0x05e8[1432]; 
/*0x0b80*/   DWORD       SpellBook[512];			// List of the Spells in spellbook
/*0x1380*/   DWORD       MemorizedSpells[8];			 
/*0x13a0*/   BYTE        Unknown0x13a0[36]; 
/*0x13c4*/   FLOAT       y; 
/*0x13c8*/   FLOAT       x; 
/*0x13cc*/   FLOAT       z; 
/*0x13d0*/   FLOAT       heading; 
/*0x13d4*/   DWORD       standstate;		// 100=running(?)
/*0x13d8*/   DWORD       Plat; 
/*0x13dc*/   DWORD       Gold; 
/*0x13e0*/   DWORD       Silver; 
/*0x13e4*/   DWORD       Copper; 
/*0x13e8*/   DWORD       BankPlat; 
/*0x13ec*/   DWORD       BankGold; 
/*0x13f0*/   DWORD       BankSilver; 
/*0x13f4*/   DWORD       BankCopper; 
/*0x13f8*/   BYTE        Unknown0x13f8[32]; 
/*0x1418*/   DWORD       Skill[125]; 
/*0x160c*/   BYTE        Unknown0x160c[112]; 
/*0x167c*/   DWORD       AutoSplit; 
/*0x1680*/   BYTE        Unknown0x1680[64]; 
/*0x16c0*/   DWORD       hungerlevel;				 // max value < 10000 ; 0 is as hungry as you can get 
/*0x16c4*/   DWORD       thirstlevel; 
/*0x16c8*/   BYTE        Unknown0x16c8[20];			 // ***Placeholder 
/*0x16dc*/   DWORD       zoneId; 
/*0x16e0*/   struct		_SPAWNINFO*   pSpawn; 
/*0x16e4*/   PITEMINFO   Inventory[30];      // confirm with further testing
/*0x175c*/   PITEMINFO   Cursor; 
/*0x1760*/   BYTE        Unknown0x1760[4]; 
/*0x1764*/   DWORD       STR; 
/*0x1768*/   DWORD       STA; 
/*0x176c*/   DWORD       CHA; 
/*0x1770*/   DWORD       DEX; 
/*0x1774*/   DWORD       INT; 
/*0x1778*/   DWORD       AGI; 
/*0x177c*/   DWORD       WIS; 
/*0x1780*/   BYTE        Unknown0x1780[4]; 
/*0x1784*/   DWORD       SaveMagic; 
/*0x1788*/   DWORD       SaveFire; 
/*0x178c*/   DWORD       SaveCold; 
/*0x1790*/   DWORD       SavePosion; 
/*0x1794*/   DWORD       SaveDisease; 
/*0x1798*/   DWORD       CurrWeight; 
/*0x179c*/   BYTE        Unknown0x179c[72]; 
/*0x17e4*/   SPELLBUFF   ShortBuff[6]; [b]
/*0x1844*/  BYTE      Unknown0x1844[148];  
/*0x18d8*/  DWORD	  UnknownData0x18d8;   // 2886 
/*0x18dc*/  BYTE	   Unknown0x18dc[116];  
/*0x1950*/  DWORD	  UnknownData0x1950;   // 25 
/*0x1954*/  BYTE	   Unknown0x1954[80];  
/*0x19a4*/  DWORD	  UnknownData0x19a4;   // 1 
/*0x19a8*/  BYTE	   Unknown0x19a8[68]; 
/*0x19ec*/  DWORD	  UnknownData0x19ec; // 65 
/*0x19f0*/  BYTE	   Unknown0x19f0[108]; 
/*0x1a5c*/  DWORD	  UnknownData0x1a5c;  // 100
/*0x1a60*/  BYTE	   Unknown0x1a60[12]; 
/*0x1a6c*/  DWORD	  UnknownData0x1a6c; // 100
/*0x1a70*/  BYTE	   Unknown0x1a70[368]; [/b]

///////////////////////////////////////////////
/// ALL DATA IN THIS BLOCK WILL HAVE TO BE TESTED LIVE
/// DUE TO LACK OF DATA ON TEST SERVER CHARACTER.  HEX
/// LOCATIONS MAY NEED ADJUSTING.  HOWEVER, FOR PRACTICAL
/// PURPOSES, IT SHOULD STILL COMPILE AND RUN WITHOUT PROBLEMS,
/// THE DATA *MAY* SIMPLY BE INCORRECT UNTIL FURTHER TESTING 
/// IS DONE.
/*0x1be0*/   DWORD       ZoneBoundId; 
/*0x1be4*/   DWORD       ZoneBirthId; 
/*0x1be8*/   DWORD       ZoneOtherId[3]; 
/*0x1be8*/   FLOAT       ZoneBoundX; 
/*0x1bf4*/   FLOAT       ZoneBirthX; 
/*0x1bf8*/   FLOAT       ZoneOtherX[3]; 
/*0x1c08*/   FLOAT       ZoneBoundY; 
/*0x1d00*/   FLOAT       ZoneBirthY; 
/*0x1d04*/   FLOAT       ZoneOtherY[3]; 
/*0x1c1c*/   FLOAT       ZoneBoundZ; 
/*0x1c20*/   FLOAT       ZoneBirthZ; 
/*0x1c24*/   FLOAT       ZoneOtherZ[3]; 
/*0x1c30*/   BYTE        Unknown0x1c30[3548]; 
/*0x2a0c*/   DWORD       GuildID; 
/*0x2a10*/   BYTE        Unknown0x2a10[15]; 
/*0x2a1f*/   BYTE        Anon; 
/*0x2a20*/   WORD        GuildStatus; 
/*0x2a22*/   BYTE        Unknown0x2a22[454];	
/*0x2be8*/   DWORD       AAExp;					
/*0x2bec*/   BYTE        Unknown0x2bec[428];	
/*0x2d98*/   DWORD       AAPoints;			
///////////////////////////////////////////////
[b]
/*0x2d9c*/  BYTE      Unknown0x2d9c[2924];	
/*0x3908*/  CHAR	   Server[40];	[/b]

/// BANK & 0x3930 UNCONFIRMED DUE TO LACK OF DATA
/*0x3930*/	 BYTE		 Unknown0x3930[16];			
/*0x3940*/   PITEMINFO   Bank[NUM_BANK_SLOTS]; 
} CHARINFO, *PCHARINFO;  

Code: Select all

#define ITEM_NAME_LEN         64
#define LORE_NAME_LEN         80
typedef struct _ITEMINFO { 
/*0x0*/    BYTE      Unknown0x00; //placeholder 
/*0x1*/    BYTE	   Weight; 
/*0x2*/    BYTE      NoRent; 
/*0x3*/    BYTE      NoDrop; 
/*0x4*/    BYTE      Size; 
/*0x5*/    BYTE      Type; 
/*0x6*/    BYTE      Unknown0x06[10]; 
/*0x10*/   CHAR      IDFile[30]; 
/*0x2e*/   CHAR      LoreName[LORE_NAME_LEN]; 
/*0x7e*/   BYTE      Unknown0x7e[14]; 
/*0x8c*/   DWORD     Cost; 
/*0x90*/   CHAR      Name[ITEM_NAME_LEN]; 
/*0xd0*/   DWORD	  IconNumber;
/*0xd4*/   DWORD	  Unknown0xd4;
/*0xd8*/   DWORD	  Unknown0xd8;			
/*0xdc*/   DWORD	  Unknown0xdc;	// -1 ?			
/*0xe0*/   DWORD	  Unknown0xe0;	// -1 ?			 
/*0xe4*/   DWORD	  Unknown0xe4;				
/*0xe8*/   DWORD	  Unknown0xe8;				
/*0xec*/   DWORD     ItemNumber; 
[b]/*0xf0*/  DWORD	 Unknown0xf0;[/b]
         union   { 
/*0xf4*/   COMMON    Common; 
/*0xf4*/   CONTAINER Container; 
/*0xf4*/   BOOK      Book; 
               }; 
} ITEMINFO, *PITEMINFO; 

Code: Select all

#define   SPELLLIST_STARTOFFSET      0x24
#define   TOTAL_SPELL_COUNT         0x0FA0      // # of spells in game
typedef struct _SPELLLIST {
/*0x000*/	DWORD	ID;
/*0x004*/	FLOAT	Range;				
/*0x008*/	BYTE	Unknown0x008[12];
/*0x014*/	DWORD	CastTime;			
/*0x018*/	DWORD	FizzleTime;
/*0x01c*/	DWORD	RecastTime;
/*0x020*/	DWORD	DurationType;	//DurationFormula on Lucy
/*0x024*/	DWORD	Unknown0x024[2];
/*0x02c*/	DWORD	Mana;
/*0x030*/	DWORD	Base[12];		//Base1-Base12
/*0x060*/	DWORD	Max[12];		//Max1-Max12
/*0x090*/	DWORD	BookIcon;
/*0x094*/	DWORD	GemIcon;
/*0x098*/	DWORD	ReagentId[4];	  //ReagentId1-ReagentId4
/*0x0a8*/	DWORD	ReagentCount[4];  //ReagentCount1-ReagentCount4	
/*0x0b8*/	DWORD	Unknown0x0b8[4];	
/*0x0c8*/	BYTE	Calc[12];			//Calc1-Calc12
/*0x0d4*/	BYTE	Unknown0x0d4;
/*0x0d5*/	BYTE	Deletable;			// untested
/*0x0d6*/	BYTE	Unknown0x0d6[2];
/*0x0d8*/	BYTE	Attrib[12];			//Attrib1-Attrib12
/*0x0e4*/	BYTE	Unknown0x0e4;
/*0x0e5*/	BYTE	FizzLeadj;
/*0x0e6*/	BYTE	Unknown0x0e6;
/*0x0e7*/	BYTE	Unknown0x0e7;
/*0x0e8*/	BYTE	Unknown0x0e8[3];
/*0x0eb*/	BYTE	Level[15];			
/*0x0fa*/	BYTE	Unknown0x0fa[16];
/*0x10a*/	BYTE	CastingAnim;
[b]/*0x10b*/  BYTE  Unknown0x10b[5];		
/*0x110*/ DWORD  UnknownFlags0x110;	// Lucy lists this as 'descnum', but I think it's flags.	
/*0x114*/ DWORD  UnknownFlags0x114;		
/*0x118*/ BYTE   Unknown0x118[12];
/*0x124*/ DWORD  UnknownFlags0x124;
/*0x128*/ DWORD  UnknownFlags0x128;
/*0x12c*/ DWORD  Unknown0x12c[2];
/*0x134*/ CHAR   *Name;
/*0x138*/ CHAR   *Target;
/*0x13c*/ CHAR   *Unknown0x13c;
/*0x140*/ CHAR   *Unknown0x140;		
/*0x144*/ CHAR   *Unknown0x144;		// new struct that indicates casting sound possibly?
/*0x148*/ CHAR   *CastOnYou;
/*0x14c*/ CHAR   *CastOnAnother;
/*0x150*/ CHAR   *WearOff;
/*0x154*/ CHAR   *Unknown0x154;		// new sprites animation struct?
/*0x158*/ DWORD  spaindex;
/*0x15c*/ DWORD  Unknown0x15c;		
/*0x160*/ DWORD  SpellAnim;
/*0x164*/ DWORD  Unknown0x164;
/*0x168*/ DWORD  Unknown130;			// This is Unknown130 from Lucy
/*0x16c*/ DWORD  Unknown0x16c;
/*0x170*/ DWORD  SpellIcon;
/*0x174*/ BYTE   Unknown0x174[12];[/b]
} SPELLLIST, *PSPELLLIST;
-------------------------------------------------------------------

Results via mqext (for changed structs)
Charinfo

Code: Select all

Name = Amadeus (offset 0x2)
Lastname =  (offset 0x42)
Gender = 0 (offset 0x88)
Race = 4 (offset 0x8c)
Class = 6 (offset 0x90)
Level = 25 (offset 0x98)
Exp = 0 (offset 0x9c)
PracticePoints = 130 (offset 0xa0)
Mana = 521 (offset 0xa4)
BaseHP = 550 (offset 0xa8)
Stunned = 0 (offset 0xac)
BaseSTR = 70 (offset 0xb0)
BaseSTA = 75 (offset 0xb4)
BaseCHA = 75 (offset 0xb8)
BaseDEX = 80 (offset 0xbc)
BaseINT = 75 (offset 0xc0)
BaseAGI = 95 (offset 0xc4)
BaseWIS = 115 (offset 0xc8)
Face = 4 (offset 0xcc)
EquipType = 12562136 (offset 0xd0)
emptyforexpansion = 12562144 (offset 0xd8)
EquipColor = 12562148 (offset 0xdc)
Equipment = 12562180 (offset 0xfc)
InventoryBagIDs = 12562268 (offset 0x154)
languages = 12562304 (offset 0x178)
Buff = 12562832 (offset 0x388)
InventoryBag1 = 12563072 (offset 0x478)
InventoryBag2 = 12563112 (offset 0x4a0)
InventoryBag3 = 12563152 (offset 0x4c8)
InventoryBag4 = 12563192 (offset 0x4f0)
InventoryBag5 = 12563232 (offset 0x518)
InventoryBag6 = 12563272 (offset 0x540)
InventoryBag7 = 12563312 (offset 0x568)
InventoryBag8 = 12563352 (offset 0x590)
InventoryBag9 = 12563392 (offset 0x5b8)
SpellBook = 12564872 (offset 0xb80)
MemorizedSpells = 12566920 (offset 0x1380)
y = -629.000000 (offset 0x13c4)
x = 226.000000 (offset 0x13c8)
z = 77.688499 (offset 0x13cc)
heading = 340.000000 (offset 0x13d0)
standstate = 100 (offset 0x13d4)
Plat = 0 (offset 0x13d8)
Gold = 0 (offset 0x13dc)
Silver = 0 (offset 0x13e0)
Copper = 0 (offset 0x13e4)
BankPlat = 0 (offset 0x13e8)
BankGold = 0 (offset 0x13ec)
BankSilver = 0 (offset 0x13f0)
BankCopper = 0 (offset 0x13f4)
Skill = 12567072 (offset 0x1418)
AutoSplit = 0 (offset 0x167c)
hungerlevel = 4052 (offset 0x16c0)
thirstlevel = 4052 (offset 0x16c4)
zoneId = 54 (offset 0x16dc)
pSpawn = 96141904 (offset 0x16e0)
Inventory = 12567788 (offset 0x16e4)
Cursor = 97729824 (offset 0x175c)
STR = 76 (offset 0x1764)
STA = 84 (offset 0x1768)
CHA = 75 (offset 0x176c)
DEX = 92 (offset 0x1770)
INT = 86 (offset 0x1774)
AGI = 107 (offset 0x1778)
WIS = 166 (offset 0x177c)
SaveMagic = 30 (offset 0x1784)
SaveFire = 25 (offset 0x1788)
SaveCold = 35 (offset 0x178c)
SavePosion = 22 (offset 0x1790)
SaveDisease = 15 (offset 0x1794)
CurrWeight = 35 (offset 0x1798)
ShortBuff = 12568044 (offset 0x17e4)
UnknownData0x18d8 = 2886 (offset 0x18d8)
UnknownData0x1950 = 25 (offset 0x1950)
UnknownData0x19a4 = 1 (offset 0x19a4)
UnknownData0x19ec = 65 (offset 0x19ec)
UnknownData0x1a5c = 100 (offset 0x1a5c)
UnknownData0x1a6c = 100 (offset 0x1a6c)
ZoneBoundId = 54 (offset 0x1be0)
ZoneBirthId = 0 (offset 0x1be4)
ZoneOtherId = 12569072 (offset 0x1be8)
ZoneBoundX = 192.000000 (offset 0x1bf4)
ZoneBirthX = 0.000000 (offset 0x1bf8)
ZoneOtherX = 0.000000 (offset 0xafc700)
ZoneBoundY = 64.000000 (offset 0x1c08)
ZoneBirthY = 0.000000 (offset 0x1c0c)
ZoneOtherY = 0.000000 (offset 0xafc6a0)
ZoneBoundZ = 35.000000 (offset 0x1c1c)
ZoneBirthZ = 9.000000 (offset 0x1c20)
ZoneOtherZ = 0.000000 (offset 0xafc640)
GuildID = -1 (offset 0x2a0c)
Anon = 255 (offset 0x2a1f)
GuildStatus = 65535 (offset 0x2a20)
AAExp = 0 (offset 0x2be8)
AAPoints = 0 (offset 0x2d98)
Server = test (offset 0x3908)
Bank = 12576584 (offset 0x3940)
Spelllist

Code: Select all

ID = 201 (offset 0x0)
Range = 200.000000 (offset 0x4)
CastTime = 1500 (offset 0x14)
FizzleTime = 2250 (offset 0x18)
RecastTime = 3000 (offset 0x1c)
DurationType = 5 (offset 0x20)
Mana = 12 (offset 0x2c)
Base1 = -1 (offset 0x30)
Base2 = -5 (offset 0x34)
Base3 = 0 (offset 0x38)
Base4 = 0 (offset 0x3c)
Base5 = 0 (offset 0x40)
Base6 = 0 (offset 0x44)
Base7 = 0 (offset 0x48)
Base8 = 0 (offset 0x4c)
Base9 = 0 (offset 0x50)
Base10 = 0 (offset 0x54)
Base11 = 0 (offset 0x58)
Base12 = 0 (offset 0x5c)
Max1 = 0 (offset 0x60)
Max2 = 0 (offset 0x64)
Max3 = 0 (offset 0x68)
Max4 = 0 (offset 0x6c)
Max5 = 0 (offset 0x70)
Max6 = 0 (offset 0x74)
Max7 = 0 (offset 0x78)
Max8 = 0 (offset 0x7c)
Max9 = 0 (offset 0x80)
Max10 = 0 (offset 0x84)
Max11 = 0 (offset 0x88)
Max12 = 0 (offset 0x8c)
BookIcon = 2502 (offset 0x90)
GemIcon = 2115 (offset 0x94)
ReagentId1 = -1 (offset 0x98)
ReagentId2 = -1 (offset 0x9c)
ReagentId3 = -1 (offset 0xa0)
ReagentId4 = -1 (offset 0xa4)
ReagentCount1 = 1 (offset 0xa8)
ReagentCount2 = 1 (offset 0xac)
ReagentCount3 = 1 (offset 0xb0)
ReagentCount4 = 1 (offset 0xb4)
Calc1 = 100 (offset 0xc8)
Calc2 = 100 (offset 0xc9)
Calc3 = 100 (offset 0xca)
Calc4 = 100 (offset 0xcb)
Calc5 = 100 (offset 0xcc)
Calc6 = 100 (offset 0xcd)
Calc7 = 100 (offset 0xce)
Calc8 = 100 (offset 0xcf)
Calc9 = 100 (offset 0xd0)
Calc10 = 100 (offset 0xd1)
Calc11 = 100 (offset 0xd2)
Calc12 = 100 (offset 0xd3)
Deletable = 0 (offset 0xd5)
Attrib1 = 20 (offset 0xd8)
Attrib2 = 2 (offset 0xd9)
Attrib3 = 254 (offset 0xda)
Attrib4 = 254 (offset 0xdb)
Attrib5 = 254 (offset 0xdc)
Attrib6 = 254 (offset 0xdd)
Attrib7 = 254 (offset 0xde)
Attrib8 = 254 (offset 0xdf)
Attrib9 = 254 (offset 0xe0)
Attrib10 = 254 (offset 0xe1)
Attrib11 = 254 (offset 0xe2)
Attrib12 = 254 (offset 0xe3)
FizzLeadj = 25 (offset 0xe5)
Level(Class 1) = 255 (offset 0xeb)
Level(Class 2) = 1 (offset 0xec)
Level(Class 3) = 9 (offset 0xed)
Level(Class 4) = 255 (offset 0xee)
Level(Class 5) = 255 (offset 0xef)
Level(Class 6) = 255 (offset 0xf0)
Level(Class 7) = 255 (offset 0xf1)
Level(Class 8) = 255 (offset 0xf2)
Level(Class 9) = 255 (offset 0xf3)
Level(Class 10) = 1 (offset 0xf4)
Level(Class 11) = 255 (offset 0xf5)
Level(Class 12) = 255 (offset 0xf6)
Level(Class 13) = 255 (offset 0xf7)
Level(Class 14) = 255 (offset 0xf8)
Level(Class 15) = 9 (offset 0xf9)
CastingAnim = 44 (offset 0x10a)
UnknownFlags0x110 = 40201 [1 8 256 1024 2048 4096 32768 ] (Offset: 0x110)
UnknownFlags0x114 = 65536 [65536 ] (Offset: 0x114)
UnknownFlags0x124 = 39004 [4 8 16 64 2048 4096 32768 ] (Offset: 0x124)
UnknownFlags0x128 = 39099 [1 2 8 16 32 128 2048 4096 32768 ] (Offset: 0x128)
Name = Flash of Light (offset *0x134)
Target = PLAYER_1 (offset *0x138)
CastOnYou = You are blinded by a flash of light. (offset *0x148)
CastOnAnother = Someone is blinded by a flash of light. (offset *0x14c)
WearOff = Your sight returns. (offset *0x150)
spaindex = 22 (offset 0x158)
SpellAnim = 112 (offset 0x160)
SpellIcon = 23 (offset 0x170)
ItemInfo

Code: Select all

Weight = 1 (offset 0x1)
NoRent = 255 (offset 0x2)
NoDrop = 0 (offset 0x3)
Size = 0 (offset 0x4)
Type = 0 (offset 0x5)
IDFile = IT63 (offset 0x10)
LoreName =  (offset 0x2e)
Cost = 0 (offset 0x8c)
Name = Druid Earring (Test) (offset 0x90)
IconNumber = 1050 (offset 0xd0)
ItemNumber = 38190 (offset 0xec)
	Note:  The COMMON, CONTAINER, or BOOK union starts at 0xf4
-------------------------------------------------------------------
Comments from those on the test server are welcome.
Last edited by Amadeus on Fri Jun 06, 2003 1:52 pm, edited 3 times in total.

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

Post by Amadeus » Thu Jun 05, 2003 5:37 am

Also, I'm not sure what the bosses think, but having a seperate forum here for Development::Test Server ..or something to that effect, might be cool so that we can avoid any possible confusion.

User avatar
dont_know_at_all
Developer
Developer
Posts: 5450
Joined: Sun Dec 01, 2002 4:15 am
Location: Florida, USA
Contact:

Post by dont_know_at_all » Thu Jun 05, 2003 5:41 am

L12, can you nuke the mq2 and add a test server forum.

Thanks.

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

Post by Amadeus » Thu Jun 05, 2003 5:44 am

Btw...the iteminfo struct above will probably fix any /identify problems for folks on the test server (if their offsets are correct).

At least, if it doesn't, I'd like to know the results they get ;)

Mckorr
Developer
Developer
Posts: 2326
Joined: Fri Oct 18, 2002 1:16 pm
Location: Texas

Post by Mckorr » Thu Jun 05, 2003 8:47 am

I agree, nuke MQ2. The major reorginization already took place =) We still need to clean up the various files, remove outdated stuff that is no longer used, but for all intents and purposes we are already using MQ2.

And have we considered adding Amadeus and EQMule00 to the dev list? They deserve recognition for all the hard work they are doing.
MQ2: Think of it as Evolution in action.

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

Post by Amadeus » Fri Jun 06, 2003 1:54 pm

for clarification, the structs/offsets listed in my previous post will compile just fine on the test server, comments and all, if anyone wants to help test.

EqMule
Developer
Developer
Posts: 2697
Joined: Fri Jan 03, 2003 9:57 pm
Contact:

Post by EqMule » Fri Jun 06, 2003 3:11 pm

Code: Select all

/*0x13d4*/   DWORD       standstate;      // [b]100=running(?)[/b]
standstate is defined in mq.h...

Code: Select all

#define STANDSTATE_STAND			[b]0x64[/b]//64 hex equals 100 in dec...
#define STANDSTATE_BIND				0x69
#define STANDSTATE_SIT				0x6E
#define STANDSTATE_DUCK				0x6F
#define STANDSTATE_FEIGN			0x73
#define STANDSTATE_DEAD				0x78
and apart from that... GREAT JOB!!!!

I bet some of the unknown dwords are pointers to other structures or simply pPrev and pNext type of pointers. If you have time to do a pointercheck it would be great, Im a little choked right now with the EQWINDOW structure, but when Im done with that I can help on this a bit...
My status o/
If you like MQ2 and would like to contribute, please do. My goal is 25 donations per month.
So far I've received Image donations for this month's patches.

Bitcoin: 1Aq8ackjQ4f7AUvbUL7BE6oPfT8PmNP4Zq
Krono: PM me.
I can always use characters for testing, PM me if you can donate one.

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

Post by Amadeus » Fri Jun 06, 2003 4:43 pm

You can just work on that EQWINDOW thang ...this is a good way to divide it up. I'll take charge of making sure that the charinfo, spawninfo, iteminfo, common, container, and common structs are up and running all the time...and you can deal with all the directx type structs like eqwindow, and so forth.

I'm too far behind the ball on the whole mouse parser/eqwindow game right now, I'm fine with you guys handling all that ..hehe ;)

I should be able to finish up Charinfo very quickly once it goes live. My test character just doesn't have enough data for me to completely fill it out.

AND, of course, what goes live may not have anything to do with the current test structs...but, at least we have a head start ;)

Mckorr
Developer
Developer
Posts: 2326
Joined: Fri Oct 18, 2002 1:16 pm
Location: Texas

Post by Mckorr » Sat Jun 07, 2003 9:43 am

Parser is under control. Will try out Valerian's mod that makes clicking items possible today, and prolly CVS it in this afternoon.

Still no non-detoured click, but what we have works. Problem there is we "teleport" the mouse by invoking it's offset directly, but we have to tell DirectX to click the mouse, which means clicking is slower than movement by a vast amount.

The EQWINDOWS struct and code is needed to straighten out a bunch of minor functions, such as checking for open packs or banks, etc.

However, none of this works without all those other structs Am, so keep up the good work.
MQ2: Think of it as Evolution in action.

xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: For those on TEST -- pre-June 11

Post by xyilla » Sun Sep 28, 2025 7:37 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: For those on TEST -- pre-June 11

Post by xyilla » Sun Sep 28, 2025 7:38 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: For those on TEST -- pre-June 11

Post by xyilla » Sun Sep 28, 2025 7:39 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: For those on TEST -- pre-June 11

Post by xyilla » Sun Sep 28, 2025 7:40 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: For those on TEST -- pre-June 11

Post by xyilla » Sun Sep 28, 2025 7:41 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: For those on TEST -- pre-June 11

Post by xyilla » Sun Sep 28, 2025 7:43 am