Всем доброго времени суток!
Забирать статистику с Counter Strike 1.6 (CS) сервера всегда интересно. Узнать текущую карту, количество игроков и другую полезную информацию. Подобных сайтов в Интернете развелось великое множество, но большинство из них обновляет информацию медленно. Виной всему громоздкие библиотеки. Да, они работают не только с CS серверами но и с множеством других игр. Однако расплачиваться за подобное универсальное решение приходится скоростью. Если собирать данные с одного какого-нибудь адреса (сервера), то еще более или менее. А если это информационный ресурс, где участвует несколько десятков, а то и сотен, игровых площадок?
Представляю Вам быструю библиотеку для красивого решения подобной задачи.
Краткие характеристики:
1. Работает с версией протокола 73 и 109 (не путать с версией игры).
2. Получает полную информацию о сервере (включая тип ОС, защиту от читов и т.д.)
3. Получает информацию об игроках (имя, количество фрагов, длительность подключения)
4. Получает информацию о «правилах» сервера (время раунда, стартовая сумма денег и т.п.)
Если Вас это заинтересовало, читаем дальше. А дальше я расскажу конкретно о том, что же возвращает библиотека. Описание массивов и принимаемых значений. Вообще-то об этом можно прочитать здесь. Но для тех, кто не хочет сильно вникать в суть протокола расскажу попроще.
Итак, имеем 3 вложенных массива — serverinfo, playerinfo и serverrules. В зависимости от того, какую именно информацию вы запросили, такой ответ вам и придет. Например, нас интересует только serverinfo. Тогда остальные 2 будут пустыми. Но об этом чуть позже в инструкции по непосредственному использованию.
[serverinfo] => Array ( [type] => 109 //Версия протокола [servername] => Ex-Surf.ru | HSDM Server //Название сервера [map] => aim_bloodstrike //Текущая карта [gamedir] => cstrike //итак понятно :) [gamedesc] => www.eX-Surf.ru //Описание игры [player_cur] => 11 //Текущее количество клиентов [player_max] => 16 //Максимальное кол-во клиентов [version] => 47 //Версия игры, установленной на сервере [dedicated] => d //d - dedicated, l - non-dedicated, p - sourceTV [system] => w //l - linux, w - windows, m или o - mac [password] => 0 //0 - не защищен паролем, 1 - защищен =) [secure] => 1 //1 - использует VAC (Valve Anti-Cheat) [ip] => 83.222.109.37 //Внешний адрес сервера. ) |
[playerinfo] => Array ( [type] => 44 //Всегда в значении 'D' (0x44). См. спецификацию протокола [player] => 7 //Кол-во игроков. Не путать с player_cur. [players] => Array ( [0] => Array ( [index] => 0 //Индекс игрока на сервере. Обычно закрыт, как здесь. [name] => Rm*/takesh1 //Соответственно имя игрока [kills] => 0 //Количество фрагов [connected] => 207840 //Время подключения в секундах (видимо это бот) ) [14] => Array ( [index] => 0 [name] => pke4h! [kills] => 65 [connected] => 636 ) и так далее... ) ) |
// Здесь комментариев особо не требуется, т.к. названия параметров как в конфиге. [serverrules] => Array ( [type] => 45 //Всегда в значении 'E' (0x45). См. спецификацию протокола. [rule] => 97 //Количество элементов (грубо правил) в ответе. [rules] => Array ( [0] => Array ( [name] => _tutor_bomb_viewable_check_interval [value] => 0.5 ) [1] => Array ( [name] => _tutor_debug_level [value] => 0 ) [2] => Array ( [name] => _tutor_examine_time [value] => 0.5 ) [3] => Array ( [name] => _tutor_hint_interval_time [value] => 10.0 ) и так далее... ) ) |
Продолжение следует…
root4root aka admin
Добавить комментарий
X