Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
admin_api [2021/10/16 16:29] admin [Экспорт в JSON] |
— (текущий) | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | =====Административная API (заливка уровней)===== | ||
- | Для того, чтобы автоматизировать процесс заливки уровней в движок, существует административная API для заливки. Использовать её можно двумя способами: | ||
- | - Вставить JSON в нужном формате на страницу https://qeng.org/import_tasks.php, указав айди игры, и нажав Импортировать. Эта же ссылка доступна из пункта меню "Импорт заданий" на странице редактирования игры. | ||
- | - Отправить POST запрос на https://qeng.org/import_tasks.php?gid=<ваш айди игры>&json=1, в котором в body будет корректно сформированный JSON объект. Для аутентификации необходимо удержать cookie с запроса на авторизацию, о чём детально написано тут: [[api_embed_engine|Встраивание движка в другие сервисы]] | ||
- | |||
- | ====Генерация JSON через Google doc==== | ||
- | В [[https://docs.google.com/spreadsheets/d/1XUqJl6GxaUVx-sUkQGXPFpsxvr84QsnF2oVi8wfQm2M/edit?usp=drivesdk|этом Гугл доке]] можно сгенерировать JSON уровня автоматически, чтобы потом просто вставить его на страницу заливки. | ||
- | |||
- | ==== JSON уровня ==== | ||
- | Уровень - это объект, который состоит из следующих полей: | ||
- | <code JavaScript [enable_line_numbers="false"]> | ||
- | { | ||
- | "task":{ | ||
- | /* Последовательный номер уровня, не ID*/ | ||
- | "number": 3, | ||
- | "name":"Название после прохождения", | ||
- | "working_name":"Название задания", | ||
- | "task":"Текст задания", | ||
- | "script":"/*\"Скрипт задания\"*/", | ||
- | "answer":"Формат ответа", | ||
- | "max_time":3600, | ||
- | "code_bonus_time":30, | ||
- | "codes":0 | ||
- | }, | ||
- | "codes":[ | ||
- | { | ||
- | "name":"Первый код", | ||
- | "code":["Код1","Кодик1"] | ||
- | }, | ||
- | { | ||
- | "code":"Код2,к2,Кодик2" | ||
- | }, | ||
- | { | ||
- | "code":"Код3" | ||
- | } | ||
- | ], | ||
- | "bonuses":[ | ||
- | { | ||
- | "code":"Бонус1,б1", | ||
- | "delay":15, | ||
- | "duration":60, | ||
- | "time":10, | ||
- | "description":"Описание бонуса", | ||
- | "hint":"Текст после решения бонуса" | ||
- | }, | ||
- | { | ||
- | "code":"Бонус2,б2", | ||
- | "time":20 | ||
- | }, | ||
- | { | ||
- | "code":"Бонус3,б3", | ||
- | "time":20 | ||
- | } | ||
- | ], | ||
- | "hints":[ | ||
- | { | ||
- | "info":"Описание подсказки", | ||
- | "hint":"Текст подсказки", | ||
- | "delay":15, | ||
- | "penalty":1 | ||
- | } | ||
- | ] | ||
- | } | ||
- | </code> | ||
- | |||
- | =====Структура JSON===== | ||
- | В зависимости от того, какое действие необходимо произвести (добавить новый уровень / отредактировать существующий), некоторые поля JSON объекта будут отличаться. | ||
- | |||
- | ====Добавление новых уровней ==== | ||
- | Если необходимо добавить уровни в игру, то в поле JSON нужно вставить список из одного или нескольких уровней, разделённых запятыми. При этом уровни должны НЕ иметь поле number внутри task. | ||
- | |||
- | Например, | ||
- | <code JavaScript [enable_line_numbers="false"]> | ||
- | [ | ||
- | { | ||
- | "task":{ | ||
- | "working_name":"Урв1", | ||
- | "task":"Текст задания", | ||
- | }, | ||
- | "codes":[ | ||
- | { | ||
- | "name":"Первый код", | ||
- | "code":["Код1","Кодик1"] | ||
- | } | ||
- | }, | ||
- | { | ||
- | "task":{ | ||
- | "working_name":"Урв2", | ||
- | "task":"Текст задания 2", | ||
- | }, | ||
- | "codes":[ | ||
- | { | ||
- | "name":"Первый код", | ||
- | "code":"Код2, кодик2", | ||
- | } | ||
- | } | ||
- | ] | ||
- | </code> | ||
- | |||
- | ==== Редактирование существующих уровней ==== | ||
- | Если в секции task уровня есть поле number - то уровень с этим номером будет отредактирован, используя предоставленный JSON. | ||
- | |||
- | Для полей в секции task, если они присутствуют в JSON - они будут заменены на новые. Если поля отсутствуют в предоставленном JSON - то они будут оставлены как было. | ||
- | |||
- | Для остальных секций (codes, bonuses, hints), ели секция присутствует в JSON - то она полностью заменит существующую. Если отсутствует - то секция остаётся, как была. | ||
- | |||
- | Например, | ||
- | |||
- | <code JavaScript [enable_line_numbers="false"]> | ||
- | [ | ||
- | { | ||
- | "task":{ | ||
- | "number": 4, | ||
- | "working_name":"Уровень 1", | ||
- | "Answer":"Добавляем новый ФО", | ||
- | }, | ||
- | "bonuses":[ | ||
- | { | ||
- | "code":"Бонус1,б1", | ||
- | "delay":15, | ||
- | "duration":60, | ||
- | "time":10, | ||
- | "description":"Другое описание бонуса", | ||
- | "hint":"Текст после решения бонуса" | ||
- | }, | ||
- | } | ||
- | ] | ||
- | </code> | ||
- | |||
- | =====Python библиотека===== | ||
- | Для взаимодействия с API через Python есть библиотека, которую можно найти [[https://github.com/Phaust94/qeng_admin_api|тут]] | ||
- | |||
- | =====Экспорт в JSON===== | ||
- | Можно экспортировать свои авторские игры или игры своего домена | ||
- | |||
- | 3493 - надо заменить на нужный вам ID игры | ||
- | |||
- | https://qeng.org/game_export.php?gid=3493 - сохранить JSON всего, что есть в игре. | ||
- | |||
- | https://qeng.org/game_export.php?gid=3493&e=game - сохранить JSON только вкладки описания/настроек игры. | ||
- | |||
- | https://qeng.org/game_export.php?gid=3493&e=gbonuses - сохранить JSON сквозных бонусов игры. | ||
- | |||
- | https://qeng.org/game_export.php?gid=3493&e=lines - сохранить JSON линеек игры. | ||
- | |||
- | https://qeng.org/game_export.php?gid=3493&e=task&n=1 - сохранить JSON задания с номером 1. Параметр 1 можно поменять на любой нужный номер задания. | ||
- | |||
- | |||
- | |||
- | |||
- | |||