$cmd){ fputs($sock, $cmd."\r\n"); $line = trim(fgets($sock, 1024)); $read_socket = true; while ($read_socket) { $line = trim(fgets($sock, 1024)); if(substr($line,0,1) == '%' || $line == ''){ $read_socket = false; }else{ if(isset($results[$index])){ if(!is_array($results[$index])) $results[$index] = array(); $results[$index][] = $line; }else{ $results[$index] = $line; } } } } fclose($sock); return $results; } function querySimEngineTelnet($host, $port, $pass){ $server_data = array(); $commands = array('mission'=>'echo($server::Mission);', 'version'=>'showVersion();', 'maxplayers'=>'echo($server::MaxPlayers);', 'players'=>'playerList();'); $results = connectSimEngineTelnet($host, $port, $pass, $commands); if(is_array($results) && isset($results['mission']) && isset($results['players'])){ list($results['gametype']) = explode("_", $results['mission']); $results['mission'] = ucwords(str_replace("_", " ", substr($results['mission'], strlen($results['gametype'])+1))); if(is_array($results['players'])){ $players = $results['players']; $results['players'] = array(); foreach($players as $player_line){ $player_id = substr($player_line, 0, 4); if(is_numeric($player_id)){ $player = array(); $player['id'] = $player_id; $player['name'] = trim(substr($player_line, 5, 26)); $player['team'] = trim(substr($player_line, 31, 28)); $player['kills'] = trim(substr($player_line, 59, 4)); $player['deaths'] = trim(substr($player_line, 63, 4)); //$player['ping'] = substr($player_line, 67, 4); $player['score'] = trim($player['kills']); $results['players'][] = $player; } } }else{ $results['players'] = array(); } $server_data['@attributes']['status'] = 'UP'; $server_data['gametype'] = $results['gametype']; $server_data['map'] = $results['mission']; $server_data['gamever'] = str_replace("Version ", "", $results['version']); $server_data['numplayers'] = count($results['players']); $server_data['maxplayers'] = $results['maxplayers']; $server_data['players']['player'] = $results['players']; }else{ $server_data['@attributes']['status'] = 'DOWN'; } return $server_data; }