Validated and filled out SendMaxCharacters

This commit is contained in:
dannuic 2026-04-13 22:56:49 -06:00
parent a4785d30e0
commit 865f619e21
3 changed files with 666 additions and 657 deletions

View File

@ -2632,21 +2632,23 @@ namespace TOB
ENCODE_LENGTH_EXACT(MaxCharacters_Struct);
SETUP_DIRECT_ENCODE(MaxCharacters_Struct, structs::MaxCharacters_Struct);
//OUT(max_chars);
eq->max_chars = 8; //needs to be fixed
eq->marketplace_chars = 0;
*eq = {0};
eq->total_character_slots = 8;
eq->marketplace_character_slots = 0;
eq->unknown008 = -1;
eq->unknown00c = 196608;
eq->unknown010 = 0;
eq->unknown014 = 0;
eq->unknown018 = 0;
eq->unknown01c = 0;
eq->unknown020 = -1;
eq->unknown024 = 0;
eq->unknown028 = 0;
eq->unknown02c = 0;
eq->unknown030 = 0;
eq->unknown034 = 0;
eq->head_start_button = 0;
eq->heroic_related = 0x0003;
eq->heroic_50_count = 0;
eq->heroic_100_count = 0;
eq->disable_character_creation = 0; // this works, but it soft-locks the UI for some reason, needs to be fixed
eq->monthly_claim = -1;
eq->marketplace_related = 0;
eq->add_marketplace_chars = 0;
eq->add_unknown = 0;
eq->legacy_characters_ruleset = 0;
eq->num_max_characters = 0;
eq->num_personas_available = 10;
eq->has_de_ranger = 1; // this is probably an expansion flag only
FINISH_ENCODE();
}

View File

@ -75,21 +75,28 @@ namespace TOB {
};
struct MaxCharacters_Struct {
/*000*/ uint32 max_chars;
/*004*/ uint32 marketplace_chars;
/*008*/ int32 unknown008; //some of these probably deal with heroic characters or something
/*00c*/ int32 unknown00c;
/*010*/ int32 unknown010;
/*014*/ int32 unknown014;
/*018*/ int32 unknown018;
/*01c*/ int32 unknown01c;
/*020*/ int32 unknown020;
/*024*/ int32 unknown024;
/*028*/ int32 unknown028;
/*02c*/ int32 unknown02c;
/*030*/ int32 unknown030;
/*034*/ int32 unknown034;
/*038*/
/*000*/ uint32 total_character_slots; // total character slots, different than max characters
/*004*/ uint32 marketplace_character_slots;
/*008*/ uint32 unknown008; // definitely 4 bytes, read in client, value for CEverQuest::Unknown0x0608
/*00c*/ uint8 head_start_button;
/*00d*/ uint8 unused00d;
/*00e*/ uint16 heroic_related;
/*010*/ int64 heroic_50_count; // read as 64 bits in the client
/*018*/ int32 heroic_100_count;
/*01c*/ uint8 disable_character_creation;
/*01d*/ uint8 unused01d[3];
/*020*/ int32 monthly_claim; // (-1 for don't set)
/*024*/ uint8 marketplace_related; // marketplace related boolean (int32 for convenience here, it's 4 bytes)
/*025*/ uint8 unused025[3];
/*028*/ int32 unused028;
/*02c*/ uint8 add_marketplace_chars; // boolean on whether to add or set marketplace characters
/*02d*/ uint8 add_unknown; // boolean on whether to add unknown008 or set marketplace characters to some unknown global
/*02e*/ uint8 legacy_characters_ruleset;
/*02f*/ uint8 unused02f;
/*030*/ int32 num_max_characters; // used for legacy exp calculation
/*034*/ int32 num_personas_available;
/*038*/ int32 has_de_ranger;
/*03c*/
};
struct ExpansionInfo_Struct {

File diff suppressed because it is too large Load Diff