Блок мониторинга CS1.6

Категория: / Документы / Документы / Разное
$server="127.0.0.1";
 
$qw=chr(32);
$fp = fsockopen ("udp://".$server,"27015");
if (!$fp) {
    echo "ERROR: $errno - $errstr<br>\n";
    } else {
    fwrite($fp,"\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00".chr(10));
    $st=fread($fp,1);
    $r=socket_get_status($fp);
    $r=$r["unread_bytes"];
    $st.=fread($fp,$r);
    fclose($fp);
    $st=substr($st,5);
    $address=SubStr($st,0,StrPos($st,chr(0)));
    $address=str_replace(chr(0),"|",$address);
    $st=SubStr($st,StrPos($st,chr(0))+1);
    $name=SubStr($st,0,StrPos($st,chr(0)));
    $st=SubStr($st,StrPos($st,chr(0))+1);
    $map=SubStr($st,0,StrPos($st,chr(0)));
    $st=SubStr($st,StrPos($st,chr(0))+1);
    $st=SubStr($st,StrPos($st,chr(0))+1);
    $st=SubStr($st,StrPos($st,chr(0))+1);
    $current=ord(SubStr($st,0,1));
    $max=ord(SubStr($st,1,1));
    }
 
 
$show_map='';
if (file_exists('/images/'.$map.'.jpg'))
  $show_map="<img src=http://".$server_name."/monitoring/images/".$map.".jpg>";
else
  $show_map='<div style="padding:5px;width:100px;height:60px;background-color:black;color:white;"><br/><br/>нет изображения</div><br clear="all"/>';
 
$content=("
 
<div align='center' style='padding:6px'><b>$map</b></div>
 
    <table  border=\"0\" cellpadding=\"1\" cellspacing=\"1\" >
  </tr> <td ><center>$show_map</center></td>
 </table>
<table  class=\"gensmall\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\"  >
<tr>
    <td  width=\"60\">
      <p><b>Сервер:</b></p>
    </td>
    <td ><b>$name</b></td>
 </tr>
  <tr>
    <td  width=\"60\"><b>IP-адрес:</b></td>
    <td ><b>$address</b></td>
  </tr>
  <tr>
    <td  width=\"60\"><b>MOD:</b></td>
    <td  ><b>Counter-Strike</b></td>
  </tr>
  <tr>
    <td  width=\"15\"><b>Игроков:</b></td>
    <td ><b>$current</b></td>
  </tr>
  <tr>
    <td  width=\"15\"><b>Макс:</b></td>
    <td ><b>$max</b></td>
  </tr>
 
</table>
"
);
 
 
echo $content;


Данный код выводит информацию о текущей карте в Counter Strike и изображение карты, при ее наличии.

Для получения дополнительнрй информации по игровым серверам из скрипта для практически любых игр можно посмотреть
проект http://sourceforge.net/projects/qstat/ , при условии что сервер позволит вам выполнить бинарник неизвестного происхождения.

Для примера (шелл скрипт, результы которого с легкостью парсятся в php):

#/bin/sh
echo "Quake 3 Status\n"
/usr/local/bin/qstat -P -q3s 127.0.0.1
echo "\nCS 1.6 (freebsd) Status\n"
/usr/local/bin/qstat -P -a2s 127.0.0.1


Для того чтобы создать блок в Skillz, создаем статью с кодом php, затем в админ панели создаем блок blog::make_php_box
с параметром - идентификатором созданной статьи и цепляем блок к группе, которая отображается на нужной странице.

Автор: j4ck