Войти
ИГРОВОЙ ФОРУМ / Обратная связьПросмотров: 993

Где найти информацию по API?

Когда то была информация по API, где сейчас ее можно найти?

Тема закрыта

Re: Где найти информацию по API?

погугли UnitAPIServise

Re: Где найти информацию по API?

http://unit-api-services.com/

Re: Где найти информацию по API?

для Worlak:
для ДжонБайкер:
Была тема созданная Администрацией.

Можно восстановить тему на форуме дабы можно было смотреть?)

Re: Где найти информацию по API?

нашел только вот это, надеюсь, поможет.
23 Января 2015 00:27, Zion [7] :
Сразу к сути. О том, как оно работает.

Сайт состоит из одной единственной страницы и множества асинхронных запросов. То есть индексироваться поисковыми системами не будет, а значит предназначен не для рекламы проекта. И маленькая ссылка на мою рефералку с логотипа в левом верхнем углу пользы не приносит никакой. Что, кстати, можно отнести к минусам такой конструкции сайта.
Еще один минус - javascript. К сожалению ни один браузер не может похвастаться идеальным исполнением этого языка программирования. Чем больше и сложнее скрипт, тем больше шанс на глюки, подвисания и прочие неприятности, вызывающие попаболь. И даже тот же фейсбук, бывает, глючит.
К плюсам же стоит отнести его быстродействие (я сейчас не говорю о тех, для кого сервер с сайтом физически находится на другом континенте). Асинхронные запросы позволяют получить только самую нужную информацию с сервера, без лишних букаф, что позволяет избежать перезагрузки страницы.

Итак, о сервисах. Многие из них опираются на данные непосредственно с игрового сервера, что подразумевает их актуальность. Описания api можно найти здесь: http://forum.unit-online.ru/topic/158871

1. Онлайн игроков
Данные в формате json берутся с игрового сервера (http://api.unit-online.ru/online) и просто сортируются и приводятся в удобочитаемый вид. Итого получаем список всех, кто в игре, за исключением тех, у кого куплен "невидимка". Количество "невидимок" в игре, кстати, получаем оттуда же.

2. Рейтинги
Всё то же самое, что и с "онлайном игроков". Здесь у нас есть возможность выбирать какую именно информацию получать с игрового сервера - pvp-рейтинг, pve-рейтинг, сортировать по уровням и так далее.

3. Кланы
Всё аналогично. Хотя игровой сервер даёт нам информацию только о существющих кланах - их названиях, сайтах, составах и даже должностях. Данные о расформированных хранится уже у нас (о том, откуда они берутся у нас, чуть ниже).

4. Клановые зоны
Тут просто список - http://api.unit-online.ru/zones. Всё что нужно - привести в удобочитаемый вид.

5. Предметы
А именно оружие и броня, других данных игровой сервер пока не предоставляет, хотя в скором времени обещали. 15 октября, если быть точнее (http://forum.unit-online.ru/topic/158871?post=543e52650684db3a191c585b). Так вот, тут пришлось использовать "друхходовочку", которая делает целую кучу запросов к серверу, отчего эта страница загружается медленнее других. Сначала берём весь список оружия (или брони, или шлемов, или прочего), после чего берём ID каждого полученного предмета и делаем запрос к серверу, чтобы получить зарактеристики каждого конкретного предмета.
Например, сейчас в игре 479 разных видов оружия и чтобы получить весь список с характеристиками нужно сделать один запрос ко всему списку и 479 запросов, чтобы получить характекристики. Не айс, правда?

6. Поиск игрока
Наверное, самый короткий скрипт. Ищем игрока по нику и получаем http://api.unit-online.ru/online?type=user&name=Zion.


До этого момента сайт использовал только javascript и html, то есть мог работать на самом дерьмовом хостинге.
Далее упомяну уже мои "фичи".


7. Карта
Сама по себе карта, хоть и хорошего разрешения, бесполезна. Пришлось таки собрать информацию об NPC и сохранить их имена и координаты. А также названия и координаты заводов, локаций, терминалов и прочего. Для удобства также приделал проверку локаций на клановую принадлежность: если клан владеет данной локацией, то на карте это будет отображено.

8. Информация о персонаже
Где угодно на сайте нажав на ник персонажа откроется окно с его информацией. Открытых сервисов админитрация проекта для этого не предоставляет и тут приходится изобретать костыль. Обращаемся к игровой инфе персонажа (http://unit-online.ru/character?id=10482472), лично я использовал для этого curl. Находим следующиую строку:
Спойлер

Внутри массива flashvars в переменной data видим кучу букв и цифр. Это и есть вся информация о персонаже, правда в hex-представлении. Переводим из hex в нормальный вид и дело в шляпе.
Один недостаток: эта информация обновляется не очень-то часто, то есть не может быть абсолютно актуальной.

9. История событий
Перво-наперво понадобится cron, который будет собирать информацию об игроках, кланах и клановых территориях каждые пять минут. Идея простая: записать текущее состояние игрока - его уровень, клан и так далее. Через пять минут снова записать то же самое и сравнить с предыдущими данными - если отличаются, то записать "такой-то перешёл на такой-то уровень" или "сменил клан на такой-то". А дальше только выводить эти данные в читабельном виде и сделать возможность сортировки.
Этот же скрипт записывает время входа и выхода в игру каждого игрока. То есть на данный момент у меня дохрена данных и можно было бы составить график для каждого игрока... но благодарности за труды ждать бесполезно. Об этом, кстати, ниже.

10. API с историей событий
Собственно, изначальная идея создания сайта состояла именно в этом скрипте. Точнее говоря в том, чтобы сделать историю событий общедоступной, как и api-сервисы, предоставляемые разработчиками игры.
На данный момент назвать этот скрипт API, то есть application programming interface, можно с натяжкой. Тем не менее, свою основную функцию он исполняет.
Что именно выводит скрипт: информация об игроках - смена уровня, клана, никнейма; информация о кланах - регистрация, расформирование, смена названия; клановые зоны - смена владельца зоны.
Скрипт испольщует асинхронный запрос, что в разы упрощает уго использование: вставляем на сайт две строки кода и оно работает.
Спойлер

Как пример: этот скрипт сейчас используется у Царапычей (http://tcarapichi.ru).


Пара слов о платности на время новогодних праздников
Тут можно много и долго гнуть пальцы о жиде-разработчике и скупердяях-игроках. Или о жадности всего русского народа в целом :)
Я надеялся немного подзаработать и купить подарков персонажу, ведь я потратил немало времени, купил домен и хостинг. Я расчитывал так, что из 280 постоянных посетителей сайта - а именно столько их было к тому моменту - хотя бы человек 30-40 отдадут мне по штуке рублей, деньги-то небольшие. В итоге через систему регистрации прошли 131 человек, а я получил чуть меньше 10к рублей.
Опечалился.


В итоге
Реализация такого сайта оказалась даже проще, чем я представлял. JS, HTML, немного PHP и MySQL - вот и всё.
Для меня это хороший опыт в программировании и не очень хороший в маркетинге :)

Re: Где найти информацию по API?

для SiO2:
Спасибо, но там было описание api самих разработчиков.
Часть ссылок у меня есть, так как когда то пробовал что то накидать, но к сожалению их там на много больше

Re: Где найти информацию по API?

для Teran):
В свалку все перенесли, тебе либо админов просить вытащить оттуда, либо через сайт(ссылку не помню, сорри), где есть вся история форума искать.

Re: tmp


Выполнение запросов к API

Для того чтобы вызвать метод API U.N.I.T. Online, Вам необходимо осуществить POST или GET запрос по протоколу HTTP на указанный URL:

http://api.unit-online.ru/METHOD_NAME?PARAMETERS

METHOD_NAME – название метода из списка функций API (список ниже),
PARAMETERS – параметры соответствующего метода API

Пример:
Запрос

В ответ на такой запрос Вы получите ответ в формате JSON (application/json; charset=UTF-8):
Ответ
{ "type": "count", "status": "ok", "request": "online", "count": 178 }


Кроссдоменные запросы

Для того, чтобы осуществлять кроссдоменные запросы к API, Вы можете использовать протокол JSONP. Для этого необходимо подключать к документу скрипт с src=url запроса, добавив к запросу параметр callback c именем функции, которая будет вызвана при получении результата:
var script = document.createElement('SCRIPT');
script.src = "http://api.unit-online.ru/online?type=count&callback=callbackFunc";
document.getElementsByTagName("head")[0].appendChild(script);

function callbackFunc(result) {
    alert("онлайн: " + result.count);
}
или, если у вас на сайте уже используется jQuery:
$.ajax({ url: "http://api.unit-online.ru/online", dataType: "jsonp", data: { type: "count" } }).done(function (result) {
    alert("онлайн: " + result.count);
});

Список функций API

  • online - получение информации о пользователях онлайн.

    параметры:

    type - тип запрашиваемой информации (необязательный параметр).
    count - возвращает число игроков онлайн.
    users - возвращает число игроков онлайн и информацию о них (ник, уровень, клан и т.д.); этот тип используется по умолчанию при вызове функции online.
    user - проверка, находится ли пользователь в игре в данный момент; требует передачи дополнительного параметра: name (ник игрока) либо id (id игрока).
    clan - возвращает число игроков онлайн из определённого клана и информацию о них (ник, уровень и т.д.); требует передачи дополнительного параметра: name (название клана) либо id (id клана).

    Пример
    примечание: наличие у игрока услуги "невидимка" исключает его из списков игроков, возвращаемых этими функциями.

  • rating - получение информации о рейтингах игроков.

    параметры:

    type - тип рейтинга (обязательный параметр).
    looters - рейтинг мародёров.
    pvp - pvp-рейтинг.
    count - количество игроков в списке (необязательный параметр).
    целое число в интервале [1; 1000], по умолчанию - 100.
    min_level, max_level - фильтрация по уровню игроков (необязательный параметр).
    целое число в интервале [1; 21], по умолчанию - 1 и 21 соотвественно для min_level и max_level.

    Пример
    примечание: члены клана "Администрация" в рейтинги не попадают.

  • clans - получение списка кланов.

    нет параметров

  • clan - получение информации о клане.

    параметры:

    name или id клана (обязательный параметр).

  • zones - получение информации о захваченных территориях.

    параметры:

    type - тип запрашиваемой информации (необязательный параметр), по умолчанию - all
    all - возвращает информацию о всех захваченных территориях.
    clan - возвращает информацию о территориях, захваченных определённым кланом; требует передачи дополнительного параметра: name (название клана) либо id (id клана).


  • items - получение списка предметов (названия, id, уровень).

    параметры:

    type - тип предмета (обязательный параметр).

    min_level, max_level - фильтрация по уровню предмета (необязательный параметр).
    целое число в интервале [0; 21], по умолчанию - 0 и 21 соотвественно для min_level и max_level.

  • item - получение подробной информации о конктретном предмете.

    параметры:

    id - id предмета (обязательный параметр).
    id предметов можно получить запросом items

  • expendables - получение списка расходников (названия, id, уровень).

    параметры:

    type - тип расходника (обязательный параметр).

    min_level, max_level - фильтрация по уровню предмета (необязательный параметр).
    целое число в интервале [0; 21], по умолчанию - 0 и 21 соотвественно для min_level и max_level.

  • exp - получение подробной информации о конктретном расходнике.

    параметры:

    id - id расходника (обязательный параметр).
    id расходников можно получить запросом expendables

  • user - получение информации об игроке.

    параметры:

    name или id игрока (обязательный параметр).


Дополнительная информация

  • Данные, возвращаемые функциями, обновляются в режиме реального времени.
  • Все данные, отдаваемые сервером, имеют кодировку utf-8; все параметры, передаваемые в функции API, так же ожидаются в utf-8.
  • Ограничений на частоту запросов к API в данный момент нет, но они могут быть введены в случае возникновения такой необходимости.
  • В случае возникновения ошибок при вызове функций API (например, не указан обязательный параметр) - поле status в ответе сервера будет содержать строку fail и поле error - дополнительную информацию об ошибке:
    Запрос
    Ответ
    { "type": "user", "request": "online", "error": "`name` or `id` parameter required", "status": "fail" }


Вопросы, уточнения, информацию о багах и предложения по расширению API можно оставлять в этой теме. Весь левый флуд будет удалён.