Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

6 страниц V  « 3 4 5 »

Довести скрипт мониторинга до ума

, доделать готовое решение
Статус пользователя Apatia
сообщение 13.9.2014, 20:48
Сообщение #61


Стаж: 16 лет
Город: Москва

Сообщений: 206
Благодарностей: 42
Полезность: < 0

Цитата(Orty_Hart @ 13.9.2014, 18:22) *
miRror,
Вон исходник выше. Всё прописано правильно, но не работает.

Apatia,
Попробуй так:
Код
if(file_exists("maps/$server_mapname.jpg")) {$mapimg = "$server_mapname.jpg";}


Проверьте права на папку maps, должны быть 0777
чтоб проверить, поменяйте первую строку в файле на:
Код
<?php
echo substr(sprintf('%o', fileperms('/maps')), -4);
exit;


открой сам файл (т.е. по адресу http://site.ru/server.php)
Если там что угодно, но не 0777
Замените всё что вы добавили на:

Код
<?php
chmod("maps", 0777);
echo substr(sprintf('%o', fileperms('/maps')), -4);
exit;


после, если в результате будет 0777, уберите эти 3 строчки (которые добавили выше), и проверьте карту снова....


Все сделал как написано, все равно ничего кроме ноу-имг не показывает.
Я уже даже и ссылку до папки указал, все равно подставляет ноу-имг.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 13.9.2014, 20:52
Сообщение #62
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

Apatia,
а права доступа на папку какие? 0777?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Apatia
сообщение 13.9.2014, 20:54
Сообщение #63


Стаж: 16 лет
Город: Москва

Сообщений: 206
Благодарностей: 42
Полезность: < 0

Извиняюсь, затупил, все работает!

P.S.: только я не понял как задать размеры картинки? width="" height="" обычные на работают(

Отредактировал: Apatia, - 13.9.2014, 21:05
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 13.9.2014, 22:26
Сообщение #64
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

Apatia,
в js экранируй "
т.е. вместо " пиши \"

Цитата
width=\"120px\" height=\"120px\"


в результате будет width="120px"....
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Apatia
сообщение 13.9.2014, 23:26
Сообщение #65


Стаж: 16 лет
Город: Москва

Сообщений: 206
Благодарностей: 42
Полезность: < 0

Цитата(Orty_Hart @ 13.9.2014, 22:26) *
Apatia,
в js экранируй "
т.е. вместо " пиши \"



в результате будет width="120px"....


Спасибо большое!
А список игроков вообще тяжко впихнуть?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 14.9.2014, 13:11
Сообщение #66
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

Apatia,


а список игроков, я не знаю как вам сделать.
можно отсюда вытащить....
но боюсь вы не сможете) а у меня сейчас времени нету(
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Apatia
сообщение 14.9.2014, 13:57
Сообщение #67


Стаж: 16 лет
Город: Москва

Сообщений: 206
Благодарностей: 42
Полезность: < 0

Цитата(Orty_Hart @ 14.9.2014, 13:11) *
Apatia,


а список игроков, я не знаю как вам сделать.
можно отсюда вытащить....
но боюсь вы не сможете) а у меня сейчас времени нету(


Ну да, моему мозгу такое не под силу ^.^
Пробовал сделать из обычных мониторингов, чтобы ссылка была отдельная на список
такого типа: http://site.ru/player_list.php?ip123.456.78.9:27015 не получилось ничего)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 14.9.2014, 16:21
Сообщение #68
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

Apatia,
Я пробовал сделать вам список игроков. Брал готовый код, но не получилось. Там ошибки были...
А когда у меня был код один, так там работало всё отлично.... только вот его потерял((

Вам кстати тоже можно сделать адрес не такой: http://site.ru/ip=...&port=....
А такой например: http://site.ru/server=127.0.0.1:27017
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Apatia
сообщение 14.9.2014, 16:47
Сообщение #69


Стаж: 16 лет
Город: Москва

Сообщений: 206
Благодарностей: 42
Полезность: < 0

Цитата(Orty_Hart @ 14.9.2014, 16:21) *
Apatia,
Я пробовал сделать вам список игроков. Брал готовый код, но не получилось. Там ошибки были...
А когда у меня был код один, так там работало всё отлично.... только вот его потерял((

Вам кстати тоже можно сделать адрес не такой: http://site.ru/ip=...&port=....
А такой например: http://site.ru/server=127.0.0.1:27017


ого, было бы круто. А как так сделать?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 14.9.2014, 17:15
Сообщение #70
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

Apatia,
Сделал как всё и просил)

Тестируй
Код
<?php
    list($ip, $port) = explode(":", $_GET["server"]);
    $fp = @fsockopen("udp://".$ip, $port, $errno, $errstr);
    
    $server_name = "unknown";
    $server_online = "<font style=\"color: red;\">Выкл.</font>";
    $server_player = "??";
    $server_maxplayer = "??";
    $server_mapname = "unknown";
    $mapimg = "nomap.png";
    
    if($fp)
    {
        stream_set_timeout($fp, 2);
        
        fwrite($fp, "\xFF\xFF\xFF\xFFTSource Engine Query\x00");
        $buffer = fread($fp, 8096);
        fclose($fp);
        
        if($buffer)
        {
            $tmp = explode("\x00", $buffer);
            $place = strlen($tmp[0].$tmp[1].$tmp[2].$tmp[3].$tmp[4]) + 5;
            $version = ord($buffer[4]);
            $server_online = "<font style=\"color: green;\">Вкл.</font>";
            $server_player = ord($buffer[$place]);
            $server_maxplayer = ord($buffer[$place + 1]);
            $mapimg = "nomap.png";
            
            if($version == 109)
            {
                $server_name = $tmp[1];
                $server_mapname = $tmp[2];
            }
            else
            {
                $server_name = substr($tmp[0], 6);
                $server_mapname = $tmp[1];
            }
            
            if(file_exists("maps/". $server_mapname .".jpg")) {$mapimg = "$server_mapname.jpg";}
        }
    }
    
    function playersInfo()
    {
        $player = array();
        global $ip, $port;
        $fp = @fsockopen("udp://".$ip, $port);
        
        if($fp)
        {
            stream_set_timeout($fp, 2);
            
            fwrite($fp, "\xFF\xFF\xFF\xFF\x55\xFF\xFF\xFF\xFF");
            $buffer = fread($fp, 4096);
            
            if(trim($buffer))
            {
                fwrite($fp, "\xFF\xFF\xFF\xFF\x55".substr($buffer, 5, 4));
                $buffer = fread($fp, 4096);
                
                if($buffer)
                {
                    $player_number = 0;
                    $position = 2;
                    do
                    {
                        $player_number++;
                        $player[$player_number]['name']= "";
                        $player[$player_number]['id'] = ord($buffer[$position]);
                        $position++;
                        
                        while($buffer[$position] != "\x00" && $position < 400000)
                        {
                            $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;
                        if($player[$player_number]['score'] > 100) $player[$player_number]['score'] = 0;
                        $time = substr($buffer, $position + 5, 4);              
                        if(strlen($time) < 4)
                            return FALSE;              
                        list(,$time) = unpack("f", $time);                
                        $time = mktime(0, 0, $time);                          
                        $player[$player_number]['time'] = date("H:i:s", $time);  
                        $position += 9;
                    }
                    while($position < strlen($buffer));                  
                    return $player;
                }
            }
        }
    }
    
    header("Content-Type: text/javascript");
    $pl_score = "''";
    $pl_time = "''";
    $players_info = playersInfo();
    $i = 0;
    echo "var pl_name = new Array(''";
    foreach($players_info as $player)
    {
        if($player["name"])
        {
            $player["name"] = str_replace("\n", "", $player["name"]);
            $player["name"] = str_replace("\r", "", $player["name"]);
            
            $i++;
            
            $pl_score .= ", '$player[score]'";
            $pl_time .= ", '$player[time]'";
            
            echo ", '". htmlspecialchars($player["name"], ENT_QUOTES) ."'";
        }
    }
    echo ");\n";
    echo "var pl_score = new Array($pl_score);\n";
    echo "var pl_time = new Array($pl_time);\n";
    echo "var players = $i;\n";
    echo "var info = {";
    echo "'ip_port':'$ip:$port', 'hostname':'$server_name', 'map':'$server_mapname', 'mapimg':'<img src=\"../images/maps/$mapimg\" alt=\"\"/>', 'players':'$server_player', 'maxplayers':'$server_maxplayer', 'status':'$server_online'";
    echo "};";
?>


чтоб вывести список игроков:
Код
<script type="text/javascript">
for(var i = 1; i <= players; i++) {
    document.write(pl_name[i] + " - " + pl_score[i] + " - " + pl_time[i] + "<br/>");
}
</script>]


чтоб получить информацию о сервере:
Код
<script type="text/javascript" src="3.php?server=127.0.0.1:27017"></script>


Остальные параметры (карта, игроки и т.д.) по старому.
p.s. - думаю оформление уже сами придумаете как))

Отредактировал: Orty_Hart, - 14.9.2014, 17:16
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя onotole
сообщение 14.9.2014, 17:26
Сообщение #71


Иконка группы

Стаж: 13 лет

Сообщений: 1572
Благодарностей: 1119
Полезность: 1550

Меценат Меценат

Я одного не могу понять. Почему javascript? почему нельзя напрямую выводить инфомацию?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 14.9.2014, 17:28
Сообщение #72
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

onotole,
я сам не знаю(
автор скорей всего пишет для сайта ucoz с использованием бесплатного хостинга....
ну или для мониторинга)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Apatia
сообщение 14.9.2014, 18:22
Сообщение #73


Стаж: 16 лет
Город: Москва

Сообщений: 206
Благодарностей: 42
Полезность: < 0

Orty_Hart,
Огромное спасибо! Все отлично работает.
Только у первого или двух первых имен в списке, вот такие знаки �D ��$D или пол ник проглатывает.
Ну да ладно, просто супер. Спасибо.

Отредактировал: Apatia, - 14.9.2014, 18:24
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AmsterdamNV
сообщение 3.12.2014, 23:27
Сообщение #74
Стаж: 11 лет

Сообщений: 2
Благодарностей: 1
Полезность: 0

Доброго времени суток! Есть проблемка, иногда вместо карты выводит имя пользователя (хотя пробывал и изменненый вариант скрипта, проблема осталась), подскажите пожалуйста, как её можно решить. Заранее спасибо!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 5.12.2014, 18:45
Сообщение #75
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

AmsterdamNV,
тоже сталкивался с этим...
решил так:

Код
fwrite($fp, "\xFF\xFF\xFF\xFFTSource Engine Query\x00");
$buffer = fread($fp, 4096);
fclose($fp);

if($buffer)
{
    $buffer = substr($buffer, 4);
    if(ord($buffer[0]) === 0)
        тут ваша ошибка появится.
а дальше код, если ошибок нет)
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя looks12
сообщение 5.12.2014, 22:33
Сообщение #76


Стаж: 13 лет

Сообщений: 305
Благодарностей: 51
Полезность: 172

Меценат Меценат

Вот, специально для тебя сделано:
http://gamemon.info/page/api/
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AmsterdamNV
сообщение 7.12.2014, 0:08
Сообщение #77
Стаж: 11 лет

Сообщений: 2
Благодарностей: 1
Полезность: 0

Цитата(Orty_Hart @ 5.12.2014, 18:41) *
AmsterdamNV,
тоже сталкивался с этим...
решил так:

Код
fwrite($fp, "\xFF\xFF\xFF\xFFTSource Engine Query\x00");
$buffer = fread($fp, 4096);
fclose($fp);

if($buffer)
{
    $buffer = substr($buffer, 4);
    if(ord($buffer[0]) === 0)
        тут ваша ошибка появится.
а дальше код, если ошибок нет)
}

Спасибо за ответ!) Час планирую вывод подробной информации о игроках и ведение статы игроков по серверам попробовать сделать. Если интересно, отпишусь о результатах) трудно было найти нормальное описание api к движку HL. Спасибо вам)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя nividimka
сообщение 8.1.2015, 12:13
Сообщение #78


Стаж: 16 лет

Сообщений: 44
Благодарностей: 3
Полезность: 46

Код
var info = {'ip_port':'62.122.204.250:27015', 'hostname':'[UA/Public/128] Frankivsk', 'map':'de_dust2', 'mapimg':'<img src=".../images/maps/de_dust2.jpg" alt=""/>', 'players':'100', 'maxplayers':'108', 'status':'<font style="color: green;">Онлайн</font>'};


Что делать с maxplayers и players? Максимум на сервере может быть 24 игрока. В тот момент на сервере играло 8 человек... А показывает 100/108...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 9.1.2015, 23:26
Сообщение #79
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

nividimka,
дайте ваш скрипт.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Ermak
сообщение 1.3.2015, 1:11
Сообщение #80


Стаж: 11 лет

Сообщений: 37
Благодарностей: 1
Полезность: < 0

Очень интересная тема, я сейчас тоже с ней работаю но у меня почему то не работает я не понимаю, уже по всякому переделал.
Вот мой код
Код
<?php
$fp = @fsockopen("udp://217.77.51.229", 27015, $errno, $errstr);
    
   $server_name = "unknown";
   $server_online = "<font style=\"color: red;\">Выкл.</font>";
   $server_player = "??";
   $server_maxplayer = "??";
   $server_mapname = "unknown";
   $mapimg = "offline.gif";
    
   if($fp)
   {
      stream_set_timeout($fp, 2);
      
      fwrite($fp, "\xFF\xFF\xFF\xFFTSource Engine Query\x00");
      $buffer = fread($fp, 8096);
      fclose($fp);
      
      if($buffer)
      {
         $tmp = explode("\x00", $buffer);
         $place = strlen($tmp[0].$tmp[1].$tmp[2].$tmp[3].$tmp[4]) + 5;
         $version = ord($buffer[4]);
         $server_online = "<font style=\"color: green;\">Вкл.</font>";
         $server_player = ord($buffer[$place]);
         $server_maxplayer = ord($buffer[$place + 1]);
         $mapimg = "online.gif";
          
         if($version == 109)
         {
            $server_name = $tmp[1];
            $server_mapname = $tmp[2];
         }
         else
         {
            $server_name = substr($tmp[0], 6);
            $server_mapname = $tmp[1];
         }
          
         if(file_exists("../img/maps/". $server_mapname .".jpg" )) {$mapimg = $server_mapname;}
      }
   }
    

   echo
    '<table>
    <tr>
        <td>Имя сервера</td>
        <td>Название карты</td>
        <td>Игроки</td>
        <td>Максимально</td>
        <td>Статус</td>
    </tr>
    <tr>
        <td>'.$server_name.'</td>
        <td>'.$server_mapname.'</td>
        <td>'.$server_player.'</td>
        <td>'.$server_maxplayer.'</td>
        <td>'.$server_online.'</td>
    </tr>
    </table>';
?>


Интересно то, что вариант с сайта http://host.gameamx.ru/japi/217.77.51.229/27015/utf8 работает
Код
<script type="text/javascript" src="http://host.gameamx.ru/japi/217.77.51.229/27015/utf8"></script>
<strong>Название:</strong> <script type="text/javascript">document.write(info.hostname);</script><br/>
<strong>IP адрес:</strong> <script type="text/javascript">document.write(info.ip_port);</script><br/>
<strong>Игровой мод:</strong> <script type="text/javascript">document.write(info.gamemode);</script><br/>

а мой вариант не работает, что такое

Отредактировал: Ermak, - 1.3.2015, 1:08
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
6 страниц V  « 3 4 5 »
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: