Доброго времени суток.
У меня есть следующий PHP скрипт:
Код
<?php
function getmicrotime()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
function csserver($port)
{
$server['ip'] = 'opaopa.ru'; $server['port'] = $port;
$timeStart = getmicrotime();
$fp = fsockopen('udp://'.$server['ip'], $server['port']);
stream_set_timeout($fp, 2);
if($fp)
{
fwrite($fp,"\xFF\xFF\xFF\xFFTSource Engine Query\x00\r");
$temp = fread($fp, 5);
$status = socket_get_status($fp);
if($status['unread_bytes']>0)
{
$temp = fread($fp, $status['unread_bytes']);
$server['ping'] = (int)((getmicrotime() - $timeStart)*1000);
$array = array();
$pos = 0;
while($pos !== false)
{
$pos2 = strpos($temp, "\0", $pos+1);
$array[] = substr($temp, $pos+1, $pos2-$pos)."\n";
$pos = $pos2;
}
$server['status'] = '<font color="green">включен</font>';
if(trim($array[2]) == 'cstrike')
{
$server['players'] = ord($array[5][0]);
$server['maxplayers'] = ord($array[5][1]);
$server['name'] = trim($array[0]);
$server['map'] = trim($array[1]);
}
else
{
$server['players'] = ord($array[5][0]);
$server['maxplayers'] = ord($array[5][1]);
$server['name'] = trim($array[1]);
$server['map'] = trim($array[2]);
}
$nf = @fopen("names/".$server['port'], "w+");
@fwrite($nf, $server['name']);
@fclose($nf);
}
else
{
$server['status'] = '<font color="red">выключен</font>';
$server['players'] = '–';
$server['maxplayers'] = '–';
$nf = fopen("names/".$server['port'], "r");
$server['name'] = fread($nf, filesize("names/".$server['port']));
fclose($nf);
$server['map'] = '–';
}
}
print '
<center><span style="position: relative; top: 0.5em; background-color: #fff;"> '.$server['name'].' — '.$server['ip'].':'.$server['port'].' </span></center>
<div style="border: 1px solid #666; padding-top: 1em; padding-bottom: 1em;">
<table style="height: 30px;"><tr><td width="300"><b>Статус:</b> '.$server['status'].'</td><td width="300"><b>Онлайн:</b> '.$server['players'].'/'.$server['maxplayers'].'</td><td width="300"><b>Карта:</b> '.$server['map'].'</td></tr></table>';
echo '</div>';
}
?>
Как добавить список игроков на сервере?
Я с сокетами просто не дружу, по этому прошу знающих =)