Начинающий
- Статус
- Оффлайн
- Регистрация
- 19 Сен 2023
- Сообщения
- 30
- Реакции
- 4
вот что у меня есть на данный момент
вот что я сейчас пытаюсь сделать
сам dump_list_panels
но мой m_panel.size(); всегда равен 0
sdk::utl_vec_t<panel_data_t> m_panel; - кукда то сьехало а куда все что в ней всегда 0 и из за этого проблема как я пониаю
C++:
namespace interfaces {
class c_ui_panel {
private:
const void* vtable;
public:
vfunc(const char* (__thiscall*)(decltype(this)), get_name(), 11u);
};
struct panel_data_t {
uint64_t padd;
uint32_t flags;
uint32_t visible;
c_ui_panel* panel;
uint32_t panel_id;
uint32_t padd2;
};
class c_ui_engine_source2 {
public:
vfunc(void(__thiscall*)(decltype(this), c_ui_panel*, const char*, const char*, std::uint64_t), run_script(c_ui_panel* panel, const char* script_src, const char* origin_file, std::uint64_t line), 81u, panel, script_src, origin_file, line);
};
class c_panorama_ui_engine {
private:
void* vtable;
char padd[0xE0];
public:
sdk::utl_vec_t<panel_data_t> m_panel;
public:
bool is_valid_panel(c_ui_panel* panel) {
return reinterpret_cast<bool(__thiscall*)(decltype(this), c_ui_panel*)>((*reinterpret_cast<std::uintptr_t**>(this))[32u])(this, panel);
};
public:
c_ui_panel* get_panel_by_name(dependencie::hash_t hash) {
for (auto i = 0; i < m_panel.size(); i++) {
auto& elem = m_panel.at(i);
if (!elem.panel)
continue;
if (!elem.visible)
continue;
if (!is_valid_panel(elem.panel))
continue;
auto panel_name = elem.panel->get_name();
if (!panel_name)
continue;
if (HASH_RT(panel_name) != hash)
continue;
return elem.panel;
}
return nullptr;
};
void dump_list_panels() {
for (auto i = 0; i < m_panel.size(); i++) {
auto& elem = m_panel.at(i);
if (!elem.panel)
continue;
if (!is_valid_panel(elem.panel))
continue;
printf("%s\n", elem.panel->get_name());
}
}
public:
vfunc(c_ui_engine_source2* (__thiscall*)(decltype(this)), access_ui_engine(), 13u);
} inline* i_panorama_ui_engine{};
}
вот что я сейчас пытаюсь сделать
C++:
void test() {
if (!interfaces::i_panorama_ui_engine) {
return;
}
interfaces::i_panorama_ui_engine->dump_list_panels();
}
сам dump_list_panels
C++:
void dump_list_panels() {
for (auto i = 0; i < m_panel.size(); i++) {
auto& elem = m_panel.at(i);
if (!elem.panel)
continue;
if (!is_valid_panel(elem.panel))
continue;
printf("%s\n", elem.panel->get_name());
}
}
но мой m_panel.size(); всегда равен 0
sdk::utl_vec_t<panel_data_t> m_panel; - кукда то сьехало а куда все что в ней всегда 0 и из за этого проблема как я пониаю