Начинающий
- Статус
- Оффлайн
- Регистрация
- 23 Ноя 2019
- Сообщения
- 36
- Реакции
- 1
Когда пытаюсь сделать проверку на граунд через трейсы павна, рушится стек, проблема конкретно в каком-то участке кода
C++:
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);
}