<?php /* HLstatsX Community Edition - Real-time player and clan rankings and statistics Copyleft (L) 2008-20XX Nicholas Hastings (nshastings@gmail.com) http://www.hlxcommunity.com HLstatsX Community Edition is a continuation of ELstatsNEO - Real-time player and clan rankings and statistics Copyleft (L) 2008-20XX Malte Bayer (steam@neo-soft.org) http://ovrsized.neo-soft.org/ ELstatsNEO is an very improved & enhanced - so called Ultra-Humongus Edition of HLstatsX HLstatsX - Real-time player and clan rankings and statistics for Half-Life 2 http://www.hlstatsx.com/ Copyright (C) 2005-2007 Tobias Oetzel (Tobi@hlstatsx.com) HLstatsX is an enhanced version of HLstats made by Simon Garner HLstats - Real-time player and clan rankings and statistics for Half-Life http://sourceforge.net/projects/hlstats/ Copyright (C) 2001 Simon Garner This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. For support and installation notes visit http://www.hlxcommunity.com */ if ( !defined('IN_HLSTATS') ) { die('Do not access this file directly.'); } function printserverstats($server_id) { global $db, $g_options; $query= " SELECT SUM(kills), SUM(headshots), count(serverId) FROM hlstats_Servers WHERE serverId='$server_id' "; $result = $db->query($query); list($total_kills, $total_headshots) = $db->fetch_row($result); $query= " SELECT serverId, name, IF(publicaddress != '', publicaddress, concat(address, ':', port) ) AS addr, statusurl, kills, players, rounds, suicides, headshots, bombs_planted, bombs_defused, ct_wins, ts_wins, ct_shots, ct_hits, ts_shots, ts_hits, act_players, max_players, act_map, map_started, map_ct_wins, map_ts_wins, game FROM hlstats_Servers WHERE serverId='$server_id' "; $result = $db->query($query); $servers = array(); $servers[] = $db->fetch_array($result); ?> <?php $i=0; for ($i=0; $i<count($servers); $i++) { $rowdata = $servers[$i]; $server_id = $rowdata['serverId']; $game = $rowdata['game']; $c = ($i % 2) + 1; $addr = $rowdata["addr"]; $kills = $rowdata['kills']; $headshots = $rowdata['headshots']; $player_string = $rowdata['act_players']."/".$rowdata['max_players']; $map_teama_wins = $rowdata['map_ct_wins']; $map_teamb_wins = $rowdata['map_ts_wins']; $mode = 'playerinfo'; if (strpos($_SERVER['PHP_SELF'], 'ingame') !== FALSE) { $mode = 'statsme'; } //style="border:1px solid; margin-bottom:40px;margin-left:auto;margin-right:auto;" ?> <table class="livestats-table"> <tr class="data-table-head"> <td class="fSmall" style="width:2%;"> #</td> <td class="fSmall" style="width:42%;text-align:left;"> Player</td> <td class="fSmall" colspan="3" style="width:5%;"> Kills</td> <td class="fSmall" style="width:4%;"> Hs</td> <td class="fSmall" style="width:8%;"> HS:K</td> <td class="fSmall" style="width:6%;"> Acc</td> <td class="fSmall" style="width:6%;"> Lat</td> <td class="fSmall" style="width:10%;"> Time</td> <td class="fSmall" style="width:6%;"> +/-</td> <td class="fSmall" style="width:6%;"> Skill</td> </tr> <?php unset($team_colors); $statsdata = $db->query(" SELECT team, name, teamkills, teamdeaths, teamheadshots, teamping, teamskill, teamshots, teamhits, teamjointime, IFNULL(playerlist_bgcolor,'#D5D5D5') as playerlist_bgcolor, IFNULL(playerlist_color,'#050505') AS playerlist_color, IFNULL( playerlist_index, 99 ) AS playerlist_index FROM hlstats_Teams RIGHT JOIN (SELECT team, sum( kills ) AS teamkills, sum( deaths ) AS teamdeaths, sum( headshots ) AS teamheadshots, avg( ping /2 ) AS teamping, avg( skill ) AS teamskill, sum( shots ) AS teamshots, sum( hits ) AS teamhits, sum( unix_timestamp( NOW( ) ) - connected ) AS teamjointime FROM hlstats_Livestats WHERE server_id = $server_id AND connected >0 GROUP BY team ORDER BY teamkills ) teaminfo ON code = team AND hlstats_Teams.game = '$game' ORDER BY playerlist_index LIMIT 0 , 30 "); $teamdata = array(); $playerdata = array(); $teamno = 0; while ($thisteam = $db->fetch_array($statsdata)) { $teamname = $db->escape($thisteam['team']); $teamdata[$teamno] = $thisteam; $pldata = $db->query(" SELECT player_id, name, kills, deaths, headshots, ping, skill, shots, hits, connected, skill_change, cli_flag FROM hlstats_Livestats WHERE server_id = $server_id AND team = '$teamname' ORDER BY kills DESC "); while ($thisplayer = $db->fetch_array($pldata)) { $playerdata[$teamno][] = $thisplayer; } $teamno++; } $curteam = 0; while (isset($teamdata[$curteam])) { $j=0; $thisteam = $teamdata[$curteam]; $teamcolor = 'background:'.$thisteam['playerlist_bgcolor'].';color:'.$thisteam['playerlist_color']; $bordercolor = 'background:'.$$thisteam['playerlist_bgcolor'].';color:'.$thisteam['playerlist_color'].';border-top:1px '.$thisteam['playerlist_color'].' solid'; $team_display_name = htmlspecialchars($thisteam['name']); while (isset($playerdata[$curteam][$j])) { $thisplayer = $playerdata[$curteam][$j]; ?> <tr style="<?php echo $teamcolor ?>"> <td class="fSmall"><?php if (isset($thisplayer) && $team_display_name) { echo ($j+1); } else { echo ' '; } ?> </td> <td style="text-align:left;<?php echo $teamcolor ?>" class="fSmall"><?php if (isset($thisplayer)) { if (strlen($thisplayer['name'])>50) { $thisplayer['name'] = substr($thisplayer['name'], 0, 50); } if ($g_options['countrydata'] == 1) { echo '<img src="'.getFlag($thisplayer['cli_flag']).'" alt="'.ucfirst(strtolower($thisplayer['cli_country'])).'" title="'.ucfirst(strtolower($thisplayer['cli_country'])).'" /> '; } echo '<a style="color:'.$thisteam['playerlist_color'].'" href="'.$g_options['scripturl'].'?mode='.$mode.'&player='.$thisplayer['player_id'].'">'; echo htmlspecialchars($thisplayer['name'], ENT_COMPAT).'</a>'; } else { echo ' '; } ?> </td> <td style="text-align:right;width:2%;<?php echo $teamcolor ?>" class="fSmall"><?php if (isset($thisplayer)) { echo $thisplayer['kills']; } else { echo ' '; } ?> </td> <td style="width:1%;<?php echo $teamcolor ?>" class="fSmall"><?php if (isset($thisplayer)) { echo ':'; } else { echo ' '; } ?> </td> <td style="text-align:left;width:2%;<?php echo $teamcolor ?>" class="fSmall"><?php if (isset($thisplayer)) { echo $thisplayer['deaths']; } else { echo ' '; } ?> </td> <td style="<?php echo $teamcolor ?>" class="fSmall"><?php if (isset($thisplayer)) { echo $thisplayer['headshots']; } else { echo ' '; } ?> </td> <td style="<?php echo $teamcolor ?>" class="fSmall"><?php if (isset($thisplayer)) { $hpk = sprintf('%.2f', 0); if ($thisplayer['kills'] > 0) { $hpk = sprintf('%.2f', $thisplayer['headshots']/$thisplayer['kills']); } echo $hpk; } else { echo ' '; } ?> </td> <td style="<?php echo $teamcolor ?>" class="fSmall"><?php if (isset($thisplayer)) { $acc = sprintf('%.0f', 0); if ($thisplayer['shots'] > 0) { $acc = sprintf('%.0f', ($thisplayer['hits']/$thisplayer['shots'])*100); } echo "$acc%"; } else { echo ' '; } ?> </td> <td style="<?php echo $teamcolor ?>" class="fSmall"><?php if (isset($thisplayer)) { echo sprintf('%.0f', $thisplayer['ping'] / 2); } else { echo ' '; } ?> </td> <td style="<?php echo $teamcolor ?>" class="fSmall"><?php if (isset($thisplayer)) { if ($thisplayer['connected']>0) { $stamp = time()-$thisplayer['connected']; $hours = sprintf('%02d', floor($stamp / 3600)); $min = sprintf('%02d', floor(($stamp % 3600) / 60)); $sec = sprintf('%02d', floor($stamp % 60)); echo $hours.':'.$min.':'.$sec; } else { echo 'Unknown'; } } else { echo ' '; } ?> </td> <td style="<?php echo $teamcolor ?>" class="fSmall"><?php if (isset($thisplayer)) { echo $thisplayer['skill_change']; } else { echo ' '; } ?> </td> <td style="<?php echo $teamcolor ?>" class="fSmall"><?php if (isset($thisplayer)) { echo number_format($thisplayer['skill']); } else { echo ' '; } ?> </td> </tr> <?php $j++; } if ($team_display_name) { ?> <tr style="<?php echo $teamcolor ?>"> <td style="<?php echo $bordercolor ?>" class="fSmall"> </td> <td style="text-align:left;<?php echo $bordercolor ?>" class="fSmall"><?php echo "<strong>$team_display_name</strong>"; if (($map_teama_wins > 0) || ($map_teamb_wins > 0)) { echo ' ('.$map_teama_wins.' wins)'; } ?> </td> <td style="width:2%;text-align:right;<?php echo $bordercolor ?>" class="fSmall"><?php if (count($teamdata[$curteam]) > 0) { echo $teamdata[$curteam]['teamkills']; } else { echo ' '; } ?> </td> <td style="width:1%;<?php echo $bordercolor ?>" class="fSmall"><?php if (count($teamdata[$curteam]) > 0) { echo ':'; } else { echo ' '; } ?> </td> <td style="width:2%;text-align:left;<?php echo $bordercolor ?>" class="fSmall"><?php if (count($teamdata[$curteam]) > 0) { echo $teamdata[$curteam]['teamdeaths']; } else { echo ' '; } ?> </td> <td style="<?php echo $bordercolor ?>" class="fSmall"><?php if (count($teamdata[$curteam]) > 0) { echo $teamdata[$curteam]['teamheadshots']; } else { echo ' '; } ?> </td> <td style="<?php echo $bordercolor ?>" class="fSmall"><?php if (count($teamdata[$curteam]) > 0) { $hpk = sprintf('%.2f', 0); if ($teama_kills > 0) { $hpk = sprintf('%.2f', $teamdata[$curteam]['headshots']/$teamdata[$curteam]['kills']); } echo $hpk; } else { echo ' '; } ?> </td> <td style="<?php echo $bordercolor ?>" class="fSmall"><?php if (count($teamdata[$curteam]) > 0) { $acc = sprintf('%.0f', 0); if ($teama_shots > 0) { $acc = sprintf('%.0f', ($teamdata[$curteam]['teamhits']/$teamdata[$curteam]['teamshots'])*100); } echo "$acc%"; } else { echo ' '; } ?></td> <td style="<?php echo $bordercolor ?>" class="fSmall"><?php if (count($teamdata[$curteam]) > 0) { echo sprintf('%.0f', $teamdata[$curteam]['teamping'] / count($teamdata[$curteam])); } else { echo ' '; } ?> </td> <td style="<?php echo $bordercolor ?>" class="fSmall"><?php if (count($teamdata[$curteam]) > 0) { if ($teamdata[$curteam]['teamjointime'] > 0) { $stamp = $teamdata[$curteam]['teamjointime']; $hours = sprintf('%02d', floor($stamp / 3600)); $min = sprintf('%02d', floor(($stamp % 3600) / 60)); $sec = sprintf('%02d', floor($stamp % 60)); echo $hours.':'.$min.':'.$sec; } else { echo 'Unknown'; } } else { echo ' '; } ?> </td> <td style="<?php echo $bordercolor ?>" class="fSmall">-</td> <td style="<?php echo $bordercolor ?>" class="fSmall"><?php if (count($teamdata[$curteam])>0) { echo number_format(sprintf('%.0f', $teamdata[$curteam]['teamskill'])); } else { echo ' '; } ?> </td> </tr> <?php } $curteam++; } //while i for teams if (count($teamdata) == 0) { ?> <tr> <td style="background:#EFEFEF;color:black"><?php echo ' '; ?> </td> <td colspan="11" style="text-align:left;background:#EFEFEF;color:black"><?php echo "No Players"; ?> </td> </tr> <?php } ?> </table> <?php } // for servers } ?>