Доброе утро / день / вечер, интернет.В настоящее время я занимаюсь разработкой wap-игры и столкнулся с проблемой: применять долгосрочные эффекты к другим игрокам.Позвольте мне объяснить.
Если пользователь использует «мгновенную» способность, это просто обычная командная ссылка, которая делает executeAbility()
;Если пользователь разыгрывает заклинание, сценарий выполняет следующее:
setPlayerState('casting');
sleep($cast_time);
executeAbility();
Хотя это всего лишь простая часть.Теперь, если мы перейдем к более продвинутым методам, таким как проклятие игрока, я заблудился.Я уже рассмотрел следующую возможность:
$time=$_SERVER['REQUEST_TIME'];
$time_when_the_curse_finishes=$time+$curseDuration;
updateEnemyCurses($curseID,$endTime);
if ($time<$endTime) removeCurse();
Это может выглядеть красиво и все, но это не учитывает две вещи: если пользователь вышел из системы и снова вошел через 2 часа, онпотратил бы целых два часа проклятых и , этот метод не может поддерживать эффект каждые x секунд в течение y секунд вид проклятий.Например:
Проклятие первое.Вы получаете 1 урон каждые 2 секунды в течение 10 секунд.
Подводя итог, мне просто нужен совет или два, как я могу сделать возможную линию выше.Само проклятие должно было бы проверять свое время глобально (не с перезагрузками страницы) и иметь возможность выполнять запросы (в этом случае тики повреждения) каждые x секунд, пока оно не будет удалено за 10 секунд.заранее за любые советы, предлагаемые здесь!