_CHARINFO struct after 042603

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

Moderator: MacroQuest Developers

NealThorpayt
Developer
Developer
Posts: 66
Joined: Thu Mar 13, 2003 2:14 pm
Location: Miskatonic University
Contact:

_CHARINFO struct after 042603

Post by NealThorpayt » Thu Apr 24, 2003 6:07 pm

Greetings Constructs,

Here is what I determined the new _CHARINFO struct to be:

Code: Select all

#define		NUM_BANK_SLOTS			16
typedef struct _CHARINFO {
	BYTE		Unknown0x0000;
	BYTE		Unknown0x0001;
	CHAR		Name[64];
	CHAR		Lastname[70];
	DWORD		Unknown0x0088;
	DWORD		Race;
	DWORD		Class;
	DWORD		Gender;
	DWORD		Level;
	DWORD		Exp;
	DWORD		Face;
	DWORD		Mana;
	DWORD		BaseHP;
	DWORD		Stunned;
	DWORD		BaseSTR;
	DWORD		BaseSTA;
	DWORD		BaseCHA;
	DWORD		BaseDEX;
	DWORD		BaseINT;
	DWORD		BaseAGI;
	DWORD		BaseWIS;
	BYTE		Unknown0x00CC[0x00AC];
	BYTE		Language[32];
	BYTE		Unknown0x0198[0x01F0];
	SPELLBUFF		Buff[15];
	BYTE		Unknown0x0478[0x0708];
	DWORD		SpellBook[256];
	BYTE		Unknown0x0F80[0x0400];
	DWORD		MemorizedSpells[8];
	BYTE		Unknown0x13A0[0x0038];
	DWORD		Plat;
	DWORD		Gold;
	DWORD		Silver;
	DWORD		Copper;
	DWORD		BankPlat;
	DWORD		BankGold;
	DWORD		BankSilver;
	DWORD		BankCopper;
	BYTE		Unknown0x13F8[0x0020];
	DWORD		Skill[125];
	BYTE		Unknown0x160C[0x0070];
	DWORD		AutoSplit;
	BYTE		Unknown0x1680[0x0060];
	struct _SPAWNINFO*	pSpawn;
	PITEMINFO		Inventory[30];
	PITEMINFO		Cursor;
	BYTE		Unknown1760[0x0004];
	DWORD		STR;
	DWORD		STA;
	DWORD		CHA;
	DWORD		DEX;
	DWORD		INT;
	DWORD		AGI;
	DWORD		WIS;
	BYTE		Unknown1780[0x0004];
	DWORD		SaveMagic;
	DWORD		SaveFire;
	DWORD		SaveCold;
	DWORD		SavePosion;
	DWORD		SaveDisease;
	DWORD		CurrWeight;
	BYTE		Unknown179C[0x0048];
	SPELLBUFF		ShortBuff[6];
	BYTE		Unknown1844[0x0390];
	DWORD		ZoneBoundId;
	DWORD		ZoneBirthId;
	DWORD		ZoneOtherId[3];
	FLOAT		ZoneBoundX;
	FLOAT		ZoneBirthX;
	FLOAT		ZoneOtherX[3];
	FLOAT		ZoneBoundY;
	FLOAT		ZoneBirthY;
	FLOAT		ZoneOtherY[3];
	FLOAT		ZoneBoundZ;
	FLOAT		ZoneBirthZ;
	FLOAT		ZoneOtherZ[3];
	BYTE		Unknown1C24[0x0DDC];
	DWORD		GuildID;
	BYTE		Unknown12A04[0x000F];
	BYTE		Anon;
	WORD GuildStatus;
	BYTE Unknown12A16[0x01C4];
	DWORD AAExp;
	BYTE Unknown12BDA[0x01AC];
	DWORD AAPoints;
	BYTE Unknown12D8E[0x09EE];
	PITEMINFO		Bank[NUM_BANK_SLOTS];
} CHARINFO, *PCHARINFO;
Please note that the locations for GuildStatus, AAExp, and AAPoints are yet to be determined.

End of line...
By the pricking of my thumb, something wicked this way comes...

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

this is only here for reference and ideas of concistance

Post by EqMule » Fri Apr 25, 2003 5:28 am

Code: Select all


typedef struct _CHARINFO {
	BYTE Unknown0000; // 0
	BYTE Unknown0001; // 3
	CHAR Name[64];
	CHAR Lastname[70];
	DWORD Gender;
	DWORD Race;
	DWORD Class;
	DWORD notsure00;//not sure
	DWORD Level;
	DWORD Exp;
	DWORD PracticePoints; // Unspent Practice points
	DWORD Mana;
	DWORD BaseHP;
	DWORD Stunned;// not sure
	DWORD BaseSTR;
	DWORD BaseSTA;
	DWORD BaseCHA;
	DWORD BaseDEX;
	DWORD BaseINT;
	DWORD BaseAGI;
	DWORD BaseWIS;
	DWORD Face; //not sure...
	BYTE EquipType[8];
	BYTE emptyforexpansion[4];
	DWORD EquipColor[8];
	DWORD Equipment[22];          // equipment ids
	DWORD InventoryBagIDs[9];// you can have 1 bag on the cursur thus 9 bags are possible...
	BYTE languages[48];          // List of languages (MAX_KNOWN_LANGS)
	BYTE unknown1735[480];
	struct _SPELLBUFF buffs[15];      // Buffs currently on the player
	DWORD InventoryBag1[10];	//IDs of what it contains
	DWORD InventoryBag2[10];
	DWORD InventoryBag3[10];
	DWORD InventoryBag4[10];
	DWORD InventoryBag5[10];
	DWORD InventoryBag6[10];
	DWORD InventoryBag7[10];
	DWORD InventoryBag8[10];
	DWORD InventoryBag9[10];
	DWORD unknown5030a[2];
	BYTE unknown17353[1432];          // 
	DWORD sSpellBook[512];        // List of the Spells in spellbook
	DWORD sMemSpells[8];          // List of spells memorized
	BYTE unknown5030[36];
	FLOAT y;
	FLOAT x;
	FLOAT z;
	FLOAT heading;
	DWORD standstate;
	DWORD Plat;
	DWORD Gold;
	DWORD Silver;
	DWORD Copper;
	DWORD BankPlat;
	DWORD BankGold;
	DWORD BankSilver;
	DWORD BankCopper;
	BYTE Unknown2952[32];
	DWORD Skill[74];
	BYTE unknown5446[316];       // ***Placeholder
	DWORD AutoSplit;
	BYTE unknown5446q[63];
	DWORD hungerlevel;			// max value < 10000 ; 0 is as hungry as you can get
	DWORD thirstlevel;
	BYTE unknown5447[20];       // ***Placeholder
	DWORD zoneId;                 // see zones.h
    DWORD CharSpawnAddress;		//address to char spawn data************************************
    PITEMINFO EquipmentInfo[22];		//addressarray of your equipment data
    PITEMINFO BagsAddresses[8];		//addressarray of your bags
    PITEMINFO Cursor;				//address of what is on your cursor (9th bag)
    DWORD unknown5447a;       // ***Placeholder
    DWORD STR;
    DWORD STA;
    DWORD CHA;
    DWORD DEX;
    DWORD INT;
    DWORD AGI;
    DWORD WIS;
    DWORD ACModifier;//how much extra AC your equipment gives
    DWORD SaveMagic;
    DWORD SaveFire;
    DWORD SaveCold;
    DWORD SavePosion;
    DWORD SaveDisease;
    DWORD CurrWeight;
    BYTE Uknown6044[12];
    SPELLBUFF ShortBuff[6];
    BYTE Unknown6152[912];
	DWORD bindzoneId[5];          // IDs of zone(s) where you are bound
	FLOAT sYpos[5];               // starting locs per bindzoneId
	FLOAT sXpos[5];               // starting locs per bindzoneId
	FLOAT sZpos[5];               // starting locs per bindzoneId
	BYTE unknown9490[20];
	struct itemPropertiesStruct bankinvprops[8];
	struct itemPropertiesStruct bankinvprops2[8];
	struct itemPropertiesStruct bankinvcontprops[80];
	struct itemPropertiesStruct bankinvcontprops2[80];
	DWORD unknown9326;//address of something
	DWORD bank_inv[8];            // itemIds of the 8 bank slots
	DWORD bank_inv2[8];           // itemIds of the 8 bank slots
	DWORD bank_cont_inv[80];      // itemIds of items inside containers in bank
	DWORD bank_cont_inv2[80];     // itemIds of items inside containers in bank
	DWORD deity;                  // deity
	DWORD guildID;                // guild ID
	DWORD unknown10042;//address
	DWORD unknown10043;//address
	BYTE ZoneTime;		//time spent in zone?	  
	BYTE unknown7443[4];
	BYTE pvp;
	BYTE _level;                 // seems to be player level
	BYTE anon;                   // 0 plain, 1 anon, 2 roleplay,
	BYTE gm;                     // gm flag?
	BYTE guildstatus;            // 0 member, 1 officer, 2 leader
	BYTE unknown10061[46];
	CHAR GroupMembers[6][64];    // all the members in group, including self
	BYTE unknown10489[22];
	DWORD altexp;                 // alternate exp pool 0 - ~15,000,000
	BYTE unknown10517[428];
	DWORD aapoints;               // number of unspent ability points
	BYTE unknown10949[3293];
} CHARINFO, *PCHARINFO;

ok Im gonna help out on this one, this is what my structure looked like pre 23 patch, I will merge what you have discovvered and confirm my other locations into something that is closer to the truth. I place it here for reference only, and will update as I go along.
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.

NealThorpayt
Developer
Developer
Posts: 66
Joined: Thu Mar 13, 2003 2:14 pm
Location: Miskatonic University
Contact:

Post by NealThorpayt » Wed Apr 30, 2003 6:26 pm

Greetings Constructs,

EQMule, could you please post your itemPropertiesStruct struct, as referenced in your _CHARINFO struct.

Thanks.

End of line...
By the pricking of my thumb, something wicked this way comes...

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

itemPropertiesStruct

Post by EqMule » Thu May 01, 2003 5:39 am

Code: Select all

/*
** Generic Item Properties
** Length: 16 Octets
** Used in: charProfile
**
*/
struct itemPropertiesStruct
{
/*000*/ BYTE unknown01[2];
/*002*/ BYTE charges;         // not sure if this is in the right place
/*003*/ BYTE unknown02[13];
}; // 16 
sorry forgot that someone actually might need it lol
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.










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

Re: _CHARINFO struct after 042603

Post by xyilla » Mon Jan 19, 2026 5:26 am