bool is_break() { static float next_break = 0.f; const float current_time = interfaces.global_vars->interval_per_tick * csgo->local->GetTickBase()/*GetCurtime()*/; auto animstate = csgo->local->GetPlayerAnimState(); if (!animstate) return false; if (animstate->m_velocity > 0.1f || std::fabs(animstate->flUpVelocity) > 100.f) next_break = current_time + 0.22f; if (next_break < current_time) { next_break = current_time + 0.22f; return true; } return false; } =============================================================================================== void CMAntiAim::Opposite(bool& send_packet) { int side = csgo->SwitchAA ? 1 : -1; static bool sway; static bool choke = false; static bool reverse = false; const auto crouched = csgo->local->GetFlags() & FL_DUCKING; auto animstate = csgo->local->GetPlayerAnimState(); if (is_break() && vars.antiaim.lby_type && animstate->m_velocity < 6.0f && csgo->client_state->iChokedCommands < 14) { auto speed = crouched ? 3.3f : 1.01f; csgo->m_forward_move = reverse ? speed : -speed; reverse = !reverse; switch (vars.antiaim.lby_type) { case 1: csgo->viewangles.y += (csgo->local->GetDSYDelta() * 2) * -side; break; // opposite case 2: if (!sway) csgo->viewangles.y += 120.f * -side; break; // sway } Math::NormalizeYaw(csgo->cmd->viewangles.y); sway = !sway; send_packet = false; choke = true; return; } if (choke) { send_packet = false; choke = false; } }