I started looking at ESO today, here is some delicious copypasta*:
Code:
// eso.live.1.0.0.941004
std::uint32_t const kCVarList = 0x00FEFBDC;
// eso.live.1.0.0.941004
struct UnkStrImpl
{
void* unk_0000_;
void* unk_0004_;
char* value_;
};
// eso.live.1.0.0.941004
struct CVarImpl
{
struct VTable
{
void* unk_0000_; // 0x0000 (0x0004)
void* get_value_string_; // 0x0004 (0x0004)
void* set_value_string_; // 0x0008 (0x0004)
};
struct Value
{
union ValueUnion
{
bool b_;
bool* bp_;
std::uint32_t d_;
std::uint32_t* dp_;
std::uint64_t q_;
std::uint64_t* qp_;
float f_;
float* fp_;
UnkStr* sp_;
char* s_;
};
Type type_; // 0x0000 (0x0004)
void* unk_004_; // 0x0004 (0x0004)
ValueUnion value_; // 0x0008 (0x0008)
};
VTable* vtable_; // 0x0000 (0x0004)
void* unk_0004_; // 0x0004 (0x0004)
CVarImpl* prev_; // 0x0008 (0x0004)
CVarImpl* next_; // 0x000C (0x0004)
void* unk_0010_; // 0x0010 (0x0004)
void* unk_0014_; // 0x0014 (0x0004)
char* name_; // 0x0018 (0x0004)
void* unk_001C_[0x42]; // 0x001C (0x0108)
void** unk_0124_; // 0x0124 (0x0004)
Value value_; // 0x0128 (0x0010)
};
* Disclaimer: Code is incomplete, both in the sense that it won't compile as I left lots of boilerplate out, and also in the sense that I probably got parts wrong.
EDIT:
Oops, forgot to paste the 'Type' enum for my CVar stuff:
Code:
enum class Type : std::uint32_t
{
kUnk0000,
kBool,
kBoolPtr,
kDword,
kDwordPtr,
kQword,
kQwordPtr,
kFloat,
kFloatPtr,
kUnk0009,
kUnk000A,
kStringPtr,
kString,
kUnk000D
};