Loading...
Свободное общение | Регенерация
Всем привет, вот у меня такая беда случилась , пишу игруху и вот обнаружил ошибку с регеном хп.
Со стороны игрока : хп регенится всё гуд , К примеру 1000 хп чуть по арене по гонял стало 500 вышел из сети зашёл через время всё гуд хп восстановилось , но вот какая проблема у меня арена с боем игроков тоисть и ты и противник теряет своё хп если пробил. И вот противник офф ты его лупишь у него к примеру стало 50 хп из 100 и вот проблема оно ни фига не регентся , но если этот человек зайдёт в сеть то у него будет отрегененное хп к примеру Реген 10 хп в минуту его не было 2 минуты это значит отрегенено 20 хп , значит если макс хп 100 его атаковали стало 50 , то когда он зайдёт в сеть его хп будет 70. Я прибывал делать связь с временем сервера тоисть выводим текущее время прибавил 1 минуту записывал в бд и делал определение если время сервера = время из бд то отправляем запрос на хп и новое время и так типо по кругу пока хп не будет максимальным этот метод ни фига не сработал пока игрок активно бегает по игре или кликнет в туже секунду , что и в бд то запрос сработает если опоздает то нет запрос не прокатит следовательно если он оф то это ещё хуже чем у меня сейчас. Кто знает как решить эту проблему отпишите . Гугл не помог. Про крон и речи быть не может мне нужен реген каждую минуту , а минимальный крон 5 минут.
перезаписывать метку времени для регена хп ПРОТИВНИКА при ударе
Wap_Master ,
<?
$_hp = intval((time()-$user['last_update'])/2); //одна единица за 2 секунды
$koll_hp = (($user['hp']+$_hp) > ($user['vit'] * 2) ? ($user['vit'] * 2):($user['hp']+$_hp));

if($_hp >= 1){

//при заходе обновим HP и время
mysql_query('UPDATE `users` SET `last_update` = "'.time().'", `hp` = "'.($koll_hp).'", `mp` = "'.($koll_mp).'" WHERE `id` = "'.$user['id'].'"');


}
echo $koll_hp; //выведем
//где last_update время последнего действия на арене, ударил, перезаписали last_update.

________
посл. ред. 13.02.2019 в 22:28; всего 1 раз(а); by TuT
PhpStorm , это всё не канает , так как хп опустил до 0 зашёл через 5мин оно 50 всё гуд , но вот сидишь к примеру в это время в бд и смотришь на перса хп так и будет 0 хоть день пройдёт.
Wap_Master (13.02.2019 в 22:29)
PhpStorm , это всё не канает , так как хп опустил до 0 зашёл через 5мин оно 50 всё гуд , но вот сидишь к примеру в это время в бд и смотришь на перса хп так и будет 0 хоть день пройдёт.

Формула которая выше в помощь. Проверяешь юзера при атаки и обновляешь ему.
Wap_Master (13.02.2019 в 22:29)
PhpStorm , это всё не канает , так как хп опустил до 0 зашёл через 5мин оно 50 всё гуд , но вот сидишь к примеру в это время в бд и смотришь на перса хп так и будет 0 хоть день пройдёт.


естественно, ведь подсчёт хп на данный момент произойдёт после входа противника на сайт либо вовремя атаки на него (что нужно учесть при выборе противника, высчитать реальное хп и перезаписать его противнику перед атакой)

<?

$mmaaxx = $user['max_health'];
if($user['health'] < $mmaaxx){//ограничение
$rega = mysqli_fetch_array(mysqli_query($link,"select * from `hp_rega` where `id_user` = '".$user['id']."' limit 1"));//вывод таблы бд
if($rega['id_user'] != $user['id']){//если нет таблы
mysqli_query($link,"insert into `hp_rega` set `id_user` = '".$user['id']."', `last` = '".time()."'");//делаем таблу и time() это 24ч.
}else{//если есть табла
$k_point = intval((time()-$rega['last'])/10);//10 секунд
$k_point = intval((time()-$rega['last'])/5);//5секунд
if($k_point >= 1){
$hp = $user['health']+(5*$k_point);//+5хп за 5сек
mysqli_query($link,"update `users` set `health` = '".$hp."' where `id` = '".$user['id']."' limit 1");//записываем хп игроку
mysqli_query($link,"update `hp_rega` set last = '".time()."' where `id_user` = '".$user['id']."' limit 1");//отправляем опять тайм
}}}
/*
Как и говорил к примеру хп игрока в бд 0 и если он офф то хп из реги уходит в облоко , что ли ))) тоисть в бд оно не запишет до тех пор пока игрок не зайдёт в сеть . Даже если оно должно быть отрегенино на макс по времени то хоть застрели его пока игрок не зайдёт в сеть хп не запишет
*/

Вот игра voyna.mobi // не реклама там хп регенится и отправляется в бд даже если игрок офф 4 дня
Wap_Master (13.02.2019 в 22:42)

<?

$mmaaxx = $user['max_health'];
if($user['health'] < $mmaaxx){//ограничение
$rega = mysqli_fetch_array(mysqli_query($link,"select * from `hp_rega` where `id_user` = '".$user['id']."' limit 1"));//вывод таблы бд
if($rega['id_user'] != $user['id']){//если нет таблы
mysqli_query($link,"insert into `hp_rega` set `id_user` = '".$user['id']."', `last` = '".time()."'");//делаем таблу и time() это 24ч.
}else{//если есть табла
$k_point = intval((time()-$rega['last'])/10);//10 секунд
$k_point = intval((time()-$rega['last'])/5);//5секунд
if($k_point >= 1){
$hp = $user['health']+(5*$k_point);//+5хп за 5сек
mysqli_query($link,"update `users` set `health` = '".$hp."' where `id` = '".$user['id']."' limit 1");//записываем хп игроку
mysqli_query($link,"update `hp_rega` set last = '".time()."' where `id_user` = '".$user['id']."' limit 1");//отправляем опять тайм
}}}
/*
Как и говорил к примеру хп игрока в бд 0 и если он офф то хп из реги уходит в облоко , что ли ))) тоисть в бд оно не запишет до тех пор пока игрок не зайдёт в сеть . Даже если оно должно быть отрегенино на макс по времени то хоть застрели его пока игрок не зайдёт в сеть хп не запишет
*/



Нуу??? Вот проверяй при подборе игрока его жизни и перезаписывай.
Тоисть сделать этот код не отлица игрока , а отлица противника ? И воткнуть его в арену ?
Онлайн: 1
Время:
Gen. 0.0953
(c) Bym.Guru 2010-2026