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

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

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

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

> Информационная доска

Данный раздел предназначен для обсуждения, а также решения технических проблем связанных с серверной частью. Обсуждения касательно игровых клиентов ведутся здесь.

1. Во время создания новой темы аккуратно оформляйте её, не допускайте грамматических ошибок.
2. Описывая проблему старайтесь, как можно больше рассказать о ней, а так же о действиях с сервером после которых она возникла, по возможности подкрепите информацию логами.
3. Если вопрос касается проблемы в работе сервера, то обязательно прикрепляйте список плагинов (введите в консоли сервера: meta list и amxx plugins), настройки server.cfg, логи. Так же указывайте операционную систему, версию HLDS (введите к консоли сервера: version) и где хостится сервер.

Длинную информацию скрывайте под спойлер.
2 страниц V   1 2

Вопрос по скрипту мониторинга

Статус пользователя Opilki
сообщение 15.6.2007, 10:36
Сообщение #1


Стаж: 19 лет

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

Вообщем вот php функция для мониторинга сервера.

function GetServerInfo($server,$port)
{
$fp=fsockopen("udp://".$ip_addr,$port);
@fwrite($fp,"\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x 45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00 ".chr(10));
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;
}


Так вот у меня вопрос...я так понимаю что строка
@fwrite($fp,"\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x 45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00 ".chr(10));
посылает серверу какой-то пакет...так вот может ктонить мне подробно разъяснить что это за пакет и пояснить что конкретно значит вот это:\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x 45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00
То что это пакет который возвращает такие параметры как карта,кол-во игроков и тд я понял и хотелосьбы узнать что из этой строки конкретно карта, а что кол-во игроков...вообщем хачу значть все о этой строчке:)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
R@mZeS
сообщение 16.6.2007, 18:00
Сообщение #2
Стаж: 19 лет

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

Зачем?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Opilki
сообщение 16.6.2007, 19:08
Сообщение #3


Стаж: 19 лет

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

Затем что я очень любопытный. А еще никто не знает как получить такие значения как ап тайм сервера, количество заходов на него, ники игроков которые сейчас играют и сколько у них фрагов, за какие они играют команды?...вообщем все что можно отобразить в мониториге сервера...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
bassaev21073
сообщение 16.6.2007, 20:05
Сообщение #4
Стаж: 19 лет

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

Знаешь что я тебе могу сказать?Долго ты будешь это изучать!Там каждая буква имеет своё значение!Сложно тебе будет! :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя inq
сообщение 17.6.2007, 12:09
Сообщение #5


Стаж: 19 лет

Сообщений: 147
Благодарностей: 7
Полезность: 48

Цитата(AlMod @ 17.6.2007, 11:21) *
Все очень просто. это закодированная черех 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
Сообщение #6


Стаж: 19 лет

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

Цитата(AlMod @ 17.6.2007, 11:21) *
Все очень просто. это закодированная черех 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>Страницы:&nbsp;</p>";

for ($i = 1; $i <= $countpages; $i++);
{

if ($i == $_GET['page'] ) echo "[".$i."]&nbsp;";
else
echo "[<a href=\"".$_SERVER['SCRIPT_NAME']."?page=$i\">$i</a>]&nbsp;";

}
}
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
Сообщение #7


Стаж: 19 лет

Сообщений: 75
Благодарностей: 5
Полезность: 56

А никто не может дать исходник для html просто есть бесплатный форум на юкосе (пока учусь скоро перейду на платный нормальный сайт)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kams
сообщение 17.6.2007, 21:08
Сообщение #8


Стаж: 18 лет

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

люди дайте кто нить код для мониторинга=+)) буду признателен. тока скажите куда что вписывать
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя skybet
сообщение 17.6.2007, 21:25
Сообщение #9


Стаж: 19 лет

Сообщений: 279
Благодарностей: 12
Полезность: 55

мониторинг игровых серверов 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=порт_сервера"

вот что нарыл сайт не вылаживаю здеся запрещено

с тя +
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя lag
сообщение 18.6.2007, 22:01
Сообщение #10


Стаж: 19 лет

Сообщений: 75
Благодарностей: 5
Полезность: 56

Пойми правильно я не зажрался просто если тот сай будет в дауне то и у меня всё не будет отображается на сайте я пока остаюсь на мониторинге www мод
но всё ровно спосибку лови =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя skybet
сообщение 18.6.2007, 23:48
Сообщение #11


Стаж: 19 лет

Сообщений: 279
Благодарностей: 12
Полезность: 55

lag,

согласен с тобой на все 100 скрипт дело хорошее но вот я некак немогу доделать свой а пока сижу на том что выложил
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя inq
сообщение 19.6.2007, 3:56
Сообщение #12


Стаж: 19 лет

Сообщений: 147
Благодарностей: 7
Полезность: 48

http://woah-projekt.de/modules/phgstats/
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя skybet
сообщение 19.6.2007, 4:15
Сообщение #13


Стаж: 19 лет

Сообщений: 279
Благодарностей: 12
Полезность: 55

inq,
неплоха
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ROSS
сообщение 19.6.2007, 9:02
Сообщение #14


Стаж: 19 лет

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

Блин я думаю легче Psychostats поставить там и так есть мониторинг
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kams
сообщение 19.6.2007, 11:46
Сообщение #15


Стаж: 18 лет

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

Цитата(inq @ 19.6.2007, 1:56) *

отлично=) спасибо большое.


Только у меня вопрос я прописываю доменное имя , а в списке появляется ип. что делать? =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя lag
сообщение 19.6.2007, 15:47
Сообщение #16


Стаж: 19 лет

Сообщений: 75
Благодарностей: 5
Полезность: 56

Цитата(skybet @ 18.6.2007, 23:48) *
lag,

согласен с тобой на все 100 скрипт дело хорошее но вот я некак немогу доделать свой а пока сижу на том что выложил

Кода доделаешь выложишь сюда или ты за деньги его продовать будешь?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kams
сообщение 19.6.2007, 23:29
Сообщение #17


Стаж: 18 лет

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

Цитата(kams @ 19.6.2007, 9:46) *
отлично=) спасибо большое.
Только у меня вопрос я прописываю доменное имя , а в списке появляется ип. что делать? =)

up люди знает кто решение проблемы? горит сильно нужно =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя inq
сообщение 20.6.2007, 5:08
Сообщение #18


Стаж: 19 лет

Сообщений: 147
Благодарностей: 7
Полезность: 48

Цитата(kams @ 19.6.2007, 11:46) *
отлично=) спасибо большое.
Только у меня вопрос я прописываю доменное имя , а в списке появляется ип. что делать? =)

хз, у меня тоже IP показывает
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kams
сообщение 21.6.2007, 0:38
Сообщение #19


Стаж: 18 лет

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

Цитата(kams @ 19.6.2007, 21:29) *
up люди знает кто решение проблемы? горит сильно нужно =)

горит... помогите реально кто может..
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя microb
сообщение 23.6.2007, 23:00
Сообщение #20


Стаж: 19 лет

Сообщений: 62
Благодарностей: 5
Полезность: 65

люди выложите плизз скрипт чтобы мониторинг отображался на сайте в отдельном блоке желательно в html
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: