/arena/init
Первый вход на арену: регистрирует игрока — лига, AP, наборы приёмов, стартовая косметика и случайное имя. В группу игрок не садится, пока не пройдёт онбординг.
Адрес метода
/arena/init
Требует сессию пользователя
Параметры
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| skin_id | НЕТ | string(0..64) | cid скина |
| avatar_id | НЕТ | string(0..64) | cid аватара |
| frame_id | НЕТ | string(0..64) | cid рамки аватара |
| defense_set | НЕТ | slot_set | Защитный набор приёмов: {"1": <skill_id>, ..., "5": 0} |
Результат
Тот же агрегат, что отдаёт /arena/info.
Что важно знать
Регистрация — ещё не участие в боях. Все экраны арены работают, но до победы над Цукером игрок не сидит в группе: не атакует, не атакуем, не стоит в чужих рейтингах, не получает наград. Состояние — onboarding.onboarded в /arena/info и arena_onboarded в объекте пользователя.
Имя выдаётся случайное из пула (прилагательное + существительное + число, латиница) и, как любое имя, уникальное: число в конце двузначное, а когда свободных двузначных не остаётся — трёх- или четырёхзначное. Своё игрок выбирает при завершении онбординга. Параметра name у метода больше нет; старый клиент, который его присылает, не отбивается — параметр просто не читается. Прежнее имя из Telegram (first_name) публиковало данные игрока всем без его выбора и без фильтра.
Метод идемпотентный. Повторный вызов на уже инициализированной арене просто возвращает текущее состояние — заново ничего не создаётся.
Оба набора приёмов по умолчанию копируются из боевого набора кампании, включая защитный. Игрок атакуем с момента попадания в группу, поэтому без защиты его оставлять нельзя. При завершении онбординга защитный набор копируется из кампании заново.
Если в версии конфига нет ни одной лиги, метод падает громко (500 плюс запись в Anno), а не создаёт игрока с пустой лигой. Раньше пустая лига выглядела успешной инициализацией, после которой любой следующий метод арены отвечал «арена не инициализирована», и игрок застревал навсегда.