CS2 проблема с самописным бхопом

g_b0601

Участник
Автор темы
48
1
написал свой интернал бхоп и столкнулся с проблемой, что он просто иногда не попадает в тайминги, в рейдж читах все идеально, а мой прыгает до 7 раз максимум и спотыкаеться, может ктото знает в чем проблема?
вот видео с проблемой
вот код:
#include <Windows.h>
#include <cstdint>
#include <thread>
#include <chrono>
#include <iostream>

namespace Offsets
{
    constexpr std::ptrdiff_t dwLocalPlayerPawn = 0x188CF70;
    constexpr std::ptrdiff_t m_fFlags = 0x3EC;
    constexpr std::ptrdiff_t jump = 0x1885C80;
    constexpr int fl_ground1 = 65665;
    constexpr int fl_ground2 = 65667;
}

uintptr_t GetClientModule()
{
    return reinterpret_cast<uintptr_t>(GetModuleHandleA("client.dll"));
}

template <typename T>
T ReadMemory(uintptr_t address)
{
    return *reinterpret_cast<T*>(address);
}

void BunnyHop()
{
    uintptr_t client = GetClientModule();
    if (!client) {
        std::cout << "Ошибка: клиентский модуль не найден." << std::endl;
        return;
    }

    while (true) {
        std::this_thread::sleep_for(std::chrono::milliseconds(1));

        if (GetAsyncKeyState(VK_SPACE) & 0x8000) {
            uintptr_t LocalPlayer = ReadMemory<uintptr_t>(client + Offsets::dwLocalPlayerPawn);
            if (!LocalPlayer) continue;

            int fFlags = ReadMemory<int>(LocalPlayer + Offsets::m_fFlags);
            if (fFlags == Offsets::fl_ground1 || fFlags == Offsets::fl_ground2) {
                std::this_thread::sleep_for(std::chrono::milliseconds(10));
                *reinterpret_cast<uintptr_t*>(client + Offsets::jump) = 65537;
            }
            else {
                std::this_thread::sleep_for(std::chrono::milliseconds(10));
                *reinterpret_cast<uintptr_t*>(client + Offsets::jump) = 256;
            }
        }
    }
}

int __stdcall DllMain(HMODULE instance, DWORD reason, void* reserved) {
    if (reason == DLL_PROCESS_ATTACH) {
        DisableThreadLibraryCalls(instance);
        auto thread = CreateThread(nullptr, 0, reinterpret_cast<LPTHREAD_START_ROUTINE>(BunnyHop), instance, 0, nullptr);
        if (thread)
            CloseHandle(thread);
    }
    return TRUE;
}