query(" SELECT s.serverId, s.name, s.address, s.port, s.publicaddress, s.game, s.rcon_password, g.name gamename FROM hlstats_Servers s LEFT JOIN hlstats_Games g ON s.game=g.code WHERE serverId='$_GET[server]' "); if ($db->num_rows() != 1) error("Invalid or no server specified."); else $server = $db->fetch_array(); pageHeader( array('Server Statistics', $server['name']), array($server['gamename'] => $g_options['scripturl'] . '?game=' . $server['game'], 'Server Statistics' => $g_options['scripturl'] . '?game=' . $server['game'], $server['name'] => '' ) ); if ($server['publicaddress']) { # Port maybe different $temp = explode(':', $server['publicaddress']); $server_ip = $server['address']; if (isset($temp[1])) $server_port = $temp[1]; else $server_port = $server['port']; } else { $server_ip = $server['address']; $server_port = $server['port']; } $server_rcon = $server['rcon_password']; $server_hltv = array(); $server_players = array(); # Get info if (!$server_details = Source_A2S_Info($server_ip, $server_port)) error("The details for this server couldn't be retrieved, this maybe because the server is currently unavailable."); if ($server_details['gametype'] == 73) { $server['source'] = 1; $server_details['address'] = $server_ip.':'.$server_port; } else $server['source'] = 0; # Get challenge $query_challenge = Source_A2S_GetChallenge($server_ip, $server_port); # Get packets with challenge number $server_rules = Source_A2S_Rules($server_ip, $server_port, $query_challenge); $server_players = Source_A2S_Player($server_ip, $server_port, $query_challenge); $server_details = Format_Info_Array($server_details); # If HLstats currently stores the rcon, might as well try to get more data from a HL status if ($server_rcon) { if ($server['source'] == 1) { $server_players_tmp = $server_players; $server_status = Source_Rcon($server_ip, $server_port, $server_rcon, 'status'); } else $server_status = HalfLife_Rcon($server_ip, $server_port, $server_rcon, 'status', $server_challenge); if ($server_status) { # Rcon worked $server_players = array(); $server_hltv = array(); Parse_HL_Status($server_status, $server['source'], $server_players, $server_hltv); $player_columns[] = array('column' => 'id', 'name' => ' ID', 'align' => 'left', 'width' => '25'); $player_columns[] = array('column' => 'name', 'name' => 'Name', 'align' => 'left', 'width' => ''); $player_columns[] = array('column' => 'uid', 'name' => 'Unique ID', 'align' => 'left', 'width' => '125'); $player_columns[] = array('column' => 'ping', 'name' => 'Ping', 'align' => 'right', 'width' => '35'); $player_columns[] = array('column' => 'frags', 'name' => 'Frags', 'align' => 'right', 'width' => '30'); $player_columns[] = array('column' => 'loss', 'name' => 'Loss', 'align' => 'right', 'width' => '30'); $player_columns[] = array('column' => 'time', 'name' => 'Connected', 'align' => 'right', 'width' => '75'); } } # If rcon failed then $server_status is FALSE and if we don't have rcon # it won't exist if (!$server_status) { $player_columns[] = array('column' => 'index', 'name' => 'ID', 'align' => 'left', 'width' => '25'); $player_columns[] = array('column' => 'name', 'name' => 'Name', 'align' => 'left', 'width' => ''); $player_columns[] = array('column' => 'frags', 'name' => 'Frags', 'align' => 'right', 'width' => '40'); $player_columns[] = array('column' => 'time', 'name' => 'Connected', 'align' => 'right', 'width' => '75'); } $server_details['hltvcount'] = count($server_hltv); $server_details['players_real'] = $server_details['numplayers']; $server_details['players_real'] -= $server_details['numbots']; $server_details['players_real'] -= $server_details['hltvcount']; $server_details['players_connecting'] = $server_details['numplayers']; $server_details['players_connecting'] -= $server_details['numbots']; $server_details['players_connecting'] -= count($server_players); $server_details['players_connecting'] -= $server_details['hltvcount']; ?>
<?php echo $server_details['map']; ?>


0) { # If we have players, lets create the table ?> $player) { ?> '.str_replace(' ', ' ', HTMLEntities($player['name'], ENT_QUOTES, 'UTF-8')).''; elseif ('loss' == $column['column']) $temp = $player['loss'].'%'; elseif ('time' == $column['column']) $temp = Format_Time($player['time']); elseif ('frags' == $column['column']) { $temp = $player[$column['column']]; if ($server_status) { if ($server['source']) $temp = $server_players_tmp[$key]['frags']; } $totalfrags += $temp; } else $temp = $player[$column['column']]; ?> 0) { ?>
Bot Player
 
Total Time
Total Frags
Average Ping
0) { ?>

Name IP Delay Viewers Capacity Connected
HLTV
0) { echo 'There are currently '.$server_details['players_connecting'].' player(s) connecting to the server.'; } ?>
Address:
Server Type: ,
Map:
'.$server_details['nextmap'].'
'; # Are there any time limits or frag limits? if (isset($server_details['timeleft'])) { echo 'Timeleft: '.$server_details['timeleft']; if(isset($server_rules['mp_timelimit'])) echo ' ('.sprintf('%02u:%02u', $server_rules['mp_timelimit'], 0).')'; echo '
'; } if ($server_rules['mp_fraglimit'] > 0) { echo 'Fragsleft: '.$server_rules['mp_fragsleft']; if (isset($server_rules['mp_fragslimit'])) echo '('.$server_rules['mp_fraglimit'].')'; echo '
'; } ?> Password:
Players: /
0) { # Don't show this information if there are no bots ?> Bots: /
0) { # Don't show this information if there is no HLTV ?> HLTV: /
0) { # Don't show this information if there are no players connecting ?> Connecting: /
Valve Anti-Cheat:
Rules:


0) { ?> Server Addons:
'.round(($time - $start), 6).'
'; ?>