diff --git a/GameEngine/Ranking.php b/GameEngine/Ranking.php index 27b8a157..779019b7 100755 --- a/GameEngine/Ranking.php +++ b/GameEngine/Ranking.php @@ -5,9 +5,7 @@ +---------------------------------------------------------+ | Credits: All the developers including the leaders: | | Advocaite & Dzoki & Donnchadh | -| | -| Clean some bullshit : Shadow | -| | +| | | Copyright: TravianZ Project All rights reserved | \** --------------------------------------------------- **/ @@ -21,16 +19,25 @@ } public function getUserRank($id) { + global $database; + $ranking = $this->getRank(); - if(count($ranking) > 0) { - foreach($ranking as $key => $row) { - if($row != "pad" && isset($row['userid']) && $row['userid'] == $id) { - return $key; + $users = "SELECT Count(*) as Total FROM " . TB_PREFIX . "users WHERE access < " . (INCLUDE_ADMIN ? "10" : "8"); + $users2 = mysqli_fetch_array(mysqli_query($database->dblink,$users), MYSQLI_ASSOC); + $users2 = $users2['Total']; + $users3 = $users2 + 1; + $myrank = 0; + if(count($ranking) > 0) { + for($i = 0;$i < $users3; $i++) { + if( isset( $ranking[$i]['userid'] ) ) { + if($ranking[$i]['userid'] == $id && $ranking[$i] != "pad") { + $myrank = $i; + } + } } } + return $myrank; } - return 0; - } public function procRankReq($get) { global $village, $session; @@ -172,7 +179,7 @@ public function getAllianceRank($id) { $this->procARankArray(); - while(true) { + while(1) { if(count($this->rankarray) > 1) { $key = key($this->rankarray); if(isset ($this->rankarray[$key]["id"]) && $this->rankarray[$key]["id"] === $id) { @@ -191,20 +198,20 @@ } public function searchRank($name, $field) { - $count = count($this->rankarray); - for ($key = 1; $key < $count; $key++) { - if (!isset($this->rankarray[$key]) || $this->rankarray[$key] === "pad") { - continue; - } - if (isset($this->rankarray[$key][$field]) && - $this->rankarray[$key][$field] == $name) { - return $key; - } - } - if ($field != "userid") { - return $name; - } - return 0; + + while(1) { + //$key = key($this->rankarray); + for($key = 0; $key < count($this->rankarray); $key++){ + if($this->rankarray[$key]!="pad") { + if($this->rankarray[$key][$field] == $name) return $key; + } + } + if(!next($this->rankarray)) { + if($field != "userid") return $name; + else return 0; + } + + } } public function procRankArray() { @@ -212,34 +219,59 @@ if($GLOBALS['db']->countUser() > 0){ $holder = array(); - $tribeCondition = SHOW_NATARS ? "(u.tribe <= 5) AND (u.id > 5 OR u.id = 3)" : "u.tribe <= 3 AND u.id > 5"; - $q = " - SELECT - u.id AS userid, - u.username, - u.oldrank, - u.alliance, - a.tag AS allitag, - SUM(v.pop) AS totalpop, - COUNT(CASE WHEN v.type != 99 THEN v.wref END) AS totalvillages - FROM " . TB_PREFIX . "users u - LEFT JOIN " . TB_PREFIX . "vdata v - ON v.owner = u.id - LEFT JOIN " . TB_PREFIX . "alidata a - ON a.id = u.alliance - WHERE - u.access < " . (INCLUDE_ADMIN ? 10 : 8) . " - AND $tribeCondition - GROUP BY - u.id - ORDER BY - totalpop DESC, - totalvillages DESC, - u.id DESC"; - $result = (mysqli_query($database->dblink,$q)); + if(SHOW_NATARS == True){ + $q = "SELECT " . TB_PREFIX . "users.id userid, " . TB_PREFIX . "users.username username, " . TB_PREFIX . "users.oldrank oldrank, " . TB_PREFIX . "users.alliance alliance, ( + + SELECT SUM( " . TB_PREFIX . "vdata.pop ) + FROM " . TB_PREFIX . "vdata + WHERE " . TB_PREFIX . "vdata.owner = userid + )totalpop, ( + + SELECT COUNT( " . TB_PREFIX . "vdata.wref ) + FROM " . TB_PREFIX . "vdata + WHERE " . TB_PREFIX . "vdata.owner = userid AND type != 99 + )totalvillages, ( + + SELECT " . TB_PREFIX . "alidata.tag + FROM " . TB_PREFIX . "alidata, " . TB_PREFIX . "users + WHERE " . TB_PREFIX . "alidata.id = " . TB_PREFIX . "users.alliance + AND " . TB_PREFIX . "users.id = userid + )allitag + FROM " . TB_PREFIX . "users + WHERE " . TB_PREFIX . "users.access < " . (INCLUDE_ADMIN ? "10" : "8") . " + AND (" . TB_PREFIX . "users.tribe <= 5 OR " . TB_PREFIX . "users.tribe = 5) + AND (" . TB_PREFIX . "users.id > 5 OR " . TB_PREFIX . "users.id = 3) + ORDER BY totalpop DESC, totalvillages DESC, userid DESC"; + } else { + $q = "SELECT " . TB_PREFIX . "users.id userid, " . TB_PREFIX . "users.username username, " . TB_PREFIX . "users.oldrank oldrank, " . TB_PREFIX . "users.alliance alliance, ( + + SELECT SUM( " . TB_PREFIX . "vdata.pop ) + FROM " . TB_PREFIX . "vdata + WHERE " . TB_PREFIX . "vdata.owner = userid + )totalpop, ( + + SELECT COUNT( " . TB_PREFIX . "vdata.wref ) + FROM " . TB_PREFIX . "vdata + WHERE " . TB_PREFIX . "vdata.owner = userid AND type != 99 + )totalvillages, ( + + SELECT " . TB_PREFIX . "alidata.tag + FROM " . TB_PREFIX . "alidata, " . TB_PREFIX . "users + WHERE " . TB_PREFIX . "alidata.id = " . TB_PREFIX . "users.alliance + AND " . TB_PREFIX . "users.id = userid + )allitag + FROM " . TB_PREFIX . "users + WHERE " . TB_PREFIX . "users.access < " . (INCLUDE_ADMIN ? "10" : "8") . " + AND " . TB_PREFIX . "users.tribe <= 3 + AND " . TB_PREFIX . "users.id > 5 + ORDER BY totalpop DESC, totalvillages DESC, userid DESC"; + } + $datas = []; - while($row = mysqli_fetch_assoc($result)) - $datas[] = $row; + + $result = (mysqli_query($database->dblink,$q)); + while($row = mysqli_fetch_assoc($result)) $datas[] = $row; + if (count($datas)) { foreach($datas as $result) { $value['userid'] = $result['userid']; @@ -249,37 +281,67 @@ $value['aname'] = $result['allitag']; $value['totalpop'] = $result['totalpop']; $value['totalvillage'] = $result['totalvillages']; - $holder[] = $value; + array_push($holder, $value); } } + $newholder = ["pad"]; foreach($holder as $key) array_push($newholder, $key); + $this->rankarray = $newholder; + } } public function procRankRaceArray($race) { global $multisort, $database; $race = $database->escape((int) $race); + //$array = $GLOBALS['db']->getRanking(); $holder = array(); - $q = "SELECT u.id AS userid, u.tribe, u.username, u.alliance, COALESCE(SUM(v.pop),0) AS totalpop, COUNT(CASE WHEN v.type != 99 THEN v.wref END) AS totalvillages, a.tag AS allitag - FROM " . TB_PREFIX . "users u LEFT JOIN " . TB_PREFIX . "vdata v ON v.owner = u.id LEFT JOIN " . TB_PREFIX . "alidata a ON a.id = u.alliance - WHERE u.tribe = $race - AND u.access < " . (INCLUDE_ADMIN ? "10" : "8") . " AND u.id > 5 GROUP BY u.id ORDER BY totalpop DESC, totalvillages DESC, userid DESC"; + //$value['totalvillage'] = count($GLOBALS['db']->getVillagesID($value['id'])); + //$value['totalvillage'] = count($GLOBALS['db']->getVillagesID($value['id'])); + //$value['totalpop'] = $GLOBALS['db']->getVSumField($value['id'],"pop"); + //$value['aname'] = $GLOBALS['db']->getAllianceName($value['alliance']); + $q = "SELECT " . TB_PREFIX . "users.id userid, " . TB_PREFIX . "users.tribe tribe, " . TB_PREFIX . "users.username username," . TB_PREFIX . "users.alliance alliance, ( + + SELECT SUM( " . TB_PREFIX . "vdata.pop ) + FROM " . TB_PREFIX . "vdata + WHERE " . TB_PREFIX . "vdata.owner = userid + )totalpop, ( + + SELECT COUNT( " . TB_PREFIX . "vdata.wref ) + FROM " . TB_PREFIX . "vdata + WHERE " . TB_PREFIX . "vdata.owner = userid AND type != 99 + )totalvillages, ( + + SELECT " . TB_PREFIX . "alidata.tag + FROM " . TB_PREFIX . "alidata, " . TB_PREFIX . "users + WHERE " . TB_PREFIX . "alidata.id = " . TB_PREFIX . "users.alliance + AND " . TB_PREFIX . "users.id = userid + )allitag + FROM " . TB_PREFIX . "users + WHERE " . TB_PREFIX . "users.tribe = $race AND " . TB_PREFIX . "users.access < " . (INCLUDE_ADMIN ? "10" : "8") . " + AND " . TB_PREFIX . "users.id > 5 + ORDER BY totalpop DESC, totalvillages DESC, userid DESC"; + + $result = (mysqli_query($database->dblink,$q)); - $datas = []; while($row = mysqli_fetch_assoc($result)) { - $datas[] = $row; + $datas[] = $row; } - if(!empty($datas)) { + + if(mysqli_num_rows($result)) { + + foreach($datas as $result) { $value['userid'] = $result['userid']; $value['username'] = $result['username']; $value['alliance'] = $result['alliance']; $value['aname'] = $result['allitag']; $value['totalpop'] = $result['totalpop']; - $value['totalvillage'] = $result['totalvillages']; - $holder[] = $value; + $value['totalvillage'] = $result['totalvillages']; + //SELECT (SELECT SUM(".TB_PREFIX."vdata.pop) FROM ".TB_PREFIX."vdata WHERE ".TB_PREFIX."vdata.owner = 2) totalpop, (SELECT COUNT(".TB_PREFIX."vdata.wref) FROM ".TB_PREFIX."vdata WHERE ".TB_PREFIX."vdata.owner = 2) totalvillages, (SELECT ".TB_PREFIX."alidata.tag FROM ".TB_PREFIX."alidata WHERE ".TB_PREFIX."alidata.id = ".TB_PREFIX."users.alliance AND ".TB_PREFIX."users.id = 2); + array_push($holder, $value); } } else { $value['userid'] = 0; @@ -288,8 +350,9 @@ $value['aname'] = ""; $value['totalpop'] = ""; $value['totalvillage'] = ""; - $holder[] = $value; + array_push($holder, $value); } + //$holder = $multisort->sorte($holder, "'totalvillage'", false, 2, "'totalpop'", false, 2); $newholder = array("pad"); foreach($holder as $key) { array_push($newholder, $key); @@ -299,16 +362,31 @@ public function procAttRankArray() { global $multisort, $database; + //$array = $GLOBALS['db']->getRanking(); $holder = array(); - $q = "SELECT u.id AS userid, u.username, u.apall, COUNT(CASE WHEN v.type != 99 THEN v.wref END) AS totalvillages, COALESCE(SUM(v.pop),0) AS pop - FROM " . TB_PREFIX . "users u LEFT JOIN " . TB_PREFIX . "vdata v ON v.owner = u.id - WHERE u.apall >= 0 AND u.access < " . (INCLUDE_ADMIN ? 10 : 8) . " AND u.tribe <= 3 AND u.id > 5 - GROUP BY u.id ORDER BY u.apall DESC, pop DESC, u.id DESC"; + + //$value['totalvillage'] = count($GLOBALS['db']->getVillagesID($value['id'])); + //$value['totalpop'] = $GLOBALS['db']->getVSumField($value['id'],"pop"); + $q = "SELECT " . TB_PREFIX . "users.id userid, " . TB_PREFIX . "users.username username, " . TB_PREFIX . "users.apall, ( + + SELECT COUNT( " . TB_PREFIX . "vdata.wref ) + FROM " . TB_PREFIX . "vdata + WHERE " . TB_PREFIX . "vdata.owner = userid AND type != 99 + )totalvillages, ( + + SELECT SUM( " . TB_PREFIX . "vdata.pop ) + FROM " . TB_PREFIX . "vdata + WHERE " . TB_PREFIX . "vdata.owner = userid + )pop + FROM " . TB_PREFIX . "users + WHERE " . TB_PREFIX . "users.apall >=0 AND " . TB_PREFIX . "users.access < " . (INCLUDE_ADMIN ? "10" : "8") . " AND " . TB_PREFIX . "users.tribe <= 3 + AND " . TB_PREFIX . "users.id > 5 + ORDER BY " . TB_PREFIX . "users.apall DESC, pop DESC, userid DESC"; $result = mysqli_query($database->dblink,$q) or die(mysqli_error($database->dblink)); - $datas = []; - while($row = mysqli_fetch_assoc($result)) { + while($row = mysqli_Fetch_assoc($result)) { $datas[] = $row; } + foreach($datas as $key => $row) { $value['userid'] = $row['userid']; $value['username'] = $row['username']; @@ -316,8 +394,11 @@ $value['id'] = $row['userid']; $value['totalpop'] = $row['pop']; $value['apall'] = $row['apall']; - $holder[] = $value; + array_push($holder, $value); + printf("\n\n", $value['username'], $value['totalvillages'], $value['totalpop'], $value['apall']); } + + //$holder = $multisort->sorte($holder, "'ap'", false, 2, "'totalvillages'", false, 2, "'ap'", false, 2); $newholder = array("pad"); foreach($holder as $key) { array_push($newholder, $key); @@ -327,16 +408,29 @@ public function procDefRankArray() { global $database; + //global $GLOBALS['db'], $multisort; + //$array = $GLOBALS['db']->getRanking(); $holder = array(); - $q = "SELECT u.id AS userid, u.username, u.dpall, COUNT(CASE WHEN v.type != 99 THEN v.wref END) AS totalvillages, COALESCE(SUM(v.pop),0) AS pop - FROM " . TB_PREFIX . "users u LEFT JOIN " . TB_PREFIX . "vdata v ON v.owner = u.id - WHERE u.dpall >= 0 AND u.access < " . (INCLUDE_ADMIN ? 10 : 8) . " AND u.tribe <= 3 AND u.id > 5 - GROUP BY u.id ORDER BY u.dpall DESC, pop DESC, u.id DESC"; + $q = "SELECT " . TB_PREFIX . "users.id userid, " . TB_PREFIX . "users.username username, " . TB_PREFIX . "users.dpall, ( + + SELECT COUNT( " . TB_PREFIX . "vdata.wref ) + FROM " . TB_PREFIX . "vdata + WHERE " . TB_PREFIX . "vdata.owner = userid AND type != 99 + )totalvillages, ( + + SELECT SUM( " . TB_PREFIX . "vdata.pop ) + FROM " . TB_PREFIX . "vdata + WHERE " . TB_PREFIX . "vdata.owner = userid + )pop + FROM " . TB_PREFIX . "users + WHERE " . TB_PREFIX . "users.dpall >=0 AND " . TB_PREFIX . "users.access < " . (INCLUDE_ADMIN ? "10" : "8") . " AND " . TB_PREFIX . "users.tribe <= 3 + AND " . TB_PREFIX . "users.id > 5 + ORDER BY " . TB_PREFIX . "users.dpall DESC, pop DESC, userid DESC"; $result = mysqli_query($database->dblink,$q) or die(mysqli_error($database->dblink)); - $datas = []; - while($row = mysqli_fetch_assoc($result)) { + while($row = mysqli_Fetch_assoc($result)) { $datas[] = $row; } + foreach($datas as $key => $row) { $value['userid'] = $row['userid']; $value['username'] = $row['username']; @@ -344,8 +438,11 @@ $value['id'] = $row['userid']; $value['totalpop'] = $row['pop']; $value['dpall'] = $row['dpall']; - $holder[] = $value; + array_push($holder, $value); + } + + //$holder = $multisort->sorte($holder, "'dpall'", false, 2, "'totalvillage'", false, 2, "'dpall'", false, 2); $newholder = array("pad"); foreach($holder as $key) { array_push($newholder, $key); @@ -362,7 +459,8 @@ $value['x'] = $coor['x']; $value['y'] = $coor['y']; $value['user'] = $GLOBALS['db']->getUserField($value['owner'], "username", 0); - $holder[] = $value; + + array_push($holder, $value); } $holder = $multisort->sorte($holder, "x", true, 2, "y", true, 2, "pop", false, 2); $newholder = array("pad"); @@ -376,27 +474,32 @@ global $multisort, $database; $array = $GLOBALS['db']->getARanking(); $holder = array(); + foreach($array as $value) { $memberlist = $GLOBALS['db']->getAllMember($value['id']); $totalpop = 0; + $memberIDs = []; foreach($memberlist as $member) { $memberIDs[] = $member['id']; } $data = $database->getVSumField($memberIDs,"pop"); + if (count($data)) { foreach ($data as $row) { $totalpop += $row['Total']; } } + $value['players'] = count($memberlist); $value['totalpop'] = $totalpop; if(!isset($value['avg'])) { - $value['avg'] = (count($memberlist) > 0) ? round($totalpop / count($memberlist)) : 0; + $value['avg'] = @round($totalpop / count($memberlist)); } else { $value['avg'] = 0; } - $holder[] = $value; + + array_push($holder, $value); } $holder = $multisort->sorte($holder, "totalpop", false, 2); $newholder = array("pad"); @@ -415,7 +518,8 @@ $value['level']; $value['name']; $value['uid']; - $holder[] = $value; + + array_push($holder, $value); } $holder = $multisort->sorte($holder, "experience", false, 2); $newholder = array("pad"); @@ -438,11 +542,12 @@ $value['players'] = count($memberlist); $value['totalap'] = $totalap; if($value['avg'] > 0) { - $value['avg'] = ($totalap > 0 && count($memberlist) > 0) ? round($totalap / count($memberlist)) : 0; + $value['avg'] = round($totalap / count($memberlist)); } else { $value['avg'] = 0; } - $holder[] = $value; + + array_push($holder, $value); } $holder = $multisort->sorte($holder, "Aap", false, 2); $newholder = array("pad"); @@ -465,11 +570,12 @@ $value['players'] = count($memberlist); $value['totaldp'] = $totaldp; if($value['avg'] > 0) { - $value['avg'] = ($totaldp > 0 && count($memberlist) > 0) ? round($totaldp / count($memberlist)) : 0; + $value['avg'] = round($totalap / count($memberlist)); } else { $value['avg'] = 0; } - $holder[] = $value; + + array_push($holder, $value); } $holder = $multisort->sorte($holder, "Adp", false, 2); $newholder = array("pad"); diff --git a/Templates/Ranking/general.tpl b/Templates/Ranking/general.tpl index a6d594e0..9cf85890 100644 --- a/Templates/Ranking/general.tpl +++ b/Templates/Ranking/general.tpl @@ -137,10 +137,10 @@ echo $getpop['sumofpop']; Gold Gold - +