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

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

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

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

GameQ

, GameQ - библиотека для опроса серверов
Статус пользователя Maquire
сообщение 18.12.2012, 13:35
Сообщение #1
Стаж: 13 лет

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

Всем салют! Недавно открыл для себя GameQ - готовое решение для опроса серверов. Решил поделится т.к. уверен, многим пригодится.

Описание:
GameQ представляет собой библиотеку для запроса данных с одного или нескольких игровых серверов используя UDP протокол и возвращает результаты в массиве. Скрипт объектно-ориентированный (не знаю как правильно высловится), и Вам не составит труда изменить его под свои нужды.
GameQ недавно был полностью переписан, и все еще находится в альфа-стадии, так что будем Вам признательны за любые замечание и / или сообщения об ошибках. Вы можете связаться со мной по E-Mail tombuskens@users.sourceforge.net.

Скрипт поддерживает 170 игр.

Требования:
Вам нужен PHP 5, чтобы использовать библиотеку. Также должна быть возможность использовать UDP протокол (некоторые хостинги его блокируют), так как он используются для опроса игровых серверов.

Установка:
Убедитесь, что у вас последняя версия, взять её можете здесь. После того как вы загрузили файл, просто распакуйте его. Также Вы можете получить рабочую версию из CVS репозитория.

Использование:
Скрытый текст
Опрос серверов довольно прост. Сначала вы определяете сервер(ы) которые Вы хотите опросить. Например, предположим, что мы хотим запросить quake и battlefield сервера.

Код
$servers['quakeserver'] = array('quake3', '192.168.0.1', '27962');
$servers['a bf server'] = array('bf', 'localhost');


Как Вы видите, каждый элемент состоит из названия игры, адрес сервера и, по желанию (если не указан, будет использовать port указанный по умолчанию, например, 27015 для cs), порт.
Чтобы узнать, какая имя у нужной вам игры, смотрите в файле конфигурации, который находится по адресу patch/to/GameQ/games.ini.

Во-вторых, мы инициализируем основной класс и добавляем серверы.
Код
require_once 'path/to/GameQ.php';

// инициализируем класс
$gq = new GameQ;

// Добавляем серверы указанные чуть выше
$gq->addServers($servers);


Теперь мы готовы запрашиваем данные с серверов и обрабатываем их.
Код
//Запрос и отображение данных
try {
    $data = $gq->requestData();
    print_r($data);
}

// Поймать любые ошибки, которые могли возникнуть
catch (GameQ_Exception $e) {
    echo 'Произошла ошибка.';
}


Данные, которые вернет нам скрипт, будут выглядеть вот так:
Код
Array
(
    [quakeserver] => Array
        (
            [version] => Q3 1.32 linux-i386 Oct  7 2002
            [dmflags] => 0
            [fraglimit] => 35
            [timelimit] => 20
            [ggametype] => 4
            [protocol] => 68
            [mapname] => q3tourney6_ctf
            [svprivateClients] => 1
            [svhostname] => My local quakeserver
            [svmaxclients] => 17
            [svpunkbuster] => 0
            [svmaxRate] => 15000
            [svminPing] => 0
            [svmaxPing] => 0
            [svfloodProtect] => 1
            [svallowDownload] => 0
            [botminplayers] => 2
            [capturelimit] => 8
            [gamename] => baseq3
            [gmaxGameClients] => 0
            [gneedpass] => 0
            [players] => Array
                (
                    [0] => Array
                        (
                            [frags] => 20
                            [ping] => 0
                            [nick] => Bitterman
                        )

                    [1] => Array
                        (
                            [frags] => 28
                            [ping] => 0
                            [nick] => Razor
                        )

                    [2] => Array
                        (
                            [frags] => 5
                            [ping] => 0
                            [nick] => Patriot
                        )

                    [3] => Array
                        (
                            [frags] => 17
                            [ping] => 0
                            [nick] => Uriel
                        )

                )

            [game] => baseq3
            [punkbuster] => 0
            [pure] => 1
            [gametype] => 4
            [clients] => 4
            [address] => 192.168.0.1
            [port] => 27960
        )

    [a bf server] => Array
        (
            [hostname] => My local battlefield server
            [gamename] => battlefield2
            [gamever] => 1.1.2965-797.0
            [mapname] => Road To Jalalabad
            [gametype] => gpm_cq
            [gamevariant] => bf2
            [numplayers] => 2
            [maxplayers] => 32
            [gamemode] => openplaying
            [password] => 0
            [timelimit] => 3600
            [roundtime] => 2
            [hostport] => 16567
            [bf2dedicated] => 1
            [bf2ranked] => 1
            [bf2anticheat] => 1
            [bf2os] => linux
            [bf2autorec] => 0
            [bf2didx] =>
            [bf2ddl] =>
            [bf2voip] => 1
            [bf2autobalanced] => 1
            [bf2friendlyfire] => 1
            [bf2tkmode] => Punish
            [bf2startdelay] => 15
            [bf2spawntime] => 15.000000
            [bf2sponsortext] => Howdy
            [bf2scorelimit] => 0
            [bf2ticketratio] => 100
            [bf2teamratio] => 100.000000
            [bf2team1] => MEC
            [bf2team2] => US
            [bf2bots] => 0
            [bf2pure] => 1
            [bf2mapsize] => 64
            [bf2globalunlocks] => 1
            [bf2fps] => 33.000000
            [bf2plasma] => 0
            [bf2reservedslots] => 0
            [bf2coopbotratio] =>
            [bf2coopbotcount] =>
            [bf2coopbotdiff] =>
            [bf2novehicles] => 0
            [players] => Array
                (
                    [0] => Array
                        (
                            [player] => Bob
                            [score] => 36
                            [ping] => 30
                            [team] => 2
                            [deaths] => 6
                            [pid] => 47837808
                            [skill] => 11
                            [AIBot] => 0
                        )

                    [1] => Array
                        (
                            [player] => Jimmy
                            [score] => 36
                            [ping] => 28
                            [team] => 2
                            [deaths] => 7
                            [pid] => 68243063
                            [skill] => 9
                            [AIBot] => 0
                        )
                )

            [teams] => Array
                (
                    [0] => Array
                        (
                            [teamt] => MEC
                            [scoret] => 0
                        )

                    [1] => Array
                        (
                            [teamt] => US
                            [scoret] => 0
                        )

                )

            [address] => 192.168.0.1
            [port] => 29900
        )

)




Все нужные данные я указал, за дополнительной информацией идите сюда.
Скачать МОЖНО ТУТ

Отредактировал: Maquire, - 18.12.2012, 13:36
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   Цитировать сообщение
Статус пользователя Surf
сообщение 18.12.2012, 17:07
Сообщение #2


Стаж: 14 лет

Сообщений: 1089
Благодарностей: 501
Полезность: 583

https://github.com/xPaw/PHP-Source-Query-Class

не?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Maquire
сообщение 18.12.2012, 19:53
Сообщение #3
Стаж: 13 лет

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

Цитата(Surf @ 18.12.2012, 19:07) *


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