Так значит будем делать топ легит резольвер ака пастить из монеона
так смотрим как сделано в монеоне
а потом пастим
Спойлер: пастим
void Resolver(CBaseEntity* pPlayer)
{
if (pPlayer->GetAnimState())
{
Vector vVelocity = pPlayer->GetVelocity();
float flSpeed = vVelocity.Length2D();
if (flSpeed == 0.0f)
{
if (bLegitResolver)
{
Vector vEyeAngles = pPlayer->GetEyeAngles();
float flLowerBody = remainderf(pPlayer->GetLowerBodyYaw(), 360.f);
if (flLowerBody - remainderf(vEyeAngles.y, 360.f) >= 60.f)
pPlayer->GetAnimState()->m_flGoalFeetYaw = NormalizeYaw(remainderf(pPlayer->GetLowerBodyYaw() + 180.f, 360.f));
}
}
}
}
тут всё очень просто и понятно, вызывать надо в хуке CreateMove
вот полностью готовый код:
Спойлер
void Resolver(CBaseEntity* pPlayer)
{
if (pPlayer->GetAnimState())
{
Vector vVelocity = pPlayer->GetVelocity();
float flSpeed = vVelocity.Length2D();
if (flSpeed == 0.0f)
{
if (bLegitResolver)
{
Vector vEyeAngles = pPlayer->GetEyeAngles();
float flLowerBody = remainderf(pPlayer->GetLowerBodyYaw(), 360.f);
if (flLowerBody - remainderf(vEyeAngles.y, 360.f) >= 60.f)
pPlayer->GetAnimState()->m_flGoalFeetYaw = NormalizeYaw(remainderf(pPlayer->GetLowerBodyYaw() + 180.f, 360.f));
}
}
}
}
void CreateMove_Hooked(CUserCmd* pCmd)
{
//...
for (int i = 1; i < g_pEngine->GetMaxClients(); i++)
{
CBaseEntity* pEntity = g_pEntityList->GetEntity(i);
if (!pEntity)
continue;
if (!pEntity->IsAlive())
continue;
if (pEntity == pLocalPlayer)
continue;
Resolver(pEntity);
}
//...
}
резольвер просто пи, кодеры монеона красавчики тупа лучшие!