Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос Рушится стек

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
23 Ноя 2019
Сообщения
36
Реакции
1
Когда пытаюсь сделать проверку на граунд через трейсы павна, рушится стек, проблема конкретно в каком-то участке кода


C++:
Expand Collapse Copy
bool TracePlayerBBox(Vector3* vStart, Vector3* vEnd, BBoxCollision_t* bounds, CTraceFilter* pFilter, CGameTrace* pGameTrace)
{
    using func_t = bool(__fastcall*)(Vector3*, Vector3*, BBoxCollision_t*, CTraceFilter*, CGameTrace*);

    static func_t fn = reinterpret_cast<func_t>(FindPattern(CLIENT_DLL, XorStr("48 8B C4 4C 89 40 ? 48 89 48 ? 55 53 56 57 41 56")));

    return fn(vStart, vEnd, bounds, pFilter, pGameTrace);
}


auto CL_Trace::IsValidGround(C_CSPlayerPawn* pLocal, BBoxCollision_t& bbox, Vector3& vStart, Vector3& vEnd, CGameTrace& gameTrace) -> bool
{
    if (!pLocal)
        return false;


    static auto* sv_standable_normal = SDK::Interfaces::EngineCvar()->Find("sv_standable_normal");


    CTraceFilter filter(0x1C1003, pLocal, 3, 15);

    //InitPlayerMovementTraceFilter(&filter, pLocal, 0x1C1003, 16);
    TracePlayerBBox(&vStart, &vEnd, &bbox, &filter, &gameTrace);

    auto fnCheckIsValidStandableGround = [](const CGameTrace& gameTrace, float flStandableNormal) -> bool {
        if (gameTrace.flFraction <= 0.f || gameTrace.flFraction >= 1.f)
            return false;

        return gameTrace.vecNormal.m_z >= sv_standable_normal->value.fl;
    };

    return fnCheckIsValidStandableGround(gameTrace, sv_standable_normal->value.fl);
}
 
Когда пытаюсь сделать проверку на граунд через трейсы павна, рушится стек, проблема конкретно в каком-то участке кода


C++:
Expand Collapse Copy
bool TracePlayerBBox(Vector3* vStart, Vector3* vEnd, BBoxCollision_t* bounds, CTraceFilter* pFilter, CGameTrace* pGameTrace)
{
    using func_t = bool(__fastcall*)(Vector3*, Vector3*, BBoxCollision_t*, CTraceFilter*, CGameTrace*);

    static func_t fn = reinterpret_cast<func_t>(FindPattern(CLIENT_DLL, XorStr("48 8B C4 4C 89 40 ? 48 89 48 ? 55 53 56 57 41 56")));

    return fn(vStart, vEnd, bounds, pFilter, pGameTrace);
}


auto CL_Trace::IsValidGround(C_CSPlayerPawn* pLocal, BBoxCollision_t& bbox, Vector3& vStart, Vector3& vEnd, CGameTrace& gameTrace) -> bool
{
    if (!pLocal)
        return false;


    static auto* sv_standable_normal = SDK::Interfaces::EngineCvar()->Find("sv_standable_normal");


    CTraceFilter filter(0x1C1003, pLocal, 3, 15);

    //InitPlayerMovementTraceFilter(&filter, pLocal, 0x1C1003, 16);
    TracePlayerBBox(&vStart, &vEnd, &bbox, &filter, &gameTrace);

    auto fnCheckIsValidStandableGround = [](const CGameTrace& gameTrace, float flStandableNormal) -> bool {
        if (gameTrace.flFraction <= 0.f || gameTrace.flFraction >= 1.f)
            return false;

        return gameTrace.vecNormal.m_z >= sv_standable_normal->value.fl;
    };

    return fnCheckIsValidStandableGround(gameTrace, sv_standable_normal->value.fl);
}
1000006186.jpg

Повтори с другой/любой ии
 
trace player bbox не правильный у тебя, там щас 6 аргументов, а так же паттерн не валидный

48 89 74 24 ? 55 57 41 54 41 55 41 56 48 8D AC 24 ? ? ? ? 48 81 EC ? ? ? ? 4C 8B B5
 
trace player bbox не правильный у тебя, там щас 6 аргументов, а так же паттерн не валидный

48 89 74 24 ? 55 57 41 54 41 55 41 56 48 8D AC 24 ? ? ? ? 48 81 EC ? ? ? ? 4C 8B B5
В том паттерне что ты мне дал функция тоже принимает 5 аргументов

void __fastcall sub_180859AF0(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5)
 
trace player bbox не правильный у тебя, там щас 6 аргументов, а так же паттерн не валидный

48 89 74 24 ? 55 57 41 54 41 55 41 56 48 8D AC 24 ? ? ? ? 48 81 EC ? ? ? ? 4C 8B B5
еще может что нибудь интересное расскажешь?
к слову, у тса сига валидная, т.е. 48 8B C4 4C 89 40 ? 48 89 48 ? 55 53 56 57 41 56
а твоя хуета ведет хуй пойми и хуй пойми на что
и она также принимает 5 аргументов.
бывает, броук зафейлил поиск и определение даже такой легкой функции, но ничего, не расстраивайся!

upd:
1777234444214.png


где 6-ой аргумент то?
 
еще может что нибудь интересное расскажешь?
к слову, у тса сига валидная, т.е. 48 8B C4 4C 89 40 ? 48 89 48 ? 55 53 56 57 41 56
а твоя хуета ведет хуй пойми и хуй пойми на что
и она также принимает 5 аргументов.
бывает, броук зафейлил поиск и определение даже такой легкой функции, но ничего, не расстраивайся!

upd:
Посмотреть вложение 334351

где 6-ой аргумент то?
Даже если так, у меня всё ещё стек рушится
 
у тебя хотя бы структура фильтра валидная?
Структура с базы Andromeda, ну тип который её поддерживает обновил, но я не проверял, другие функции с фильтром краш не выдают
 
Назад
Сверху Снизу