2013-09-10 5 views
-1
$timeNow = time(); 
$timeExpire = $timeNow + 10; 
$User = $con->query("SELECT * FROM players WHERE Username='".$_SESSION['Username']."'"); 
$UserInfo = $User->fetch_object(); 

if($timeNow >= $UserInfo->TimeExpire) { 

    echo "Wood Gathered"; 
    $con->query("UPDATE players SET Wood = Wood+5 WHERE Username='".$_SESSION['Username']."'"); 
    $con->query("UPDATE players SET Time = '".$timeNow."' WHERE Username='".$_SESSION['Username']."'"); 
    $con->query("UPDATE players SET TimeExpire = '".$timeExpire."' WHERE Username='".$_SESSION['Username']."'"); 

} 

Как я могу заставить следующий код работать, даже если пользователь не вошел в систему?Обновить, когда пользователь не зарегистрирован

Как, например, он возвращается в 1 день и получает 1728 дерево, потому что 86400 (1 день)/50 (получаете ресурсы каждые 50 секунд) равно 1728

+0

Некоторые РСУБД позволяют вам «ОБНОВИТЬ игроков» установить Wood = Wood + 5' каждому пользователю, вы запускаете это каждые n минут и забываете делать это внутри приложения, когда пользователь входит в систему и прочее. Или вы следите за последним временем входа в систему и подсчитываете, сколько было «истечений». – ssice

+0

Я считаю, что вам нужно переосмыслить свой код. В этом случае вы программируете игру, но у вас нет только одного пользователя, поэтому вам лучше работать с очередью задач, сохранять действия (получать ресурсы/время/и т. Д.) На другой таблице и очищать их предметы, когда они готовы. –

+0

Как я могу рассчитать, сколько истечений существует? – user2766669

ответ

0

Я чувствую, вы программируете игры, так как игры должны быть в режиме реального времени: Создайте файл, например cron.php, и включите этот файл на каждую страницу. Внутри этого файла поставить это:

<?php 
$timeNow = time(); 
$timeExpire = $timeNow + 10; 
$Users = $con->query("SELECT * FROM players WHERE TimeExpire<='".$timeNow."'"); 
while($UserInfo = $User->fetch_object()){ 
    $givenWood = $timeNow - $UserInfo->TimeExpire; 
    $con->query("UPDATE players SET Wood = Wood+ {$givenWood} WHERE Username='". $UserInfo->Username ."'"); 
    $con->query("UPDATE players SET Time = '".$timeNow."' WHERE Username='". $UserInfo->Username ."'"); 
    $con->query("UPDATE players SET TimeExpire = '".$timeExpire."' WHERE Username='". $UserInfo->Username ."'"); 
} 

?> 

Имейте в виду, что я ставлю этот код просто дать идею, как сделать that.So, там может быть что-то не так с моей логики в коде. (То, что вы должны сделать, это получить тех пользователей, которым вы можете дать им немного дерева, рассчитать их время между вами и в последний раз, когда вы дали им свой лес и дали им надлежащее количество древесины).

+0

Да, я уже исправил это, но спасибо – user2766669

Смежные вопросы