Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Мониторинг CS

27K
07 июня 2007 года
wexon
4 / / 07.06.2007
У меня есть скрипт который выводит информацию об игровом сервере, то есть мониторинг (Counter-Strike). Проблема заключается в том что список играющих на сервере формируется не известно по чему, но наверно по времени нахождении на сервере (кто зашёл первее), а мне надо формирование списка по количеству фрагов...
Сам код скрипта...
Код:
<?PHP
$server="xxx.xxx.xxx.xxx";
$port='27015';
$map_images_path='/monitoring/images/';

// hl new query part

$qw=chr(32);
$fp = fsockopen ("udp://".$server,$port);
if (!$fp)
    {
      echo "ERROR: $errno - $errstr<br>\n";  
    }
    else
    {
        fwrite($fp,"\xFF\xFF\xFF\xFFTSource Engine Query\x00".chr(10));
        $st=fread($fp,1);
        if (!$st)
        {
            echo("<b>Сервер отключен</b>");
            $address=$server.$port;
            $max="0";
            $current="0";
            $name="Unknown";
            $map="unknownmap";
        }
        else
        {  
            $r=socket_get_status($fp);
            $r=$r["unread_bytes"];
            $st.=fread($fp,$r);
            $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));
        };
    };
fclose($fp);    

$fp = fsockopen ("udp://".$server,$port);
if (!$fp)
    {
        echo "ERROR: $errno - $errstr<br>\n";
    }
    else
    {
        fwrite($fp,"\xFF\xFF\xFF\xFFW\x00".chr(10));  
        $st=fread($fp,1);
        if ($st)
        {
            $r=socket_get_status($fp);
            $r=$r["unread_bytes"];
            $st.=fread($fp,$r);  
            $sbstr=substr($st,5,5);
            fwrite($fp,"\xFF\xFF\xFF\xFFU".$sbstr."\x00".chr(10));  
            $st=fread($fp,1);
            if ($st)
            {  
                $r=socket_get_status($fp);
                $r=$r["unread_bytes"];
                $st.=fread($fp,$r);
                $playersn=ord(substr($st,5,1));
                $st=substr($st,6);
                $show_map="<img src=http://".$server.$map_images_path.$map.".jpg>";
                echo("<body> \n \n");
                echo("  <table>\n\n");
                echo("      <tr>\n");
                echo("          <td width=\"100\"><b>Сервер:</b></td><td width=\"250\">".$name."</td>\n");
                echo("      </tr>\n");
                echo("      <tr>\n");
                echo("          <td width=\"100\"><b>IP:</b></td><td>".$address."</td>\n");
                echo("      </tr>\n");    
                echo("      <tr>\n");
                echo("          <td width=\"100\"><b>Карта:</b></td><td>".$map."</td>\n");
                echo("      </tr>\n");
                echo("      <tr>\n");
                echo("          <td width=\"100\"><b>Игроков:</b></td><td>".$current."/".$max."</td>\n");
                echo("      </tr>\n\n");
                echo("  </table>\n\n");
                echo("  <p>$show_map</p>\n\n");
                echo("  <table border=1 cellspacing=1 cellpadding=1 >\n\n");    
                echo("      <tr>\n");
                echo("          <td align=\"center\" width=\"15\">#</td>\n");
                echo("          <td align=\"center\" width=\"250\"><b>Имя игрока</b></td>\n");
                echo("          <td align=\"center\" width=\"70\"><b>Фрагов</b></td>\n");
                echo("      </tr>\n");
                for ($i=1;$i<=$playersn;$i++)
                {
                    $n=ord(substr($st,0,1));
                    $st=substr($st,1);
                    $name=SubStr($st,0,StrPos($st,chr(0)));
                    $kills=ord(substr($st,StrPos($st,chr(0))+1,1));
                    if ($kills==255){$kills=-1;}
                    if ($kills==254){$kills=-2;}
                    if ($kills==253){$kills=-3;}
                    if ($kills==252){$kills=-4;}
                    $st=substr($st,StrPos($st,chr(0)));
                    $st=substr($st,9);
                    echo("      <tr>\n");
                    echo("          <td width=\"15\">$n</td>\n");
                    echo("          <td width=\"250\">  $name</td>\n");
                    echo("          <td align=\"center\" width=70>$kills</td>\n");
                    echo("      </tr>\n");
                };
                echo("\n  </table>\n\n");    
                echo("</body>\n");    
            };
        };
};
fclose($fp);
?>


Наверно вот в этой части надо чтото добавить
Код:
$n=ord(substr($st,0,1));
                    $st=substr($st,1);
                    $name=SubStr($st,0,StrPos($st,chr(0)));
                    $kills=ord(substr($st,StrPos($st,chr(0))+1,1));
                    if ($kills==255){$kills=-1;}
                    if ($kills==254){$kills=-2;}
                    if ($kills==253){$kills=-3;}
                    if ($kills==252){$kills=-4;}
                    $st=substr($st,StrPos($st,chr(0)));
                    $st=substr($st,9);
                    echo("      <tr>\n");
                    echo("          <td width=\"15\">$n</td>\n");
                    echo("          <td width=\"250\">  $name</td>\n");
                    echo("          <td align=\"center\" width=70>$kills</td>\n");

Я тут у вас почитал всякие статейки, может это можно сделать с помощью sort() но к сожелению на незнаю как это внедрить, пытался но офибки одни :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог