diff --git a/GameEngine/Admin/Mods/editPlus.php b/GameEngine/Admin/Mods/editPlus.php index ac9df4b1..d7d4f1c8 100755 --- a/GameEngine/Admin/Mods/editPlus.php +++ b/GameEngine/Admin/Mods/editPlus.php @@ -24,57 +24,24 @@ for ($i = 0; $i < 5; $i++) { include_once($autoprefix."GameEngine/Database.php"); -$session = (int) $_POST['admid']; $id = (int) $_POST['id']; -$sql = mysqli_query($GLOBALS["link"], "SELECT * FROM ".TB_PREFIX."users WHERE id = ".$session.""); -$access = mysqli_fetch_array($sql); -$sessionaccess = $access['access']; +$bonusDuration = []; +$time = time(); +$bonusDuration['plus'] = (int) $_POST['plus'] * 86400; //Plus +$bonusDuration['b1'] = (int) $_POST['wood'] * 86400; //+25% Wood +$bonusDuration['b2'] = (int) $_POST['clay'] * 86400; //+25% Clay +$bonusDuration['b3'] = (int) $_POST['iron'] * 86400; //+25% Iron +$bonusDuration['b4'] = (int) $_POST['crop'] * 86400; //+25% Crop -if($sessionaccess != 9) die("

Access Denied: You are not Admin!

"); +$user = $database->getUserArray($id, 1); -$pdur = (int) $_POST['plus'] * 86400; -$b1dur = (int) $_POST['wood'] * 86400; -$b2dur = (int) $_POST['clay'] * 86400; -$b3dur = (int) $_POST['iron'] * 86400; -$b4dur = (int) $_POST['crop'] * 86400; - -$sql1 = mysqli_query($GLOBALS["link"], "SELECT * FROM ".TB_PREFIX."users WHERE id = ".$id.""); -$user = mysqli_fetch_array($sql1); - -if($user['plus'] < time()){ -if($pdur > 1){ $plus = (time() + $pdur); } else { $plus = time(); } -}else{ -if($pdur > 1){ $plus = ($user['plus'] + $pdur); } else { $plus = $user['plus']; } -} -if($user['b1'] < time()){ -if($b1dur > 1){ $wood = (time() + $b1dur); } else { $wood = time(); } -}else{ -if($b1dur > 1){ $wood = ($user['b1'] + $b1dur); } else { $wood = $user['b1']; } -} -if($user['b2'] < time()){ -if($b2dur > 1){ $clay = (time() + $b2dur); } else { $clay = time(); } -}else{ -if($b2dur > 1){ $clay = ($user['b2'] + $b2dur); } else { $clay = $user['b2']; } -} -if($user['b3'] < time()){ -if($b3dur > 1){ $iron = (time() + $b3dur); } else { $iron = time(); } -}else{ -if($b3dur > 1){ $iron = ($user['b3'] + $b3dur); } else { $iron = $user['b3']; } -} -if($user['b4'] < time()){ -if($b4dur > 1){ $crop = (time() + $b4dur); } else { $crop = time(); } -}else{ -if($b4dur > 1){ $crop = ($user['b4'] + $b4dur); } else { $crop = $user['b4']; } +foreach($bonusDuration as $index => $bonus){ + $bonusDuration[$index] = $bonusDuration[$index] + ($user[$index] < $time ? $time : $user[$index]); + if($bonusDuration[$index] < $time) $bonusDuration[$index] = 0; } -mysqli_query($GLOBALS["link"], "UPDATE ".TB_PREFIX."users SET - plus = '".$plus."', - b1 = '".$wood."', - b2 = '".$clay."', - b3 = '".$iron."', - b4 = '".$crop."' - WHERE id = $id") or die(mysqli_error($database->dblink)); +$database->updateUserField($id, array_keys($bonusDuration), array_values($bonusDuration), 1); header("Location: ../../../Admin/admin.php?p=player&uid=".$id.""); ?> \ No newline at end of file diff --git a/GameEngine/Admin/Mods/givePlus.php b/GameEngine/Admin/Mods/givePlus.php index d2ad8f41..5102708a 100755 --- a/GameEngine/Admin/Mods/givePlus.php +++ b/GameEngine/Admin/Mods/givePlus.php @@ -30,14 +30,6 @@ for ($i = 0; $i < 5; $i++) { include_once($autoprefix."GameEngine/Database.php"); -$session = (int) $_POST['admid']; - -$sql = mysqli_query($GLOBALS["link"], "SELECT * FROM ".TB_PREFIX."users WHERE id = ".$session.""); -$access = mysqli_fetch_array($sql); -$sessionaccess = $access['access']; - -if($sessionaccess != 9) die("

Access Denied: You are not Admin!

"); - $sql = "SELECT id FROM ".TB_PREFIX."users ORDER BY ID DESC LIMIT 1"; $loops = mysqli_result(mysqli_query($GLOBALS["link"], $sql), 0); diff --git a/GameEngine/Admin/function.php b/GameEngine/Admin/function.php index a60e99af..b77d1b35 100755 --- a/GameEngine/Admin/function.php +++ b/GameEngine/Admin/function.php @@ -102,7 +102,7 @@ class funct exit; } - + //Return the artifacts to the Natars' account $artifact->returnArtifactToNatars($artifactInfo); break; @@ -139,7 +139,7 @@ class funct $artifactArrays[$selectedArtifact[2]][] = $chosenArtifact; //Add the artifacts - $artifact->addArtifactVillages($artifactArrays, $playerId); + $artifact->addArtifactVillages($artifactArrays, $playerId, $playerId == Artifacts::NATARS_UID); break; case "addWWVillages": @@ -154,7 +154,7 @@ class funct } //Create the desired WW villages - $artifact->createWWVillages($numberOfVillages, $playerId); + $artifact->createWWVillages($numberOfVillages, $playerId, $playerId == Artifacts::NATARS_UID); break; case "killHero": diff --git a/GameEngine/Artifacts.php b/GameEngine/Artifacts.php index 797dafc8..4c49989e 100644 --- a/GameEngine/Artifacts.php +++ b/GameEngine/Artifacts.php @@ -269,9 +269,10 @@ class Artifacts * * @param array $artifactArrays The array containing the artifacts to insert * @param int $uid The owner's user ID (Natars) + * @param bool $addTroops Add troops to the village if true, and vice versa if false */ - public function addArtifactVillages($artifactArrays, $uid = self::NATARS_UID) { + public function addArtifactVillages($artifactArrays, $uid = self::NATARS_UID, $addTroops = true) { global $database; //Variables initialization @@ -290,7 +291,7 @@ class Artifacts $unitArrays = ($this->natarsArtifactsUnits)($multiplier); //Generate the unit arrays - $artifactTroops[1][] = array_values($unitArrays); + if($addTroops) $artifactTroops[1][] = array_values($unitArrays); $artifactBuildings[1][] = array_values(self::NATARS_ARTIFACTS_BUILDINGS); //Generate the artifacts array @@ -302,11 +303,11 @@ class Artifacts } //Set the unit types by using the last $unitArrays - $artifactTroops[0] = array_keys($unitArrays); + if($addTroops) $artifactTroops[0] = array_keys($unitArrays); $artifactBuildings[0] = array_keys(self::NATARS_ARTIFACTS_BUILDINGS); //Generate the wids - $wids = array_merge($wids, (array)$database->generateVillages($artifactVillages, $uid, TRIBE5, $artifactTroops, $artifactBuildings)); + $wids = array_merge($wids, (array)$database->generateVillages($artifactVillages, $uid, TRIBE5, $addTroops ? $artifactTroops : null, $artifactBuildings)); //Create the artifacts for the generated wids $database->addArtefacts($wids, $artifactsToAdd); @@ -315,22 +316,25 @@ class Artifacts /** * Called when WW villages need to be created * + * @param int $numberOfVillages The number of villages that have to be added + * @param int $uid The player ID + * @param bool $addTroops Add troops to the village if true, and vice versa if false */ - public function createWWVillages($numberOfVillages = self::NATARS_BASE_WW_VILLAGES, $uid = self::NATARS_UID){ + public function createWWVillages($numberOfVillages = self::NATARS_BASE_WW_VILLAGES, $uid = self::NATARS_UID, $addTroops = true){ global $database; $villageArrays = $troopArrays = $buildingArrays = $wids = []; for($i = 1; $i <= $numberOfVillages; $i++){ $villageArrays[] = ['wid' => 0, 'mode' => 5, 'type' => 3, 'kid' => ($i == $numberOfVillages ? rand(1, 4) : ($i % 4) + 1), 'capital' => 0, 'pop' => 233, 'name' => WWVILLAGE, 'natar' => 1]; - $troopArrays[1][] = array_values(($this->natarsWWVillagesUnits)()); + if($addTroops) $troopArrays[1][] = array_values(($this->natarsWWVillagesUnits)()); $buildingArrays[1][] = array_values(self::NATARS_WW_VILLAGES_BUILDINGS); } - $troopArrays[0] = array_keys(($this->natarsWWVillagesUnits)()); + if($addTroops) $troopArrays[0] = array_keys(($this->natarsWWVillagesUnits)()); $buildingArrays[0] = array_keys(self::NATARS_WW_VILLAGES_BUILDINGS); - $wids = $database->generateVillages($villageArrays, $uid, null, $troopArrays, $buildingArrays); + $wids = $database->generateVillages($villageArrays, $uid, null, $addTroops ? $troopArrays : null, $buildingArrays); } /** diff --git a/GameEngine/Database.php b/GameEngine/Database.php index 6fe58eeb..8ecbeb56 100755 --- a/GameEngine/Database.php +++ b/GameEngine/Database.php @@ -808,11 +808,8 @@ class MYSQLi_DB implements IDbConnection { $pairs[] = $this->escape($fieldName) . ' = ' . (Math::isInt($value[$index]) ? $value[$index] : '"'.$this->escape($value[$index]).'"'); } - if(!$switch) { - $q = "UPDATE " . TB_PREFIX . "users SET ".implode(', ', $pairs)." where username = '$ref'"; - } else { - $q = "UPDATE " . TB_PREFIX . "users SET ".implode(', ', $pairs)." where id = " . (int) $ref; - } + if(!$switch) $q = "UPDATE " . TB_PREFIX . "users SET ".implode(', ', $pairs)." where username = '$ref'"; + else $q = "UPDATE " . TB_PREFIX . "users SET ".implode(', ', $pairs)." where id = " . (int) $ref; // update cached values if ($ret = mysqli_query($this->dblink,$q)) { @@ -1138,20 +1135,20 @@ class MYSQLi_DB implements IDbConnection { function modifyGold($userid, $amt, $mode) { list($userid, $amt, $mode) = $this->escape_input((int) $userid, (int) $amt, $mode); - if(!$mode) { - $q = "UPDATE " . TB_PREFIX . "users set gold = gold - $amt where id = $userid"; - } else { - $q = "UPDATE " . TB_PREFIX . "users set gold = gold + $amt where id = $userid"; - } + if(!$mode) $q = "UPDATE " . TB_PREFIX . "users set gold = gold - $amt where id = $userid"; + else $q = "UPDATE " . TB_PREFIX . "users set gold = gold + $amt where id = $userid"; + return mysqli_query($this->dblink,$q); } - /***************************************** - Function to retrieve user array via Username or ID - Mode 0: Search by Username - Mode 1: Search by ID - References: Alliance ID - *****************************************/ + /** + * Retrieves the user array via Username or ID + * + * @param int $ref The user ID or the username + * @param int $mode 0 --> Search by username, 1 --> Search by user ID + * @param bool $use_cache Will use the cache if true + * @return array Returns the user array + */ function getUserArray($ref, $mode, $use_cache = true) { list($ref, $mode) = $this->escape_input($ref, $mode); @@ -1162,11 +1159,9 @@ class MYSQLi_DB implements IDbConnection { return $cachedValue; } - if(!$mode) { - $q = "SELECT * FROM " . TB_PREFIX . "users where username = '$ref' LIMIT 1"; - } else { - $q = "SELECT * FROM " . TB_PREFIX . "users where id = " . (int) $ref . " LIMIT 1"; - } + if(!$mode) $q = "SELECT * FROM " . TB_PREFIX . "users where username = '$ref' LIMIT 1"; + else $q = "SELECT * FROM " . TB_PREFIX . "users where id = " . (int) $ref . " LIMIT 1"; + $result = mysqli_query($this->dblink,$q); self::$fieldsCache[$ref.$mode] = mysqli_fetch_array($result);