Добрый день! Писал долго визуальную новеллу в GMS2. Страницы выводил через case. Решил все данные из кода перенести во внешний файл json. Уроков много не нашел, но постепенно разобрался. Сейчас все работает, но не сразу выяснилась проблема. Обращение по индексу в декодированные данные json вылетают с ошибкой.
Данные всех страниц занесены в мапу. В уроках её создавали и уничтожали каждый раз. Но мне показалось это неправильным. И декодированные данные всех страниц хранятся постоянно. А временные на одну страницу уничтожаются каждый раз после раздачи их переменным.
Сейчас у меня порядок работы игры такой: 1) Открывается файл novell.json. 2) Весь заносится в строку. 3) Строка отправляется на декодирование. 4) Результат хранится в мапе. 5) Каждая новая страница отправляет в функцию свой номер. Та пролистывает мапу, находит индекс и все данные страницы от-туда вносит во временную мапу. 6) Из временной мапы переменным передаются значения. 7) Временная мапа удаляется. 8) Страница успешно строится. 9) При клике номер страницы меняется и мы отправляеся на пункт 5.
И все было прекрасно. Пока мне не захотелось сделать по завершению 100 страниц отправку снова на первую, аля перезапуск игры. Я обнаружил, что мапа что-то делает не так при втором поиске функцией: ds_map_find_value.
Собственно решение, скорее всего, уничтожать все данные данные и каждую страницу декодировать их в мапу повторно.
Скрин с обсуждаемыми строками. Строка с ошибкой выделена.
Ошибка:
Подскажите, где копать? И как вывести все значения мабы в дебаг консоль, что бы потестить, что там вообще за данные? Я мало спал вчера и могу тупить.
Пример первых трех страниц в JSON:
Код
{ "1": { "name": "im", "message": "Я стою в центре зала ДК МАИ...#Похоже это фестиваль Японской культуры...", "back": "sgFirstA", "pers": "sMishaB", "persSize": "small", "caseTrue": 0, "caseTextA": "none", "caseTextB": "none", "caseJmp": 0, "caseJmpA": 0, "caseJmpB": 0, "option": "none" }, "2": { "name": "im", "message": "Передо мной спиной стоит мальчик.#Я не могу увидеть его лицо.", "back": "sgFirstB", "pers": "sMishaB", "persSize": "small", "caseTrue": 0, "caseTextA": "none", "caseTextB": "none", "caseJmp": 0, "caseJmpA": 0, "caseJmpB": 0, "option": "none" }, "3": { "name": "im", "message": "В руках его фотоаппарат фирмы Никон.", "back": "sgFirstB", "pers": "sMishaB", "persSize": "small", "caseTrue": 0, "caseTextA": "none", "caseTextB": "none", "caseJmp": 0, "caseJmpA": 0, "caseJmpB": 0, "option": "none" }, }
Добавлено (07 Мая 2020, 10:19) --------------------------------------------- Ошибка возникает после удаления временной мапы. Я попробовал сразу же создать новую:
Посмотри на форуме https://forum.yoyogames.com/index.php?threads/how-to-localize-your-game-using-json.55568/
Так вот дело в том, что на этом уроке я и основывался, и ниже ребята обсуждали то, что в step некрасиво это держать. Но сейчас почитаю еще комменты. Может что дельное есть. Спасибо.