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

オーバーフロー チェックで構文の問題が発生しているようです。1 つには、これが機能したとしても、次の 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 に答える