Начинающий
-
Автор темы
- #1
У меня выполняется функция по кругу 500+ раз - чтение памяти.
Есть какие то варианты убавить нагрузку? Читать весь список нужно в любом случае.
Сама рисовка ест 4-5 кадров, чтение памяти 50-60% FPS.
Для чтения offset'ов использую данную функцию:
Есть какие то варианты убавить нагрузку? Читать весь список нужно в любом случае.
Сама рисовка ест 4-5 кадров, чтение памяти 50-60% FPS.
Для чтения offset'ов использую данную функцию:
C++:
DWORD offsetsM::GetPointerAddress(DWORD ptr, std::vector<DWORD> offsets)
{
DWORD addr = ptr;
if (&addr != nullptr)
{
for (int i = 0; i < offsets.size(); ++i)
{
if (addr != NULL)
{
addr = *(DWORD*)addr;
if (addr && &addr != nullptr && addr != NULL)
{
addr += offsets[i];
}
else
{
return ptr;
}
}
}
return addr;
}
}
C++:
for (int i = 0; i < 512; i++)
{
UINT x = (UINT)i * 0x8;
uintptr_t getadr = offsetsM::GetPointerAddress(baseAddr + 0x7CC7298, { x, 0xC, 0x0 });
uintptr_t Adr = getadr + 0x8;
int value = *(int*)Adr;
if (value == 0)
{
uintptr_t getadrres = offsetsM::GetPointerAddress(baseAddr + 0x7CC7298, { x, 0xC, 0xF, 0xA, 0x10 });
Vector3* mycord = (Vector3*)(baseAddr + 0x1CCCA2C);
Vector3* cord = (Vector3*)offsetsM::GetPointerAddress(baseAddr + 0x7CC7298, { x, 0xF, 0xC8 });
float dist = CalcDistance({ mycord->x,mycord->y,mycord->z }, { cord->x,cord->y,cord->z });
std::stringstream ss;
ss << dist;
std::string str = ss.str();
if (strcmp((char*)getadrres, (char*)"example") == 0)
{
Vector2 wtspos = WallHack::world_to_screen({ cord->x,cord->y,cord->z });
ImGui::GetBackgroundDrawList()->AddText(ImVec2{ wtspos.x,wtspos.y }, ImColor{ 253,233,16,255 }, "Monster");
ImGui::GetBackgroundDrawList()->AddText(ImVec2{ wtspos.x,wtspos.y + 20 }, ImColor{ 253,233,16,255 }, str.c_str());
}
if (strcmp((char*)getadrres, (char*)"example") == 0)
{
Vector2 wtspos = WallHack::world_to_screen({ cord->x,cord->y,cord->z });
ImGui::GetOverlayDrawList()->AddCircle(ImVec2{ wtspos.x,wtspos.y}, 5, ImColor{ 255,0,0,255 }, 12, 2);
ImGui::GetBackgroundDrawList()->AddText(ImVec2{ wtspos.x,wtspos.y + 20 }, ImColor{ 255,0,0,255 }, str.c_str());
}
if (strcmp((char*)getadrres, (char*)"example") == 0)
{
Vector2 wtspos = WallHack::world_to_screen({ cord->x,cord->y,cord->z });
ImGui::GetOverlayDrawList()->AddCircle(ImVec2{ wtspos.x,wtspos.y }, 5, ImColor{ 0,140,240,255 }, 12, 2);
ImGui::GetBackgroundDrawList()->AddText(ImVec2{ wtspos.x,wtspos.y + 20 }, ImColor{ 0,140,240,255 }, str.c_str());
}
if (strcmp((char*)getadrres, (char*)"example") == 0)
{
Vector2 wtspos = WallHack::world_to_screen({ cord->x,cord->y,cord->z });
ImGui::GetOverlayDrawList()->AddCircle(ImVec2{ wtspos.x,wtspos.y}, 5, ImColor{ 255,117,24,255 }, 12, 2);
ImGui::GetBackgroundDrawList()->AddText(ImVec2{ wtspos.x,wtspos.y + 20 }, ImColor{ 255,117,24,255 }, str.c_str());
}
if (strcmp((char*)getadrres, (char*)"example") == 0)
{
Vector2 wtspos = WallHack::world_to_screen({ cord->x,cord->y,cord->z });
ImGui::GetBackgroundDrawList()->AddText(ImVec2{ wtspos.x,wtspos.y}, ImColor{ 139,0,255,255 }, "NPC");
ImGui::GetBackgroundDrawList()->AddText(ImVec2{ wtspos.x,wtspos.y + 20 }, ImColor{ 139,0,255,255 }, str.c_str());
}
if (strcmp((char*)getadrres, (char*)"example") == 0)
{
Vector2 wtspos = WallHack::world_to_screen({ cord->x,cord->y,cord->z });
ImGui::GetBackgroundDrawList()->AddText(ImVec2{ wtspos.x,wtspos.y }, ImColor{ 255,20,147,255 }, "Water");
ImGui::GetBackgroundDrawList()->AddText(ImVec2{ wtspos.x,wtspos.y + 20 }, ImColor{ 255,20,147,255 }, str.c_str());
}
}
}