- Статус
- Оффлайн
- Регистрация
- 27 Фев 2019
- Сообщения
- 1,128
- Реакции
- 393
Блять, я не знаю уже как эту хуету резольвить, какой код нужно написать для проверки слоуволка и чтобы его в последствии резольвило (фиксило). И да, если можно, дайте сурс нормально ресольвера с брутфорсом, а то у меня брутфорсит, тапнет раза 4 и в боди убьёт раза 2, а потом миссает. Код ресольвера:
C++:
float MaxDelta(C_BaseEntity* pEnt) {
auto animstate = uintptr_t(pEnt->AnimState());
float duckammount = *(float*)(animstate + 0xA4);
float speedfraction = max(0, min(*reinterpret_cast<float*>(animstate + 0xF8), 1));
float speedfactor = max(0, min(1, *reinterpret_cast<float*> (animstate + 0xFC)));
float unk1 = ((*reinterpret_cast<float*> (animstate + 0x11C) * -0.30000001f) - 0.19999999f)* speedfraction;
float unk2 = unk1 + 1.f;
float unk3;
if (duckammount > 0) {
unk2 += ((duckammount * speedfactor) * (0.5f - unk2));
}
unk3 = *(float*)(animstate + 0x334) * unk2;
return unk3;
}
bool IsEntityMoving(C_BaseEntity *ent)
{
return (ent->GetVelocity().Length2D() > 0.1f && ent->GetFlags() & FL_ONGROUND);
}
void Resolver::AnimationFix(C_BaseEntity* entity)
{
auto v3 = Globals::LocalPlayer;
if (v3 != entity)
{
auto animstate = entity->AnimState();
if (animstate)
{
// missed shot <= 2
if (Globals::MissedShots[entity->EntIndex()] <= 2)
{
float speed;
if (*(float*)(animstate + 0xF8) < 0.f)
{
speed = 0.0;
}
else
{
speed = fminf(*(DWORD*)(animstate + 0xF8), 1.0f);
}
float flYawModifier = (*(float*)(animstate + 0x11C) * -0.30000001 - 0.19999999) * speed;
flYawModifier += 1.0f;
if (*(float*)(animstate + 0xA4) > 0.0 && *(float*)(animstate + 0xFC) >= 0.0)
flYawModifier = fminf(*(float*)(uintptr_t(animstate) + 0xFC), 1.0f);
float m_flMaxBodyYaw = *(float*)(uintptr_t(animstate) + 0x334) * flYawModifier;
float m_flMinBodyYaw = *(float*)(uintptr_t(animstate) + 0x330) * flYawModifier;
float ResolvedYaw = animstate->m_flEyeYaw;
float delta = std::abs(animstate->m_flEyeYaw - animstate->m_flGoalFeetYaw);
if (m_flMaxBodyYaw < delta)
{
ResolvedYaw = animstate->m_flEyeYaw - std::abs(m_flMaxBodyYaw);
}
else if (m_flMinBodyYaw > delta)
{
ResolvedYaw = animstate->m_flEyeYaw + std::abs(m_flMinBodyYaw);
}
animstate->m_flGoalFeetYaw = AngleNormalize(ResolvedYaw);
}
else
{
switch (Globals::MissedShots[entity->EntIndex()] % 4)
{
case 1: animstate->m_flGoalFeetYaw += 45.0f; break;
case 2: animstate->m_flGoalFeetYaw -= 45.0f; break;
case 3: animstate->m_flGoalFeetYaw -= 30.0f; break;
case 4: animstate->m_flGoalFeetYaw += 30.0f; break;
case 5: animstate->m_flGoalFeetYaw += 60.0f; break;
case 6: animstate->m_flGoalFeetYaw -= 60.0f; break;
case 7: animstate->m_flGoalFeetYaw -= 60.0f; break;
case 8: animstate->m_flGoalFeetYaw += 60.0f; break;
case 9: animstate->m_flEyeYaw = animstate->m_flEyeYaw + MaxDelta(entity); break;
case 10: animstate->m_flEyeYaw = animstate->m_flEyeYaw - MaxDelta(entity); break;
}
}
}
}
}