Вопрос по скрипту мониторинга |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|

|
|
Вопрос по скрипту мониторинга |
R@mZeS
|
16.6.2007, 18:00
Сообщение
|
|
|
Зачем?
|
|
|
|
bassaev21073
|
16.6.2007, 20:05
Сообщение
|
|
|
Знаешь что я тебе могу сказать?Долго ты будешь это изучать!Там каждая буква имеет своё значение!Сложно тебе будет! :)
|
|
|
|
inq
|
17.6.2007, 12:09
Сообщение
|
![]() |
Все очень просто. это закодированная черех HEX строка "яяяяTSource Engine Query" Посылает на юдп-сокет запрос (query) в ответе приходит gametype, map, cur_players, max_players, ну и имя сервера, конечно Вот тебе пример работающего мониторинга с полной статистикой сервера: http://amxmodx.game-s.ru/monit/ Писал сам, поэтому исходники не дам Жадина :) У меня всё просто http://63rus.samaradom.ru/phgstats/index.php |
|
|
|
Opilki
|
17.6.2007, 12:55
Сообщение
|
![]() |
Все очень просто. это закодированная черех HEX строка "яяяяTSource Engine Query" Посылает на юдп-сокет запрос (query) в ответе приходит gametype, map, cur_players, max_players, ну и имя сервера, конечно Вот тебе пример работающего мониторинга с полной статистикой сервера: http://amxmodx.game-s.ru/monit/ Писал сам, поэтому исходники не дам У тебя почти тоже самое, разница только в том что можно посмотреть игроков и настройки сервера... А насчет того, что ты нехочеш его давать...вот он(результат тотже) <?php error_reporting(E_ALL); define ("SERVLIST", "servers.txt"); // файл со списком server:port define ("URL", 'stats.php?server='); // скрипт подробной статистики по конкретному серверу define("SERVERSBYPAGE", 10); // количество серверов на страницу function GetServerInfo($server,$port) { $fp = @fsockopen("udp://".$server, $port); if (!$fp) return false; @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)); $start=time(); socket_set_timeout($fp,1); $st=fread($fp,1); $r=socket_get_status($fp); $r=$r["unread_bytes"]; if ($r == 0) { @fclose($fp); return false;} $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)); if ($map == "") return false; $result['map'] = $map; $result['name']= $name; $result['current'] = $current; $result['max'] = $max; return $result; } function ReadServers($servlist) { $file = @fopen($servlist,"rt"); if ($file) { $lines = explode("\n", fread($file, filesize($servlist))); foreach ($lines as $v) { $elem = explode(":",$v); $srv['ip'] = $elem[0]; $srv['port'] = $elem[1]; if (GetServerInfo($srv['ip'],$srv['port'])) $servers[] = $srv; } fclose($file); return $servers; } else return false; } function AddServer($newserver,$servlist) { if (!preg_match('/^\d{1,3}[.]\d{1,3}[.]\d{1,3}[.]\d{1,3}:\d{1,5}$/xs',$_REQUEST['newserver'])) return false; $f = fopen($servlist,"a+"); if (!$f) return false; fputs($f,"\n".$_REQUEST['newserver']); fclose($f); return true; } if (isset($_REQUEST['newserver'])) { if (!preg_match('/^\d{1,3}[.]\d{1,3}[.]\d{1,3}[.]\d{1,3}:\d{1,5}$/xs',$_REQUEST['newserver'])) echo "Ошибка! Невозможно определить введенный сервер или порт"; else { list($newserv['ip'],$newserv['port']) = explode(":",$_REQUEST['newserver']); if (!GetServerInfo($newserv['ip'],$newserv['port'])) echo "Ошибка! Не удалось подключиться к серверу"; elseif (in_array($newserv, ReadServers(SERVLIST))) echo "Сервер уже есть в списке<br />"; elseif (!AddServer($newserver,SERVLIST)) echo "Ошибка при добавлении сервера <br />"; else echo "Сервер добавлен в список <br />"; } echo "<br/><a href=".$_SERVER['SCRIPT_NAME'].">Вернуться</a>"; exit; } $servers = array(); $servers = ReadServers(SERVLIST); $countpages = ceil(count($servers)/SERVERSBYPAGE); if (!isset($_GET['page']) || ((int)$_GET['page'] == 0) || $_GET['page'] < 1) $_GET['page'] = 1; { for ($i=0; $i < ($_GET['page']-1)*SERVERSBYPAGE; $i++) array_shift($servers); while (count($servers) > SERVERSBYPAGE) array_pop($servers); } ?> <table width='50%' cellpadding='3' cellspacing='3' bordercolor='#333333'> <tr> <td><div align='center'>Сервер:</div></td> <td><div align='center'>Название:</div></td> <td><div align='center'>Карта:</div></td> <td><div align='center'>Игроков:</div></td> <td><div align='center'>Статус:</div></td> </tr> <?php foreach ($servers as $k=>$v) { $serv = GetServerInfo($v['ip'],$v['port']); if ($serv) echo "<tr> <td><div align='center'> <a href=".URL.$v['ip']." onmouseover=\"return overlib('На сервере сейчас играют:');\" onmouseout=\"return nd();\">".$v['ip'].":".$v['port']."<a></div></td> <td><div align='center'>".$serv['name']."</div></td> <td><div align='center'>".$serv['map']."</div></td> <td><div align='center'>".$serv['current']."/".$serv['max']."</div></td> <td height='50'><div align='center'> <font color=green><b>Online</b></font> </div></td></tr>"; } echo "<br /></table>"; if (count($servers) > SERVERSBYPAGE) { echo "<br /><br /><p>Страницы: </p>"; for ($i = 1; $i <= $countpages; $i++); { if ($i == $_GET['page'] ) echo "[".$i."] "; else echo "[<a href=\"".$_SERVER['SCRIPT_NAME']."?page=$i\">$i</a>] "; } } else echo"Мониторинг all Half-Life mode's"; echo "<br /> <p>Добавить сервер:</p> <form action=".$_SERVER['SCRIPT_NAME']."> <input name=\"newserver\" type=\"text\" value=\"IP:порт\" onfocus=\"if(this.value=='IP:порт')this.value='';\" onblur=\"if(this.value=='')this.value='IP:порт';\"> <input type=\"submit\" value=\"Добавить\"> </form>"; ?> А вот скрипт подробной статистики: <?php error_reporting(E_ALL); error_reporting(0); if (!isset($port)) { $port='27015'; } if (!isset($server)) { $server='89.169.79.236'; } $qw=chr(32); $fp = @fsockopen ("udp://".$server,$port); @stream_set_timeout($fp, 3); if (!$fp) return false; { fwrite($fp,"\377\377\377\377players".chr(10)); //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); $playersn=ord(substr($st,5,1)); $st=substr($st,6); } if ($playersn != 0 ) { echo ("\n<meta http-equiv=\"content-type\" content=\"text/html; charset=windows-1251\"> <title>Кто играет?</title> <body> <center> <table width=\"100\" border=\"0\" cellpadding=\"2\" cellspacing=\"1\" align=\"left\" bgcolor=\"black\"> <tr> <td colspan=\"3\"><center><font color=white>Сейчас на сервере $server : </font></center></td> </tr> <tr> <td bgcolor=\"#ffffff\" width=\"15\">N</td> <td bgcolor=\"#ffffff\" width=\"250\">Игрок:</td> <td bgcolor=\"#ffffff\">Kills:</td> </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> <td bgcolor=\"#ffffff\" width=\"15\">$n</td> <td bgcolor=\"#ffffff\" width=\"250\">$name</td> <td bgcolor=\"#ffffff\">$kills</td> </tr>\n"); } echo("</table></body>"); } else echo "Ошибка в просмотре статистики сервера </html>"; ?> |
|
|
|
lag
|
17.6.2007, 19:49
Сообщение
|
![]() |
А никто не может дать исходник для html просто есть бесплатный форум на юкосе (пока учусь скоро перейду на платный нормальный сайт)
|
|
|
|
kams
|
17.6.2007, 21:08
Сообщение
|
|
|
люди дайте кто нить код для мониторинга=+)) буду признателен. тока скажите куда что вписывать
|
|
|
|
skybet
|
17.6.2007, 21:25
Сообщение
|
![]() |
мониторинг игровых серверов Source, HL1
Стал доступен сервис мониторинга игровых серверов, работающих на движке HL, Source. Для того чтобы на вашей странице отображалось состояние какого-либо сервера Source (CSS, DODS), достаточно в её текст ввести следующее: <img style="border:1px solid #565656;" width="150" height="185" src="http://day-of-defeat.ru/monitor/адрес_сервера/порт_сервера/full.jpg"> Это изображение, следовательно, вы можете использовать его на любом хостинге, не нужны никакие скрипты. Примеры вы можете видеть ниже: Если вместо картинки вы видите надпись, значит я ещё не закачал картинку этой карты, вскоре это исправится. Так же монитор можно использовать для CounterStrike:Source. Картинки карт для CSS закачаны. Пример: Вы можете использовать мини-вариант мониторинга (картинка размером 350х50) там, где вы не можете вставить полноразмерную картинку, например в вашей подписи на форумах. Для того, чтобы вставить мини-вариант мониторинга, используйте следующий код: <img width="350" height="50" src="http://day-of-defeat.ru/monitor/адрес_сервера/порт_сервера/small.jpg"> Для подписи в форум просто укажите ссылку на картинку - http://day-of-defeat.ru/monitor/адрес_серв...рвера/small.jpg Пример: Указывайте все параметры: порт, адрес сервера, иначе при отображении могут возникнуть проблемы. Для использования мониторинга серверов на движке HL1 (CS 1.6, DOD) используйте следующий код: <img style="border:1px solid #565656;" width="150" height="185" src="http://day-of-defeat.ru/monitor/cs/?s=адрес_сервера&p=порт_сервера" вот что нарыл сайт не вылаживаю здеся запрещено с тя + |
|
|
|
skybet
|
18.6.2007, 23:48
Сообщение
|
![]() |
lag,
согласен с тобой на все 100 скрипт дело хорошее но вот я некак немогу доделать свой а пока сижу на том что выложил |
|
|
|
inq
|
19.6.2007, 3:56
Сообщение
|
![]() |
|
|
|
|
skybet
|
19.6.2007, 4:15
Сообщение
|
![]() |
inq,
неплоха |
|
|
|
ROSS
|
19.6.2007, 9:02
Сообщение
|
![]() |
Блин я думаю легче Psychostats поставить там и так есть мониторинг
|
|
|
|
kams
|
19.6.2007, 11:46
Сообщение
|
|
|
отлично=) спасибо большое. Только у меня вопрос я прописываю доменное имя , а в списке появляется ип. что делать? =) |
|
|
|
lag
|
19.6.2007, 15:47
Сообщение
|
![]() |
|
|
|
|
kams
|
19.6.2007, 23:29
Сообщение
|
|
|
|
|
|
|
inq
|
20.6.2007, 5:08
Сообщение
|
![]() |
|
|
|
|
kams
|
21.6.2007, 0:38
Сообщение
|
|
|
|
|
|
|
microb
|
23.6.2007, 23:00
Сообщение
|
![]() |
люди выложите плизз скрипт чтобы мониторинг отображался на сайте в отдельном блоке желательно в html
|
|
|
|
![]() ![]() |