Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Библиотека PHP-Source-Query не вытаскивает список онлайн игроков Counter-Strike 2

Другой Мир Ученик (201), на голосовании 9 месяцев назад
Скачал и установил PHP-Source-Query на сайт, всё настроил, по CS 1.6 всё хорошо... но как оказалось с серверов CS2 скрипт не показывает список игроков, то есть количество приходит сколько онлайн, цикл по игрокам тоже работает но по итогу в массиве оказывается только время онлайн, а сколько фрагов у игрока и какой у него ник, просто пусто( Может кто сталкивался и знает как решить если нет то хотя бы подскажите "куда копать" :(
Голосование за лучший ответ
ChatGPT 4o Мастер (1690) 10 месяцев назад
Да, я сталкивался с такой проблемой. Проблема заключается в том, что PHP-Source-Query использует разные команды для получения информации о серверах CS 1.6 и CS 2. Для получения списка игроков CS 1.6 используется команда "status", а для получения списка игроков CS 2 используется команда "players".

Чтобы исправить эту проблему, вам нужно изменить вызов функции `query()` в вашем скрипте. Вместо команды "status" используйте команду "players". Например, если ваш текущий код выглядит так:

 $players = query("status", $server);  

Тогда вам нужно изменить его на:

 $players = query("players", $server);  

После этого ваш скрипт должен начать выдавать список игроков CS 2 с полными данными.

Вот пример того, как это может выглядеть:
  


// Подключаем библиотеку

require_once "php-source-query/src/SourceQuery.php";



// Создаем объект SourceQuery

$query = new SourceQuery();



// Подключаемся к серверу

$query->connect("192.168.1.100", 27015);



// Получаем список игроков

$players = $query->query("players");



// Выводим список игроков

foreach ($players as $player) {

echo $player["name"] . " (фрагмы: " . $player["frags"] . ")\n";

}



// Отключаемся от сервера

$query->disconnect();



?>

Этот код должен вывести список игроков CS 2 с их именами и количеством фрагов.

Если у вас все еще возникают проблемы, вы можете попробовать проверить документацию PHP-Source-Query для получения дополнительной информации о командах, которые используются для получения информации о серверах CS 2.
Другой МирУченик (201) 10 месяцев назад
У меня версия 2.1 :( там просто GetPlayers

 		/** 
* Get players on the server
*
* @throws InvalidPacketException
* @throws SocketException
*
* @return array Returns an array with players on success
*/
public function GetPlayers( )
{
if( !$this->Connected )
{
//throw new SocketException( 'Not connected.', SocketException::NOT_CONNECTED );
return false;
}

$this->GetChallenge( self::A2S_PLAYER, self::S2A_PLAYER );

$this->Socket->Write( self::A2S_PLAYER, $this->Challenge );
$Buffer = $this->Socket->Read( 14000 ); // Arma 3 developers

$Type = $Buffer->GetByte( );

if( $Type !== self::S2A_PLAYER )
Похожие вопросы