237 lines
9.7 KiB
PHP
Executable File
237 lines
9.7 KiB
PHP
Executable File
<?php
|
|
// translator ready
|
|
// addnews ready
|
|
// mail ready
|
|
|
|
// New Hall of Fame features by anpera
|
|
// http://www.anpera.net/forum/viewforum.php?f=27
|
|
|
|
require_once("common.php");
|
|
require_once("lib/http.php");
|
|
require_once("lib/villagenav.php");
|
|
|
|
tlschema("hof");
|
|
|
|
$superusermask = SU_HIDE_FROM_LEADERBOARD;
|
|
$standardwhere = "(locked=0 AND (superuser & $superusermask) = 0)";
|
|
|
|
page_header("Hall of Fame");
|
|
checkday();
|
|
|
|
addnav("Other");
|
|
villagenav();
|
|
$playersperpage = 50;
|
|
|
|
$op = httpget('op');
|
|
if ($op == "") $op = "kills";
|
|
$subop = httpget('subop');
|
|
if ($subop == "") $subop = "most";
|
|
|
|
$sql = "SELECT count(acctid) AS c FROM " . db_prefix("accounts") . " WHERE $standardwhere";
|
|
$extra = "";
|
|
if ($op == "kills") {
|
|
$extra = " AND dragonkills > 0";
|
|
} elseif ($op == "days") {
|
|
$extra = " AND dragonkills > 0 AND bestdragonage > 0";
|
|
}
|
|
$result = db_query($sql.$extra);
|
|
$row = db_fetch_assoc($result);
|
|
$totalplayers = $row['c'];
|
|
|
|
$page = (int)httpget('page');
|
|
if ($page == 0) $page = 1;
|
|
$pageoffset = $page;
|
|
if ($pageoffset > 0) $pageoffset--;
|
|
$pageoffset *= $playersperpage;
|
|
$from = $pageoffset+1;
|
|
$to = min($pageoffset+$playersperpage, $totalplayers);
|
|
$limit = "$pageoffset,$playersperpage";
|
|
|
|
addnav("Warrior Rankings");
|
|
addnav("Dragon Kills", "hof.php?op=kills&subop=$subop&page=1");
|
|
addnav("Gold", "hof.php?op=money&subop=$subop&page=1");
|
|
addnav("Gems", "hof.php?op=gems&subop=$subop&page=1");
|
|
addnav("Charm", "hof.php?op=charm&subop=$subop&page=1");
|
|
addnav("Toughness", "hof.php?op=tough&subop=$subop&page=1");
|
|
addnav("Resurrections", "hof.php?op=resurrects&subop=$subop&page=1");
|
|
addnav("Dragon Kill Speed", "hof.php?op=days&subop=$subop&page=1");
|
|
addnav("Sorting");
|
|
addnav("Best", "hof.php?op=$op&subop=most&page=$page");
|
|
addnav("Worst", "hof.php?op=$op&subop=least&page=$page");
|
|
if ($totalplayers > $playersperpage) {
|
|
addnav("Pages");
|
|
for($i = 0; $i < $totalplayers; $i+= $playersperpage) {
|
|
$pnum = ($i/$playersperpage+1);
|
|
$min = ($i+1);
|
|
$max = min($i+$playersperpage,$totalplayers);
|
|
if ($page == $pnum) {
|
|
addnav(array("`b`#Page %s`0 (%s-%s)`b", $pnum, $min, $max), "hof.php?op=$op&subop=$subop&page=$pnum");
|
|
} else {
|
|
addnav(array("Page %s (%s-%s)", $pnum, $min, $max), "hof.php?op=$op&subop=$subop&page=$pnum");
|
|
}
|
|
}
|
|
}
|
|
|
|
function display_table($title, $sql, $none=false, $foot=false,
|
|
$data_header=false, $tag=false, $translate=false)
|
|
{
|
|
global $session, $from, $to, $page, $playersperpage, $totalplayers;
|
|
|
|
$title = translate_inline($title);
|
|
if ($foot !== false) $foot = translate_inline($foot);
|
|
if ($none !== false) $none = translate_inline($none);
|
|
else $none = translate_inline("No players found.");
|
|
if ($data_header !== false) {
|
|
$data_header = translate_inline($data_header);
|
|
reset ($data_header);
|
|
}
|
|
if ($tag !== false) $tag = translate_inline($tag);
|
|
$rank = translate_inline("Rank");
|
|
$name = translate_inline("Name");
|
|
|
|
if ($totalplayers > $playersperpage) {
|
|
output("`c`b`^%s`0`b `7(Page %s: %s-%s of %s)`0`c`n", $title, $page, $from, $to, $totalplayers);
|
|
} else {
|
|
output("`c`b`^%s`0`b`c`n", $title);
|
|
}
|
|
rawoutput("<table cellspacing='0' cellpadding='2' align='center'>");
|
|
rawoutput("<tr class='trhead'>");
|
|
output_notl("<td>`b$rank`b</td><td>`b$name`b</td>", true);
|
|
if ($data_header !== false) {
|
|
for ($i = 0; $i < count($data_header); $i++) {
|
|
output_notl("<td>`b{$data_header[$i]}`b</td>", true);
|
|
}
|
|
}
|
|
$result = db_query($sql);
|
|
if (db_num_rows($result)==0){
|
|
$size = ($data_header === false) ? 2 : 2+count($data_header);
|
|
output_notl("<tr class='trlight'><td colspan='$size' align='center'>`&$none`0</td></tr>",true);
|
|
} else {
|
|
$i=-1;
|
|
while ($row = db_fetch_assoc($result)) {
|
|
$i++;
|
|
if ($row['name']==$session['user']['name']){
|
|
rawoutput("<tr class='hilight'>");
|
|
} else {
|
|
rawoutput("<tr class='".($i%2?"trlight":"trdark")."'>");
|
|
}
|
|
output_notl("<td>%s</td><td>`&%s`0</td>",($i+$from), $row['name'], true);
|
|
if ($data_header !== false) {
|
|
for ($j = 0; $j < count($data_header); $j++) {
|
|
$id = "data" . ($j+1);
|
|
$val = $row[$id];
|
|
if (isset($translate[$id]) &&
|
|
$translate[$id] == 1 && !is_numeric($val)) {
|
|
$val = translate_inline($val);
|
|
}
|
|
if ($tag !== false) $val = $val . " " . $tag[$j];
|
|
output_notl("<td align='right'>%s</td>", $val, true);
|
|
}
|
|
}
|
|
rawoutput("</tr>");
|
|
}
|
|
}
|
|
rawoutput("</table>");
|
|
if ($foot !== false) output_notl("`n`c%s`c", $foot);
|
|
}
|
|
|
|
if ($op=="days") {
|
|
if ($subop == "least") {
|
|
$order = "DESC";
|
|
$meop = ">=";
|
|
}else{
|
|
$order = "ASC";
|
|
$meop = "<=";
|
|
}
|
|
} else {
|
|
if ($subop == "least") {
|
|
$order = "ASC";
|
|
$meop = "<=";
|
|
}else{
|
|
$order = "DESC";
|
|
$meop = ">=";
|
|
}
|
|
}
|
|
|
|
|
|
$sexsel = "IF(sex,'`%Female`0','`!Male`0')";
|
|
$racesel = "IF(race!='0' and race!='',race,'".RACE_UNKNOWN."')";
|
|
|
|
if ($op=="money"){
|
|
$sql = "SELECT name,(CAST(gold as signed)+goldinbank+round((((rand()*10)-5)/100)*(CAST(gold as signed)+goldinbank))) AS data1 FROM " . db_prefix("accounts") . " WHERE $standardwhere ORDER BY data1 $order, level $order, experience $order, acctid $order LIMIT $limit";
|
|
$me = "SELECT count(acctid) AS count FROM ".db_prefix("accounts")." WHERE $standardwhere AND (goldinbank+CAST(gold as signed)+round((((rand()*10)-5)/100)*(goldinbank+CAST(gold as signed)))) $meop ".($session['user']['goldinbank'] + $session['user']['gold']);
|
|
$adverb = "richest";
|
|
if ($subop == "least") $adverb = "poorest";
|
|
$title = "The $adverb warriors in the land";
|
|
$foot = "(Gold Amount is accurate to +/- 5%)";
|
|
$headers = array("Estimated Gold");
|
|
$tags = array("gold");
|
|
$table = array($title, $sql, false, $foot, $headers, $tags);
|
|
} elseif ($op == "gems") {
|
|
$sql = "SELECT name FROM ". db_prefix("accounts") . " WHERE $standardwhere ORDER BY gems $order, level $order, experience $order, acctid $order LIMIT $limit";
|
|
$me = "SELECT count(acctid) AS count FROM ".db_prefix("accounts")." WHERE $standardwhere AND gems $meop {$session['user']['gems']}";
|
|
if ($subop == "least") $adverb = "least";
|
|
else $adverb = "most";
|
|
$title = "The warriors with the $adverb gems in the land";
|
|
$table = array($title, $sql);
|
|
} elseif ($op=="charm"){
|
|
$sql = "SELECT name,$sexsel AS data1, $racesel AS data2 FROM " . db_prefix("accounts") . " WHERE $standardwhere ORDER BY charm $order, level $order, experience $order, acctid $order LIMIT $limit";
|
|
$me = "SELECT count(acctid) AS count FROM ".db_prefix("accounts")." WHERE $standardwhere AND charm $meop {$session['user']['charm']}";
|
|
$adverb = "most beautiful";
|
|
if ($subop == "least") $adverb = "ugliest";
|
|
$title = "The $adverb warriors in the land.";
|
|
$headers = array("Gender", "Race");
|
|
$translate = array("data1"=>1, "data2"=>1);
|
|
$table = array($title, $sql, false, false, $headers, false, $translate);
|
|
} elseif ($op=="tough"){
|
|
$sql = "SELECT name,level AS data2 , $racesel as data1 FROM " . db_prefix("accounts") . " WHERE $standardwhere ORDER BY maxhitpoints $order, level $order, experience $order, acctid $order LIMIT $limit";
|
|
$me = "SELECT count(acctid) AS count FROM ".db_prefix("accounts")." WHERE $standardwhere AND maxhitpoints $meop {$session['user']['maxhitpoints']}";
|
|
$adverb = "toughest";
|
|
if ($subop == "least") $adverb = "wimpiest";
|
|
$title = "The $adverb warriors in the land";
|
|
$headers = array("Race", "Level");
|
|
$translate = array("data1"=>1);
|
|
$table = array($title, $sql, false, false, $headers, false, $translate);
|
|
} elseif ($op=="resurrects"){
|
|
$sql = "SELECT name,level AS data1 FROM " . db_prefix("accounts") . " WHERE $standardwhere ORDER BY resurrections $order, level $order, experience $order, acctid $order LIMIT $limit";
|
|
$me = "SELECT count(acctid) AS count FROM ".db_prefix("accounts")." WHERE $standardwhere AND resurrections $meop {$session['user']['resurrections']}";
|
|
$adverb = "most suicidal";
|
|
if ($subop == "least") $adverb = "least suicidal";
|
|
$title = "The $adverb warriors in the land";
|
|
$headers = array("Level");
|
|
$table = array($title, $sql, false, false, $headers, false);
|
|
} elseif ($op=="days") {
|
|
$unk = translate_inline("Unknown");
|
|
$sql = "SELECT name, IF(bestdragonage,bestdragonage,'$unk') AS data1 FROM " . db_prefix("accounts") . " WHERE $standardwhere $extra ORDER BY bestdragonage $order, level $order, experience $order, acctid $order LIMIT $limit";
|
|
$me = "SELECT count(acctid) AS count FROM ".db_prefix("accounts")." WHERE $standardwhere $extra AND bestdragonage $meop {$session['user']['bestdragonage']}";
|
|
$adverb = "fastest";
|
|
if ($subop == "least") $adverb = "slowest";
|
|
$title = "Heroes with the $adverb dragon kills in the land";
|
|
$headers = array("Best Days");
|
|
$none = "There are no heroes in the land.";
|
|
$table = array($title, $sql, $none, false, $headers, false);
|
|
} else {
|
|
$unk = translate_inline("Unknown");
|
|
$sql = "SELECT name,dragonkills AS data1,level AS data2,' ' AS data3, IF(dragonage,dragonage,'$unk') AS data4, ' ' AS data5, IF(bestdragonage,bestdragonage,'$unk') AS data6 FROM " . db_prefix("accounts") . " WHERE $standardwhere $extra ORDER BY dragonkills $order,level $order,experience $order, acctid $order LIMIT $limit";
|
|
if ($session['user']['dragonkills']>0) $me = "SELECT count(acctid) AS count FROM ".db_prefix("accounts")." WHERE $standardwhere $extra AND dragonkills $meop {$session['user']['dragonkills']}";
|
|
$adverb = "most";
|
|
if ($subop == "least") $adverb = "least";
|
|
$title = "Heroes with the $adverb dragon kills in the land";
|
|
$headers = array("Kills", "Level", " ", "Days", " ", "Best Days");
|
|
$none = "There are no heroes in the land.";
|
|
$table = array($title, $sql, $none, false, $headers, false);
|
|
}
|
|
|
|
if (isset($table) && is_array($table)){
|
|
call_user_func_array("display_table",$table);
|
|
if (isset($me) && $me>"" && $totalplayers){
|
|
$meresult = db_query($me);
|
|
$row = db_fetch_assoc($meresult);
|
|
$pct = round(100*$row['count']/$totalplayers, 0);
|
|
if ($pct < 1) $pct = 1;
|
|
output("`c`7You rank within around the top `&%s`7%% in this listing.`0`c",$pct);
|
|
}
|
|
}
|
|
|
|
page_footer();
|
|
?>
|