Обучение/Помощь новичкам | Проблемка в коде игры
Тема закрыта by
153215105
Причина: Проблема решена by Avenax. Спасибо)
Причина: Проблема решена by Avenax. Спасибо)
Всем привет. Просьба помочь. Кто поможет, тому плюс в анкету и в карму.
Все время считается в секундах от 01.01.1970, значения интовые, $t = $_SERVER['REQUEST_TIME'}.
Привожу код с комментариями:
//кол-во секунд в дне
$day = 60*60*24;
//Если текущее кол-во секунд больше, чем предыдущее минусование износа + 1 день, то выполняется код
if($item['iznosday'] + $day < $t){
//Разница между текущим временем и последним минусованием
$tri = $t - $item['iznosday'];
//Подсчет кол-ва единиц износа за прошедший период, который надо отнять
$iznos = $tri/$day;
//обновляем базу. Минусуем значение из $iznos и устанавливаем последнее время минусования на текущее
$q = $db->query("update `invent` set iznos=iznos-{$iznos},iznosday={$t} where id={$item['id']} limit 1;");
}
//конец. Дальше пойдет новый код, который отвечает за удаление вещи из инвентаря при нулевом износе
if($item['iznos'] <=0){
$q = $db->query("delete from `invent` where id={$item['id']} limit 1;");
msg2('Вещь рассыпалась',1);
}
Происходит такое:
При первом заходе на страницу вещи отображается нормальный износ в 180 единиц, обновляю страницу, и вещь удаляется.
Мож я что-то в логике напутал?
Все время считается в секундах от 01.01.1970, значения интовые, $t = $_SERVER['REQUEST_TIME'}.
Привожу код с комментариями:
//кол-во секунд в дне
$day = 60*60*24;
//Если текущее кол-во секунд больше, чем предыдущее минусование износа + 1 день, то выполняется код
if($item['iznosday'] + $day < $t){
//Разница между текущим временем и последним минусованием
$tri = $t - $item['iznosday'];
//Подсчет кол-ва единиц износа за прошедший период, который надо отнять
$iznos = $tri/$day;
//обновляем базу. Минусуем значение из $iznos и устанавливаем последнее время минусования на текущее
$q = $db->query("update `invent` set iznos=iznos-{$iznos},iznosday={$t} where id={$item['id']} limit 1;");
}
//конец. Дальше пойдет новый код, который отвечает за удаление вещи из инвентаря при нулевом износе
if($item['iznos'] <=0){
$q = $db->query("delete from `invent` where id={$item['id']} limit 1;");
msg2('Вещь рассыпалась',1);
}
Происходит такое:
При первом заходе на страницу вещи отображается нормальный износ в 180 единиц, обновляю страницу, и вещь удаляется.
Мож я что-то в логике напутал?
Так кто-нибудь может помочь?
$_SERVER['REQUEST_TIME'}.
?????
епть... во первых $_SERVER['REQUEST_TIME']
во вторых эта функция считает время выполнения кода, а тебе нужно данное время.
$t=time();
????? епть... во первых $_SERVER['REQUEST_TIME']
во вторых эта функция считает время выполнения кода, а тебе нужно данное время.
$t=time();
$t = time();
//Привожу код с комментариями:
//кол-во секунд в дне
$day = 60*60*24;
//Если текущее кол-во секунд больше, чем предыдущее минусование износа
+ 1 день, то выполняется код
if($item['iznosday'] + $day < $t){
//Разница между текущим временем и последним минусованием
$tri = $t - $item['iznosday'];
//Подсчет кол-ва единиц износа за прошедший период, который надо отнять
$iznos = $tri/$day;
//обновляем базу. Минусуем значение из $iznos и устанавливаем последнее
время минусования на текущее
$q = $db->query("update `invent` set iznos=iznos-{$iznos},iznosday={$t}
where id={$item['id']} limit 1;");
}
//конец. Дальше пойдет новый код, который отвечает за удаление вещи из
инвентаря при нулевом износе
if($item['iznos'] <=0){
$q = $db->query("delete from `invent` where id={$item['id']} limit 1;");
msg2('Вещь рассыпалась',1);
}
________
посл. ред. 02.11.2016 в 19:25; всего 1 раз(а); by CMpro
CMpro , Та не, с этим все нормально, в самом коде проблема.
на говнокодил.....
kolyan_[vip] , Ну я как бы и спрашиваю совета. Нечего по делу сказать, выход из темы открытый.
153215105 , 4 ПОСТ
153215105 , 4 ПОСТ
CMpro , Все равно сыпится. Да говорю же, не в $t дело, она то работает как раз.