public void DoAimbot()
{
if (LocalPlayer == null)
return;
var valid = Players.Where(x => x.Item2.IsValid() && x.Item2.m_iHealth != 0 && x.Item2.m_iDormant != 1);
if (WithOverlay.ConfigUtils.GetValue<bool>("aimFilterSpotted"))
valid = valid.Where(x => x.Item2.SeenBy(LocalPlayer));
if (WithOverlay.ConfigUtils.GetValue<bool>("aimFilterSpottedBy"))
valid = valid.Where(x => LocalPlayer.SeenBy(x.Item2));
if (WithOverlay.ConfigUtils.GetValue<bool>("aimFilterEnemies"))
valid = valid.Where(x => x.Item2.m_iTeamNum != LocalPlayer.m_iTeamNum);
if (WithOverlay.ConfigUtils.GetValue<bool>("aimFilterAllies"))
valid = valid.Where(x => x.Item2.m_iTeamNum == LocalPlayer.m_iTeamNum);
valid = valid.OrderBy(x => (x.Item2.m_vecOrigin - LocalPlayer.m_vecOrigin).Length());
Vector3 closest = Vector3.Zero;
float closestFov = float.MaxValue;
foreach (Tuple<int, CSPlayer> tpl in valid)
{
CSPlayer plr = tpl.Item2;
Vector3 newAngles = MathUtils.CalcAngle(LocalPlayer.m_vecOrigin + LocalPlayer.m_vecViewOffset, plr.Bones.GetBoneByIndex(WithOverlay.ConfigUtils.GetValue<int>("aimBone"))) - NewViewAngles;
newAngles = MathUtils.ClampAngle(newAngles);
float fov = newAngles.Length() % 360f;
if (fov < closestFov && fov < WithOverlay.ConfigUtils.GetValue<float>("aimFov"))
{
closestFov = fov;
closest = newAngles;
}
}
if (closest != Vector3.Zero)
{
DoRCS(true);
if (WithOverlay.ConfigUtils.GetValue<bool>("aimSmoothEnabled"))
NewViewAngles = MathUtils.SmoothAngle(NewViewAngles, NewViewAngles + closest, WithOverlay.ConfigUtils.GetValue<float>("aimSmoothValue"));
else
NewViewAngles += closest;
NewViewAngles = NewViewAngles;
}
}