вот это то что ты написал entity->instance->0x8->0x0->0x0
это (мои названия. хз как по факту называется) у айдентити лежит на 0x8 ClassTemplate*, там есть всякое говно включая шема биндинг класса, можешь там покопаться. там инфа вроде есть о бейз классе
class ClassInfo
{
const char* name_1{};
const char* name_2{};
const char* name_3{};
ClassTemplate* cls_template{};
ClassInfo* base_class{};
CSchemaClassBinding* binding{};
};
class ClassTemplate//na (identity + 8) lezhit ukazatel na eto
{
void* some_base_shit_unk{};
void* unk_1{};
void* unk_2{};
void* unk_3{};
void* unk_4{};
ClassInfo* class_info{};//tut binding est'
//at 0x108 is ClassMetaDef* metadef;
};
class ClassMetaDef
{
const char* server_name{};
const char* client_name{};
ClassTemplate* class_template{};
const char* scoped_name{};
void* unk{};
std::uint32_t id{};
public:
std::string_view GetClientName() const noexcept
{
if (!client_name)
return {};
return client_name;
}
const auto& GetClassTemplate() const
{
if (!class_template)
throw std::runtime_error{std::format(R"(ClassMetaDef::class_template is nullptr for "{}"!)", GetClientName())};
return *class_template;
}
};
можешь по именам в шема биндингах сравнивать
bool helper_check_hierarchy_for_name(const CSchemaClassBinding& binding, std::string_view name) noexcept
{
for (const auto& parent_node : binding.GetParents())
{
if (const auto* parent = parent_node.GetParent(); parent)
{
if (parent->GetName() == name || helper_check_hierarchy_for_name(*parent, name))
return true;
}
}
return false;
}
... entity vvv ...
bool IsInstanceOfClass(std::string_view cls) const
{
const auto& binding = GetBinding();
if (binding.GetName() == cls)
return true;
else
return helper_check_hierarchy_for_name(binding, cls);
return false;
}
а по факту если хочешь можешь заранее часто встречающиеся биндинги из шемы брать определенных классов(крип хуип и так далее) и сразу напрямую сравнивать указатели в классинфо.
либо можешь тем же самым путём пойти и темплейты а не биндинги сравнивать. метадефы лежат в таблице в CNetworkGameClient, в метадефе есть указатель на темплейту