Пятница, 08 Ноября 2024, 21:50

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Как сделать восстановление здоровья....?
Don_AlexeyДата: Пятница, 26 Июля 2013, 16:20 | Сообщение # 1
заслуженный участник
Сейчас нет на сайте
Всем привет.

Сообственно вроде понятно все из вопроса. Как сделать восстановление здоровья через определенное время?

Пример:

100 единиц здоровья за 2 минуты. Просто к примеру.

Как это вообще сделать.


Офф. Сайт Битва за Олейрент - Это мой сайт посвящённый серии игр Битва за Олейрент.
Видео прохождение игр - Это мой сайт посвящённый прохождению игр.
Lord135Дата: Пятница, 26 Июля 2013, 16:56 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Don_Alexey,
по прошествии двух минут увеличить текущее здоровье на 100 единиц, нет?
Don_AlexeyДата: Пятница, 26 Июля 2013, 17:24 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
Да!!! Как это сделать? Через цыкл. Мне гут наговорили и через планировщик, и через крон и еще что то. Сколько людей, столько и мнений. Мне надо чем проще, тем лучше. Чтоб понять принцып.

Офф. Сайт Битва за Олейрент - Это мой сайт посвящённый серии игр Битва за Олейрент.
Видео прохождение игр - Это мой сайт посвящённый прохождению игр.
Lord135Дата: Пятница, 26 Июля 2013, 17:36 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
Don_Alexey, так ты даже не написал на чём пишешь. На каком языке то?

Добавлено (26.07.2013, 17:36)
---------------------------------------------
Don_Alexey, ах да - проще, не всегда лучше. Можно через крон, но это глупо. Через планировщик тоже можно, но тоже глупо. Лучше сделать на JS по таймеру и по просмотру

FaraonДата: Пятница, 26 Июля 2013, 17:48 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Цитата (Lord135)
Лучше сделать на JS по таймеру и по просмотру

А пример можна?
Don_AlexeyДата: Пятница, 26 Июля 2013, 17:48 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Я делаю на php. Слышал что js не все мобилы поддерживает. По этому и делаю чисто на php.
Плохо что и примеров таких нет. Можно и по средствам php через time() и date(), если надо. Но все равно нет того на что можно посмотреть, для примеры.


Офф. Сайт Битва за Олейрент - Это мой сайт посвящённый серии игр Битва за Олейрент.
Видео прохождение игр - Это мой сайт посвящённый прохождению игр.
RockDiggerДата: Пятница, 26 Июля 2013, 17:51 | Сообщение # 7
частый гость
Сейчас нет на сайте
Примерно такой код:
Код

var playerHealth = 100; // Полное здоровье
var currentHealth; // Здоровье в текущий момент времени

function RecoveryHealth()
{
if(currentHealth>0)
{
        for(i=currentHealth; i<playerHealth; i++)
           {
              //Ждём определённое время
           }

}
}
HerrPotapovДата: Пятница, 26 Июля 2013, 18:19 | Сообщение # 8
заслуженный участник
Сейчас нет на сайте
RockDigger, что это за жесть? Ужасный совет.

Don_Alexey, Я бы наверное сделал так:

Таблица player - current_health int, max_health int, last_health_update int
В last_health_update должно быть записано время последней манипуляции со здоровьем, т.е. повышаем уровень здоровья или понижаем - обязательно вносим новое время в это поле.
Далее, когда кто-то обращается к игроку (например смотрит его профиль, или сам игрок совершает какие-то действия) вызываем функцию:

Код

//передаем в функцию текущее здоровье игрока, максимальный уровень здоровья и время последнего обновления
function update_current_health($current_health, $max_health, $last_health_update){
     if($current_health == $max_health){ //игрок полностью здоров, делать здесь нечего.
       return TRUE;
     }
        
     $current_time = time(); //текущее время
     $time_span = $current_time - $last_health_update; //сколько времени прошло между последним обновлением данных о здоровье и текущим моментом (в секундах)
        
     $health_per_second = 0.2 //допустим что в минуту у игрока восстанавливается 12 единиц здоровья, тогда в секунду - 0.2 единицы
     $amount_healed = $health_per_second * $time_span; //сколько HP вылечено - умножаем кол-во секунд на восстановление HP в секунду

     $current_health = $current_health + $amount_healed; //это обновленный уровень здоровья игрока ...
     if($current_health > $max_health){ // ... который не может быть выше максимального значения его HP
       $current_health = $max_health;
     }

     $last_health_update = $current_time; //пишем сюда время последнего обновления (т.е. текущее время)
        
     /*Здесь делаем запрос к БД и обновляем таблицу player, вставляя новые значения $current_health и $last_health_update*/
}


Насчет JS-таймера - его можно прикрутить, но ему нельзя доверять. Игрок легко может подкорректировать выдавыемые им значения. Т.е. он может служить только для вывода информации, на основе показаний таймера нельзя делать никаких обновлений в БД.


Discord: alpotapov#1741

Интервью с разработчиком WarCastle - Читаем и вникаем!


Сообщение отредактировал HerrPotapov - Пятница, 26 Июля 2013, 22:40
FaraonДата: Пятница, 26 Июля 2013, 20:48 | Сообщение # 9
почетный гость
Сейчас нет на сайте
А разве вот так не будет работать?
Создаем в базе поля и предназначаем им по умолчанию число
HP = 100
minHP = 0
maxHP = 100
и вытаскиваем з бази и также предназначаем каждому полю переменную
HP = $HP
minHP = $minHP
maxHP = $maxHP
в браузере пишем
Код
"Уровень жизни: <?php echo "($HP"."/100) "; ?>

А про востановление нужно подумать!!!!
Вот и всьо полоса жизни есть smile
А когда бой будем проводить то просто от $HP отнимаем $ataka и делаем проверку
если $HP=0 то бой закончин !
Наверное плохой способ! Але он может сработать или нет?


Сообщение отредактировал Faraon - Пятница, 26 Июля 2013, 20:50
HerrPotapovДата: Пятница, 26 Июля 2013, 22:42 | Сообщение # 10
заслуженный участник
Сейчас нет на сайте
Faraon, чем отличается это от предложенного мною способа (за исключением того что ты не написал как восстанавливать здоровье)?

Добавлено (26.07.2013, 22:42)
---------------------------------------------
Don_Alexey, ты хоть пиши, разобрался или нет, а то второй раз отвечаю и ни ответа, ни привета. Непонятно подошел ли тебе ответ или совсем "мимо"


Discord: alpotapov#1741

Интервью с разработчиком WarCastle - Читаем и вникаем!
RockDiggerДата: Суббота, 27 Июля 2013, 00:34 | Сообщение # 11
частый гость
Сейчас нет на сайте
Цитата (HerrPotapov)
RockDigger, что это за жесть? Ужасный совет.

Каков вопрос таков и ответ! Писал наобум первое, что пришло в голову.
FaraonДата: Суббота, 27 Июля 2013, 02:32 | Сообщение # 12
почетный гость
Сейчас нет на сайте
Цитата (HerrPotapov)
Faraon, чем отличается это от предложенного мною способа (за исключением того что ты не написал как восстанавливать здоровье)?

м... прости, не оч понятен мне твой код, та и я не оч в нево вникал, прошу прощения! А нащот востановления вот моя версия:
Делаем проверку если $HP<100 то нам с левой или правой сторони неимеет значения, викидивает кнопку, при нажатии на неи в базу в таблицу HP будет дописиватса единица, и она будет на екране до таво пока пользователь не набере 100. Или можна зделать чтоб при нажатии на неи жизнь игрока автоматичиски востанавливалась к примеру в 1сек. 3 HP
TopkoderДата: Суббота, 27 Июля 2013, 03:03 | Сообщение # 13
частый гость
Сейчас нет на сайте
Faraon, не нужно давать глупых ответов, этим Вы только отвлекаете новичков. И учите ООП, тогда код будет ясен.
FaraonДата: Суббота, 27 Июля 2013, 03:26 | Сообщение # 14
почетный гость
Сейчас нет на сайте
Цитата (Topkoder)
не нужно давать глупых ответов

Навидите пример глупого вопроса, (чтоб потом не повторять)


Сообщение отредактировал Faraon - Суббота, 27 Июля 2013, 03:26
Don_AlexeyДата: Суббота, 27 Июля 2013, 09:36 | Сообщение # 15
заслуженный участник
Сейчас нет на сайте
HerrPotapov, спасибо. Не было возможности ответить. Твой вариант понятен.

Офф. Сайт Битва за Олейрент - Это мой сайт посвящённый серии игр Битва за Олейрент.
Видео прохождение игр - Это мой сайт посвящённый прохождению игр.
Lord135Дата: Суббота, 27 Июля 2013, 10:43 | Сообщение # 16
постоянный участник
Сейчас нет на сайте
Цитата (Faraon)
жизнь игрока автоматичиски востанавливалась к примеру в 1сек. 3 HP

Так он вроде-как и спрашивал, каким образом сделать такое вот восстановление?
FaraonДата: Суббота, 27 Июля 2013, 14:17 | Сообщение # 17
почетный гость
Сейчас нет на сайте
Цитата (Lord135)
Так он вроде-как и спрашивал, каким образом сделать такое вот восстановление?

Lord135 - я б написал но HerrPotapov мне понижает репутацию, пишет что я задаю глупие вопроси, хотя вопросов я даже не задавал в последних сообщениях на которие он и понизил репутацию!
Не хочетса ево роздрожать, спроси ево он самий умний, уверен он тебе ответит!
HerrPotapovДата: Суббота, 27 Июля 2013, 17:07 | Сообщение # 18
заслуженный участник
Сейчас нет на сайте
Faraon, репутацию я понизил по двум причинам:
Цитата
Делаем проверку если $HP<100 то нам с левой или правой сторони неимеет значения, викидивает кнопку, при нажатии на неи в базу в таблицу HP будет дописиватса единица, и она будет на екране до таво пока пользователь не набере 100

Вот это на каком языке написано? Абсолютно точно не на русском. Это первая (и основная) причина.
Цитата
Как сделать восстановление здоровья через определенное время?

Цитата
Или можна зделать чтоб при нажатии на неи жизнь игрока автоматичиски востанавливалась к примеру в 1сек. 3 HP

Где здесь ответ на поставленный вопрос?
Я написал ответ (подошедший автору), но ты с ним разбираться не захотел, зато мелешь какую-то чепуху.
Если есть вопросы - задавай. Если нечего сказать - лучше молчать.


Discord: alpotapov#1741

Интервью с разработчиком WarCastle - Читаем и вникаем!
  • Страница 1 из 1
  • 1
Поиск:

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