Here you go. I can take no credit - this was all the Lizard Boy
CODE
<?php
$server_ip = '173.15.218.91';
$server_port = '28070';
$server_ip_jk3 = '173.15.218.91';
$server_port_jk3 = '29070';
$server_data = QueryServer($server_ip, $server_port);
$variables = GetServerVariables($server_data);
$players = GetPlayers($server_data);
$server_data_jk3 = QueryServer($server_ip_jk3, $server_port_jk3);
$variables_jk3 = GetServerVariables($server_data_jk3);
$players_jk3 = GetPlayers($server_data_jk3);
function QueryServer($server_address, $server_port) {
$command = "\xFF\xFF\xFF\xFFgetstatus\n";
if (!$socket = fsockopen("udp://$server_address", $server_port)) {
echo "Error: Could not establish a connection to $server_address";
return false;
}
stream_set_blocking($socket, true);
stream_set_timeout($socket, 0, 1000000);
fwrite($socket, $command, strlen($command));
do {
$server_data .= fgetc($socket);
$socket_status = socket_get_status($socket);
} while ($socket_status["unread_bytes"]);
fclose($socket);
if (strlen($server_data) > 20) {
$server_data = substr($server_data, 20);
} else {
return false;
}
$color_code = array('^0', '^1', '^2', '^3', '^4', '^5', '^6', '^7');
$server_data = str_replace($color_code, '', $server_data);
return $server_data;
}
function GetServerVariables($server_data) {
$variables = substr($server_data, 0, strpos($server_data, "\n")) . "\\";
$key = strtok($variables, "\\");
$value = strtok("\\");
$server_vars = array();
while (strlen($key)) {
$server_vars[$key] = $value;
$key = strtok("\\");
$value = strtok("\\");
}
return $server_vars;
}
function GetPlayers($server_data) {
$players = substr($server_data, strpos($server_data, "\n") + 1);
$players = substr($players, 0, strlen($players) - 1);
$player_count = 0;
if (strlen($players)) {
$players = explode("\n", $players);
while (list($key, $data) = each ($players)) {
eregi("^([-0-9]+) ([-0-9]+) \"(.*)\"", $data, $player);
$player_array[$key] = array('score'=>$player[1], 'ping'=>$player[2], 'name'=>$player[3]);
}
}
return $player_array;
}
?>
JB