2#include "../Utils/Memory.h"
12 optional<string>
name()
const {
22 return !base ? nullopt : base.value()->name();
27 return !base ? nullopt : base.value()->name();
34 std::ofstream dump_file;
35 dump_file.open(
"C:\\entity_dump.txt");
45 const auto schema = ident->schema_class_binding();
46 const auto internal_name = ident->internal_name();
47 const auto entity_name = ident->entity_name();
48 const auto binary_name = schema->binary_name();
49 const auto class_name = schema->class_name();
52 <<
"internal_name: " << internal_name.value_or(
"empty")
53 <<
" | entity_name: " << entity_name.value_or(
"empty")
54 <<
" | binary_name: " << binary_name.value_or(
"empty")
55 <<
" | class_name: " << class_name.value_or(
"empty");
58 dump_file <<
" | handle: " << std::hex << ident->handle().value().get() <<
" | index: " << ident->handle().value().to_index();
60 dump_file <<
" -> [" << (
void*)ident->base_entity() <<
"]\n";
62 const auto next_ent = ident->m_pNext();
66 ident = next_ent.value();
71 LOG::INFO(
"dump_entities: done. Total: {}", ents_count);
82 const auto internal_name = ident->internal_name().value_or(
"");
83 if (internal_name == name_to_find)
84 return ident->base_entity();
88 const auto entity_name = ident->entity_name().value_or(
"");
89 if (entity_name == name_to_find)
90 return ident->base_entity();
94 const auto schema = ident->schema_class_binding();
95 const auto binary_name = schema->binary_name().value_or(
"");
96 if (binary_name == name_to_find)
97 return ident->base_entity();
101 const auto schema = ident->schema_class_binding();
102 const auto class_name = schema->class_name().value_or(
"");
103 if (class_name == name_to_find)
104 return ident->base_entity();
109 const auto next_ent = ident->m_pNext();
113 ident = next_ent.value();
119 template <
typename T>
121 std::vector<T*> found;
128 const auto internal_name = ident->internal_name().value_or(
"");
129 if (internal_name == name_to_find)
130 found.push_back(
reinterpret_cast<T*
>(ident->base_entity()));
134 const auto entity_name = ident->entity_name().value_or(
"");
135 if (entity_name == name_to_find)
136 found.push_back(
reinterpret_cast<T*
>(ident->base_entity()));
140 const auto schema = ident->schema_class_binding();
141 const auto binary_name = schema->binary_name().value_or(
"");
142 if (binary_name == name_to_find)
143 found.push_back(
reinterpret_cast<T*
>(ident->base_entity()));
147 const auto schema = ident->schema_class_binding();
148 const auto class_name = schema->class_name().value_or(
"");
149 if (class_name == name_to_find)
150 found.push_back(
reinterpret_cast<T*
>(ident->base_entity()));
155 ident = ident->m_pNext().value_or(
nullptr);
161 optional<CBaseEntity*>
find_by_index(uint32_t index,
bool hero_only =
false)
const {
164 const auto schema = ident->schema_class_binding();
165 if (!schema || schema->class_name().value_or(
"") !=
"C_DOTA_BaseNPC_Hero")
169 if (ident->handle() && ident->handle().value().to_index() == index)
170 return ident->base_entity();
ENTITY_NAME_TYPE
Definition Enums.h:21
Definition CEntityIdentity.h:11
optional< CEntityIdentity * > m_pNext() const
Definition CEntityIdentity.h:44
Definition CGameEntitySystem.h:31
std::vector< T * > find_vector_by_name(const ENTITY_NAME_TYPE &name_type, const string &name_to_find) const
Definition CGameEntitySystem.h:120
optional< CBaseEntity * > find_by_index(uint32_t index, bool hero_only=false) const
Definition CGameEntitySystem.h:161
optional< CBaseEntity * > find_by_handle(const CHandle handle, bool hero_only=false) const
Definition CGameEntitySystem.h:177
CEntityIdentity * first_identity() const
Definition CGameEntitySystem.h:181
void dump_entities() const
Definition CGameEntitySystem.h:33
optional< CBaseEntity * > find_by_name(const ENTITY_NAME_TYPE &name_type, const string &name_to_find) const
Definition CGameEntitySystem.h:74
uint32_t to_index() const
Definition CHandle.h:10
Definition CGameEntitySystem.h:18
optional< string > binary_name() const
Definition CGameEntitySystem.h:20
optional< string > class_name() const
Definition CGameEntitySystem.h:25
static optional< T > read_memory(const N &address)
Definition Memory.h:78
static optional< string > read_string(const T &address, const size_t max_length=64)
Definition Memory.h:125
Definition CGameEntitySystem.h:10
optional< string > name() const
Definition CGameEntitySystem.h:12