fix: maximum alliance members update on building demolition

Now saves correct data (was saving maximum for 1 level above the
after-demolition level).
This commit is contained in:
Martin Ambrus
2017-11-04 10:31:45 +01:00
parent a8383563fa
commit 962cbcc19b
2 changed files with 33 additions and 31 deletions
+28 -26
View File
@@ -205,32 +205,34 @@ class Alliance {
*****************************************/
private function acceptInvite($get) {
global $form, $database, $session;
if($session->access != BANNED){
foreach($this->inviteArray as $invite) {
if($session->alliance == 0){
if($invite['id'] == $get['d'] && $invite['uid'] == $session->uid) {
$memberlist = $database->getAllMember($invite['alliance']);
$alliance_info = $database->getAlliance($invite['alliance']);
if(count($memberlist) < $alliance_info['max']){
$database->removeInvitation($get['d']);
$database->updateUserField($invite['uid'], "alliance", $invite['alliance'], 1);
$database->createAlliPermissions($invite['uid'], $invite['alliance'], '', '0', '0', '0', '0', '0', '0', '0', '0');
// Log the notice
$database->insertAlliNotice($invite['alliance'], '<a href="spieler.php?uid=' . $session->uid . '">' . addslashes($session->username) . '</a> has joined the alliance.');
}else{
$accept_error = 1;
$max = $alliance_info['max'];
}
}
}
}
if($accept_error == 1){
$form->addError("ally_accept", "The alliance can contain only ".$max." peoples right now.");
}else{
header("Location: build.php?id=" . $get['id']);
exit;
}
}else{
if ($session->access != BANNED) {
foreach ($this->inviteArray as $invite) {
if ($session->alliance == 0) {
if ($invite['id'] == $get['d'] && $invite['uid'] == $session->uid) {
$memberlist = $database->getAllMember($invite['alliance']);
$alliance_info = $database->getAlliance($invite['alliance']);
if (count($memberlist) < $alliance_info['max']) {
$database->removeInvitation($get['d']);
$database->updateUserField($invite['uid'], "alliance", $invite['alliance'], 1);
$database->createAlliPermissions($invite['uid'], $invite['alliance'], '', 0, 0, 0, 0, 0, 0, 0, 0);
// Log the notice
$database->insertAlliNotice($invite['alliance'], '<a href="spieler.php?uid=' . $session->uid . '">' . addslashes($session->username) . '</a> has joined the alliance.');
} else {
$accept_error = 1;
$max = $alliance_info['max'];
}
}
}
}
if($accept_error == 1){
$form->addError("ally_accept", "The alliance can contain only ".$max." members at this moment.");
}else{
header("Location: build.php?id=" . $get['id']);
exit;
}
} else{
header("Location: banned.php");
exit;
}
+5 -5
View File
@@ -4238,9 +4238,6 @@ class Automation {
$q = "UPDATE ".TB_PREFIX."vdata SET `maxcrop`=800 WHERE `maxcrop`<=800 AND wref=".(int) $vil['vref'];
$database->query($q);
}
if ($type==18){
Automation::updateMax($database->getVillageField($vil['vref'],'owner'));
}
if ($level==1) { $clear=",f".$vil['buildnumber']."t=0"; } else { $clear=""; }
if ($village->natar==1 && $type==40) $clear=""; //fix by ronix
$q = "UPDATE ".TB_PREFIX."fdata SET f".$vil['buildnumber']."=".($level-1).$clear." WHERE vref=".(int) $vil['vref'];
@@ -4249,6 +4246,9 @@ class Automation {
$database->modifyPop($vil['vref'],$pop[0],1);
$this->procClimbers($database->getVillageField($vil['vref'],'owner'));
$database->delDemolition($vil['vref'], true);
if ($type==18){
Automation::updateMax($database->getVillageField($vil['vref'],'owner'));
}
}
}
if(file_exists("GameEngine/Prevention/demolition.txt")) {
@@ -4880,8 +4880,8 @@ class Automation {
public static function updateMax($leader) {
global $bid18, $database;
$q = mysqli_query($GLOBALS['link'],"SELECT * FROM " . TB_PREFIX . "alidata where leader = ". (int) $leader);
if(mysqli_num_rows($q) > 0){
$q = mysqli_fetch_array(mysqli_query($GLOBALS['link'],"SELECT Count(*) as Total FROM " . TB_PREFIX . "alidata where leader = ". (int) $leader), MYSQLI_ASSOC);
if ($q['Total'] > 0) {
$villages = $database->getVillagesID2($leader);
$max = 0;
foreach($villages as $village){