0

好的,所以这个文件每 15 分钟运行一次,在这些阶段你会获得收入、农业和能源奖励,但我不希望他们超过 $storagecap,但他们不会停止,他们会继续添加越来越多的食物、黄金、能量到您的帐户,永不停止。

我想要做的是增加你的收入,然后如果你的收入超过 $storagecap 把你的黄金放到 $storagecap 但它在这里不起作用是我的代码

<?php 
include("functions.php");
connect();
include("user_stats.php");
?>

 <?php
      if(isset($_SESSION['uid'])){
        include("safe.php");
        include("storagecap.php");?>

<?php
$get_users = mysql_query("SELECT * FROM `stats`") or die(mysql_error());

while($user = mysql_fetch_assoc($get_users)) {
  //Get
  $gold = $user["gold"];
  $food = $user["food"];
  $energy = $user["energy"];

  //Increment
  $gold += $user["income"];
  $food += $user["farming"];
  $energy += 5;

  //Verify and correct
  if($energy > 100)
     $energy = 100;

  if($gold > $storagecap)
     $gold = $storagecap;

  if($food > $storagecap)
     $food = $storagecap;

  //Submit
  $update = mysql_query("UPDATE `stats` SET
                    `gold`= '".$gold."',
                    `food`= '".$food."',
                    `energy`= '".$energy."' WHERE `id`='".$user['id']."'") or     die(mysql_error());
}
?>
4

1 回答 1

0

在我看来,您在溢出检查中遇到了一些语法问题。一方面,即使这有效,在下一轮 15 分钟之前,他们的数量也会超过上限。例如,假设您有 99 能量,并且它增加了 5,您现在将有 104。但是上限检查仍将具有旧值,即 99,并且不会执行任何操作。还

`gold`=`gold` '$storagecap' 

不正确,需要使用

`gold`= '".$storagecap."'

但是要修复 15 分钟的延迟,最好的方法是:

<?php
include("functions.php");
include("storagecap.php");
connect();

$get_users = mysql_query("SELECT * FROM `stats`") or die(mysql_error());

while($user = mysql_fetch_assoc($get_users)) {
  //Get
  $gold = $user["gold"];
  $food = $user["food"];
  $energy = $user["energy"];

  //Increment
  $gold += $user["income"];
  $food += $user["farming"];
  $energy += 5;

  //Verify and correct
  if($energy > 100)
     $energy = 100;

  if($gold > $storagecap)
     $gold = $storagecap;

  if($food > $storagecap)
     $food = $storagecap;

  //Submit
  $update = mysql_query("UPDATE `stats` SET
                        `gold`= '".$gold."',
                        `food`= '".$food."',
                        `energy`= '".$energy."' WHERE `id`='".$user['id']."'") or     die(mysql_error());
}
?>

请注意我没有测试过这段代码,把它当作一个粗略的例子

编辑:另外请注意,如果运行此查询,返回能量,比如说 99,它必须将其修复为 100,并且在同时运行的另一个查询中,我使用了一些能量。这可能会导致这些用过的能量被“返还”。抱歉,我无法更好地解释它=P 查看 MySQL 事务。

于 2013-05-18T17:40:36.613 回答