Структура 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", /* Старт */ "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" */ "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 } ] } ]