Unknowns in charProfileStruct make me sad. 4k unknowns in charProfileStruct really make me sad! I've done my best to fill in knowns in charProfileStruct when I've had time and I wanted to ask some help. I know a lot of you would help seq out if you could. Well here's your chance!

My current charProfileStruct is the following. I know this isn't what is in cvs and I haven't put out a patch with this in it. Don't cut and paste this into your everquest.h because it won't compile (since I've taken out aapoints because it didn't fit and was way off). When I put out a patch again, it will have this in it. It doesn't really make seq any better so don't worry about it! This is just in order to better understand the EQ net stream.

Code:
struct charProfileStruct
{
/*0000*/ uint32_t  checksum;           //
/*0004*/ char      name[64];           // Name of player
/*0068*/ char      lastName[32];       // Last name of player
/*0100*/ uint32_t  gender;             // Player Gender - 0 Male, 1 Female
/*0104*/ uint32_t  race;               // Player race
/*0108*/ uint32_t  class_;             // Player class
/*0112*/ uint32_t  unknown0112;        // *** Placeholder
/*0116*/ uint32_t  level;              // Level of player (might be one byte)
/*0120*/ uint32_t  bind_zone_id[5];    // Bind info (zone, x, y, z, heading)
/*0140*/ float     bind_x[5];          // 0 is normal bind
/*0160*/ float     bind_y[5];          // 5 is some weird point in newbie zone
/*0180*/ float     bind_z[5];          // (which is secondary bind for wiz/dru?)
/*0200*/ float     bind_heading[5];    // Unused slots show newbie bind
/*0220*/ uint32_t  deity;              // deity
/*0224*/ int32_t   guildID;            // guildID
/*0228*/ uint32_t  birthdayTime;       // character birthday
/*0232*/ uint32_t  lastSaveTime;       // character last save time
/*0236*/ uint32_t  timePlayedMin;      // time character played
/*0240*/ uint8_t   pvp;                // 1=pvp, 0=not pvp
/*0241*/ uint8_t   level1;             // Level of Player
/*0242*/ uint8_t   anon;               // 2=roleplay, 1=anon, 0=not anon     
/*0243*/ uint8_t   gm;                 // 0=no, 1=yes
/*0244*/ int8_t    guildstatus;        // 0=member, 1=officer, 2=guildleader
/*0245*/ uint8_t   unknown0245[55];    // *** Placeholder
/*0300*/ uint8_t   haircolor;          // Player hair color
/*0301*/ uint8_t   beardcolor;         // Player beard color
/*0302*/ uint8_t   eyecolor1;          // Player left eye color
/*0303*/ uint8_t   eyecolor2;          // Player right eye color
/*0304*/ uint8_t   hairstyle;          // Player hair style
/*0305*/ uint8_t   beard;              // Player beard type
/*0306*/ uint8_t   unknown0302[6];     // *** Placeholder
/*0312*/ uint32_t  item_material[9];   // Item texture/material of worn items
/*0348*/ uint8_t   unknown0348[48];    // *** Placeholder
/*0396*/ Color_Struct item_tint[9];    // RR GG BB 00
/*0432*/ AA_Array  aa_array[MAX_AA];   // AAs
/*1392*/ char      servername[32];     // server the char was created on
/*1424*/ uint8_t   unknown1452[68];    // *** Placeholder
/*1492*/ uint32_t  exp;                // Current Experience
/*1496*/ uint32_t  unknown1496;        // *** Placeholder
/*1500*/ uint32_t  points;             // Unspent Practice points
/*1504*/ uint32_t  MANA;               // Current MANA
/*1508*/ uint32_t  curHp;              // Current HP without +HP equipment
/*1512*/ uint32_t  unknown1512;        // 0x05
/*1516*/ uint32_t  STR;                // Strength
/*1520*/ uint32_t  STA;                // Stamina
/*1524*/ uint32_t  CHA;                // Charisma
/*1528*/ uint32_t  DEX;                // Dexterity
/*1532*/ uint32_t  INT;                // Intelligence
/*1536*/ uint32_t  AGI;                // Agility
/*1540*/ uint32_t  WIS;                // Wisdom
/*1544*/ uint8_t   face;               // Player face
/*1545*/ uint8_t   unknown1545[47];    // *** Placeholder
/*1592*/ uint8_t   languages[25];      // List of languages (MAX_KNOWN_LANGS)
/*1617*/ uint8_t   unknown1617[7];     // All 0x00 (language buffer?)
/*1624*/ int32_t   sSpellBook[400];    // List of the Spells in spellbook
/*3224*/ uint8_t   unknown3224[448];   // all 0xff after last spell    
/*3672*/ int32_t   sMemSpells[9];      // List of spells memorized
/*3708*/ uint8_t   unknown3708[32];    // *** Placeholder
/*3740*/ float     x;                  // Players x position
/*3744*/ float     y;                  // Players y position
/*3748*/ float     z;                  // Players z position
/*3752*/ float     heading;            // Players heading   
/*3756*/ uint8_t   unknown3756[4];     // *** Placeholder    
/*3760*/ uint32_t  platinum;           // Platinum Pieces on player
/*3764*/ uint32_t  gold;               // Gold Pieces on player
/*3768*/ uint32_t  silver;             // Silver Pieces on player
/*3772*/ uint32_t  copper;             // Copper Pieces on player
/*3776*/ uint32_t  platinum_bank;      // Platinum Pieces in Bank
/*3780*/ uint32_t  gold_bank;          // Gold Pieces in Bank
/*3784*/ uint32_t  silver_bank;        // Silver Pieces in Bank
/*3788*/ uint32_t  copper_bank;        // Copper Pieces in Bank
/*3792*/ uint32_t  platinum_cursor;    // Platinum Pieces on cursor
/*3796*/ uint32_t  gold_cursor;        // Gold Pieces on cursor
/*3800*/ uint32_t  silver_cursor;      // Silver Pieces on cursor
/*3804*/ uint32_t  copper_cursor;      // Copper Pieces on cursor
/*3808*/ uint32_t  platinum_shared;    // Shared platinum pieces
/*3812*/ uint8_t   unknown3812[20];    // Unknown - all zero
/*3832*/ uint32_t  skills[75];         // List of skills (MAX_KNOWN_SKILLS)
/*4132*/ uint8_t   unknown4132[348];   // *** Placeholder
/*4480*/ uint32_t  expAA;              // Current AA experience
/*4484*/ uint8_t   unknown4484[4];     // *** Placeholder
/*4488*/ uint32_t  expansions;         // Bitmask for expansions
/*4492*/ uint8_t   unknown4492[20];    // *** Placeholder
/*4512*/ uint32_t  hunger;             // Food (ticks till next eat)
/*4516*/ uint32_t  thirst;             // Drink (ticks till next drink)
/*4520*/ uint8_t   unknown4520[20];    // *** Placeholder
/*4540*/ uint16_t  zoneId;             // see zones.h
/*4542*/ uint16_t  zoneInstance;       // Instance id
/*4544*/ spellBuff buffs[MAX_BUFFS];   // Buffs currently on the player
/*4944*/ char      groupMembers[MAX_GROUP_MEMBERS][64];// all the members in group, including self 
/*5328*/ uint8_t   unknown5328[668];   // *** Placeholder
/*5996*/ uint32_t  ldon_guk_points;    // Earned GUK points
/*6000*/ uint32_t  ldon_mir_points;    // Earned MIR points
/*6004*/ uint32_t  ldon_mmc_points;    // Earned MMC points
/*6008*/ uint32_t  ldon_ruj_points;    // Earned RUJ points
/*6012*/ uint32_t  ldon_tak_points;    // Earned TAK points
/*6016*/ uint32_t  ldon_avail_points;  // Available LDON points
/*6020*/ uint8_t   unknown6020[112];   // *** Placeholder
/*6132*/ uint32_t  tributeTime;        // Time remaining on tribute (millisecs)
/*6136*/ uint32_t  unknown6136;        // *** Placeholder
/*6140*/ uint32_t  careerTribute;      // Total favor points for this char
/*6144*/ uint32_t  unknown6144;        // *** Placeholder
/*6148*/ uint32_t  currentTribute;     // Current tribute points
/*6152*/ uint32_t  unknown6152;        // *** Placeholder
/*6156*/ uint32_t  tributeActive;      // 0 = off, 1=on
/*6160*/ TributeStruct tributes[MAX_TRIBUTES]; // Current tribute loadout
/*6200*/ uint32_t  disciplines[MAX_DISCIPLINES]; // Known disciplines
/*6400*/ uint8_t   unknown6400[440];   // *** Placeholder
/*6840*/ uint32_t  endurance;          // Current endurance
/*6844*/ uint8_t   unknown6844[276];   // *** Placeholder
/*7120*/ uint32_t  airRemaining;       // Air supply (seconds)
/*7124*/ uint8_t   unknown7124[4608];  // *** Placeholder 
/*11732*/ uint32_t aa_spent;           // Number of spent AA points
/*11736*/ uint32_t unknown11736;       // *** Placeholder
/*11740*/ uint32_t aa_unspent;         // Unspent AA points
/*11744*/ uint8_t unknown11744[36];    // *** Placeholder
/*11780*/ BandolierStruct bandoliers[MAX_BANDOLIERS]; // bandolier contents
/*13060*/ uint8_t unknown13060[5120];  // *** Placeholder 
/*18180*/ InlineItem potionBelt[MAX_POTIONS_IN_BELT]; // potion belt
/*18468*/ uint8_t unknown18468[28];    // *** Placeholder
}; /* 18496 */
Additions to this over current cvs are mostly thanks to help from eqemu and then I spent time and verified them and made sure they aligned properly against live servers. You'll see that bandolier is in there and potion belt, hunger, thirst, personal tribute, etc. Some stuff that wasn't there before. But you'll also see that there are still a lot of unknowns!

What do I want with you? I'd like help two ways.

The first is just brainstorming. What kinds of things do you think need to be in there that aren't? You all play EQ (or did at one point). What is there that the client knows that might be missing in charProfileStruct? I know not all of you know how the EQ net stream works, so don't feel silly saying something that might be dumb. A lot of stuff is in other packets, even though it might make sense that it would be in charProfileStruct (which comes with OP_PlayerProfile).

For example, we spent a bit of time last week tracking down where percentage of experience you have assigned to AA is. It used to be in charProfileStruct, but it no longer is. It's sent in an OP_AAUpdate now. Or we spent some time figuring out where the origin point for you character is stored (it isn't, the server sends it to you when you use the origin AA). I don't expect you to track stuff down, I just want a nice list of things that people think might be in there to aid in figuring this stuff out.

For example, things that I think might be in there, but I haven't had the time or the means to determine:
- Pet info (buffs, name, items, etc.) since pets zone with you now
- Pocketed pet info from the AA that lets you store pets
- Spell cooldown (for example, how long will Divine Intervention be greyed out), maybe in the 32 bytes after memmed spells?
- Skill cooldown (for example, how long will LoH be greyed), maybe in the unknown after skills?
- Disc cooldown (for example, how long until weaponshield is usable again), maybe in the unknown after discs?
- AA cooldown (though this may be in separate opcodes, the AA stuff seems like its a mess over the wire)
- Title (apprentiece baker, etc.), though this used to be there after servername, it was removed. I wouldn't be surprised if the list of available titles comes across separately, but an id is sent in charProfileStruct somewhere
- Group Leader exp (total this point to set the bar)
- Group Leader AA information (current points and max points)
- Which Group Lead AAs you have
- Whether Leader AA is on/off
- Raid Leader exp (total this point to set the bar)
- Raid Leader AA information (current points and max points)
- Which Raid Lead AAs you have
- DoN radiant and ebon shards
- Wizard/Druid secondary bind point

I'm sure there's stuff I'm missing too. Any ideas you might have are very welcome.

Some of that I can verify myself, but some of that I can't. For example, I don't have a pet class, let alone one with pocket pet AA. I don't have a wizard or druid with secondary bind AA. This brings me to the second way you can help out.

If you have a character who can test some of this stuff out, you can send me logs and I can use them to figure out things. For example, if you're a druid with secondary bind, you can log a zone, set your bind point, then zone again. I can use this to figure out if secondary bind is in charProfileStruct and where.

All you'd need to do this is:
1) tcpdump -i eth0 -s0 -w secondbind.log 'udp && host 192.168.1.52' (of course replace eth0 with your ethernet device, secondbind.log with whatever you want to call the log, and replace 192.168.1.52 with the ip of your eq machine). You must do this as root.
2) Do your test (zone, set your secondary bind, zone again)
3) Control-C the tcpdump to stop it
4) Zip up the log please with gzip secondbind.log
5) Email the log to seqdump at gmail.com
6) In the email, include what you did (in this case, that you zoned into PoT, set your secondary bind point to be right outside the Plane of Air in PoT, then zoned back into PoK)

Right now, the two biggest things I'd like to see are pocketed pets (with buffs and items if you can) and secondary bind points. There may be more things I'll be interested in at some point, but those are the big two.

Please only send me a log if you trust me with it. If you send me a log, I will know what server you are on and what your player name is. That is important information. If you don't feel comfortable sending this to me, DON'T DO IT. I will not give anyone your log. I won't use the information from the log for anything, other than to improve our understanding of the EQ net stream. Also, please do not include you logging into EQ in your log. I don't want your password at all. Log into EQ, then start the tcpdump, then zone.