Структура JSON
Игра
Глобально, JSON игры состоит из нескольких больших секций:
{ "game": {} /* Настройки игры, вроде времени начала и последовательности прохождения */, "gbonuses": [] /* Список сквозных бонусов в игре */, "lines": [] /* Список линеек прохождения */, "tasks": [] /* Список уровней игры*/, }
Настройки игры
{ "game": { "type": "1", /* Победитель определяется: "0": Баллы "1": Время */ "stat": "5", /* Статистика: "0": Открытая "1": Открытая без бонусов "2": Закрытая во время игры "4": Только Краткая "5": Закрытая всегда "6": Пройденные задания */ "team_limit": 0, /* Ограничение игроков в команде */ "name": "#New Unnamed Game", /* Название */ "description": "", /* Описание */ "finish_text": "", /* Финишный текст */ "html_header": "", /* Общий HTML заголовок */ "image": "", /* Картинка */ "start_time": "2021-10-17 12:00:00", /* Cтарт */ "end_time": "2022-10-17 12:00:00", /* Финиш */ "status": "3", /* Прием в игру: "0": Автоматически всех "1": Автоматически оплативших "2": Автоматически всех тестерами "3": Вручную */ "start_type": "0", /* Старт игры: "0": Одновременный "1": Каждый в свое время */ "price": 0, /* Цена */ "currency": "UAH", /* Валюта цены: "UAH" "USD" "EUR" "RUB" */ "kind": "0", /* Тип игры: "0": other "1": green "2": yellow "3": red "4": virtual */ "scenario": "0", /* Сценарий: "0": Закрыт "1": Открыт в архиве "2": Открыт в архиве, но только игравшим "3": Открыт командам, закончившим игру */ "answer_prefix": "фф", /* Префикс кодов */ "default_line": "" /* Линейка по умолчанию (название) */ } }
Сквозные бонусы
{ "gbonuses": [ /* Список сквозных бонусов в игре. Их может быть не один, через запятую */ { "code": "cc, dd", /* Ответы */ "time": 0, /* Бонус за выполнение*/ "description": "", /* Задание */ "hint": "", /* Текст после решения */ "first_task_n": 1, /* Доступен с задания */ "last_task_n": 2 /* Доступен по задание */ } ] }
Линейки
{ "lines": [ /* Список линеек в игре. Их может быть не одна, через запятую */ { "title": "Линейка 2", /* Название линейки*/ "task_order": "1,2,3+4,5-7" /* Порядок */ } ] }
Уровень
Уровень в игре также имеет составную структуру:
{ "task": {}, /* Настройки уровня, вроде названия или времени автоперехода */ "codes": [], /* Список секторов или кодов в уровне. Их может быть не один, через запятую */ "bonuses": [], /* Список бонусов в уровне */ "hints": [], /* Список подсказок в уровне */ }
Настройки уровня
{ "task": { "number": 1, /* № */ "max_time": 3600, /* Автопереход(секунд) */ "score": 10, /* Бонус за не ап */ "time_k": 1.0, /* Время x */ "delay": 0, /* Задержка (для штурмовых уровней)*/ "working_name": "Название", /* Название в игре */ "name": "В статке", /* Название в статистике */ "surrender_code": "Слива", /* Сливной Код */ "task": "Тест", /* Текст задания */ "script": "alert(1)", /* Скрипт задания */ "answer": "Слово на русском", /* Формат ответа */ "answers_limit": 10, /* Ограничение на ввод */ "answers_per_time": 60, /* за промежуток времени */ "answers_limit_penalty": 10, /* штраф за каждый лишний */ "codes": 0, /* Для прохождения надо кодов */ "code_bonus_time": 0, /* Уменьшение ап(секунд) */ "code_bonus": 0, /* Бонус(в секундах) */ "finish_confirmation": "1", /* Закрыть задание: "0": Принудительно "1": Разумно */ "hidden_bonuses": "0", /* Бонусы: Отображать в задании: "0": Списком "1": Компактно одной строкой */ "bonuses_kind": "0" /* Бонусы: Порядок открытия: "0": Любой "1": По порядку */ } }
Секторы
{ "codes": [ /* Список секторов или кодов в уровне. Их может быть не один, через запятую */ { "name": "Сектор 1", "code": "a, b" /* Коды-синонимы через запятую*/ }, { "name": "Сектор 2", "code": "c, d" /* Коды-синонимы через запятую*/ } ], }
Бонусы
{ "bonuses": [ /* Список бонусов в уровне. Их может быть не один, через запятую */ { "number": 1, /* Порядковый номер бонуса */ "code": "c, d", /* Ответы */ "time": 0, /* Бонус за выполнение */ "description": "", /* Задание бонуса */ "hint": "", /* Текст после решения */ "delay": 0, /* Задержка появления бонуса */ "duration": 0, /* Длительность */ "duration_k": 0 /* Остаток в бонус x */ } ] }
Подсказки
{ "hints": [ /* Список подсказок в уровне. Их может быть не одна, через запятую */ { "number": 1, /* Порядковый номер подсказки */ "info": "", /* Описание подсказки */ "hint": "", /* Текст подсказки */ "delay": 0, /* Время */ "penalty": 0 /* Штраф */ } ] }
Пример всей игры целиком
Описание полей тут.
Пример без описания:
- game_example.json
{ "game": { "type": "1", "stat": "5", "team_limit": 0, "name": "#New Unnamed Game", "description": "", "finish_text": "", "html_header": "", "image": "", "start_time": "2021-10-17 12:00:00", "end_time": "2022-10-17 12:00:00", "status": "3", "start_type": "0", "price": 0, "currency": "UAH", "kind": "0", "scenario": "0", "answer_prefix": "фф", "default_line": "" }, "tasks": [ { "task": { "number": 1, "max_time": 3600, "score": 10, "time_k": 1.0, "delay": 0, "working_name": "Название", "name": "В статке", "surrender_code": "Слива", "task": "Тест", "script": "alert(1)", "answer": "Слово на русском", "answers_limit": 10, "answers_per_time": 60, "answers_limit_penalty": 10, "codes": 0, "code_bonus_time": 0, "code_bonus": 0, "finish_confirmation": "1", "hidden_bonuses": "0", "bonuses_kind": "0" }, "codes": [ { "name": "Сектор 1", "code": "a, b" } ], "bonuses": [ { "number": 1, "code": "c, d", "time": 0, "description": "", "hint": "", "delay": 0, "duration": 0, "duration_k": 0 } ], "hints": [ { "number": 1, "info": "", "hint": "", "delay": 0, "penalty": 0 } ] } ], "gbonuses": [ { "code": "cc, dd", "time": 0, "description": "", "hint": "", "first_task_n": 1, "last_task_n": 2 } ], "lines": [ { "title": "Линейка 2", "task_order": "1,2,3+4,5-7" } ] }
Пример уровня целиком
Описание полей тут.
Пример без описания ниже:
- level_example.json
[ { "task": { "number": 1, "max_time": 3600, "score": 10, "time_k": 1.0, "delay": 0, "working_name": "Название", "name": "В статке", "surrender_code": "Слива", "task": "Тест", "script": "alert(1)", "answer": "Слово на русском", "answers_limit": 10, "answers_per_time": 60, "answers_limit_penalty": 10, "codes": 0, "code_bonus_time": 0, "code_bonus": 0, "finish_confirmation": "1", "hidden_bonuses": "0", "bonuses_kind": "0" }, "codes": [ { "name": "Сектор 1", "code": "a, b" } ], "bonuses": [ { "number": 1, "code": "c, d", "time": 0, "description": "", "hint": "", "delay": 0, "duration": 0, "duration_k": 0 } ], "hints": [ { "number": 1, "info": "", "hint": "", "delay": 0, "penalty": 0 } ] } ]