2013-05-18 2 views
0

ОК, поэтому этот файл работает каждые 15 минут, вы получаете доход, фермерство и энергетический бонус на этих этапах, но я не хочу, чтобы они переходили через $ storagecap, t останавливаются, и они продолжают добавлять все больше и больше пищи, золота, энергии на ваш счет и никогда не останавливаются.установка предела дохода каждые 15 минут ошибка

То, что я пытаюсь сделать, это добавить вам доход, а затем, если ваш доход более $ 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()); 
} 
?> 
+0

получите то, что есть для данной еды или золота и т. Д. И не добавляйте над ним – Drew

+0

проблема с этим - у вас может быть еда 490/500, и вы никогда не получите этого 500 – Aidan

+0

возьмите то, что у них есть для еды. добавьте то, что вы собираетесь добавить в переменную1. (Кстати, вам не нужна переменная, просто если stmt), это над storagecap? если да, установка обновления = storagecap (u получил 500). если нет, то обновите с помощью того, что есть, плюс то, что вы хотели добавить (например, теперь вы находитесь в 430 – Drew

ответ

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()); 
} 
?> 

Пожалуйста, обратите внимание, у меня есть не тестировали этот код, рассматривают его как примерный пример

EDIT: Еще одно замечание: если этот запрос выполняется, возвращается энергия, скажем, 99, и она должна исправить это до 100, а в другом запросе, выполняемом одновременно, некоторая энергия, которую я использовал. Это может привести к тому, что эта используемая энергия будет «возвращена». Извините, я не могу объяснить это лучше = P Посмотрите на транзакции MySQL.

+0

правильно. его sql взрывался – Drew

+0

проблема в том, что он очистил всякую еду и золото, но энергия сработала, она добавила ее вверх – Aidan

+0

Что значит прояснить? «Когда он попал в storagecap? – Wildex999