Вопрос Не работает bhop

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
30 Апр 2024
Сообщения
6
Реакции
2
помогите пожалуйста

C++:
Expand Collapse Copy
    void BunnyHop(CUserCmd* cmd)
    {
        uintptr_t client = reinterpret_cast<uintptr_t>(GetModuleHandleA("client.dll"));

        C_CSPlayerPawn* local_pawn = *reinterpret_cast<C_CSPlayerPawn**>(client + offsets::dwLocalPlayerPawn);

        if (local_pawn->get_flags() & FL_ONGROUND)
            cmd->nButtons.nValue &= ~IN_JUMP;
    }
 
помогите пожалуйста

C++:
Expand Collapse Copy
    void BunnyHop(CUserCmd* cmd)
    {
        uintptr_t client = reinterpret_cast<uintptr_t>(GetModuleHandleA("client.dll"));

        C_CSPlayerPawn* local_pawn = *reinterpret_cast<C_CSPlayerPawn**>(client + offsets::dwLocalPlayerPawn);

        if (local_pawn->get_flags() & FL_ONGROUND)
            cmd->nButtons.nValue &= ~IN_JUMP;
    }
C++:
Expand Collapse Copy
#include "Memory.h"
#include <iostream>
#include <Windows.h>
#include <thread>

const uint32_t STANDING = 65665;
const uint32_t CROUCHING = 65667;
const uint32_t PLUS_JUMP = 65537;
const uint32_t MINUS_JUMP = 256;

int dwLocalPlayerPawn = 0x1889F20;
int dwForceJump = 0x1882C30;
int m_fFlag = 0x3EC;

int main() {
    Memory mem("cs2.exe");
    
    std::uintptr_t client = mem.GetModuleAddress("client.dll");
    std::uintptr_t ForceJump = client + dwForceJump;
    
    while (true)
    {
        std::uintptr_t LocalPlayer = mem.Read<std::uintptr_t>(client + dwLocalPlayerPawn);
        std::uint32_t fFlag = mem.Read<std::uint32_t>(LocalPlayer + m_fFlag);
    
        if (GetAsyncKeyState(0x20) & 0x8000)
        {
            mem.Write<uint32_t>(ForceJump, MINUS_JUMP);
            if (fFlag == STANDING || fFlag == CROUCHING)
            {
                std::this_thread::sleep_for(std::chrono::milliseconds(1));
                mem.Write<uint32_t>(ForceJump, PLUS_JUMP);
            }
            else
            {
                mem.Write<uint32_t>(ForceJump, MINUS_JUMP);
            }
        }
        std::this_thread::sleep_for(std::chrono::milliseconds(1));
    }
    return 0;
}

Кстати, вот красивый код под твои нужды. По нему тебе именно будет проще понять, что не так.





Немного поздно получаешь инфу, вернее вообще не до конца и даже, если таким способ сделать, то будет неидеально прыгать
нужно прямо с указателя на игрока, узнавать флаг позиции в смещение по адрессу указателя(тавтология бля)

А, ну, бля, вот в код вчитался, то ты вообще просто указатель на игрока получаешь. Ты же не какой-то луа скрипт пишешь, где у тебя из пакета по игроку вся информация хранится. У тебя не читается вообще где игрок находится


#include "memory.h"
#include <iostream>
#include "Windows.h"
#include <thread>

#define SPACE_BAR 0x20

const uint32_t STANDING = 65665;
const uint32_t CROUCHING = 65667;

uint32_t PLUS_JUMP = 65537;
uint32_t MINUS_JUMP = 256;

int dwLocalPlayerPawn = 0x1868CC8;
int dwForceJump = 0x18619D0;
int m_fFlag = 0x3EC;

bool bhopEnabled = false;
uint32_t plusJumpDelay = 10;
uint32_t minusJumpDelay = 10;
C++:
Expand Collapse Copy
void Bhop() {
    Memory mem("cs2.exe");

    std::uintptr_t client = mem.GetModuleAddress("client.dll");
    std::uintptr_t ForceJump = client + dwForceJump;

    while (true)
    {
        if (bhopEnabled) {
            std::uintptr_t LocalPlayer = mem.Read<std::uintptr_t>(client + dwLocalPlayerPawn);
            uintptr_t fFlag = mem.Read<std::uint32_t>(LocalPlayer + m_fFlag);

            if (GetAsyncKeyState(SPACE_BAR) & 0x8000)
            {
                if (fFlag == STANDING || fFlag == CROUCHING) \\ по офсету узнает стоит или сидит игрок, если успел приземлится уже в этот момент, то сразу же                                                                                                             \\ моментально дальше прыгнет
                {
                    std::this_thread::sleep_for(std::chrono::milliseconds(plusJumpDelay));
                    mem.Write<uint32_t>(ForceJump, PLUS_JUMP);
                }
                else
                {
                    mem.Write<uint32_t>(ForceJump, MINUS_JUMP);
                }
            }
        }
        std::this_thread::sleep_for(std::chrono::milliseconds(minusJumpDelay));
    }
}
этот код точно хуево будет прыгать, потому что там нерадномная задержка в 10 секунд перед приземлением std::chrono::milliseconds(plusJumpDelay)

а вообще вот кури гайд

вот лучше, но старее:

чё еще сказать хули код сверху обьяснять это всё на форуме есть, что даже я не писавший ниразу бхоп понимаю
 
C++:
Expand Collapse Copy
#include "Memory.h"
#include <iostream>
#include <Windows.h>
#include <thread>

const uint32_t STANDING = 65665;
const uint32_t CROUCHING = 65667;
const uint32_t PLUS_JUMP = 65537;
const uint32_t MINUS_JUMP = 256;

int dwLocalPlayerPawn = 0x1889F20;
int dwForceJump = 0x1882C30;
int m_fFlag = 0x3EC;

int main() {
    Memory mem("cs2.exe");
   
    std::uintptr_t client = mem.GetModuleAddress("client.dll");
    std::uintptr_t ForceJump = client + dwForceJump;
   
    while (true)
    {
        std::uintptr_t LocalPlayer = mem.Read<std::uintptr_t>(client + dwLocalPlayerPawn);
        std::uint32_t fFlag = mem.Read<std::uint32_t>(LocalPlayer + m_fFlag);
   
        if (GetAsyncKeyState(0x20) & 0x8000)
        {
            mem.Write<uint32_t>(ForceJump, MINUS_JUMP);
            if (fFlag == STANDING || fFlag == CROUCHING)
            {
                std::this_thread::sleep_for(std::chrono::milliseconds(1));
                mem.Write<uint32_t>(ForceJump, PLUS_JUMP);
            }
            else
            {
                mem.Write<uint32_t>(ForceJump, MINUS_JUMP);
            }
        }
        std::this_thread::sleep_for(std::chrono::milliseconds(1));
    }
    return 0;
}

Кстати, вот красивый код под твои нужды. По нему тебе именно будет проще понять, что не так.





Немного поздно получаешь инфу, вернее вообще не до конца и даже, если таким способ сделать, то будет неидеально прыгать
нужно прямо с указателя на игрока, узнавать флаг позиции в смещение по адрессу указателя(тавтология бля)

А, ну, бля, вот в код вчитался, то ты вообще просто указатель на игрока получаешь. Ты же не какой-то луа скрипт пишешь, где у тебя из пакета по игроку вся информация хранится. У тебя не читается вообще где игрок находится


#include "memory.h"
#include <iostream>
#include "Windows.h"
#include <thread>

#define SPACE_BAR 0x20

const uint32_t STANDING = 65665;
const uint32_t CROUCHING = 65667;

uint32_t PLUS_JUMP = 65537;
uint32_t MINUS_JUMP = 256;

int dwLocalPlayerPawn = 0x1868CC8;
int dwForceJump = 0x18619D0;
int m_fFlag = 0x3EC;

bool bhopEnabled = false;
uint32_t plusJumpDelay = 10;
uint32_t minusJumpDelay = 10;
C++:
Expand Collapse Copy
void Bhop() {
    Memory mem("cs2.exe");

    std::uintptr_t client = mem.GetModuleAddress("client.dll");
    std::uintptr_t ForceJump = client + dwForceJump;

    while (true)
    {
        if (bhopEnabled) {
            std::uintptr_t LocalPlayer = mem.Read<std::uintptr_t>(client + dwLocalPlayerPawn);
            uintptr_t fFlag = mem.Read<std::uint32_t>(LocalPlayer + m_fFlag);

            if (GetAsyncKeyState(SPACE_BAR) & 0x8000)
            {
                if (fFlag == STANDING || fFlag == CROUCHING) \\ по офсету узнает стоит или сидит игрок, если успел приземлится уже в этот момент, то сразу же                                                                                                             \\ моментально дальше прыгнет
                {
                    std::this_thread::sleep_for(std::chrono::milliseconds(plusJumpDelay));
                    mem.Write<uint32_t>(ForceJump, PLUS_JUMP);
                }
                else
                {
                    mem.Write<uint32_t>(ForceJump, MINUS_JUMP);
                }
            }
        }
        std::this_thread::sleep_for(std::chrono::milliseconds(minusJumpDelay));
    }
}
этот код точно хуево будет прыгать, потому что там нерадномная задержка в 10 секунд перед приземлением std::chrono::milliseconds(plusJumpDelay)

а вообще вот кури гайд

вот лучше, но старее:

чё еще сказать хули код сверху обьяснять это всё на форуме есть, что даже я не писавший ниразу бхоп понимаю
писал свой чудо бхоп ночью, и честно не знаю почему решил получать поинтер на игрока, переделал и все заработало
Спасибо за помощь
 
Назад
Сверху Снизу