Понедельник, 18 Ноября 2024, 01:23

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Регенерация здоровья на PHP
DerpieДата: Воскресенье, 11 Мая 2014, 19:53 | Сообщение # 1
был не раз
Сейчас нет на сайте
Я разрабатываю браузерку для телефонов, и мне нужно реализовать регенерацию здоровья у меня есть две переменных максимального и текущего здоровья проблема в том что я незнаю как сделать чтобы оно регенерировалось через определенный промежуток времени, я уже гуглил ничего не нашел. Надеюсь мне тут помогут.

Сообщение отредактировал Derpie - Воскресенье, 11 Мая 2014, 19:55
lvovandДата: Воскресенье, 11 Мая 2014, 20:05 | Сообщение # 2
старожил
Сейчас нет на сайте
как часто должно регенирироваться?
можно кроном запускаить скрипт,
можно смотреть время между кликами игрока и в зависимости от прошедшего времени считать здоровье


Разработка и продвижение сайтов. Дизайн
DerpieДата: Воскресенье, 11 Мая 2014, 20:08 | Сообщение # 3
был не раз
Сейчас нет на сайте
Цитата lvovand ()
как часто должно регенирироваться?

Через 4-5 минут.
Цитата lvovand ()
можно кроном запускаить скрипт,

Цитата lvovand ()
можно смотреть время между кликами игрока и в зависимости от прошедшего времени считать здоровье

Можно поподробнее?
SaiteiДата: Воскресенье, 11 Мая 2014, 20:36 | Сообщение # 4
старожил
Сейчас нет на сайте
Цитата Derpie ()
Цитата lvovand ()
можно смотреть время между кликами игрока и в зависимости от прошедшего времени считать здоровье

Можно поподробнее?

Можно получить серверное время и сравнить с тем, когда была последняя регенерация. Если модуль разности времен >=5 минут, то делаем регенерацию


Сообщение отредактировал Saitei - Воскресенье, 11 Мая 2014, 20:37
DerpieДата: Воскресенье, 11 Мая 2014, 20:46 | Сообщение # 5
был не раз
Сейчас нет на сайте
Цитата Saitei ()
Можно получить серверное время и сравнить с тем, когда была последняя регенерация. Если модуль разности времен >=5 минут, то делаем регенерацию

Я не понимаю, можно пример если не трудно с меня +
SaiteiДата: Воскресенье, 11 Мая 2014, 20:59 | Сообщение # 6
старожил
Сейчас нет на сайте
Derpie, я не особо много на PHP сидел, но так можно получить часы\минуты\секунды:
Код
$info = getdate();
$hour = $info['hours'];
$min = $info['minutes'];
$sec = $info['seconds'];

Где-то на сервере (в текстовом файле или базе) надо хранить переменную "А нужно ли регенерировать?" и переменную со временем последней регенерации.
Дальше над мелочами сам подумай. Модуль разности это всего лишь расстояние. Пример:
2-3 = -1 //Ничего необычного
l2-3l = 1 //Т.к. 2-3<0, то модуль равен 1.
Но, думаю, ты это итак понимаешь и знаешь smile
Ни в коем случае не делай регенерацию на javascript, иначе в игре появятся игроки с... кхм... god mode'ом : ))
LunarPixelДата: Воскресенье, 11 Мая 2014, 21:01 | Сообщение # 7
старожил
Сейчас нет на сайте
Как можно делать что-то относительно масштабное и не знать, как сделать, по сути, простейшую вещь.
Есть несколько вариантов, как один из них:

После боя записываешь в базу текущее время/дату. При обновлении страницы сравниваешь текущее время и записанное (время, само собой, серверное). В зависимости от разницы во времени восстанавливаешь N здоровья, например, 1 единицу за каждую минуту.


SaiteiДата: Воскресенье, 11 Мая 2014, 21:09 | Сообщение # 8
старожил
Сейчас нет на сайте
LunarPixel, присоединяюсь к такому подходу. Разве что дополнение: надо проверять, а нужна ли регенерация. Если нет - то и время проверять смысла нет
DerpieДата: Воскресенье, 11 Мая 2014, 21:11 | Сообщение # 9
был не раз
Сейчас нет на сайте
Всем спасибо за помощь, решил тем что записываю время последней регенерации в БД и сравниваю с текущим.

Добавлено (11.05.2014, 21:11)
---------------------------------------------

Цитата Saitei ()
Разве что дополнение: надо проверять, а нужна ли регенерация.

Уже есть.
Цитата LunarPixel ()
Как можно делать что-то относительно масштабное и не знать, как сделать, по сути, простейшую вещь.

Ну я ведь только учусь.
lvovandДата: Воскресенье, 11 Мая 2014, 21:20 | Сообщение # 10
старожил
Сейчас нет на сайте
Цитата Derpie ()
решил тем что записываю время последней регенерации в БД и сравниваю с текущим

только getdate() совсем необязательно, лучше сделай целочисленное поле в базе, и пиши туда текущее время time(),
при обновлении страницы смотришь разницу текущего time() и тем что в базе, получишь разницу в секундах


Разработка и продвижение сайтов. Дизайн
SaiteiДата: Воскресенье, 11 Мая 2014, 21:23 | Сообщение # 11
старожил
Сейчас нет на сайте
Стёрто. Ляпнул глупость, пардон)

Сообщение отредактировал Saitei - Воскресенье, 11 Мая 2014, 21:25
DerpieДата: Воскресенье, 11 Мая 2014, 21:36 | Сообщение # 12
был не раз
Сейчас нет на сайте
Цитата lvovand ()
только getdate() совсем необязательно, лучше сделай целочисленное поле в базе, и пиши туда текущее время time(),
при обновлении страницы смотришь разницу текущего time() и тем что в базе, получишь разницу в секундах

Так и сделал.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг