Вывод онлайна сервера на сайт

12hi89

Участник
Сообщения
57
Реакции
2
Добрый день, пытаюсь вывести онлайн сервера CSGO на сайт, но не выходит.
Нашел скрипт для cs 1.6 но он выводит только карту,а вместо онлайна всегда цифра 1, помогите решить проблему.

Прикрепляю скрипт
PHP:
<?php
// ****************************
$server = '31.131.252.130'; // Ip адрес Пример: 1.1.128.777 (:D);
$port   = '27101'; // Порт адрес Пример: 27015;
// ****************************
// функции ядра можно сказать что оброботка сервера
function GetServerInfo($server,$port) { 
     $fp = @fsockopen("udp://".$server, $port); 
     if (!$fp) return false;

fwrite($fp,"\xFF\xFF\xFF\xFFTSource Engine Query\0\r");
     $start=time(); 
     socket_set_timeout($fp,1); 
     $st=fread($fp,4); 
     $r=socket_get_status($fp); 
     $result['status'] = $r["timed_out"];
     $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; 		
}

$serv = GetServerInfo($server,$port);

if ($serv) {
echo '
<b>CS:GO Deathrun:</b> '.$server.':'.$port.'
<br>
<b>Карта:</b> '.$serv['name'].'
<br>
<b>Игроков онлайн:</b> '.$serv['current'].'
<br>
<b>Статус:</b> On-line
<br>
';
} else {
echo 'Статус: Off-line';
}



?>
 

RAIN182

Участник
Сообщения
411
Реакции
55
Добрый день, пытаюсь вывести онлайн сервера CSGO на сайт, но не выходит.
Нашел скрипт для cs 1.6 но он выводит только карту,а вместо онлайна всегда цифра 1, помогите решить проблему.

Прикрепляю скрипт
PHP:
<?php
// ****************************
$server = '31.131.252.130'; // Ip адрес Пример: 1.1.128.777 (:D);
$port   = '27101'; // Порт адрес Пример: 27015;
// ****************************
// функции ядра можно сказать что оброботка сервера
function GetServerInfo($server,$port) {
     $fp = @fsockopen("udp://".$server, $port);
     if (!$fp) return false;

fwrite($fp,"\xFF\xFF\xFF\xFFTSource Engine Query\0\r");
     $start=time();
     socket_set_timeout($fp,1);
     $st=fread($fp,4);
     $r=socket_get_status($fp);
     $result['status'] = $r["timed_out"];
     $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;        
}

$serv = GetServerInfo($server,$port);

if ($serv) {
echo '
<b>CS:GO Deathrun:</b> '.$server.':'.$port.'
<br>
<b>Карта:</b> '.$serv['name'].'
<br>
<b>Игроков онлайн:</b> '.$serv['current'].'
<br>
<b>Статус:</b> On-line
<br>
';
} else {
echo 'Статус: Off-line';
}



?>
Нашел как сделать ? Поделись )))
 

yavitaliy34

Участник
Сообщения
12
Реакции
3
Самый простой способ (только если web сервер поддерживает сокеты)
1) ставишь библиотеку xPaw/PHP-Source-Query
2) создаешь php с содержимым serverInfo.txt (во вложении)
3) на своей странице require_once этого файла.
$infoServer - массив с инфой о карте, онлайне и т.д
$playersOnline - массив с игроками
 

Вложения

  • serverInfo.txt
    744 байт · Просмотры: 105

RAIN182

Участник
Сообщения
411
Реакции
55
Самый простой способ (только если web сервер поддерживает сокеты)
1) ставишь библиотеку xPaw/PHP-Source-Query
2) создаешь php с содержимым serverInfo.txt (во вложении)
3) на своей странице require_once этого файла.
$infoServer - массив с инфой о карте, онлайне и т.д
$playersOnline - массив с игроками
Подскажи нубу на пальцах как устанавливать ?
 

RAIN182

Участник
Сообщения
411
Реакции
55
Скачиваешь с гита, папку SourceQuery закидываешь в папку с сайтом (не важно куда, главное до /SourceQuery/bootstrap.php правильно путь указать потом)
Я должен полный путь указать ? То есть /home/server и так далее ?
 

Rabb1t

Амбассадор
Сообщения
2,968
Реакции
1,429
  • Команда форума
  • #9
@RAIN182, разумеется, иначе не увидит файла.
 

RAIN182

Участник
Сообщения
411
Реакции
55
@RAIN182, разумеется, иначе не увидит файла.
Страница недоступна
Сайт 82.146.40.124 пока не может обработать этот запрос.

HTTP ERROR 500
--- Добавлено позже ---
Я из всего архива закинул только папку SourceQuery
 

Вложения

  • servers.rar
    417 байт · Просмотры: 40
Сверху Снизу