A forum for feature requests/discussions and user submitted patches that improve MQ2
Moderator: MacroQuest Developers
-
NealThorpayt
- Developer

- Posts: 66
- Joined: Thu Mar 13, 2003 2:14 pm
- Location: Miskatonic University
-
Contact:
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

- Posts: 2697
- Joined: Fri Jan 03, 2003 9:57 pm
-
Contact:
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.

o/
If you like MQ2 and would like to contribute, please do. My goal is 25 donations per month.
So far I've received

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

- 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

- Posts: 2697
- Joined: Fri Jan 03, 2003 9:57 pm
-
Contact:
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

o/
If you like MQ2 and would like to contribute, please do. My goal is 25 donations per month.
So far I've received

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.