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;
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.


