создай функцию реген.
вызывай ее когда юзер обновляет страницу, слетает баф на реген хп, вешается баф на реген хп, кушается бутылка, начинается бой, смотрят страницу и т.д.
короч где изменяется что либо отвечающее за реген и кол-во хп.
Логика:
1. узнать время последнего отхила
2. текущее-последнее*рег_в_секунду > 1 , то делаем реген, в противном случае нет.
3. если сделали реген, то обновляем время последнего отхила
дальше создаешь крон где раз в 10-15 минут делается реген у всех.
зачем тут крон ? Это лишняя нагрузка на сервер, персонаж сам может обновить свои хп в базе данных, просто обновив страницу, при обновлении которой, как ты и написал выше вызовется функция, которая запишет нужные данные в базу. А при просмотре информации о персонаже, нужно просто высчитывать яваскриптом, сколько сейчас должно быть у персонажа хп, на основе времени последнего отхила (значение в секундах в базе) и все. тогда не случится такого, что при каждом просмотре информации левым игроком, он будет перезаписывать значение хитпоинтов просматриваемого персонажа и время последнего отхила, т.е. перезаписать может только игрок, обновив страницу. Будут конечно исключения, когда перезапишет другой игрок, но их не так много, вот например при использовании магии нападения, нападающий должен будет перезаписать время последнего отхила и хп у атакуемого, тут уже без вариантов.
А то что ты предлагаешь через крон, это бредовая идея, представь, что у тебя игроков один миллион и ты у миллиона записей будешь постоянно каждые 10-15 минут делать реген, то есть менять значения полей, одновременно у одного миллиона записей :blink: Мне будет жаль твой сервер, в лучшем случае он будет жутко лагать, а в худшем и вовсе будет падать.
Дальше автору нужно почитать хотя бы о том, что такое "третья нормальная форма" и приводить все данные в базе данных, именно к 3NF. Лучшим примером, где отсутствует третья нормальная форма, вам может продемонстрировать база данных игры oldbk, то есть по сути, человек который проектирует базу, должен уметь правильно выделять сущности. Например игрок и пользователь, это разные сущности, у одного пользователя может быть несколько игроков, отношение один ко многим, значит должны создать две таблицы, одна таблица пользователей, другая таблица игроков, в таблице игроков, должен быть идентификатор пользователя, который однозначно определяет какому пользователю принадлежит этот игрок. Тоже самое со слотами под вещи, очевидно что это отдельная сущность, а следовательно нужно создать отдельную таблицу для слотов и т.д. Что это нам дает ? ну во первых не будет дублирования одной и той же информации, а в случае с отдельной таблицей для игроков и пользователей, то если мы например в будущем захотим сделать, чтобы один пользователь мог иметь несколько персонажей, то сделаем это очень просто, так как у нас все продумано, правильно выделены сущности и отношения между ними, а вот в случае с той базой, которая в oldbk, сделать это не представляется возможным, на проекте который уже работает и в который уже играют, без потери инофрмации.
Дальше автору для начала нужно освоить ООП и паттерны проектирования, узнать как сейчас пишутся современные приложения, понять логику работы фреймворков, попробовать написать что-нибудь на них, а уж потом браться за разработку игры, потому что в любом случае сайт или игру (не важно) нужно писать на ООП и MVC, но кроме паттерна MVC в приложении еще обязательно придется использовать паттерн синглтон и возможно паттерн абстрактная фабрика и может быть даже еще какие-то другие.
В противном случае, вы в очередной раз выпустите говнокод и ни один нормальный программист не станет с ним работать, потому что ему заведомо известно, что без хорошей продуманной архитектуры, приложение не имеет будущего. Да и пожалейте программистов, никому не охота будет копаться в дебрях вашего процедурного кода.