1. Описание запросов к вебсервису
Оглавление
Общая информация
Адреса сервисов
Запросы от клиента
Определение авторизованного пользователя
Авторизация игрока
Информация о столах
Информация о столе
Создание стола
Удаление стола
Сесть за стол
Информация о пользователе
Создание пользователя
Запросы от модуля игровой логики
Очистка информации о столе
Запрос информации о столе/столах
Подключение игрока
Отключение игрока
Обновление статуса
Запуск игры за столом
Состояние игры за столом
Интеграция с соц.сетями.
Facebook
Запрос ключей
Login
ВКонтакте
Запрос ключей
Login
Одноклассники
Запрос ключей
Login
Google+
Запрос ключей
Login
Логика турниров
Сервис подарков - gifts.php
Сервис сообщений - messenger.php
Сервис друзей - friends.php
Сервис информации о пользователях
userinfo.php
2.
3. Общая информация
Запросы к веб-сервису могут идти с клиентского приложения (клиента) и с модуля
игровой логики (логики).
Запросы от логики производятся из локальной зоны и со строго определенных
ip-адресов. Логика запрашивает у веб-сервиса информацию об игроках и столах,
уведомляет о событиях в игре и о изменениях в составе игровых столов.
От клиента приходят запросы авторизации и отключения пользователя, управление
игровыми столами (информация о столе, создание, удаление, усадка за стол). Никакие
запросы от клиентов не должны непосредственно менять количество фишек и бонусов
пользователя.
Адреса сервисов
Для запросов от клиента:
http://pokerapi.3d-game.com:6680/service/
Для запросов от логики:
http://pokerapi.3d-game.com:6680/logic/
4. Запросы от клиента
Определение авторизованного
пользователя
Пользователь должен быть авторизован, чтобы получить результат при запросе
сервисов (кроме сервиса авторизации). Логика определения пользователя такова:
- если в запросе передается параметр token, тогда сервис находит пользователя с
актуальным токеном и выполняет запрос от имени этого пользователя.
- если токен не задан, тогда выполняется попытка определения пользователя,
сохраненного в сессии.
Авторизация игрока
Запрос отправляется при входе в программу. Проверяются данные клиента,
правильность ввода логина и пароля, формируется новый токен. Старый токен этого
пользователя (если существует) помечается неактивным, игрок отключается от стола, за
которым он сидит. Логика, управляющая столом, получает запрос о неактивном токене.
Адрес запроса:/service/login
Метод запроса: GET
Ключи:
Ключ Тип Значение
login строка Логин пользователя
password строка Кеш пароля, который хранится в базе
lang [ru,en,kz,ua] Язык клиента
client_name строка Название клиента из таблицы user_interface, поле name
client_version число Версия клиента из таблицы user_interface, поле version
Возвращает в случае успеха: JSON
{
"id": идентификатор игрока
"token": токен пользователя
"name" : имя пользователя,
"chips": количество фишек,
"bonus": количество бонусов,
"level": уровень игрока (число),
"level_title": название уровня игрока,
"HANDS_WON": выиграно раздач,
"HANDS_PLAYED": раздач сыграно,
"USERPIC": картинка пользователя,
"LAST_PURCHASE": последняя покупка,
"LAST_ACHIEVEMENT": последняя достижение,
"PROGRESS": прогресс
5. }
Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
Информация о столах
Запрашивается при входе в лобби. Игрок должен видеть активные столы и сколько
игроков за ним сидит. Возможна фильтрация списка столов по передаваемым параметрам.
Адрес запроса: /service/rooms/show
Метод запроса: GET
Ключи:
Ключ Тип Значение
rule CLASSIC,
CLASSIC_TRN
Тип игры
pace NORMAL, FAST,
SLOW
Темп игры
ante число из
списка:
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
20,
30,
40,
50,
60,
70,
80,
90,
Стоимость стола
6. 100
max_players 2,6 Число игроков
max_currency число из
списка:
100,
200,
300,
400,
500,
600,
700,
800,
900,
1000
Максимальная сумма вхождения за стол
Возвращает в случае успеха: JSON
{
"items" : [
{
"code": код стола,
"type_code":тип (POKER),
"rule_code": правило (CLASSIC, CLASSIC_TRN),
"ante": антэ (число),
"max_currency": максимум стола (число),
"max_players": максимальное количество игроков (число),
"pace": темп игры (NORMAL),
"style": стиль стола (NORMAL),
"server_code": путь до логики, управляющей данным столом,
"players_amount": количество игроков (число)
},
...
]
}
Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
Информация о столе
Возвращается информация по определенному столу. Включается информация об
игроках и зрителях за столом
7. Адрес запроса: /service/rooms/show/<code>
Метод запроса: GET
Ключи:
Ключ Тип Значение
code число код стола (передается в строке запроса)
Возвращает в случае успеха: JSON
{
"items" : [
{
"code": код стола,
"type_code":тип (POKER),
"rule_code": правило (CLASSIC, CLASSIC_TRN),
"ante": антэ (число),
"max_currency": максимум стола (число),
"max_players": максимальное количество игроков (число),
"pace": темп игры (NORMAL),
"style": стиль стола (NORMAL),
"server_code": путь до логики, управляющей данным столом,
"players_amount": количество игроков (число),
"players": [
{
"token": токен пользователя,
"chips": количество фишек пользователя
"user_name":имя пользователя,
"seat_number": номер места за столом (число),
"USERPIC": картинка пользователя,
"chips_in_room": количество фишек пользователя за столом
},
...
],
"viewers": [
{
"token": токен пользователя,
"user_name":имя пользователя,
"seat_number": номер места за столом (число),
"USERPIC": картинка пользователя,
},
...
]
}
]
}
Возвращает в случае ошибки: JSON
{
"error":
{
8. "code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
Создание стола
Адрес запроса: /service/rooms/create
Метод запроса: POST
Ключи:
Ключ Тип Значение
ante строка Стоимость стола
max_currency строка Максимальная сумма вхождения
max_players строка Максимальное количество игроков
rule_code CLASSIC,
CLASSIC_TRN
Правила игры
Возвращает в случае успеха: JSON
{
"items" : [
{
"code": код стола,
"type_code":тип (POKER),
"rule_code": правило (CLASSIC, CLASSIC_TRN),
"ante": антэ (число),
"max_currency": максимум стола (число),
"max_players": максимальное количество игроков (число),
"pace": темп игры (NORMAL),
"style": стиль стола (NORMAL),
"server_code": путь до логики, управляющей данным столом,
"players_amount": количество игроков (число)
}
]
}
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
Удаление стола
Адрес запроса: /service/rooms/delete
9. Метод запроса: GET
Ключи:
Ключ Тип Значение
code число Уникальный идентификатор стола
type NORMAL / FORCE Тип удаления
Возвращает в случае успеха: JSON
{
"success" : 0
}
Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
Сесть за стол
Данный запрос подготавливает место за столом. Веб-сервис должен проверить что
этот стол существует (определен в базе) и работает (доступен через веб-сокет). В случае
ошибки доступа к столу, веб-сервис, исходя из загруженности и доступности серверов,
должен определить наилучшее размещение и послать соответствующий путь
пользователю.
Запрос не влияет на состояние игрока за столом, так как фактического подключения
игрока еще нет. Но веб-сервису необходимо запомнить адрес стола, чтобы другие игроки
подключились по тому же адресу.
В процессе запроса проверяется сумма, с которой игрок желает сесть за стол, и
корректируется, если это необходимо. Выполняется проверка желаемого места. Если игрок
уже за столом, тогда возвращается то место, которое он занимает.
Адрес запроса: /service/rooms/connect
Метод запроса: GET
Ключи:
Ключ Тип Значение
code число Уникальный идентификатор стола
role PLAYER, VIEWER с какой ролью сесть за стол
chips число количество фишек, с которым игрок хочет сесть за
стол
seat число на какое место игрок желает попасть
10. Возвращает в случае успеха: JSON
{
"success" :
{
"chips": откорректированная сумма, с которой можно сесть за стол,
"seat": место, где сидит или может сесть пользователь,
"server_code": адрес стола, например
"ws://pokerweb.dyndns.tv:8887/server1/456"
}
}
Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса,
"extra": {
"server_code": адрес стола, например
"ws://pokerweb.dyndns.tv:8887/server1/456"
}
}
}
Информация о пользователе
Возвращает данные об авторизованном пользователе, либо пользователе с
указанным токеном
Адрес запроса: /service/users/info
Метод запроса: GET
Ключи: нет
Возвращает в случае успеха: JSON
{
"success" :
{
"users": [{
"id": идентификатор игрока
"token": токен пользователя
"name" : имя пользователя,
"chips": количество фишек,
"bonus": количество бонусов,
"level": уровень игрока (число),
"level_title": название уровня игрока,
"HANDS_WON": выиграно раздач,
"HANDS_PLAYED": раздач сыграно,
"USERPIC": картинка пользователя,
"LAST_PURCHASE": последняя покупка,
"LAST_ACHIEVEMENT": последняя достижение,
11. "PROGRESS": прогресс
}]
}
}
Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
Создание пользователя
Проверяет возможность создания пользователя для заданных параметров, создает
в случае успеха, выполняет авторизацию, возвращает данные о пользователя, включая
token.
Параметр email необязательный. В случае, если он не задан, либо задана пустая
строка, емейл генерируется в коде и пользователю присвается статус гостя.
Адрес запроса: /service/users/create
Метод запроса: GET
Ключи:
Ключ Тип Значение
username строка Логин пользователя
password строка Кеш пароля, который хранится в базе
name строка Имя пользователя
email строка Email пользователя (необязательный)
lang [ru,en,kz,ua] Язык клиента
client_name строка Название клиента из таблицы user_interface, поле name
client_version число Версия клиента из таблицы user_interface, поле version
Возвращает в случае успеха: JSON
{
"id": идентификатор игрока
"token": токен пользователя
"name" : имя пользователя,
"chips": количество фишек,
"bonus": количество бонусов,
"level": уровень игрока (число),
"level_title": название уровня игрока,
"HANDS_WON": выиграно раздач,
"HANDS_PLAYED": раздач сыграно,
"USERPIC": картинка пользователя,
12. "LAST_PURCHASE": последняя покупка,
"LAST_ACHIEVEMENT": последняя достижение,
"PROGRESS": прогресс
}
Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
Запросы от модуля игровой логики
Очистка информации о столе
Запрашивается один раз после запуска модуля логики. Получив запрос, веб-сервис
должен очистить информацию об игроках за этим столом, так как за этим столом реально
никаких игроков пока нет.
Адрес запроса: /logic/rooms/clear/{код стола}
Метод запроса: GET
Ключи: отсутствуют
Возвращает в случае успеха: JSON
{
"items": [{
"code": числовой код стола,
"type_code":тип (POKER),
"rule_code": правило (CLASSIC),
"ante": антэ (число),
"max_currency": максимум стола (число),
"max_players": максимальное количество игроков (число),
"pace": темп игры (NORMAL),
"pace_in_secs": время на ход в секундах
"style": стиль стола (NORMAL),
"server_code": путь до стола,
"players_amount": количество игроков,
13. "round": номер последнего раунда
"players": [],
"viewers": []
}]
}
Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
Запрос информации о столе/столах
Сервис может использоваться как для получения списка столов, удовлетворяющих
условиям, так и для получение данных по одному столу (если задан code). При этом, если
code задан ключи фильтрации не учитываются.
Адрес запроса:/logic/rooms/show/{код стола}
Метод запроса: GET
Ключи:
Ключ Тип Значение
rule CLASSIC,
CLASSIC_TRN
Тип игры
pace NORMAL, FAST,
SLOW
Темп игры
ante число из
списка:
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
20,
30,
40,
50,
60,
70,
Стоимость стола
14. 80,
90,
100
max_players 2,6 Число игроков
max_currency число из
списка:
100,
200,
300,
400,
500,
600,
700,
800,
900,
1000
Максимальная сумма вхождения за стол
Возвращает в случае успеха: JSON
{
"items": [{
"code": числовой код стола,
"type_code":тип (POKER),
"rule_code": правило (CLASSIC),
"ante": антэ (число),
"max_currency": максимум стола (число),
"max_players": максимальное количество игроков (число),
"pace": темп игры (NORMAL),
"pace_in_secs": время на ход в секундах
"style": стиль стола (NORMAL),
"server_code": путь до стола,
"players_amount": количество игроков,
"round": номер последнего раунда
"players": [{
"token": токен пользователя,
"user_name": имя пользователя,
"seat_number": номер места
},
...
],
"viewers": [{
"token": токен пользователя,
"user_name": имя пользователя,
"seat_number": номер места
},
...
]
},
...
15. ]
}
Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
Подключение игрока
Запрос отправляется при подключении игрока к игровому столу. Веб-сервис
проверит, не играет ли пользователь за этим столом. Если играет, в результате сервис
вернет номер места, где сидит пользователь.. Запрос меняет состояние игрока и стола в
базе, связывая их между собой. Со счета пользователя снимается сумма, необходимая
для игры за столом.
Подключение игрока может быть выполнено в любой момент, вне зависимости от
хода игры за столом.
Адрес запроса:/logic/rooms/connect
Метод запроса: GET
Ключи:
Ключ Тип Значение
code число Уникальный идентификатор стола
token строка Токен пользователя
role PLAYER / VIEWER Тип игрока
chips число Фишки игрока за столом
seat число 1-6 Номер места за столом
Возвращает в случае успеха: JSON
{
"success" :
{
"chips": 100,
"user_id": идентификатор игрока,
"lang": язык интерфейса,
"name": видимое имя игрока,
"seat": место игрока за столом,
"USERPIC": картинка игрока
}
}
Возвращает в случае ошибки: JSON
16. {
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса,
"extra": {
"user_id": id пользователя, если пользователь все еще за столом,
"token": токен пользователя, если пользователь все еще за столом
}
}
}
Отключение игрока
Отключение игрока может быть выполнено в любой момент, вне зависимости от
хода игры за столом. Если игрок отключился во время игры, считается что он бросил карты.
Количество фишек при выходе должно быть меньше или равно количеству фишек с
предыдущего запроса (обновление статуса или подключение).
Адрес запроса:/logic/rooms/disconnect
Метод запроса: GET
Ключи:
Ключ Тип Значение
code число Уникальный идентификатор стола
players json-строка список пользователей, которых необходимо
отключить
Формат players:
[{
"token" : токен пользователя,
"chips" : текущее количество фишек у пользователя за столом,
"status" : статус пользователя (active/vabank/fold/disconnected),
"cards" : карты пользователя,
"combination" : какая комбинация карт у пользователя,
"open" : открыл пользователь карты или нет (булево),
"won" : сколько пользователь выиграл за текущий раунд,
"act" : действие с пользователем (continue, disconnect)
},
...
]
Возвращает в случае успеха: JSON
{
17. "success" :
{
"players": [{
"token" : токен пользователя,
"chips" : фишки пользователя, которые были добавлены пользователю
в результате октлючения,
"status" : статус пользователя
},
...
]
}
}
Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
Обновление статуса
Запрос отправляется по окончанию раздачи. Содержит информацию об игроках и
движении фишек внутри стола.
Списание
Адрес запроса: /logic/rooms/status_update
Метод запроса: POST
Ключи:
Ключ Тип Значение
code число Уникальный идентификатор стола
players JSON Информация об игроках
logs строка Логи игры в формате PokerStars
Формат информации об игроках: JSON
[
{
"token": токен игрока за столом,
"cards": строка со значениями карт в понятном формате,
"combination": название комбинации
"status": статус игрока может быть active/vabank/fold/disconnected,
"won": сумма выигрыша или проигрыша (отрицательное значение),
"chips": новое количество фишек,
"open" : открыл пользователь карты или нет (булево),
"act" : действие с пользователем (continue, disconnect)
},
...
]
18. Возвращает в случае успеха: JSON
{
"success" :
{
"players": [{
"token" : токен пользователя,
"chips" : фишки пользователя, которые были добавлены пользователю
в результате октлючения,
"status" : статус пользователя
},
...
]
}
}
Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
Запуск игры за столом
Выполняем, чтобы дать знать серверу о начале новой игры за столом. Сервер
фиксирует начальное количество игроков. Для турнирных столов происходит заполнение
предварительной информации о выигранных местах
Списание
Адрес запроса: /logic/rooms/start/<code>
Метод запроса: GET
Ключи: отсутствуют
Возвращает в случае успеха: JSON
{
"items": [{
"code": числовой код стола,
"type_code":тип (POKER),
"rule_code": правило (CLASSIC),
"ante": антэ (число),
"max_currency": максимум стола (число),
"max_players": максимальное количество игроков (число),
"pace": темп игры (NORMAL),
"pace_in_secs": время на ход в секундах
"style": стиль стола (NORMAL),
19. "server_code": путь до стола,
"players_amount": количество игроков,
"round": номер последнего раунда
"players": [{
"token": токен пользователя,
"user_name": имя пользователя,
"seat_number": номер места
},
...
],
"viewers": [{
"token": токен пользователя,
"user_name": имя пользователя,
"seat_number": номер места
},
...
]
},
...
]
}
Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
Состояние игры за столом
Возвращает возможные для выигрыша места за столом и какие места уже занимают
пользователи. Сколько фишек было получено пользователем.
Списание
Адрес запроса: /logic/rooms/ranks/<code>
Метод запроса: GET
Ключи: отсутствуют
Возвращает в случае успеха: JSON
{
"success": [{
"rank": место для выигрыша за столом,
"part":какая часть призового фонда полагается за занятое место (в
процентах),
"user_id": id пользователя, занявнешего указанное место,
20. "user_rank": реально занаятое место (пример: 2 пользователя
одновременно закончивают играть на местах (rank) 3 и 4. В этом случае
один из них займет rank = 4, второй rank = 3, но реальные места у обоих
будут 4),
"user_won": сколько пользователь выиграл
},
...
]
}
Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
Интеграция с соц.сетями.
Принцип работы заключается в генерации пути к соц.сети, переход по которому приводит
к авторизации в соц.сети. После этого перехватывается code, который возвращается
соц.сетью. Указанный выше код используется для подключения сервера к соц.сети и
получения информации о пользователе. Полученные данные используются для
определения пользователя в системе или его создания (в случае отсутствия).
Facebook
Запрос ключей
Адрес запроса: /integration/fb/keys
Метод запроса: GET
Ключи: отсутствуют
Возвращает в случае успеха: JSON
{
"success": {
"app_id": id приложения,
"login_url":путь, по которому необходимо направить запрос
}
}
Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
21. "message": описание ошибки на языке интерфейса
}
}
Login
Адрес запроса: /integration/fb/login
Метод запроса: GET
Ключи:
Ключ Тип Значение
code строка Код, который вернула соц.сеть
lang [ru,en,kz,ua] Язык клиента
client_name строка Название клиента из таблицы user_interface, поле name
client_version число Версия клиента из таблицы user_interface, поле version
Возвращает в случае успеха: JSON
{
"id": идентификатор игрока
"token": токен пользователя
"name" : имя пользователя,
"chips": количество фишек,
"bonus": количество бонусов,
"level": уровень игрока (число),
"level_title": название уровня игрока,
"HANDS_WON": выиграно раздач,
"HANDS_PLAYED": раздач сыграно,
"USERPIC": картинка пользователя,
"LAST_PURCHASE": последняя покупка,
"LAST_ACHIEVEMENT": последняя достижение,
"PROGRESS": прогресс
}
Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
22. ВКонтакте
Запрос ключей
Адрес запроса: /integration/vk/keys
Метод запроса: GET
Ключи: отсутствуют
Возвращает в случае успеха: JSON
{
"success": {
"app_id": id приложения,
"login_url":путь, по которому необходимо направить запрос
}
}
Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
Login
Адрес запроса: /integration/vk/login
Метод запроса: GET
Ключи:
Ключ Тип Значение
code строка Код, который вернула соц.сеть
lang [ru,en,kz,ua] Язык клиента
client_name строка Название клиента из таблицы user_interface, поле name
client_version число Версия клиента из таблицы user_interface, поле version
Возвращает в случае успеха: JSON
{
"id": идентификатор игрока
"token": токен пользователя
"name" : имя пользователя,
"chips": количество фишек,
"bonus": количество бонусов,
"level": уровень игрока (число),
23. "level_title": название уровня игрока,
"HANDS_WON": выиграно раздач,
"HANDS_PLAYED": раздач сыграно,
"USERPIC": картинка пользователя,
"LAST_PURCHASE": последняя покупка,
"LAST_ACHIEVEMENT": последняя достижение,
"PROGRESS": прогресс
}
Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
Одноклассники
Запрос ключей
Адрес запроса: /integration/od/keys
Метод запроса: GET
Ключи: отсутствуют
Возвращает в случае успеха: JSON
{
"success": {
"app_id": id приложения,
"login_url":путь, по которому необходимо направить запрос
}
}
Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
Login
Адрес запроса: /integration/od/login
Метод запроса: GET
Ключи:
24. Ключ Тип Значение
code строка Код, который вернула соц.сеть
lang [ru,en,kz,ua] Язык клиента
client_name строка Название клиента из таблицы user_interface, поле name
client_version число Версия клиента из таблицы user_interface, поле version
Возвращает в случае успеха: JSON
{
"id": идентификатор игрока
"token": токен пользователя
"name" : имя пользователя,
"chips": количество фишек,
"bonus": количество бонусов,
"level": уровень игрока (число),
"level_title": название уровня игрока,
"HANDS_WON": выиграно раздач,
"HANDS_PLAYED": раздач сыграно,
"USERPIC": картинка пользователя,
"LAST_PURCHASE": последняя покупка,
"LAST_ACHIEVEMENT": последняя достижение,
"PROGRESS": прогресс
}
Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
Google+
Запрос ключей
Адрес запроса: /integration/gp/keys
Метод запроса: GET
Ключи: отсутствуют
Возвращает в случае успеха: JSON
{
"success": {
"app_id": id приложения,
"login_url":путь, по которому необходимо направить запрос
}
}
25. Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
Login
Адрес запроса: /integration/gp/login
Метод запроса: GET
Ключи:
Ключ Тип Значение
code строка Код, который вернула соц.сеть
lang [ru,en,kz,ua] Язык клиента
client_name строка Название клиента из таблицы user_interface, поле name
client_version число Версия клиента из таблицы user_interface, поле version
Возвращает в случае успеха: JSON
{
"id": идентификатор игрока
"token": токен пользователя
"name" : имя пользователя,
"chips": количество фишек,
"bonus": количество бонусов,
"level": уровень игрока (число),
"level_title": название уровня игрока,
"HANDS_WON": выиграно раздач,
"HANDS_PLAYED": раздач сыграно,
"USERPIC": картинка пользователя,
"LAST_PURCHASE": последняя покупка,
"LAST_ACHIEVEMENT": последняя достижение,
"PROGRESS": прогресс
}
Возвращает в случае ошибки: JSON
{
"error":
{
"code": код ошибки,
"message": описание ошибки на языке интерфейса
}
}
26. Логика турниров
В турнире каждый стол имеет определенную стоимость. До начала турнира со всех
участников списывается стоимость стола, из этих средств формируется призовой фонд
турнира. После начала турнира блокируется добавление новых игроков.
Правило игры (rule_code) для турнирного стола равно «CLASSIC_TRN».
Специальных запросов для работы турниров не требуется. Запуск и завершение
выполняется в процессе обычной работы со столами.
27. Сервис подарков gifts.
php
Адрес: http://pokerapi.3d-game.com:6680/gifts.php
Постоянные параметры:
id user_
id текущего юзера
token актуальный
токен текущего юзера
Функции:
cmd=shop возврат
ассортимента магазина
Дополнительные параметры функции нет.
Возврат:
{“status”: 0,
“shop”: [{“id”:6, “name”: ”Sombrero”, “dic_description”: “”, “lname”:
“Сомбреро”, “ldesc”: “Мексиканская шляпа”,
“image_base_name”:
“http://pokerapi.3dgame.
com/images/goods/sombrero.png”},
{...}]
}
cmd=price получение
строк прайса по заданному товару
Дополнительные параметры: item id
товара
Возврат:
{“status”:0, “price”:[
{“id”: 1, “account_type_code”: “bonus”, “amount”: 10, “duration” :0},
{“id”:2, “account_type_code”: “chips”, “amount”: 1000, “duration”: 7},
{...}
]}
cmd=gift купить
подарок с передачей другому пользователю
Дополнительные параметры:
qty количество,
по умолчанию =1
to user_
id друга, которому надо подарить
pos позиция
в прайсе, по которой делается покупка (id из возврата функции price)
Возврат:
{“status” : 0, “description”: “ok”}
если status > 0, description содержит описание ошибки.
28. Сервис сообщений messenger.
php
Адрес: http://pokerapi.3dgame.
com:6680/messenger.php (GET / POST)
Постоянные параметры:
uid = user_id текущего пользователя
token = токен текущего пользователя
Функции:
● Получение списка сообщений (дефолтная функция)
Дополнительные параметры функции:
last_msg unixвремя,
будут получены только сообщения новее этого времени,
если есть. При 0 или отсутствии параметра читаем
все.
unread=1 признак
запроса только непрочитанных сообщений. Если нужны все
сообщения этого
параметра быть не должно.
(примечание: значение параметра игнорируется, нужен только факт его наличия)
type=1 читать
только сообщения заданного типа. В настоящее время есть
следующие типы: 0 сообщение
пользовательпользователь,
1 сообщение
системапользователь,
2 запрос
на добавление в список друзей, 4 уведомление
о начислении бонуса
page=N постраничный
вывод, сообщения разбиваются на страницы по 20 штук.
Страница номер 0 содержит самые свежие сообщения.
Формат сообщения:
{“status”: 0, “count”: 3, “unread”: 1, “last_msg”:112349844, “messages”:
[{"id":"349","msg_time":"1406225220","user_id":"109","name":"Gleb
Daniloff","text":"w.level","is_readed":"f","msg_type":"1"},{...}]
}
status 0
означает отсутствие ошибок, count общее
количество сообщений, отправленных данному
юзеру, включая прочитанные, unread количество
непрочитанных сообщений, адресованных юзеру.
last_msg текущее
время сервера, может быть использовано в следующем запросе.
id идентификатор
сообщения, msg_time время
сообщения, user_id идентификатор
отправителя
(для системных равен идентификатору получателя), name имя
отправителя (для системных имя
получателя), text текст
сообщения, is_readed логическое,
флаг прочтения, msg_type тип
сообщения
● Пометить сообщения прочитанными
read=101 или read=4;5;7;9;34;65;78
(примечание: получатель сообщений не проверяется)
● Отправить сообщение игроку
Дополнительные параметры функции:
❖ to=66 user_
id получателя (обязательный параметр)
❖ text=ваше сообщение (обязательный параметр)
Ответ:
{“satus”:0, ”msg_id”:988}
где msg_id идентификатор
вновь созданного сообщения
● Получить информацию об ожидающих сообщениях, не забирая сами сообщения
Дополнительный параметры функции:
29. ❖ info=1
Приходит ответ следующего вида:
[{type:0, id:123, count:2}, {type:1, count:12}, {type:2, count:20}]
● Получить список пользователей, с которыми был обмен сообщениями
❖ info=2
Приходит ответ следующего вида:
{“status”:0, “users”:[{“id”:NNN,”name”:”user_name”,”state”:”offline”, “userpic”: “http://...”,
“level”:4},{...},...] }
30. Сервис друзей friends.
php
Адрес: http://pokerapi.3dgame.
com:6680/friends.php (GET / POST)
Постоянные параметры:
me = user_id текущего пользователя
token = токен текущего пользователя
cmd = код команды
Функции:
● Получение диалога [cmd=history]
Дополнительные параметры
❖ page=0 текущая
страница (0 самые
новые)
❖ id = user_id друга
Получаемый ответ:
{"status"=>0,"count":25,"pages":3,"messages":[{id, msg_time, u_from, name, text,
is_readed},{...}]);
● Запрос списка друзей [cmd=list]
Дополнительные параметры: нет
Получаемый ответ:
{
“status”:0
“friends”: [{“id", "chips", "bonus", "level", "name", "accepted", "userpic", "status"},{...}]
}
31. Сервис информации о пользователях
userinfo.php
Адрес: http://pokerapi.3dgame.
com:6680/userinfo.php (GET / POST)
Постоянные параметры:
uid = user_id текущего пользователя
token = токен текущего пользователя
cmd = код команды
Функции:
● Поиск пользователя [cmd=find]
Дополнительные параметры
❖ text искомый
текст (логин, email
или user_id)
Получаемый ответ:
{"status":0, “users”: [{"uid":NUM, "name":”user_name”, "level":NUM, "userpic":URL,
"state":”offline”|”online”|”ingame;TABLE”},{...},...]}
Примечание: поиск регистронезависимый. Если text содержит цифровое значение,
осуществляется поиск по точному совпадению по user_id, иначе в
случае соответствия
текста шаблону адреса по
точному совпадению с email,
в противном случае по
первым
буквам логина.
● Изменение личных данных пользователя [cmd=save]
Дополнительные параметры
❖ uname новое
отображаемое имя пользователя;
❖ upass новый
пароль, нешифрованный;
❖ oldpass текущий
пароль, нешифрованный (необходим только при наличии
параметра upass);
❖ email новый
адрес почтового ящика
❖ userpic картинка
пользователя (jpg/png/gif)
Примечание: любой из параметров может отсутствовать. Обязателен хотя бы один
параметр. При наличии картинки данные должны передаваться по протоколу
POST:multipart/formdata.
При отсутствии картинки допустима кодировка
POST:application/xwwwformurlencoded.