PHP/MySQL | Математики, го считать и фиксить баг

DELETED
Автор
8 мая 2019, в 18:17
Delete
отнимаем 10 хп и ставим временную метку time()
ну и например должно прибавлять 1 хп каждые 10 секунд
делается проверка, если набежало 1 или более, то добавляем хп и опять же ставим временную метку time()
и вот тут какая коза заделывается - ведь если прошло 19 секунд и обновляем страницу, то набежало 1 хп и работает условие проверки, в результате чего будет проставлена новая временная метка для отсчёта, но ведь 9 секунд мы потеряли и получается на генерацию следующего хп + 1 затрачивается 19 секунд, а не 10
а если генерация раз в час и прошло 1:59, то получается мы не 2 получим а 1 и 59 МИНУТ будет потеряно
ну-ка го сочиним, как разницу учесть а то я с ночи не очень варит маковка

________
посл. ред. 08.05.2019 в 18:19; всего 2 раз(а); by PhpStorm
<?php
$amt = $player->getHealingRate() * (time() - $player->getLastVisit())
________
посл. ред. 08.05.2019 в 18:21; всего 1 раз(а); by nadgobonom

DELETED
Автор
8 мая 2019, в 18:23
Delete
nadgobonom (08.05.2019 в 18:20)
<?php
$amt = $player->getHealingRate() * (time() - $player->getLastVisit())
ну а если ещё раз нужно хп отнять, то LastVisit изменится и опять борода
тут типа нужно учесть сколько на набежавшее времени ушло и его отнять от разницы нынешнего и последнего
PhpStorm, Тык ты получишь дробное число, оберни в round() и все.

DELETED
Автор
8 мая 2019, в 22:12
Delete
TuT (08.05.2019 в 21:47)
PhpStorm, Тык ты получишь дробное число, оберни в round() и все.
PhpStorm, Тык ты получишь дробное число, оберни в round() и все.
как так?
Если я понял тебя правильно, ты получаешь дробное число, но получаешь ты меньшее значение в место большего, для это используй celi();
https://www.php.net/manual/ru/function.ceil.php
https://www.php.net/manual/ru/function.ceil.php
PhpStorm (08.05.2019 в 22:12)
TuT (08.05.2019 в 21:47)
PhpStorm, Тык ты получишь дробное число, оберни в round() и все.
как так?
TuT (08.05.2019 в 21:47)
PhpStorm, Тык ты получишь дробное число, оберни в round() и все.
как так?
Так деление же используем, на выходе по любому получим дробное число.

DELETED
Автор
8 мая 2019, в 23:41
Delete
TuT (08.05.2019 в 22:18)
PhpStorm (08.05.2019 в 22:12)
TuT (08.05.2019 в 21:47)
PhpStorm, Тык ты получишь дробное число, оберни в round() и все.
как так?
Так деление же используем, на выходе по любому получим дробное число.
PhpStorm (08.05.2019 в 22:12)
TuT (08.05.2019 в 21:47)
PhpStorm, Тык ты получишь дробное число, оберни в round() и все.
как так?
Так деление же используем, на выходе по любому получим дробное число.
и что?

DELETED
Автор
8 мая 2019, в 23:42
Delete
Добрыня (08.05.2019 в 22:16)
Если я понял тебя правильно, ты получаешь дробное число, но получаешь ты меньшее значение в место большего, для это используй celi();
https://www.php.net/manual/ru/function.ceil.php
Если я понял тебя правильно, ты получаешь дробное число, но получаешь ты меньшее значение в место большего, для это используй celi();
https://www.php.net/manual/ru/function.ceil.php
то есть не будем читать первый пост?
PhpStorm, как вариант "компенсации" хп исходя из n количества за определенное время т.е суммировать сколько было выдано и сверять периодически для компенсации.
Пример: твой вариант с 10 сек, берем 10 хп = 100 сек или 1 мин 40 сек
каждая выдача +=1 т.е на 10-ом обновлении начинаем проверять последний сохраненный временной период, считаем суммарное время за 10 обновлений - 100 сек, разницу компенсируем
P.S а пока писал этот бред, пришло решение попроще
в сохранении 9 сек как отдельный параметр для будущего апдейта, т.е время + 9 сек, то что целое все переводим в хп, остаток опять в будущий апдейта
На ваш вкус так сказать
Пример: твой вариант с 10 сек, берем 10 хп = 100 сек или 1 мин 40 сек
каждая выдача +=1 т.е на 10-ом обновлении начинаем проверять последний сохраненный временной период, считаем суммарное время за 10 обновлений - 100 сек, разницу компенсируем
P.S а пока писал этот бред, пришло решение попроще

На ваш вкус так сказать

Стр.: 1, 2