| Регенерация здоровья на 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.
 Но, думаю, ты это итак понимаешь и знаешь
   Ни в коем случае не делай регенерацию на 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() и тем что в базе, получишь разницу в секундах
Так и сделал.
 |  |  |  |  |