Você pode fazer isso com uma subconsulta:
select count(*) as rank
from users u
where u.ammopacks >= (select ammopacks from users u2 where u2.id = x)
Isso não faz exatamente a mesma coisa. Isso fará um ranking real, onde usuários com o mesmo valor de
ammopacks
terá a mesma classificação. O original daria a diferentes usuários valores sequenciais diferentes neste caso. Para obter esse efeito, você pode fazer:
select count(*) as rank
from users u
where u.ammopacks > (select ammopacks from users u2 where u2.id = x) or
(u.ammopacks = (select ammopacks from users u2 where u2.id = x) and
u.id <= x
)