Это старая версия документа!
Административная API (заливка уровней)
Для того, чтобы автоматизировать процесс заливки уровней в движок, существует административная API для заливки. Использовать её можно двумя способами:
- Вставить JSON в нужном формате на страницу https://qeng.org/import_tasks.php, указав айди игры, и нажав Импортировать. Эта же ссылка доступна из пункта меню «Импорт заданий» на странице редактирования игры.
- Отправить POST запрос на https://qeng.org/import_tasks.php?gid=<ваш айди игры>&json=1, в котором в body будет корректно сформированный JSON объект. Для аутентификации необходимо удержать cookie с запроса на авторизацию, о чём детально написано тут: Встраивание движка в другие сервисы
JSON уровня
Уровень - это объект, который состоит из следующих полей:
{ "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 } ] }
Структура JSON
В зависимости от того, какое действие необходимо произвести (добавить новый уровень / отредактировать существующий), некоторые поля JSON объекта будут отличаться.
Добавление новых уровней
Если необходимо добавить уровни в игру, то в поле JSON нужно вставить список из одного или нескольких уровней, разделённых запятыми. При этом уровни должны НЕ иметь поле number внутри task.
Например,
[ { "task":{ "working_name":"Урв1", "task":"Текст задания", }, "codes":[ { "name":"Первый код", "code":["Код1","Кодик1"] } }, { "task":{ "working_name":"Урв2", "task":"Текст задания 2", }, "codes":[ { "name":"Первый код", "code":"Код2, кодик2", } } ]
Редактирование существующих уровней
Если в секции task уровня есть поле number - то уровень с этим номером будет отредактирован, используя предоставленный JSON.
Для полей в секции task, если они присутствуют в JSON - они будут заменены на новые. Если поля отсутствуют в предоставленном JSON - то они будут оставлены как было.
Для остальных секций (codes, bonuses, hints), ели секция присутствует в JSON - то она полностью заменит существующую. Если отсутствует - то секция остаётся, как была.
Например,
[ { "task":{ "number": 4, "working_name":"Уровень 1", "Answer":"Добавляем новый ФО", }, "bonuses":[ { "code":"Бонус1,б1", "delay":15, "duration":60, "time":10, "description":"Другое описание бонуса", "hint":"Текст после решения бонуса" }, } ]
Python библиотека
Для взаимодействия с API через Python есть библиотека, которую можно найти тут