Софт Вопрос Основной поток зависает | ESP

Начинающий
Статус
Оффлайн
Регистрация
9 Мар 2021
Сообщения
135
Реакции[?]
11
Поинты[?]
6K
Использую kiero hook, при включении чекбокса консоль логов всё быстренько отображает, но сама игра зависает
Уменьшил итерацию циклов до 9999 всё ворк, но почему else не помогает невдупляю

main.cpp:
bool init = false;
std::vector<Entity*> entitiesRend;

void esp()
{
    ImGui::Checkbox("Enable ESP", &Settings::ESP::enabled);
}

void rendESP()
{
    if (!Settings::ESP::enabled)
        return;
    std::cout << std::hex << "Checkbox Run: " << std::endl;
    entitiesRend = ESPCollectData();

    ImGui::GetBackgroundDrawList()->AddText(ImVec2(200, 400), ImColor(255, 255, 255, 255), "ESP Test");

    // Отрисовка ESP для каждой сущности
    for (Entity* entity : entitiesRend) {
        vec3 headPos = { entity->pos.x, entity->pos.y + 1.0f, entity->pos.z };
        vec3 feetPos = { entity->pos.x, entity->pos.y, entity->pos.z };

        Vec4 headScreenPos = WorldToScreen(headPos);
        Vec4 feetScreenPos = WorldToScreen(feetPos);

        float height = abs(headScreenPos.y - feetScreenPos.y);
        float width = height / 2;

        ImVec2 topLeft = ImVec2(headScreenPos.x - width, headScreenPos.y);
        ImVec2 topRight = ImVec2(headScreenPos.x + width, headScreenPos.y);

        ImVec2 bottomRight = ImVec2(feetScreenPos.x + width, feetScreenPos.y);
        ImVec2 bottomLeft = ImVec2(feetScreenPos.x - width, headScreenPos.y);

        ImGui::GetBackgroundDrawList()->AddQuad(topLeft, bottomLeft, bottomRight, topRight, ImColor(255, 11, 11, 255), 1.0f);
        // ImGui::GetBackgroundDrawList()->AddRect(topLeft, bottomRight, ImColor(255, 11, 11, 255), 0, 15, 3);
    }
    std::cout << std::hex << "Checkbox End: " << std::endl;
}

long __stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice) {
    if (!init) {
        InitImGui(pDevice);
        init = true;
    }

    ImGui_ImplDX9_NewFrame();
    ImGui_ImplWin32_NewFrame();
    ImGui::NewFrame();

    ImGui::SetNextWindowSize(ImVec2(750, 550));
    ImGui::Begin("GUFIX", NULL, ImGuiWindowFlags_NoResize);

    if (ImGui::Button("Pattern")) {
        HandleButton1();
    }
    if (ImGui::Button("Button")) {
        HandleButton2();
    }
    esp();
    rendESP();

    ImGui::End();
    ImGui::EndFrame();
    ImGui::Render();
    ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());

    return oEndScene(pDevice);
}

cheat.cpp:
std::vector<Entity*> ESPCollectData() {
    int failCounter = 0;
    std::vector<Entity*> entities;
    std::cout << std::hex << "1 EntityTablOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO: " << pEntityTableBase << std::endl;
    if (!Settings::ESP::enabled)
        return entities;

    std::cout << std::hex << "2 EntityTableeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee: " << pEntityTableBase << std::endl;

    for (int i = 0; i < 999999; ++i) {
        DWORD pointer = [I](DWORD[/I])(pEntityTableBase + i * 4);
        if (pointer) {
            failCounter = 0;
            Entity* entity = (Entity*)pointer;
            entities.push_back(entity);
        }
        else {
            failCounter++;
            if (failCounter > 5) {
                std::cout << std::hex << "3 EntityTableZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ: " << pEntityTableBase << std::endl;
                return entities;
            }
        }
    }

    std::cout << std::hex << "4 EntityTableVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV: " << pEntityTableBase << std::endl;
    return entities;
}
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
9 Мар 2021
Сообщения
135
Реакции[?]
11
Поинты[?]
6K
даже не знаю почему
так он если 5 раз видит что поинтер = 0, т.е. энтити лист закончился игровой, то заканчивает функцию.
Да и тем более сама консоль показывает всё шустро, сама игра стопается
else { failCounter++; if (failCounter > 5) { std::cout << std::hex << "3 EntityTableZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ: " << pEntityTableBase << std::endl; return entities; } }
 
Начинающий
Статус
Оффлайн
Регистрация
25 Сен 2024
Сообщения
38
Реакции[?]
6
Поинты[?]
8K
Использую kiero hook, при включении чекбокса консоль логов всё быстренько отображает, но сама игра зависает

main.cpp:
bool init = false;
std::vector<Entity*> entitiesRend;

void esp()
{
    ImGui::Checkbox("Enable ESP", &Settings::ESP::enabled);
}

void rendESP()
{
    if (!Settings::ESP::enabled)
        return;
    std::cout << std::hex << "Checkbox Run: " << std::endl;
    entitiesRend = ESPCollectData();

    ImGui::GetBackgroundDrawList()->AddText(ImVec2(200, 400), ImColor(255, 255, 255, 255), "ESP Test");

    // Отрисовка ESP для каждой сущности
    for (Entity* entity : entitiesRend) {
        vec3 headPos = { entity->pos.x, entity->pos.y + 1.0f, entity->pos.z };
        vec3 feetPos = { entity->pos.x, entity->pos.y, entity->pos.z };

        Vec4 headScreenPos = WorldToScreen(headPos);
        Vec4 feetScreenPos = WorldToScreen(feetPos);

        float height = abs(headScreenPos.y - feetScreenPos.y);
        float width = height / 2;

        ImVec2 topLeft = ImVec2(headScreenPos.x - width, headScreenPos.y);
        ImVec2 topRight = ImVec2(headScreenPos.x + width, headScreenPos.y);

        ImVec2 bottomRight = ImVec2(feetScreenPos.x + width, feetScreenPos.y);
        ImVec2 bottomLeft = ImVec2(feetScreenPos.x - width, headScreenPos.y);

        ImGui::GetBackgroundDrawList()->AddQuad(topLeft, bottomLeft, bottomRight, topRight, ImColor(255, 11, 11, 255), 1.0f);
        // ImGui::GetBackgroundDrawList()->AddRect(topLeft, bottomRight, ImColor(255, 11, 11, 255), 0, 15, 3);
    }
    std::cout << std::hex << "Checkbox End: " << std::endl;
}

long __stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice) {
    if (!init) {
        InitImGui(pDevice);
        init = true;
    }

    ImGui_ImplDX9_NewFrame();
    ImGui_ImplWin32_NewFrame();
    ImGui::NewFrame();

    ImGui::SetNextWindowSize(ImVec2(750, 550));
    ImGui::Begin("GUFIX", NULL, ImGuiWindowFlags_NoResize);

    if (ImGui::Button("Pattern")) {
        HandleButton1();
    }
    if (ImGui::Button("Button")) {
        HandleButton2();
    }
    esp();
    rendESP();

    ImGui::End();
    ImGui::EndFrame();
    ImGui::Render();
    ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());

    return oEndScene(pDevice);
}

cheat.cpp:
std::vector<Entity*> ESPCollectData() {
    int failCounter = 0;
    std::vector<Entity*> entities;
    std::cout << std::hex << "1 EntityTablOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO: " << pEntityTableBase << std::endl;
    if (!Settings::ESP::enabled)
        return entities;

    std::cout << std::hex << "2 EntityTableeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee: " << pEntityTableBase << std::endl;

    for (int i = 0; i < 999999; ++i) {
        DWORD pointer = [I](DWORD[/I])(pEntityTableBase + i * 4);
        if (pointer) {
            failCounter = 0;
            Entity* entity = (Entity*)pointer;
            entities.push_back(entity);
        }
        else {
            failCounter++;
            if (failCounter > 5) {
                std::cout << std::hex << "3 EntityTableZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ: " << pEntityTableBase << std::endl;
                return entities;
            }
        }
    }

    std::cout << std::hex << "4 EntityTableVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV: " << pEntityTableBase << std::endl;
    return entities;
}
игра зависает из-за большого количества итераций в цикле, который собирает данные сущностей в функции ESPCollectData().выполная цикл до 999999, что слишком большое значение. там поставь 1000
 
Начинающий
Статус
Оффлайн
Регистрация
9 Мар 2021
Сообщения
135
Реакции[?]
11
Поинты[?]
6K
игра зависает из-за большого количества итераций в цикле, который собирает данные сущностей в функции ESPCollectData().выполная цикл до 999999, что слишком большое значение. там поставь 1000
а у меня else неправильно реализован или что? Просто не понимаю
 
OllyDbg
Пользователь
Статус
Оффлайн
Регистрация
24 Дек 2018
Сообщения
301
Реакции[?]
45
Поинты[?]
10K
Начинающий
Статус
Оффлайн
Регистрация
25 Сен 2024
Сообщения
38
Реакции[?]
6
Поинты[?]
8K
Начинающий
Статус
Оффлайн
Регистрация
9 Мар 2021
Сообщения
135
Реакции[?]
11
Поинты[?]
6K
у тебя он слишком большое количество инегрирует поменяй на 1000
но по идеи должно быть типа того: перебирает указатели, закончились они через 3000/1000/6000, тогда после энтити листа адреса указывают на 0, если 5 адресов указывают на 0, то цикл завершается не выполняя все 99999 итераций.
Разве нет?
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,605
Реакции[?]
607
Поинты[?]
48K
так он если 5 раз видит что поинтер = 0, т.е. энтити лист закончился игровой, то заканчивает функцию.
нету детерминации в этом алгоритме НИХУЯ

причину лагов я тебе сказал, делой с этой хуйней че угодно
 
Начинающий
Статус
Оффлайн
Регистрация
25 Сен 2024
Сообщения
38
Реакции[?]
6
Поинты[?]
8K
но по идеи должно быть типа того: перебирает указатели, закончились они через 3000/1000/6000, тогда после энтити листа адреса указывают на 0, если 5 адресов указывают на 0, то цикл завершается не выполняя все 99999 итераций.
Разве нет?
нет цикл до 999999 интеграции ебашит
 
OllyDbg
Пользователь
Статус
Оффлайн
Регистрация
24 Дек 2018
Сообщения
301
Реакции[?]
45
Поинты[?]
10K
нету детерминации в этом алгоритме НИХУЯ

причину лагов я тебе сказал, делой с этой хуйней че угодно
Я ему уже пофиксил
Было так DWORD pointer = (DWORD)(pEntityTableBase + i * 4);
Стало так

DWORD pointer = (DWORD)(pEntityTableBase + i * 4);
 
Начинающий
Статус
Оффлайн
Регистрация
15 Янв 2022
Сообщения
130
Реакции[?]
18
Поинты[?]
8K
но по идеи должно быть типа того: перебирает указатели, закончились они через 3000/1000/6000, тогда после энтити листа адреса указывают на 0, если 5 адресов указывают на 0, то цикл завершается не выполняя все 99999 итераций.
Разве нет?
Так почему ты думаешь что после конца массива идут нули? Он же не бесконечный, нахуя тебе вообще такой хуевый алгоритм если ты можешь получить количество ентити
 
Начинающий
Статус
Оффлайн
Регистрация
9 Мар 2021
Сообщения
135
Реакции[?]
11
Поинты[?]
6K
Так почему ты думаешь что после конца массива идут нули? Он же не бесконечный, нахуя тебе вообще такой хуевый алгоритм если ты можешь получить количество ентити
потому что смотрел и после конца всех энтити идут нули, кол-во энтити я пока не получил, поэтому так сделал
 
Начинающий
Статус
Оффлайн
Регистрация
15 Янв 2022
Сообщения
130
Реакции[?]
18
Поинты[?]
8K
потому что смотрел и после конца всех энтити идут нули, кол-во энтити я пока не получил, поэтому так сделал
если массив будет заполнен до конца, то твой алгоритм просто будет до конца адресного пространства тебе энтити читать
 
Сверху Снизу