Вопрос Subtick bhop

Начинающий
Статус
Оффлайн
Регистрация
3 Фев 2020
Сообщения
24
Реакции[?]
0
Поинты[?]
0
Всем привет, я сгенерил с помощью .proto файликов: cs_usercmd.pb, network_connection.pb, networkbasetypes.pb, usercmd.pb. Скомпилил protobuf либу, инклюднул в проект. Сам проект компилится, но хук отрабатывает 2 раза и крашит, пробовал просто baseUserCmd->add_subtick_moves();, без вызова .set методов, иногда все ок, указатели получаются (пробовал закидывать их адрес в reclass, действительно указатели на CSubtickMoveStep), а иногда может просто крашнуть, или крашнуть при выстреле/любом муве. baseUserCmd->subtick_moves().GetArena() возвращает nullptr. .proto файлики брал с
Пожалуйста, авторизуйтесь для просмотра ссылки.
(noad)
Код:
void hooks::CreateMove::CreateMove(CCSGOInput* pInput, int nSlot, CUserCmd* pCmd)
{
    if (IsUninitialized)               
        return Original(pInput, nSlot, pCmd);

    Original(pInput, nSlot, pCmd);
        
    auto baseUserCmd = pCmd->csgoUserCmd.mutable_base();

    baseUserCmd->clear_subtick_moves();

    if (controller::entity::LocalPlayer->m_MoveType() == MOVETYPE_LADDER || controller::entity::LocalPlayer->m_MoveType() == MOVETYPE_NOCLIP)
        return;

    if (pCmd->nButtons.value & IN_JUMP)
        return;

    pCmd->nButtons.value &= ~IN_JUMP;
    pCmd->nButtons.changed &= ~IN_JUMP;
    pCmd->nButtons.scroll &= ~IN_JUMP;

    if (controller::entity::LocalPlayer->m_fFlags() & FL_ONGROUND)
    {
        pCmd->nButtons.value |= IN_JUMP;
        pCmd->nButtons.scroll |= IN_JUMP;

        auto subtick_1 = baseUserCmd->add_subtick_moves();

        subtick_1->set_button(IN_JUMP);
        subtick_1->set_pressed(true);
        subtick_1->set_when(0.999f);

        auto subtick_2 = baseUserCmd->add_subtick_moves();

        subtick_2->set_button(IN_JUMP);
        subtick_2->set_pressed(false);
        subtick_2->set_when(0.999f);
    }
}
 
Пользователь
Статус
Онлайн
Регистрация
25 Мар 2021
Сообщения
165
Реакции[?]
70
Поинты[?]
27K
Ну во первых тут сабтики воркать не будут, а конкретнее в этом креейтмуве

А по поводу краша, всего скорее у тебя сама структура цмдшки говна поела
 
Начинающий
Статус
Оффлайн
Регистрация
3 Фев 2020
Сообщения
24
Реакции[?]
0
Поинты[?]
0
Ну во первых тут сабтики воркать не будут, а конкретнее в этом креейтмуве

А по поводу краша, всего скорее у тебя сама структура цмдшки говна поела
Насчет крейтмува подскажи пж. А вот структура самой usercmd? Или usercmdPB (вот она как раз с протобаф файликов идет, как и SubtickMoveStep и тп). Если ты про usercmd, щас скинуть саму структуру не могу но там два поля buttons (через них бхоп работает, тоесть их смещение - ок), а вот второе как раз указатель на CBaseUsercmdPB вроде (или CSGOUsecmdPB), в рекласс закидывал указатель, он как раз указывал на CmdPB
 
Пользователь
Статус
Оффлайн
Регистрация
4 Окт 2014
Сообщения
182
Реакции[?]
71
Поинты[?]
15K
на сабтиках уже не работает он нормально точнее адекватно, и визуалка вместо 0.999f всё равно 1.f выставит
 
Начинающий
Статус
Оффлайн
Регистрация
23 Авг 2023
Сообщения
21
Реакции[?]
0
Поинты[?]
0
Всем привет, я сгенерил с помощью .proto файликов: cs_usercmd.pb, network_connection.pb, networkbasetypes.pb, usercmd.pb. Скомпилил protobuf либу, инклюднул в проект. Сам проект компилится, но хук отрабатывает 2 раза и крашит, пробовал просто baseUserCmd->add_subtick_moves();, без вызова .set методов, иногда все ок, указатели получаются (пробовал закидывать их адрес в reclass, действительно указатели на CSubtickMoveStep), а иногда может просто крашнуть, или крашнуть при выстреле/любом муве. baseUserCmd->subtick_moves().GetArena() возвращает nullptr. .proto файлики брал с
Пожалуйста, авторизуйтесь для просмотра ссылки.
(noad)
Код:
void hooks::CreateMove::CreateMove(CCSGOInput* pInput, int nSlot, CUserCmd* pCmd)
{
    if (IsUninitialized)              
        return Original(pInput, nSlot, pCmd);

    Original(pInput, nSlot, pCmd);
       
    auto baseUserCmd = pCmd->csgoUserCmd.mutable_base();

    baseUserCmd->clear_subtick_moves();

    if (controller::entity::LocalPlayer->m_MoveType() == MOVETYPE_LADDER || controller::entity::LocalPlayer->m_MoveType() == MOVETYPE_NOCLIP)
        return;

    if (pCmd->nButtons.value & IN_JUMP)
        return;

    pCmd->nButtons.value &= ~IN_JUMP;
    pCmd->nButtons.changed &= ~IN_JUMP;
    pCmd->nButtons.scroll &= ~IN_JUMP;

    if (controller::entity::LocalPlayer->m_fFlags() & FL_ONGROUND)
    {
        pCmd->nButtons.value |= IN_JUMP;
        pCmd->nButtons.scroll |= IN_JUMP;

        auto subtick_1 = baseUserCmd->add_subtick_moves();

        subtick_1->set_button(IN_JUMP);
        subtick_1->set_pressed(true);
        subtick_1->set_when(0.999f);

        auto subtick_2 = baseUserCmd->add_subtick_moves();

        subtick_2->set_button(IN_JUMP);
        subtick_2->set_pressed(false);
        subtick_2->set_when(0.999f);
    }
}
Один вопрос я уже заебался можешь сказать какой индекс и как правильно хукать createmove с параметром cusercmd
void hooks::CreateMove::CreateMove(CCSGOInput* pInput, int nSlot, CUserCmd* pCmd)
Заебался искать
 
Пользователь
Статус
Оффлайн
Регистрация
26 Окт 2017
Сообщения
520
Реакции[?]
95
Поинты[?]
2K
Один вопрос я уже заебался можешь сказать какой индекс и как правильно хукать createmove с параметром cusercmd
void hooks::CreateMove::CreateMove(CCSGOInput* pInput, int nSlot, CUserCmd* pCmd)
Заебался искать
откуда в 3 аргументе у тебя взялся полноценный cmd?
иду открой
1732723426510.png
 
Начинающий
Статус
Оффлайн
Регистрация
23 Авг 2023
Сообщения
21
Реакции[?]
0
Поинты[?]
0
откуда в 3 аргументе у тебя взялся полноценный cmd?
иду открой
Посмотреть вложение 291535
Есть 2 метода получения либо через индекс CSGOInput (ленивый)
Или через целый метод контроллер локального игрока (полный)
откуда в 3 аргументе у тебя взялся полноценный cmd?
иду открой
Посмотреть вложение 291535
И во вторых посмотри выше его пост как ты думаешь как он получил 3 аргумент user cmd?
 
Начинающий
Статус
Оффлайн
Регистрация
3 Фев 2020
Сообщения
24
Реакции[?]
0
Поинты[?]
0
Есть 2 метода получения либо через индекс CSGOInput (ленивый)
Или через целый метод контроллер локального игрока (полный)

И во вторых посмотри выше его пост как ты думаешь как он получил 3 аргумент user cmd?
Через 21 метод CSGOInput
Всего скорее у тебя просто юзер умд говняный, скинь его
C++:
class CUserCmd
{
public:
    char pad_1[0x10];
    CSGOUserCmdPB csgoUserCmd; 
    CButtonState nButtons;
    char pad_2[0x20];
};
 
Пользователь
Статус
Оффлайн
Регистрация
4 Окт 2014
Сообщения
182
Реакции[?]
71
Поинты[?]
15K
Начинающий
Статус
Оффлайн
Регистрация
23 Авг 2023
Сообщения
21
Реакции[?]
0
Поинты[?]
0
Через 21 метод CSGOInput

C++:
class CUserCmd
{
public:
    char pad_1[0x10];
    CSGOUserCmdPB csgoUserCmd;
    CButtonState nButtons;
    char pad_2[0x20];
};
а CSGOInput - auto Input = reinterpret_cast<CCSGOInput*>(schema.resolve_rip(schema.FindPattern("client.dll", ("48 8B 0D ? ? ? ? 4C 8D 8F ? ? ? ? 45 33 FF")), 0x3, 0x7));
 
Начинающий
Статус
Оффлайн
Регистрация
23 Авг 2023
Сообщения
21
Реакции[?]
0
Поинты[?]
0
а CSGOInput - auto Input = reinterpret_cast<CCSGOInput*>(schema.resolve_rip(schema.FindPattern("client.dll", ("48 8B 0D ? ? ? ? 4C 8D 8F ? ? ? ? 45 33 FF")), 0x3, 0x7));
Я делаю так но у меня не может получить индекс

if (MH_CreateHook((LPVOID)GetVFunc(Input, 21), (LPVOID)createmove_csgoinput::hooked, (LPVOID*)&createmove_csgoinput::original_fn) != MH_OK)
{
Log("[Minhook] Failed to create hook for CreateMove :(", LOG_ERROR);
}
Я делаю так но у меня не может получить индекс

if (MH_CreateHook((LPVOID)GetVFunc(Input, 21), (LPVOID)createmove_csgoinput::hooked, (LPVOID*)&createmove_csgoinput::original_fn) != MH_OK)
{
Log("[Minhook] Failed to create hook for CreateMove :(", LOG_ERROR);
}
Тоесть сам createmove неправильный вот я и думаю что CSGOInput паттерн не правильный а не индекс
 
Сверху Снизу