void autodefuser::defuserapplication(CUserCmd* cmd) {
if (!g_cfg.misc.autodefuse)
return;
if (!g_ctx.m_local || !g_ctx.m_local->is_alive())
return;
if (g_ctx.m_local->m_iTeamNum() != 3)
return;
CCSBomb* bomb = nullptr;
for (int i = 1; i < g_csgo.m_entitylist()->GetHighestEntityIndex(); i++)
{
IClientEntity* entity = g_csgo.m_entitylist()->GetClientEntity(i);
if (!entity)
continue;
if (entity->GetClientClass()->m_ClassID == ClassId::CPlantedC4)
{
bomb = (CCSBomb*)entity;
break;
}
if (!bomb || bomb->m_bBombDefused())
return;
float flBlow = bomb->m_flC4Blow();
float lifetime = flBlow - (g_csgo.m_globals()->m_interval_per_tick * g_ctx.m_local->m_nTickBase());
if (g_ctx.m_local->m_bHasDefuser() && lifetime > 5.5f)
return;
if (!g_ctx.m_local->m_bHasDefuser() && lifetime > 10.5f)
return;
if (bomb->m_bBombDefused())
return;
float distance = g_ctx.m_local->m_vecOrigin().DistTo(bomb->GetAbsOrigin());
if (distance <= 75.0f)
cmd->m_buttons |= IN_USE;
}
}