/arena/info
Полное состояние арены игрока: рейтинг, лига, наборы приёмов, косметика, сезон и часть конфига.
Адрес метода
/arena/info
Требует сессию пользователя
Параметры
Нет.
Результат
{
"response": {
"success": 1,
"arena": {"...arena"},
"attack_set": {"type": 1, "available": 5, "slot_1": 11, "slot_1_cid": "overload", "...": "..."},
"defense_set": {"type": 2, "available": 5, "slot_1": 11, "slot_1_cid": "overload", "...": "..."},
"cosmetics": {"skin": {"...cosmetic"}, "avatar": {"...cosmetic"}, "frame": {"...cosmetic"}},
"league": {"...league"},
"onboarding": {"onboarded": 0, "level_cid": "c000l001_arena", "zucker_beaten": 0},
"name": {"min_length": 3, "max_length": 16, "one_alphabet_per_word": 0, "change_available_at": 0, "forced": 0},
"season_result": null,
"season": {
"season_id": 27, "started": true,
"start_at": 1788480000, "end_at": 1789084800,
"freeze_at": 1789084800, "unfreeze_at": 1789086600
},
"config": {
"free_attempts_max": 5, "battle_time_limit_sec": 600,
"target_free_refresh": 2, "refresh_soft_cost": 100,
"ap_min": 0, "ap_max": 9999
}
}
}
Описание полей arena — объект arena.
Что важно знать
onboarding — состояние онбординга. onboarded = 0 — игрок не победил Цукера и в боях не участвует; level_cid — уровень, который запускать для боя с Цукером; zucker_beaten = 1 — победа уже засчитана (игрок мог победить и закрыть игру до выбора облика и имени), осталось /arena/onboarding/complete. Сервер старше этого блока его не присылает — отсутствие означает «онбординга нет, игрок участник».
name — настраиваемые правила имени, которые клиент проверяет сам (длина в символах; one_alphabet_per_word = 1 — включено правило «один алфавит на слово», выключатель в админке, по умолчанию 0), момент, когда смена имени снова доступна (0 — сейчас), и forced = 1, если имя заменила поддержка.
Метод не только читает. Любое обращение к арене прогоняет отложенную работу: перенос в текущий сезон, если игрок не заходил с прошлой недели, долив попыток на суточной границе и пересадку в группу. Поэтому «прочитать состояние, ничего не меняя» этим методом нельзя.
Наборы приёмов отдаются в двух представлениях. slot_N — числовой identity приёма, slot_N_cid
— его cid. Хранится только cid; число выводится из него для клиента, который пока читает числа.
season_result не пусто только один раз — при первом заходе после границы сезона, для попапа
продвижения. Подтверждается через /arena/season/ack.
prev_rank и status в нём — итог на КОНЕЦ сезона, а не на момент запроса. Расстановка группы
фиксируется один раз, целиком, когда кончается окно заморозки; поэтому значения не зависят ни от
того, когда игрок зашёл, ни от того, сколько участников уже переехало в новый сезон. Клиенту ничего
пересчитывать не нужно и нельзя: место в закончившейся группе после переезда уже не воспроизводится.
config.replay_upload — рубильник сбора реплеев, 1 записывать бой и грузить запись, 0 не
делать ни того, ни другого. Не игровой баланс, а эксплуатационная настройка (grape.settings,
галочка на странице реплеев в админке), поэтому её нет в листах конфига и она меняется без импорта.
Поля может не быть вовсе — сервер старше рубильника; отсутствие означает «записывать», то есть
прежнее поведение. Решение обязано приниматься клиентом: к моменту, когда отказал бы сервер, payload
уже ушёл с устройства и трафик игрока потрачен.
freeze_at равен end_at при нулевом freeze_before_sec — заморозка начинается ровно на
границе сезона.