• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

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

  • Автор темы Автор темы BiNoops
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
9 Мар 2021
Сообщения
144
Реакции
11
Использую kiero hook, при включении чекбокса консоль логов всё быстренько отображает, но сама игра зависает
Уменьшил итерацию циклов до 9999 всё ворк, но почему else не помогает невдупляю

main.cpp:
Expand Collapse Copy
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("del", 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:
Expand Collapse Copy
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;
}
 
Последнее редактирование:
даже не знаю почему
так он если 5 раз видит что поинтер = 0, т.е. энтити лист закончился игровой, то заканчивает функцию.
Да и тем более сама консоль показывает всё шустро, сама игра стопается
else { failCounter++; if (failCounter > 5) { std::cout << std::hex << "3 EntityTableZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ: " << pEntityTableBase << std::endl; return entities; } }
 
  • Попкорн
Реакции: abbc
Использую kiero hook, при включении чекбокса консоль логов всё быстренько отображает, но сама игра зависает

main.cpp:
Expand Collapse Copy
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:
Expand Collapse Copy
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
 
игра зависает из-за большого количества итераций в цикле, который собирает данные сущностей в функции ESPCollectData().выполная цикл до 999999, что слишком большое значение. там поставь 1000
а у меня else неправильно реализован или что? Просто не понимаю
 
у тебя он слишком большое количество инегрирует поменяй на 1000
но по идеи должно быть типа того: перебирает указатели, закончились они через 3000/1000/6000, тогда после энтити листа адреса указывают на 0, если 5 адресов указывают на 0, то цикл завершается не выполняя все 99999 итераций.
Разве нет?
 
так он если 5 раз видит что поинтер = 0, т.е. энтити лист закончился игровой, то заканчивает функцию.
нету детерминации в этом алгоритме НИХУЯ

причину лагов я тебе сказал, делой с этой хуйней че угодно
 
но по идеи должно быть типа того: перебирает указатели, закончились они через 3000/1000/6000, тогда после энтити листа адреса указывают на 0, если 5 адресов указывают на 0, то цикл завершается не выполняя все 99999 итераций.
Разве нет?
нет цикл до 999999 интеграции ебашит
 
нету детерминации в этом алгоритме НИХУЯ

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

DWORD pointer = (DWORD)(pEntityTableBase + i * 4);
 
но по идеи должно быть типа того: перебирает указатели, закончились они через 3000/1000/6000, тогда после энтити листа адреса указывают на 0, если 5 адресов указывают на 0, то цикл завершается не выполняя все 99999 итераций.
Разве нет?
Так почему ты думаешь что после конца массива идут нули? Он же не бесконечный, нахуя тебе вообще такой хуевый алгоритм если ты можешь получить количество ентити
 
Так почему ты думаешь что после конца массива идут нули? Он же не бесконечный, нахуя тебе вообще такой хуевый алгоритм если ты можешь получить количество ентити
потому что смотрел и после конца всех энтити идут нули, кол-во энтити я пока не получил, поэтому так сделал
 
потому что смотрел и после конца всех энтити идут нули, кол-во энтити я пока не получил, поэтому так сделал
если массив будет заполнен до конца, то твой алгоритм просто будет до конца адресного пространства тебе энтити читать
 
Назад
Сверху Снизу