我已经有这个问题了一段时间,最后我把它缩小到了它(我想)。 我试图限制收入,限制是$ storagecap每个$仓库= 500 $ storagecap。在我向您展示代码之前,我会告诉您我的问题。 它显示了你的限制是什么例子我目前拥有2 $仓库并且它说我的限制是1000但它停止我的收入499我设置等于0仓库所以它显示499/1000。 Cron_turn会将您的收入添加到您的帐户中。
我不知道为什么它在499时知道$ storedcap是1000。
的 storagecap.php 的
<?php
$warehouse = $building['warehouse'];
if ($warehouse == 1) {
$storagecap = 500;
}elseif($warehouse == 2) {
$storagecap = 1000;
}elseif($warehouse == 3) {
$storagecap = 1500;
}elseif($warehouse == 4) {
$storagecap = 2000;
}elseif($warehouse == 5) {
$storagecap = 2500;
}elseif($warehouse == 6) {
$storagecap = 3000;
}elseif($warehouse == 7) {
$storagecap = 3500;
}elseif($warehouse == 8) {
$storagecap = 4000;
}elseif($warehouse == 9) {
$storagecap = 4500;
}elseif($warehouse == 10) {
$storagecap = 5000;
}elseif($warehouse == 11) {
$storagecap = 5500;
}elseif($warehouse == 12) {
$storagecap = 6000;
}elseif($warehouse == 13) {
$storagecap = 6500;
}elseif($warehouse == 14) {
$storagecap = 7000;
}elseif($warehouse == 15) {
$storagecap = 7500;
}elseif($warehouse == 16) {
$storagecap = 8000;
}elseif($warehouse == 17) {
$storagecap = 8500;
}elseif($warehouse == 18) {
$storagecap = 9000;
}elseif($warehouse == 19) {
$storagecap = 9500;
}elseif($warehouse == 20) {
$storagecap = 10000;
}elseif($warehouse == 0) {
$storagecap = 499;
}else{
$storagecap = 10;
}
?>
*的 cron_turn.php *
<?php
include("functions.php");
connect();
include("safe.php");
include("storagecap.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 :(得分:0)
在设置为$building['warehouse']
分配值之前,您要包含storagecap.php文件。由于您在if语句中将null与int进行比较,因此0为真。将包含向下移动到您具有$building['warehouse']
答案 1 :(得分:0)
这不是定义存储的常规方式。我看到你正在建立一个游戏。让我们猜测你有建筑物可以让你获得收入(黄金等)和建筑物用于容纳(存储)。它们都应保存在buildings
表中,以便每个级别都定义了收入,即第一级gold_buildings =&gt; 100金/小时;第一级存储=&gt; 500容量(收入列)。
然后,每个用户应在单独的表中拥有自己的构建级别,即user_buildings:
user_id | building_id | level
大多数游戏中,每个用户都在某个平台(行星,王国,依赖于这个想法)上开发这些建筑物,让我们说在你的情况下它只是一个“平台”
表platforms
id | user_id | income_gold | income_food | energy | capacity_gold | capacity_food | gold | food |
因此,每当您的用户访问带有收入的相关菜单时,您正在更新platform
表,具体取决于user_buildings级别,您正在构建收入的数量以及容量。
当cron转动时,应该从该表中取值,并进行比较。
假设您有100个黄金收入,350个平台和500个容量:
UPDATE platform SET gold = IF((gold+gold_income)>capacity, `capacity`, gold+gold_income);
IF条件(不诚实地测试)应检查收入加上当前黄金是否超过限额,如果为真,则使黄金柱等于容量(限制),如果不是t,它将收入增加到当前的黄金。
然而,有些游戏正在添加资源,无论它超出限制,后来另一个cron检查超出限制的平台,并更新到极限。
P.S。:我认为提供资源的crone不需要关于user_id的WHERE子句,因为它应该给每个人带来收入(如果没有,你应该只是排除,即被禁止的帐户)