rendered paste body<?php
if(INCLUDED!==true)exit;
// ==================== //
$pathway_info[] = array('title'=>$lang['honor'],'link'=>'index.php?n=server&sub=honor');
// ==================== //
// some config //
$max_display_chars = 200; // Only top 40 in stats
$site_defines = Array(
'character_race' => Array(
1 => $lang['Human'],
2 => $lang['Orc'],
3 => $lang['Dwarf'],
4 => $lang['Nightelf'],
5 => $lang['Undead'],
6 => $lang['Tauren'],
7 => $lang['Gnome'],
8 => $lang['Troll'],
9 => $lang['Goblin'],
10 => $lang['Bloodelf'],
11 => $lang['Dranei'],
),
'character_class' => Array(
1 => $lang['Warrior'],
2 => $lang['Paladin'],
3 => $lang['Hunter'],
4 => $lang['Rogue'],
5 => $lang['Priest'],
7 => $lang['Shaman'],
8 => $lang['Mage'],
9 => $lang['Warlock'],
11 => $lang['Druid'],
),
'character_gender' => Array(
0 => $lang['Male'],
1 => $lang['Female'],
2 => 'None',
),
'character_rank' => Array(
'alliance' => Array(
1 => $lang['ar1'],
2 => $lang['ar2'],
3 => $lang['ar3'],
4 => $lang['ar4'],
5 => $lang['ar5'],
6 => $lang['ar6'],
7 => $lang['ar7'],
8 => $lang['ar8'],
9 => $lang['ar9'],
10 => $lang['ar10'],
11 => $lang['ar11'],
12 => $lang['ar12'],
13 => $lang['ar13'],
14 => $lang['ar14']
),
'horde' => Array(
1 => $lang['hr1'],
2 => $lang['hr2'],
3 => $lang['hr3'],
4 => $lang['hr4'],
5 => $lang['hr5'],
6 => $lang['hr6'],
7 => $lang['hr7'],
8 => $lang['hr8'],
9 => $lang['hr9'],
10 => $lang['hr10'],
11 => $lang['hr11'],
12 => $lang['hr12'],
13 => $lang['hr13'],
14 => $lang['hr14']
)
)
);
if(!$_GET['realm']){
$realm_list = realm_list();
}elseif($_GET['realm']){
$pos = 0;
$realm_list = realm_list();
$realm = $DB->selectRow("SELECT * FROM realmlist WHERE id=?d LIMIT 1",$_GET['realm']);
$pathway_info[] = array('title'=>$realm['name'],'');
if(!$realm['dbinfo'])output_message('alert','Check field <u>dbinfo</u> in table `realmlist` for realm id='.$realm['id']);
$wsdb_info = parse_worlddb_info($realm['dbinfo']);
$WSDB = DbSimple_Generic::connect("".$realmd['db_type']."://".$wsdb_info['user'].":".$wsdb_info['password']."@".$wsdb_info['host'].":".$wsdb_info['port']."/".$wsdb_info['db']."");
if($WSDB)$WSDB->setErrorHandler('databaseErrorHandler');
if($WSDB)$WSDB->query("SET NAMES ".$mangos['db_encoding']);
if($WSDB)$honor = $WSDB->select("SELECT guid, CAST( SUBSTRING_INDEX(SUBSTRING_INDEX(`data`, ' ', 1433), ' ', -1) AS UNSIGNED) AS honor FROM `character`;");
foreach($honor as $res_row)
{
// if($res_row['type']==0){
$honor_arr[$res_row['guid']] += $res_row['honor'];
// }elseif($res_row['type']==2){
// $honor_arr[$res_row['guid']] -= $res_row['honor'];
// }
}
// print_r($honor_arr);
// exit;
unset($honor);
if(!is_array($honor_arr))$honor_arr = array();
$honor_arr = array_filter($honor_arr,"zehohonorfilter");
arsort($honor_arr);
// reset($honor_arr);
$honor_arr = array_slice($honor_arr,0,$max_display_chars,true);
$allhonor['alliance'] = array();
$allhonor['horde'] = array();
$charinfo_arr = array();
$precharinfo_arr = array();
$sql="SELECT character.guid AS ARRAY_KEY,character.guid,character.data,character.name,character.race,character.class, ifnull(a.count,0) as count "
."FROM `character` left join (select guid as gid,sum(count) as count from character_kill group by guid) a"
." on a.gid=character.guid left join `realmd`.`account` on `account`.`id` = `character`.`account` WHERE character.guid IN(?a) and `account`.`gmlevel` <2";
if(count($honor_arr)>0)$precharinfo_arr = $WSDB->select($sql,array_keys($honor_arr));
// if(count($honor_arr)>0)$precharinfo_arr = $WSDB->select("SELECT character.guid AS ARRAY_KEY,character.guid,character.data,character.name,character.race,character.class FROM `character` WHERE guid IN(?a)",array_keys($honor_arr));
foreach ($honor_arr as $honor_uid=>$honor_val){
$charinfo_arr[$honor_uid] = $precharinfo_arr[$honor_uid];
}
unset($precharinfo_arr);
// Prepair data ...
foreach($charinfo_arr as $charinfo_item){
$char_data = explode(' ',$charinfo_item['data']);
$char_gender = dechex($char_data[36]);
$char_gender = str_pad($char_gender,8, 0, STR_PAD_LEFT);
$char_gender = $char_gender{3};
$char_rank_id = calc_character_rank($honor_arr[$charinfo_item['guid']]);
if($charinfo_item['race']==1 || $charinfo_item['race']==3 || $charinfo_item['race']==4 || $charinfo_item['race']==7 || $charinfo_item['race']==11)$faction = 'alliance';
else$faction = 'horde';
$honor_kills = $char_data[1387];
// $honor_kills = $WSDB->select("SELECT (sum(count)) FROM `character_kill` WHERE guid = ".$char_data[0]);
$character = array(
'name' => $charinfo_item['name'],
'race' => $site_defines['character_race'][$charinfo_item['race']],
'class' => $site_defines['character_class'][$charinfo_item['class']],
'gender' => $site_defines['character_gender'][$char_gender],
'rank' => $site_defines['character_rank'][$faction][$char_rank_id],
'level' => $char_data[34],
'honor_points' => $honor_arr[$charinfo_item['guid']],
'honorable_kills' => $honor_kills,
'race_icon' => $config['template_href'].'images/icon/race/'.$charinfo_item['race'].'-'.$char_gender.'.gif',
'class_icon' => $config['template_href'].'images/icon/class/'.$charinfo_item['class'].'.gif',
'rank_icon' => $config['template_href'].'images/icon/pvpranks/rank'.$char_rank_id.'.gif',
);
$allhonor[$faction][] = $character;
}
unset($honor_arr);
unset($charinfo_arr);
unset($honor_kills);
unset($WSDB);
}
function realm_list()
{
global $DB;
$res = $DB->selectCol("SELECT id AS ARRAY_KEY,name FROM realmlist ORDER BY name");
return $res;
}
function get_rank_numending($n)
{
$n = substr("$n", -1);
if($n==1)return 'st';
elseif($n==2)return 'nd';
elseif($n==3)return 'rd';
elseif($n>=4)return 'th';
}
function parse_worlddb_info($str){
$arr = explode(';',$str);
$mangosd_database['host'] = $arr[0];
$mangosd_database['port'] = $arr[1];
$mangosd_database['user'] = $arr[2];
$mangosd_database['password'] = $arr[3];
$mangosd_database['db'] = $arr[4];
return $mangosd_database;
}
function calc_character_rank($honor_points){
$rank = 0;
if($honor_points <= 0){
$rank = 0;
}else{
if($honor_points < 2000) $rank = 1;
else $rank = ceil($honor_points / 5000) + 1;
}
return $rank;
}
function zehohonorfilter($var){
return ($var>0);
}
?>