api_engine_main

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
api_engine_main [2021/08/08 00:18]
admin [Данные задания]
api_engine_main [2021/10/21 07:35] (текущий)
phaust
Строка 1: Строка 1:
-====== API для написания своей версии фронтенда ​======+{{indexmenu_n>​30}} 
 +===== Игровая API ===== 
 +Игровая API - это ​API для написания своей версии фронтенда, либо взаимодействия с информацией про игру изнутри игры. ​
  
 Можно использовать для телеграмм ботов, нативных приложений или браузерных расширений Можно использовать для телеграмм ботов, нативных приложений или браузерных расширений
Строка 15: Строка 17:
 ===== Авторизация ===== ===== Авторизация =====
  
-Используется **game.php** ​ +Используется **login.php** ​
- +
-**GET параметры:​** +
- +
-**gid** надо задать ID игры.+
  
 **POST параметры:​** **POST параметры:​**
Строка 47: Строка 45:
 <​code>​ <​code>​
 class PublicContext { class PublicContext {
-  int version = 1;     ​// Версия протокола +  int version = 1;                        // Версия протокола 
-  ?string error; ​      ​// Ошибка. +  ?string error   ​                      ​// Ошибка. 
-  ?string login_error;​ // Ошибка при логине+  ?string login_error; ​                   // Ошибка при логине
  
-  ?int game_id; ​       // ID игры +  ​string domain_time_zone; ​               // Временная зона текущего домена 
-  ?int task_id; ​       // ID текущего уровня +  ​?int game_id; ​                          ​// ID игры 
-  ?int user_id; ​       // ID залогиненого игрока +  ?int task_id; ​                          ​// ID текущего уровня 
-  ?string user_name; ​  ​// login игрока +  ?int user_id; ​                          ​// ID залогиненого игрока 
-  ?int team_id; ​       // ID команды игрока,​ в одиночных играх может совпадать с ID текущего игрока +  ?string user_name; ​                     // login игрока 
-  ?float refresh_time_ms;​ // Время последнего обновления страницы unix_time миллисекундах +  ?int team_id; ​                          ​// ID команды игрока,​ в одиночных играх может совпадать с ID текущего игрока 
-  ?float refresh_check_limit_ms;​ // Промежуток времени в миллисекундах,​ в течении которого не надо без причины дергать сервер. ​+  ?int refresh_time_ms; ​                  ​// Время последнего обновления страницы unix_time миллисекундах 
 +  ?int refresh_check_limit_ms; ​           // Промежуток времени в миллисекундах,​ в течении которого не надо без причины дергать сервер. ​
  
-  PublicGame game;     // Данные об игре +  PublicGame game;                        // Данные об игре 
-  PublicTask task;     ​// Данные о текущем задании +  /​*?​PublicGamep[]*/​ available_games;     // Данные об активных/​ближайших ​играх домена. Доступно,​ если вызвать без gid 
-  PublicLastAnswers last_answers;​ // Мониторинг недавно вбитых ответов +  ​ 
-  ?​PublicAnswerResult answer_result;​ // Результат последнего вбития ответов +  PublicTask task;                        // Данные о текущем задании 
-  ?​PublicAnswerForm answer_form; ​ // Данные о форме ответов +  PublicLastAnswers last_answers; ​        ​// Мониторинг недавно вбитых ответов 
-  /* ?[n => PublicCode] */ codes; // Данные о кодах +  ?​PublicAnswerResult answer_result; ​     // Результат последнего вбития ответов 
-  /* ?​PublicHint[] */ hints; // Подсказки +  ?​PublicAnswerForm answer_form; ​         // Данные о форме ответов 
-  ?int n_bonuses; // Общее число бонусов,​ если они есть в задании +  /* ?[n => PublicCode] */ codes; ​        ​// Данные о кодах 
-  ?int compact_n_bonuses;​ // Общее число бонусов,​ если автор выбрал компактный режим бонусов +  /* ?​PublicHint[] */ hints; ​             // Подсказки 
-  ?int compact_bonus;​ // Суммарный полученный бонус/​штраф,​ если автор выбрал компактный режим бонусов +  ?int n_bonuses; ​                        ​// Общее число бонусов,​ если они есть в задании 
-  /* ?string[] */ compact_bonus_answers;​ // Известные ответы на бонусы,​ если автор выбрал компактный режим бонусов +  ?int compact_n_bonuses; ​                ​// Общее число бонусов,​ если автор выбрал компактный режим бонусов 
-  /* ?string[] */ compact_bonus_hints; ​ // Подсказки на вбитые бонусы,​ если автор выбрал компактный режим бонусов +  ?int compact_bonus; ​                    ​// Суммарный полученный бонус/​штраф,​ если автор выбрал компактный режим бонусов 
-  /* ? PublicBonus[] */ bonuses; // Бонусы +  /* ?string[] */ compact_bonus_answers; ​ // Известные ответы на бонусы,​ если автор выбрал компактный режим бонусов 
-  /* ? PublicBonus[] */ global_bonuses;​ // Сквозные бонусы+  /* ?string[] */ compact_bonus_hints; ​   // Подсказки на вбитые бонусы,​ если автор выбрал компактный режим бонусов 
 +  /* ? PublicBonus[] */ bonuses; ​         // Бонусы 
 +  /* ? PublicBonus[] */ global_bonuses; ​  ​// Сквозные бонусы
   /* ?​PublicTaskButton[] */ active_tasks;​ // Доступные сейчас задания   /* ?​PublicTaskButton[] */ active_tasks;​ // Доступные сейчас задания
   /* ?​PublicTaskButton[] */ closed_tasks;​ // Уже закрытые задания - только в штурме   /* ?​PublicTaskButton[] */ closed_tasks;​ // Уже закрытые задания - только в штурме
Строка 78: Строка 79:
  
 class PublicGame { class PublicGame {
-  ​?string name; // Название игры +  ​int id;         // ID игры 
-  ?int type;    // Тип игры - 0 или отсутсвует - штурмовая последовательность,​ 1 - линейная последовательность +  ​string name;    // Название игры 
-  ?bool single; // Одиночная или командная игра+  int start_time; // Время старта игры в unix_time 
 +  int end_time; ​  // Время окончания игры в unix_time 
 +  ?int type;      // Тип игры - 0 или отсутсвует - штурмовая последовательность,​ 1 - линейная последовательность 
 +  ?bool single; ​  ​// Одиночная или командная игра
 } }
  
 class PublicTask { class PublicTask {
  
-  int n; // Номер задания +  int n;                 ​// Номер задания 
-  string name; // Название задания +  string name;           ​// Название задания 
-  string task; // Текст задания +  ​?string task;          // Текст задания 
-  string answer_format;​ // Формат ответа +  ​?string answer_format;​ // Формат ответа 
-  int n_codes; // Сколько всего кодов в задании +  ​?int n_codes; ​         // Сколько всего кодов в задании 
-  int need_n_codes;​ // Сколько надо кодов для прохождения задания +  ​?int need_n_codes; ​    ​// Сколько надо кодов для прохождения задания 
-  ?float time_left_ms;​ // Сколько осталось времени в миллисекундах до автоперехода +  ?int start_time_ms; ​   // Время начала задания в unix_time миллисекундах  
-  ?float delay_left_ms;​ // Задержка в миллисекундах до появления задания +  ?int time_left_ms; ​    ​// Сколько осталось времени в миллисекундах до автоперехода 
-  int is_complete;​ // Задание уже закончено+  ?int delay_left_ms; ​   // Задержка в миллисекундах до появления задания 
 +  int is_complete; ​      ​// Задание уже закончено
  
 } }
Строка 99: Строка 104:
 class PublicLastAnswers { class PublicLastAnswers {
   /* ?​PublicLastAnswer[] */ answers; // Массив с информацией об ответах   /* ?​PublicLastAnswer[] */ answers; // Массив с информацией об ответах
-  int last_update_ms;​ // Время последнего обновления в unix_time миллисекундах+  int last_update_ms; ​               // Время последнего обновления в unix_time миллисекундах
 } }
  
 class PublicLastAnswer { class PublicLastAnswer {
-  ​float time_ms; // Время в unix_time миллисекундах,​ когда ответ отправлен +  ​int time_ms; ​   // Время в unix_time миллисекундах,​ когда ответ отправлен 
-  ?string user; // Кто вбил - в одиночных играх нет+  ?string user;   ​// Кто вбил - в одиночных играх нет
   string answers; // Вбитые ответы через запятую   string answers; // Вбитые ответы через запятую
-  string type; // Одно значени из right, wrong, repeat - правильно,​ но уже было, nonsubmit - не приняты из-за блокировки +  string type;    // Одно значени из right, wrong, repeat - правильно,​ но уже было, nonsubmit - не приняты из-за блокировки 
-  ?string bonus; // Полученный бонус или штраф за ответы+  ?string bonus; ​ // Полученный бонус или штраф за ответы
 } }
  
 class PublicAnswerResult { class PublicAnswerResult {
  
-  int task_id; // ID уровня для которого посчитано +  int task_id; ​                            ​// ID уровня для которого посчитано 
-  /* ?strings[] */ right_answers = []; // правильные ответы +  /* ?strings[] */ right_answers = [];     ​// правильные ответы 
-  /* ?strings[] */ wrong_answers = []; // неправильные +  /* ?strings[] */ wrong_answers = [];     ​// неправильные 
-  /* ?strings[] */ repeat_answers = []; // правильные,​ но повторные+  /* ?strings[] */ repeat_answers = [];    // правильные,​ но повторные
   /* ?strings[] */ nonsubmit_answers = []; // не принятые из-за блокировки   /* ?strings[] */ nonsubmit_answers = []; // не принятые из-за блокировки
-  ?string bonus = '';​ // Бонус полученные за ответы +  ?string bonus = ''; ​                     // Бонус полученный за ответы 
-  ?string penalty = '';​ // Штраф полученный за ответы +  ?string penalty = ''; ​                   // Штраф полученный за ответы
- +
-  /* ?strings[] */ prev_right_answers = []; // Правильные ответы,​ которые закрыли прошлый уровень +
-  /* ?strings[] */ prev_wrong_answers = []; // Неправильные ответы,​ которые были отправленны вместе с правильными +
-  ?string prev_bonus = '';​ // Бонус ответов закрывших уровень +
-  ?string prev_penalty = '';​ // Штраф ответов закрывших уровень+
 } }
  
Строка 129: Строка 129:
  
   public bool show_finish_task = false; // Надо ли показывать кнопку закрывающую задание. Если надо то задание можно закрыть отправив код !finish!   public bool show_finish_task = false; // Надо ли показывать кнопку закрывающую задание. Если надо то задание можно закрыть отправив код !finish!
-  bool hide_answer_form = false; // Ответы больше приниматься не будут, можно убрать поле ввода +  bool hide_answer_form = false; ​       // Ответы больше приниматься не будут, можно убрать поле ввода 
-  ?float block_time_left_ms;​ // Сколько осталось до снятия ограничения на ввод. Время в миллисекундах. Если penalty не 0, значит ответы можно вводить,​ но со штрафом за неправильные. +  ?int block_time_left_ms; ​             // Сколько осталось до снятия ограничения на ввод. Время в миллисекундах. Если penalty не 0, значит ответы можно вводить,​ но со штрафом за неправильные. 
-  ?int limit_n_answers;​ // Ограничение на число неправильных ответов. Константа - как задана автором. +  ?int limit_n_answers; ​                ​// Ограничение на число неправильных ответов. Константа - как задана автором. 
-  ?int time_limit; // Время в секундах. За какой промежуток времени учитывается ограничение на число ответов limit_n_answers. Если 0, то limit_n_answers - ограничение на весь уровень. +  ?int time_limit; ​                     // Время в секундах. За какой промежуток времени учитывается ограничение на число ответов limit_n_answers. Если 0, то limit_n_answers - ограничение на весь уровень. 
-  ?int penalty; // Штраф за каждый неправильный ответ сверх допустимого +  ?int penalty; ​                        ​// Штраф за каждый неправильный ответ сверх допустимого 
-  ?int n_answers_left;​ // Сколько ответов команда может вбить до того как будет ограничение. Меняется после каждого вбития ответов. Если 0 - значит ограничение активно.+  ?int n_answers_left; ​                 // Сколько ответов команда может вбить до того как будет ограничение. Меняется после каждого вбития ответов. Если 0 - значит ограничение активно.
  
 } }
Строка 140: Строка 140:
 class PublicCode { class PublicCode {
  
-  ?string name; // Название кода +  ?string name;      // Название кода 
-  ?string answer; // Ответ на код +  ?string answer; ​   // Ответ на код 
 +  ?​string user_name; // Кто вбил первый 
 +  ?int user_id; ​     // Кто вбил первый 
 +  ?int answered_ms; ​ // Когда вбил первый
 } }
  
 class PublicBonus { class PublicBonus {
  
-  int n;               ​// Номер бонуса +  ​?int n;                // Номер бонуса 
-  int bonus; ​          ​// Получаемый бонус или штраф, если значение отрицательное. В секундах или баллах +  ​?int bonus; ​           // Получаемый бонус или штраф, если значение отрицательное. В секундах или баллах 
-  ?string answer; ​     // Ответ на бонус +  ?string answer; ​      ​// Ответ на бонус 
-  ?string description;​ // Описание бонуса (загадка) +  ?string description; ​ // Описание бонуса (загадка) 
-  ?string hint;        // Подсказка,​ если бонус решен +  ?string hint;         ​// Подсказка,​ если бонус решен 
-  ?float time_to_open_ms;​ // Время в миллисекундах до открытия бонуса +  ?int time_to_open_ms;​ // Время в миллисекундах до открытия бонуса 
-  ?float time_to_close_ms;//​ Время в миллисекундах секундах до закрытия бонуса  +  ?int time_to_close_ms;//​ Время в миллисекундах секундах до закрытия бонуса  
-  ?bool is_closed; ​    ​// Время на ввод бонуса истекло - больше для ввода ответов он недоступен+  ?bool is_closed; ​     // Время на ввод бонуса истекло - больше для ввода ответов он недоступен 
 +  ?string user_name; ​   // Кто вбил первый 
 +  ?int user_id; ​        // Кто вбил первый 
 +  ?int answered_ms; ​    // Когда вбил первый
  
 } }
Строка 161: Строка 166:
  
   int n;               // Номер Подсказки   int n;               // Номер Подсказки
-  ?float time_to_open_ms;​ // Время в миллисекундах до открытия подсказки+  ?int time_to_open_ms;​ // Время в миллисекундах до открытия подсказки
   ?int id;             // ID штрафной подсказки - надо для ее использования   ?int id;             // ID штрафной подсказки - надо для ее использования
   ?string description;​ // Описание подсказки   ?string description;​ // Описание подсказки
Строка 241: Строка 246:
 <​code>​ <​code>​
 class PublicAutoUpdateResult { class PublicAutoUpdateResult {
-  ?​string ​$error; ​           // Ошибка +  ?string error; ​           // Ошибка 
-  ?bool $refresh; ​           // Надо обновить страницу,​ кто-то вбил правильный код или взял штрафную подсказку +  ?bool refresh; ​           // Надо обновить страницу,​ кто-то вбил правильный код или взял штрафную подсказку 
-  ?bool $reload; ​            // Кто-то прошел уровень +  ?bool reload; ​            // Кто-то прошел уровень 
-  ?bool $refersh_monitoring;​ // Есть новые неправильные ответы в мониторинге. Можно их загрузить,​ если надо. +  ?bool refersh_monitoring;​ // Есть новые неправильные ответы в мониторинге. Можно их загрузить,​ если надо. 
-  ?int $next_check_ms; ​      // Сколько ждать(в миллисекундах) до следующей проверки - вычисляется сервером в зависимости от нагрузки+  ?int next_check_ms; ​      // Сколько ждать(в миллисекундах) до следующей проверки - вычисляется сервером в зависимости от нагрузки
 } }
 </​code>​ </​code>​
  • api_engine_main.1628381899.txt.gz
  • Последние изменения: 2021/08/08 00:18
  • admin