<?php function lgsl_query($ip, $port, $game, $request) { $lgsl_feed_url = ""; $lgsl_feed_method = 0; $lgsl_protocol[$game] = '01'; // 01 - cs1.6 // 05 - css $qport = $port; // DEFAULT THE QUERY PORT TO THE CONNECTION PORT switch ($lgsl_protocol[$game]) { case "01": $sts_data = lgsl_query_01($ip, $qport, $game, $request); break; case "05": $sts_data = lgsl_query_05($ip, $qport, $game, $request); break; } //---------------------------------------------------------+ INFO o serweie if ($request == "info") { $sts_data['status'] = 0; $sts_data['players'] = 0; $sts_data['maxplayers'] = 0; } else { $sts_data['status'] = 1; $sts_data['gamemod'] = str_replace(" ", "", $sts_data['gamemod']); // REMOVE EXTRA SPACING FOR THE GAMEMOD if (!$sts_data['mapname']) { $sts_data['mapname'] = "no map"; } // SOMETIMES THE MAP IS NOT SET if (strtolower($sts_data['password']) == "false") { $sts_data['password'] = 0; } // CONVERT TEXT FALSE if (strtolower($sts_data['password']) == "true") { $sts_data['password'] = 1; } // CONVERT TEXT TRUE } $sts_data['ip'] = $ip; $sts_data['port'] = $port; $sts_data['qport'] = $qport; $sts_data['cport'] = $port; $sts_data['gametype'] = $game; } return $sts_data; } //------------------------------------------------------------------------------------------------------------+ function lgsl_query_01($ip, $port, $game, $request) { if (!$fp) { return FALSE; } // CONNECTION WAS REFUSED if (($request == "settings" || $request == "players") && $game != "halflifeold") { $challenge_code = "\xFF\xFF\xFF\xFF\x57"; // CODE NEEDED FOR PLAYERS AND SETTINGS } if ($game == "halflifeold") { if ($request == "info") { $challenge = "\xFF\xFF\xFF\xFFdetails\x00"; } if ($request == "players") { $challenge = "\xFF\xFF\xFF\xFFplayers\x00"; } if ($request == "settings") { $challenge = "\xFF\xFF\xFF\xFFrules\x00"; } } else { if ($request == "info") { $challenge = "\xFF\xFF\xFF\xFFTSource Engine Query\x00"; } if ($request == "players") { $challenge = "\xFF\xFF\xFF\xFFU".$challenge_code; } if ($request == "settings") { $challenge = "\xFF\xFF\xFF\xFFV".$challenge_code; } } if ($request == "settings") { if ($reverse_check[0] == "1") { $tmp = $buffer; // SWAP THE PACKETS AROUND $buffer = $second_packet; $second_packet = $tmp; } } else { } } else { } if ($request == "info") { $sts_data['gamemod'] = $tmp[3]; $sts_data['hostname'] = $tmp[1]; $sts_data['mapname'] = $tmp[2]; $sts_data['players'] = ord($buffer[$place]); $sts_data['maxplayers'] = ord($buffer[$place + 1]); $sts_data['password'] = ord($buffer[$place + 5]); $sts_data['datatype'] = $buffer[0]; // m for steam info $sts_data['version'] = ord($buffer[$place + 2]); // Network Version $sts_data['description'] = $tmp[4]; $sts_data['server_type'] = $buffer[$place + 3]; // D edicated or L isten $sts_data['server_os'] = $buffer[$place + 4]; // W indows or L inux $sts_data['server_secure'] = ord($tmp[14]); // VAC $sts_data['server_bots'] = ord($tmp[15]); // Number of Bots if ($sts_data['datatype'] != "m" && $game != "halflifeold") { return FALSE; // PREVENT USING HALFLIFE FOR HALFLIFE2 SERVERS } return $sts_data; } if ($request == "players") { $player_number = 0; $position = 2; // START POINT do { $player_number++; // INCREMENT PLAYER NUMBER $player[$player_number]['id'] = ord($buffer[$position]); $position ++; // GET PLAYER GAME ID while($buffer[$position] != "\x00" && $position < 4000) { $plejer = @mb_convert_encoding($plejer,"HTML-ENTITIES","auto"); $player[$player_number]['name'] .= $plejer; // COLLECT PLAYER NAME $position ++; } $player[$player_number]['score'] = (ord($buffer[$position + 1])) + (ord($buffer[$position + 2]) * 256) + (ord($buffer[$position + 3]) * 65536) + (ord($buffer[$position + 4]) * 16777216); if ($player[$player_number]['score'] > 2147483648) { $player[$player_number]['score'] -= 4294967296; } $position += 9; } $k=1; $tab = $player; while ($player[$k]) { $k++; } return $player2; } } ?>
I pisze Serwer odpytujesz w taki sposób:
$server['nazwa] = lgsl_query($ip, $port, $typ, "info");
$server['nazwa]['gamemod'] = preg_replace("/[^A-Za-z0-9 \_\-]/", "_", strtolower($sts_data[$k]['gamemod'])); // AND FOLDER USAGE
$server['nazwa]['mapname'] = preg_replace("/[^A-Za-z0-9 \_\-]/", "_", strtolower($sts_data[$k]['mapname']));
$server['nazwa]['player_list'] = lgsl_query($ip, $port, $typ, "players");
I pisze jeszcze :
w ten sposób do tablicy $server['nazwa] zostają wrzucone infomracje o serwerze,
opcjonalnie ostatnia linia dodaje do tablicy $server['nazwa]['player_list'] listę graczy z fragami uporządkowaną malejąco wg fragów
jako $typ dajesz 'halflife' a jak nie działa to 'halflifeold' (ma to chyba jakiś związek z rodzajem serwera...)
I gdzie mam co wpisać, aby wyświetlał mi info o serwie. Bo nie wiem gdzie to mam po wklejać i co trzeba zmienić/dodać.