Puede hacer esto con una subconsulta:
select count(*) as rank
from users u
where u.ammopacks >= (select ammopacks from users u2 where u2.id = x)
Esto no hace exactamente lo mismo. Esto hará una clasificación real, donde los usuarios con el mismo valor de ammopacks
tendrá el mismo rango. El original le daría a diferentes usuarios diferentes valores secuenciales en este caso.
Para conseguir este efecto, puedes hacer:
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
)