admin_api

Это старая версия документа!


Для того, чтобы автоматизировать процесс заливки уровней в движок, существует административная API для заливки. Использовать её можно двумя способами:

  1. Вставить JSON в нужном формате на страницу https://qeng.org/import_tasks.php, указав айди игры, и нажав Импортировать. Эта же ссылка доступна из пункта меню «Импорт заданий» на странице редактирования игры.
  2. Отправить POST запрос на https://qeng.org/import_tasks.php?gid=<ваш айди игры>&json=1, в котором в body будет корректно сформированный JSON объект. Для аутентификации необходимо удержать cookie с запроса на авторизацию, о чём детально написано тут: Встраивание движка в другие сервисы

Уровень - это объект, который состоит из следующих полей:

  {
     "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 нужно вставить список из одного или нескольких уровней, разделённых запятыми. При этом уровни должны НЕ иметь поле 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":"Текст после решения бонуса"
        },
  }
]

Для взаимодействия с API через Python есть библиотека, которую можно найти тут

  • admin_api.1634338219.txt.gz
  • Последние изменения: 2021/10/15 22:50
  • phaust