Хай
Пытаюсь получить онлайн на сайт, но все плохо.
Всю инфу сервера получаю, а текущий онлайн не могу получить никак.
Вот скрипт который использую
[CODE lang="php" title="Index.php"]
<?php
function getSourceServerInfo(string $ip, string $port): array
{
$info = [
'status' => 0,
'ip' => $ip,
'port' => $port
];
$socket = @fsockopen("udp://{$ip}", $port, $errno, $errstr, 1);
if (!$socket) {
return $info;
}
stream_set_timeout($socket, 1);
stream_set_blocking($socket, true);
fwrite($socket, "\xFF\xFF\xFF\xFF\x54Source Engine Query\x00");
$packet = fread($socket, 4096);
@fclose($socket);
if (!$packet) {
return $info;
}
if (substr($packet, 4, 1) != "I") {
exit("NOT A SOURCE SERVER");
}
$packet_array = explode("\x00", substr($packet, 6), 5);
$info['name'] = $packet_array[0];
$info['map'] = $packet_array[1];
$info['game'] = $packet_array[2];
$info['description'] = $packet_array[3];
$packet = $packet_array[4];
$info['players'] = ord(substr($packet, 2, 1));
$info['playersmax'] = ord(substr($packet, 3, 1));
$info['bots'] = ord(substr($packet, 4, 1));
$info['status'] = 1;
$info['vac'] = ord(substr($packet, 8, 1));
return $info;
}
$query = getSourceServerInfo("94.103.88.61", '28333');
echo '<pre>';
echo print_r($query, 1);
echo '</pre>';
echo $info['players'];
?>
[/CODE]
Получаю данные вот такие
Players > 0, хотя по факту на сервере не 0
Кто шарит?
Пытаюсь получить онлайн на сайт, но все плохо.
Всю инфу сервера получаю, а текущий онлайн не могу получить никак.
Вот скрипт который использую
[CODE lang="php" title="Index.php"]
<?php
function getSourceServerInfo(string $ip, string $port): array
{
$info = [
'status' => 0,
'ip' => $ip,
'port' => $port
];
$socket = @fsockopen("udp://{$ip}", $port, $errno, $errstr, 1);
if (!$socket) {
return $info;
}
stream_set_timeout($socket, 1);
stream_set_blocking($socket, true);
fwrite($socket, "\xFF\xFF\xFF\xFF\x54Source Engine Query\x00");
$packet = fread($socket, 4096);
@fclose($socket);
if (!$packet) {
return $info;
}
if (substr($packet, 4, 1) != "I") {
exit("NOT A SOURCE SERVER");
}
$packet_array = explode("\x00", substr($packet, 6), 5);
$info['name'] = $packet_array[0];
$info['map'] = $packet_array[1];
$info['game'] = $packet_array[2];
$info['description'] = $packet_array[3];
$packet = $packet_array[4];
$info['players'] = ord(substr($packet, 2, 1));
$info['playersmax'] = ord(substr($packet, 3, 1));
$info['bots'] = ord(substr($packet, 4, 1));
$info['status'] = 1;
$info['vac'] = ord(substr($packet, 8, 1));
return $info;
}
$query = getSourceServerInfo("94.103.88.61", '28333');
echo '<pre>';
echo print_r($query, 1);
echo '</pre>';
echo $info['players'];
?>
[/CODE]
Получаю данные вот такие
Players > 0, хотя по факту на сервере не 0
Кто шарит?