-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']."'");

}

ユーザーがログインしていなくても、次のコードを機能させるにはどうすればよいですか?

たとえば、86400 (1 日) / 50 (50 秒ごとにリソースを取得) は 1728 に等しいため、彼は 1 日で戻ってきて 1728 の木材を取得します。

4

1 に答える 1

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 ."'");
}

?>

このコードは、その方法を理解するためだけに配置したことに注意してください。そのため、コードのロジックに問題がある可能性があります。(あなたがすべきことは、彼らに木を与えることができるユーザーを獲得し、彼らに今から最後に木を与えた時までの時間を計算し、適切な量の木を与えることです)。

于 2013-09-10T23:09:09.173 に答える