From 962cbcc19bb106c58e7da738bb492eb2a36b39e1 Mon Sep 17 00:00:00 2001 From: Martin Ambrus Date: Sat, 4 Nov 2017 10:31:45 +0100 Subject: [PATCH] fix: maximum alliance members update on building demolition Now saves correct data (was saving maximum for 1 level above the after-demolition level). --- GameEngine/Alliance.php | 54 ++++++++++++++++++++------------------- GameEngine/Automation.php | 10 ++++---- 2 files changed, 33 insertions(+), 31 deletions(-) diff --git a/GameEngine/Alliance.php b/GameEngine/Alliance.php index 85941963..9d3be090 100755 --- a/GameEngine/Alliance.php +++ b/GameEngine/Alliance.php @@ -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'], '' . addslashes($session->username) . ' 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'], '' . addslashes($session->username) . ' 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; } diff --git a/GameEngine/Automation.php b/GameEngine/Automation.php index e42de21c..e983bd85 100755 --- a/GameEngine/Automation.php +++ b/GameEngine/Automation.php @@ -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){