Документация Nyxtale

Платформа 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

Починить Добавь путь к этой концовке или удали её.