Платформа NyxtaleСправочник
Коды диагностик
Каждый код, который может показать компилятор и валидатор, и как его починить.
Каждый код, который может показать движок, и что с ним делать. Собирается из каталогов DIAGNOSTIC_MESSAGES и DIAGNOSTIC_HINTS — из тех же, которыми Studio подписывает ошибку у вас в редакторе. Формулировка здесь и формулировка там — одна.
Компилятор 41
Синтаксис: сообщение приходит, пока вы печатаете.
choice_at_invalid
`@at` требует две доли кадра: x и y.
Починить Например: `@at 0.2 0.5` — левее середины, по центру высоты.
choice_cost_invalid
`@cost` требует число и валюту.
Починить Например: `@cost 15 keys`.
choice_icon_invalid
`@icon` требует имя изображения.
Починить Например: `@icon cart_1`.
choice_modifier_unknown
Недопустимый модификатор выбора (допустимы `@cost`, `@if`, `@timer`, `@at`, `@icon`).
Починить Допустимы модификаторы `@cost`, `@if`, `@timer`, `@at`, `@icon`.
choice_syntax
Ожидался выбор вида `* choice "текст"`.
Починить Например: `* choice "Идти вперёд"`.
choice_text_missing
У выбора отсутствует текст в кавычках.
Починить Например: `* choice "Идти вперёд"`.
choice_timer_invalid
`@timer` требует число (мс).
Починить Например: `@timer 5000`.
content_warning_empty
`@content_warning` без текста игнорируется.
Починить Например: `@content_warning "насилие"` или `@content_warning gore`.
content_warning_unknown_code
Неизвестный код предупреждения «{code}» пропущен.
Починить Код должен быть из набора платформы (например, gore, self_harm, photosensitivity) — или укажи предупреждение текстом в кавычках.
craft_silent_stretch
Подряд идёт {lines} реплик без единого звука — сцена играет в тишине.
Починить Один `@ambient` на всю сцену уже держит атмосферу; отдельный `@sound` — на удар, а не на каждую строку.
craft_slot_collision
«{who}» встаёт туда же, где уже стоит «{occupant}» ({slot}).
Починить Разведите их по сторонам — `left` и `right`; иначе один спрайт просто сменит другой.
craft_unreleased_effect
`@{effect}` включён и ни разу не выключен — он уйдёт в следующую сцену.
Починить Если так и задумано — ничего делать не нужно; иначе закройте его до конца сцены.
directive_invalid
После `@` ожидается имя директивы.
Починить Например: `@set`, `@if`, `@bg`.
effect_named_invalid
Именованный суб-флаг `@{sub}` требует значение.
Починить Например: `@jumpscare shadow_figure @sound stinger_01`.
expr_expected
Ожидалось выражение, найдено «{found}».
Починить Здесь нужен операнд: число, переменная, вызов или `(`.
expr_paren
Не закрыта скобка в выражении.
Починить Добавь `)`.
expr_trailing
Лишний токен «{token}» в выражении.
Починить Проверь оператор или закрывающую скобку.
i18n_empty_translation
{field}: перевод «{locale}» пустой.
i18n_invalid_locale
{field}: «{locale}» не похоже на код языка (BCP-47).
Починить Используй код вида en, ru, pt-BR, zh-Hans.
i18n_missing_source
{field}: отсутствует текст на исходном языке (src).
Починить src — обязательный текст исходного языка; переводы добавляются как дополнительные ключи.
if_target_missing
После `->` в `@if` ожидается цель перехода.
Починить Например: `@if sanity <= 0 -> ending_madness`.
indent_unexpected
Неожиданный отступ — строка вложена, но нет открывающего блока.
Починить Проверь отступы: вложенность допускают только `@if`/`@unless` и `* choice`.
input_kind_invalid
Вид `@input` должен быть `text` или `number`.
Починить Например: `@input age "Сколько тебе лет?" number`.
input_prompt_missing
`@input` требует текст-приглашение в кавычках.
Починить Например: `@input hero_name "Как тебя зовут?"`.
input_var_missing
`@input` требует имя переменной.
Починить Например: `@input hero_name "Как тебя зовут?"`.
jump_target_missing
Требуется имя цели перехода (лейбл или сцена).
Починить Укажи имя цели — лейбл или сцену. Например: `-> go_deeper` или `@jump next_scene`.
label_name_missing
`@label` требует имя.
Починить Например: `@label go_deeper`.
non_ascii_ident
Имя «{word}» написано не латиницей.
Починить Имена ассетов и персонажей пишутся латиницей — или возьмите в кавычки: «"{word}"». Русскими могут быть сами команды (`@фон`) и текст реплик.
nsx_version_invalid
`@nsx_version` требует целое число.
Починить Например: `@nsx_version 1`.
nsx_version_missing
Отсутствует обязательная директива `@nsx_version`.
Починить Добавь в начало файла, например `@nsx_version 1`.
render_invalid
`@render` требует ядро темы (идентификатор).
Починить Ядро темы — идентификатор; примеси добавляются через `+`. Например: `@render horror + creepypasta`.
render_missing
Не задана тема `@render`; используется `default`.
Починить Например: `@render horror + creepypasta`.
scene_empty
Сцена не содержит ни одного узла.
Починить Добавь хотя бы одну реплику, эффект или переход.
scene_missing
Не задано имя сцены.
Починить Добавь `@scene <имя>` или передай `scene` в опциях компиляции.
scene_name_invalid
`@scene` требует идентификатор.
Починить Например: `@scene forest_clearing`.
set_op_invalid
`@set` требует оператор `=`, `+=` или `-=`.
Починить Например: `@set courage += 1`.
set_var_missing
`@set` требует имя переменной.
Починить Например: `@set sanity -= 10`.
string_unterminated
Незакрытая кавычка в строке.
Починить Добавь закрывающую кавычку `"`.
syntax_unknown_line
Не удалось разобрать строку.
Починить Ожидались реплика `speaker: текст`, директива `@…`, выбор `* choice` или переход `->`.
unexpected_char
Неизвестный символ «{char}».
Починить Ожидались оператор, число, идентификатор или скобка.
unknown_function
Неизвестная функция «{name}».
Починить Доступны: rand, min, max, clamp, abs.
Валидатор 36
Целостность истории: граф, флаги, ассеты, права.
NSX_ALIAS_DUPLICATE
псевдоним «{alias}» назначен нескольким ключевым словам
Починить Один псевдоним — одно каноническое ключевое слово.
NSX_ALIAS_FLAG_COLLISION
псевдоним «{alias}» совпадает с именем объявленного флага
Починить Грамматика различит их по `@`, но одинаковые имена вредят читаемости и grep.
NSX_ALIAS_RESERVED
псевдоним «{alias}» — зарезервированное слово или недопустимый токен ключевого слова
Починить Псевдоним — один идентификатор (буквы/цифры/`_`), не выражение-builtin и не логическое слово.
NSX_ALIAS_SHADOWS_CANON
псевдоним «{alias}» совпадает с каноническим ключевым словом другой директивы
Починить Выбери имя, не занятое каноническим ключевым словом.
NSX_ALT_TEXT_MISSING
узел «{id}»: визуальный ассет в {effect} без alt-текста для скринридера (§17)
Починить Добавь `@alt "…"` — описание изображения для линеаризации скринридером.
NSX_ASSET_NOT_RESOLVABLE
ресурс «{id}»: значение «{url}» не является абсолютным адресом — читатель ничего по нему не загрузит
Починить Загрузи файл через «Ресурсы» — публикация подставит его постоянный адрес (https://…). Относительное имя файла не адрес.
NSX_BASE_AUDIO_UNKNOWN
узел «{id}»: эффект {effect} ссылается на несуществующий звук базовой библиотеки «{ref}»
Починить Проверь id или выбери звук из базовой библиотеки.
NSX_BROKEN_REF
Битая ссылка: цель не найдена среди узлов сцены.
Починить Исправь ссылку или добавь недостающий узел (проверь и имя стартового узла).
NSX_CHOICE_AT_CROWDED
узел «{id}»: варианты {a} и {b} стоят почти в одной точке — палец их не различит
Починить Разведи области хотя бы на {min} кадра друг от друга.
NSX_CHOICE_AT_PARTIAL
узел «{id}»: место на кадре указано у {placed} вариантов из {total} — остальным негде нарисоваться
Починить Либо поставь `@at` каждому варианту, либо ни одному: выбор рисуется либо областями на картинке, либо списком.
NSX_CHOICE_AT_RANGE
узел «{id}»: вариант {option} поставлен по {axis} в {value} — доля кадра лежит между 0 и 1
Починить 0 — левый/верхний край, 1 — правый/нижний. Середина кадра — `@at 0.5 0.5`.
NSX_DEAD_END
узел «{id}» — тупик: нет ни продолжения, ни явного конца
Починить Добавь next/переход или узел end.
NSX_EFFECT_ARG
узел «{id}»: недопустимый аргумент эффекта {effect}
Починить Проверь аргументы эффекта: их количество, тип и порядок.
NSX_EFFECT_MISPLACED
узел «{id}»: «{effect}» задаётся в заголовке выбора, а не отдельной строкой
Починить Перенеси его в заголовок опции: `* choice "…" @{effect} …`.
NSX_EMPTY_CHOICE
узел выбора «{id}» не содержит ни одной опции
Починить Добавь хотя бы одну опцию или замени узел на end/переход.
NSX_EXPR_FLAG_TYPE
выражение: несогласованность типов в сравнении ({op})
Починить Сравнивай значения одного типа.
NSX_EXPR_UNKNOWN_FLAG
выражение: обращение к необъявленной переменной «{var}»
Починить Объяви переменную в flags_schema или исправь имя.
NSX_FLAG_TYPE
узел «{id}»: несогласованность типов переменных ({op})
Починить Сравнивай значения одного типа; для bool используй `@set =`, арифметику — только над int.
NSX_HOLD_DURATION
узел «{id}»: длительность удержания {value} мс вне допустимых границ {min}–{max}
Починить Задай целое число миллисекунд в диапазоне {min}–{max}, например `@hold_to_act 1500`.
NSX_HOLD_NO_FALLBACK
узел «{id}»: удержание без доступной альтернативы — жест становится единственным путём дальше (§17 моторная доступность)
Починить Оставь fallback включённым (по умолчанию) или добавь тап/подтверждение как альтернативу удержанию.
NSX_INPUT_TYPE
узел «{id}»: @input {kind} требует переменную типа «{expected}», а «{var}» имеет тип «{actual}»
Починить Согласуй тип переменной с видом `@input`: number → int, text → str.
NSX_INTENSITY_SUPPRESSED
узел «{id}»: эффект {effect} приглушается при нулевой интенсивности (§17)
NSX_IP_BLOCKED
публикация запрещена: ip_clearance = «blocked»
Починить Дождись очистки прав (cleared) перед публикацией.
NSX_LICENSE_ATTRIBUTION
лицензия «{license}» требует указания авторства (attribution), но оно пусто
Починить Заполни attribution источником/автором оригинала (§15).
NSX_MISSING_ASSET
узел «{id}»: эффект {effect} ссылается на отсутствующий ресурс «{ref}»
Починить Загрузи ресурс в историю или проверь его id.
NSX_PHOTOSENSITIVE_LIMIT
узел «{id}»: эффект {effect}, «{arg}» = {value} превышает безопасный порог {safeMax} (§17 фото-чувствительность)
Починить Клиент ограничит значение; снизь частоту/амплитуду для комфорта.
NSX_PHOTOSENSITIVE_SUPPRESSED
узел «{id}»: эффект {effect} отключается в режиме «мягкие эффекты» (§17)
Починить Убедись, что несущий сигнал этого бита есть и без визуала (A16).
NSX_READ_BEFORE_WRITE
узел «{id}»: переменная «{var}» может читаться раньше присваивания (нет default в схеме)
Починить Задай default в flags_schema или присвой @set до чтения.
NSX_REDUCE_MOTION_MISSING
узел «{id}»: фото-чувствительный эффект {effect} без объявленной reduce-motion-альтернативы (§17)
Починить Добавь `@reduce_motion off` (скрыть), `@reduce_motion keep` (безопасен) или имя эффекта-замены.
NSX_TRAP_CYCLE
узел «{id}» — часть цикла без выхода: из него не достичь концовки
Починить Добавь ветку к end или условие выхода из цикла.
NSX_UNKNOWN_EFFECT
узел «{id}»: неизвестный эффект «{effect}»
Починить Опечатка в директиве или нужен плагин-механика (§11).
NSX_UNKNOWN_FLAG
узел «{id}»: обращение к необъявленной переменной «{var}»
Починить Объяви переменную в flags_schema или исправь имя.
NSX_UNKNOWN_NAMED_ARG
узел «{id}»: эффект {effect} не знает именованного аргумента «{arg}»
NSX_UNKNOWN_VOCAB_ID
узел «{id}»: эффект {effect} ссылается на «{ref}» ({vocab}) — такой id в истории нигде не появляется
Починить Такой id должен где-то появиться в истории — там, где он выдаётся. Проверь написание.
NSX_UNREACHABLE
узел «{id}» недостижим из entry
Починить Свяжи его ссылкой из достижимого узла или удали.
NSX_UNREACHABLE_END
концовка «{id}» недостижима ни одним путём из entry
Починить Добавь путь к этой концовке или удали её.