Возможно я Вас неправильно понял, но.
Создаем бд запись где храним - ид пользователя и очки. Раз в час(крон) грузим всех пользователей которые онлайн(online > 0), перебираем всех пользователей, грузим данные о их очках. Если очки == 120 - не выполнять, если нет - повышаем (передаем в Sql запросе WHERE `id` = id)
По поводу онлайна, на определенное действие на сайте(которое всегда вызывается когда пользователь на сайте) поставьте запись в поле БД(к примеру поле online) = 5. Ставим крон на каждую минуту, перебираем всех пользователей WHERE online > 0 и уменьшаем им online(online--), тем самым онлайн будет обновляться каждые 5 минут. Если чел на сайте - он 5 минут будет светится онлайн, если за 5 минут он опять не появится на сайте(не запишет его скрипт в бд как online = 5) то ему присвоеться значение 0(online) - пользователь оффлайн.