Вот ситуация. Игрок, в данном случае blueguyz, отдает команду под названием «подавить повстанцев».
В этом случае игрок выталкивает 34 повстанцев с квадрата 43.
Это означает, что 34 повстанца покидают квадрат. и случайным образом распределяются по другим квадратам.
Проблема в том, что у игрока, который управляет командой, количество повстанцев резко увеличивается.
Есть 2 таблицы - Игроки и Квадраты. Ошибка возникает в таблице Players.
КАК это происходит?
КАК количество повстанцев blueguyz превышает 1600?
Счет должно быть очень низким, например, менее 50.
Любая помощь приветствуется!
Код: Выделить всё
$totalSquares = 44; // number increases as grid expands
$multipliedRebs = 34; // this number could be up to 50
// determine squares to place the new rebels
for ($i = 0; $i < $multipliedRebs; $i++)
{
$randSquares[$i] = rand(1, $totalSquares);
$squareList .= $randSquares[$i] . ", ";
// id of player of square affected from Square's table
$args = runQuery(" FROM Squares WHERE id = '$randSquares[$i]'", "owner,rebels,ownerId,farms,cities,units,permanent", false, false);
$values = explode(",", $args);
$p2Name = $values[0];
$p2Rebels = $values[1];
$p2OwnerId = $values[2];
$p2Farms = $values[3];
$p2Cities = $values[4];
$p2Units = $values[5];
$p2Permanent = $values[6];
if ($p2Rebels < 100) {
// id of player affected from Player's table
$args = runQuery(" FROM Players WHERE id = '$p2OwnerId'", "name,rebels,color,borderColor,id", false, false);
$values = explode(",", $args);
$p2NameP = $values[0];
$p2RebelsP = $values[1];
$p2ColorP = $values[2];
$p2BorderColorP = $values[3];
$p2IdP = $values[4];
if ($p2IdP == "")
{
$logMessage .= " Sorry. there was a system error. Please try the command again.";
$failed = true;
break;
}
// update Squares table
$p2Rebels += 1;
$sql = "UPDATE Squares SET rebels = '$p2Rebels' WHERE id = '$randSquares[$i]'";
if (!mysql_query($sql))
$textObj->logError($sql);
// update Players table
// THIS IS WHERE THE PLAYER WHO ISSUES COMMAND IS GETTING A HUGE NUMBER OF REBELS
$p2RebelsP += 1;
$sql = "UPDATE Players SET rebels = '$p2RebelsP' WHERE id = '$p2IdP'";
if (!mysql_query($sql))
$textObj->logError($sql);
}
}
Я не вижу в коде ничего плохого.
$p2RebelsP += 1; // на каждой итерации просто добавляется 1 повстанец, верно? Введите здесь описание изображения
Подробнее здесь: https://stackoverflow.com/questions/790 ... a-for-loop
Мобильная версия