function cs_online($ip, $port, $request)
{
$fp = @fsockopen("udp://$ip", $port, $errno, $errstr, 1); if (!$fp) { return FALSE; }
if (($request == "settings" || $request == "players"))
{
$challenge_code = "\xFF\xFF\xFF\xFF\x57";
$buffer = fread($fp, 4096); if (!trim($buffer)) { fclose($fp); return FALSE; } $challenge_code = substr($buffer, 5, 4); }
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"; }
$buffer = fread($fp, 4096); if (!$buffer) { fclose($fp); return FALSE; } if ($request == "settings")
{
$second_packet = fread($fp, 4096); if (strlen($second_packet) > 0) {
if ($reverse_check[0] == "1")
{
$tmp = $buffer;
$buffer = $second_packet;
$second_packet = $tmp;
}
$buffer = substr($buffer, 13); $second_packet = substr($second_packet, 9); $buffer = trim($buffer.$second_packet); }
else
{
}
}
else
{
}
if (!trim($buffer)) { return FALSE; } if ($request == "info")
{
$place = strlen($tmp[0].$tmp[1].$tmp[2].$tmp[3].$tmp[4]) + 5; $data['gamemod'] = $tmp[3];
$data['hostname'] = $tmp[1];
$data['mapname'] = $tmp[2];
$data['players'] = ord($buffer[$place]); $data['maxplayers'] = ord($buffer[$place + 1]); $data['password'] = ord($buffer[$place + 5]); $data['datatype'] = $buffer[0];
$data['version'] = ord($buffer[$place + 2]); $data['description'] = $tmp[4];
$data['server_type'] = $buffer[$place + 3];
$data['server_os'] = $buffer[$place + 4];
$data['server_secure'] = ord($tmp[14]); $data['server_bots'] = ord($tmp[15]); $data['botplayers'] = 0;
if ($data['datatype'] != "m")
{
return FALSE;
}
return $data;
}
if ($request == "players")
{
$player_number = 0;
$position = 2;
do
{
$player_number++;
$player[$player_number]['id'] = ord($buffer[$position]); $position ++;
while($buffer[$position] != "\x00" && $position < 4000)
{
$player[$player_number]['name'] .= $buffer[$position];
$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; }
$time = substr($buffer, $position + 5, 4); if (strlen($time) < 4) { return FALSE; } $player[$player_number]['time'] = date("H:i:s", $time); $position += 9;
}
while ($position < strlen($buffer)); return $player;
}
if ($request == "settings")
{
for ($i=1; $i<count($rawdata); $i=$i+2) {
$setting[$rawdata[$i]] = $rawdata[$i+1];
}
return $setting;
}
}}
$data = cs_online("93.171.173.73", "27015", "info");
$players += $data['players']-$data['botplayers'];
$maxplayers += $data['maxplayers']-$data['botplayers'];
echo "<b>IP:Port:</b> ".$data['hostname'];
echo "<br><b>Игроков:</b> ".($data['players']-$data['botplayers'])."/".($data['maxplayers']-$data['botplayers']);
echo "<br><b>Карта:</b> ".$data['mapname'];
//echo "<br><img src='/uploads/images/css/".$data['mapname'].".jpg'>";
$datap = cs_online("93.171.173.73", "27015", "players");
echo "<br><br>";
foreach ($datap as $value) {
echo $value['id']." - <b>".$value['name']."</b> - ".$value['score']."<br>";
}
$data = cs_online("93.171.173.73", "27025", "info");
$players += $data['players']-$data['botplayers'];
$maxplayers += $data['maxplayers']-$data['botplayers'];
echo "<br><br><b>IP:Port:</b> ".$data['hostname'];
echo "<br><b>Игроков:</b> ".($data['players']-$data['botplayers'])."/".($data['maxplayers']-$data['botplayers']);
echo "<br><b>Карта:</b> ".$data['mapname'];
//echo "<br><img src='/uploads/images/css/".$data['mapname'].".jpg'>";
$datap = cs_online("93.171.173.73", "27025", "players");
echo "<br><br>";
foreach ($datap as $value) {
echo $value['id']." - <b>".$value['name']."</b> - ".$value['score']."<br>";
}
$data = cs_online("93.171.173.73", "27050", "info");
$players += $data['players']-$data['botplayers'];
$maxplayers += $data['maxplayers']-$data['botplayers'];
echo "<br><br><b>IP:Port:</b> ".$data['hostname'];
echo "<br><b>Игроков:</b> ".($data['players']-$data['botplayers'])."/".($data['maxplayers']-$data['botplayers']);
echo "<br><b>Карта:</b> ".$data['mapname'];
//echo "<br><img src='/uploads/images/css/".$data['mapname'].".jpg'>";
$datap = cs_online("93.171.173.73", "27050", "players");
echo "<br><br>";
foreach ($datap as $value) {
echo $value['id']." - <b>".$value['name']."</b> - ".$value['score']."<br>";
}
echo "<br><br><b>Общий онлайн:</b> ".$players."/".$maxplayers;