CHARINFO cleanup and slight correction

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

CHARINFO cleanup and slight correction

Post by Amadeus » Sun May 11, 2003 4:34 am

One small correction:

Code: Select all

/*11152*/   DWORD       AAExp; 
/*11156*/   BYTE        Unknown11156[428]; 
/*11584*/   DWORD       AAPoints; 
/*11588*/   BYTE        Unknown11588[2542]; 
/*14126*/   PITEMINFO   Bank[NUM_BANK_SLOTS]; 
} CHARINFO, *PCHARINFO;  
should be:

Code: Select all

/*0x2bda*/   DWORD       AAExp;					
/*0x2bde*/   BYTE        Unknown0x2bde[430];		
/*0x2d8c*/   DWORD       AAPoints;				
/*0x2d8e*/   BYTE        Unknown0x2d8e[2484];		
/*0x3744*/	CHAR		  Server[40];				
/*0x3768*/	BYTE		  Unknown0x3768[16];			
/*0x377c*/   PITEMINFO   Bank[NUM_BANK_SLOTS]; 
} CHARINFO, *PCHARINFO;  

Otherwise, here is eqmule's CHARINFO structure, with offset corrections. Thanks for doing this eqmule, I learned a lot from going throught it ;)

I'll probably leave this alone now until after the patch; however, I feel like I was really close to figuring out that one 408 byte unknown..hehe.

Code: Select all

// 4/30/2003 build		eqmule
#define      NUM_BANK_SLOTS         16
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
/*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; 
/*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 max hunger
/*0x16c4*/   DWORD       thirstlevel; 
/*0x16c8*/   BYTE        Unknown0x16c8[20];			 // ***Placeholder 
/*0x16dc*/   DWORD       zoneId; 
/*0x16e0*/   struct		_SPAWNINFO*   pSpawn; 
/*0x16e4*/   PITEMINFO   Inventory[30]; 
/*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]; 
/*0x1844*/   BYTE        Unknown0x1844[912]; 
/*0x1bd4*/   DWORD       ZoneBoundId; 
/*0x1bd8*/   DWORD       ZoneBirthId; 
/*0x1bdc*/   DWORD       ZoneOtherId[3]; 
/*0x1be8*/   FLOAT       ZoneBoundX; 
/*0x1bec*/   FLOAT       ZoneBirthX; 
/*0x1bf0*/   FLOAT       ZoneOtherX[3]; 
/*0x1bfc*/   FLOAT       ZoneBoundY; 
/*0x1c00*/   FLOAT       ZoneBirthY; 
/*0x1c04*/   FLOAT       ZoneOtherY[3]; 
/*0x1c10*/   FLOAT       ZoneBoundZ; 
/*0x1c14*/   FLOAT       ZoneBirthZ; 
/*0x1c18*/   FLOAT       ZoneOtherZ[3]; 
/*0x1c24*/   BYTE        Unknown0x1be4[3548]; 
/*0x2a00*/   DWORD       GuildID; 
/*0x2a04*/   BYTE        Unknown0x2a04[15]; 
/*0x2a13*/   BYTE        Anon; 
/*0x2a14*/   WORD        GuildStatus; 
/*0x2a16*/   BYTE        Unknown0x2a16[454];
/*0x2bdc*/   DWORD       AAExp;					
/*0x2be0*/   BYTE        Unknown0x2be0[428];		
/*0x2d8c*/   DWORD       AAPoints;				
/*0x2d8e*/   BYTE        Unknown0x2d8e[2484];		
/*0x3744*/	CHAR		  Server[40];       				
/*0x3768*/	BYTE		  Unknown0x3768[16];			
/*0x377c*/   PITEMINFO   Bank[NUM_BANK_SLOTS]; 
} CHARINFO, *PCHARINFO;  

EDIT: Fixed AAExp by adjusting Unknown0x2a16. Unknown0x2bde now goes back to the same length that eqmule originally had it and is renamed Unknown0x2be0.

Clawed
a ghoul
a ghoul
Posts: 105
Joined: Mon Jan 20, 2003 6:17 am

Post by Clawed » Sun May 11, 2003 5:12 pm

Mckorr, if that Server[40] thing is accurate, use that in your UI parsing code. 8)
Clawed

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

Post by Amadeus » Sun May 11, 2003 5:28 pm

I wondered why it was there for a minute...but, then I figured that it might be used for the channel system code.










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

Re: CHARINFO cleanup and slight correction

Post by xyilla » Tue Jan 20, 2026 2:23 pm