Script error/ru

From Dragon Age Toolset Wiki
Jump to: navigation, search
Ошибки выполнения
Начало / Русская DA Builder Wiki / Поделиться ВКонтакте
Скрипты
все статьи категории
описание функций

На данный момент в этой статье описываются ошибки выполнения скрипта. Ошибки в процессе компиляции пока не описаны.

Ошибки

Всего существует два типа ошибок:

  • Ошибки выполнения (недостающие файлы и тому подобное)
  • Ошибки стека (переполнение, недостаточное наполнение, деление на 0 и тому подобное)

Ошибки выполнения

Общие ошибки выполнение часто вызваны отсутствием в игре необходимого скрипта или же других общих проблем, которые не позволяют обработать скрипт должным образом.

Ошибка запуска

  • Сообщение: "<recursion level> Script failed to run: (filename)" (Скрипту не удалось запуститься)
  • Причина: Зачастую скрипт попросту не существует.
  • Решение:

Ошибка чтения

  • Сообщение: "Error: Failed to read script file" (Ошибка: не удалось прочитать файл скрипта)
  • Причина: Общее сообщение для всех неизвестных ошибок. Вводит в заблуждение, так как чаще всего файл считывается, но не обрабатывается.
  • Решение:


Ошибка загрузки

  • Сообщение: "Error: Script couldn't load" (Ошибка: не удалось загрузить скрипт)
  • Причина: Общее сообщение для всех проблем, связанных с нечитаемостью игры.
  • Решение: Убедитесь, что скрипт был экспортирован в игру. Проверьте, есть ли он в папке toolsetexport соответсвующего модуля.

Ошибки стека / Неизвестные ошибки

Когда стек портится, игра выдаст одну из ошибок, описанных ниже. В таком случае нужно проверить журнал(лог) выполнения команд на наличие вниманий\ошибок возле недавно написанных скриптовых команд.

Стек переполнен

  • Сообщение: "Stack Overflow in script: (filename)" (Стек переполнен в скрипте: название_файла)
  • Причина: Стек был испорчен из-за слишком большого количества параметров движка.
  • Решение: Декларация команды в script.ldf может не совпадать с его реализацией в виртуальной машине. Проверьте на совместимость ваш exeшник и script.ldf. Локально обновите script.ldf (скопируйте его в папку /packages/core/override и перезапустите тулсет), после чего заново экспортируйте все скрипты.


Недополнение стека

  • Сообщение: "Stack Underflow in script: (filename)" (Стен недополнен в скрипте: название_скрипта)
  • Причина: Стек был испорчен в виду отсутствия значений всех его команд.
  • Решение: То же, что и в случае с переполнением.


Ошибки стека

  • Сообщение: "Stack Error (code) in script: (filename) "
  • Причина: Смотрите список ошибок и их кодов ниже.
Код Причина Решение
TOO_MANY_INSTRUCTIONS (632) The VM has terminated the offending script after executing the maximum number of instructions (131072). This is ALWAYS an error made by the scripter, most likely triggered by an infinite loop. Any script that manages to run even closely to the maximum number of allowed instructions is either broken or badly designed and needs to be rewritten with a more efficient design.
TOO_MANY_RECURSION_LEVELS (633) The VM has terminated the offending script after hitting the maximum recursion level (8). This is always an error made by the scripter, often caused by layered HandleEvent calls Ensure the current event is handled earlier in the code and not propagated through a long chain of HandleEvents.
CANNOT_READ_FILE (634) Скрипт не может быть прочитан. Скорее всего потому, что он не существует. Откройте нужный скрипт в тулсете и экспортируйте его
STACK_OVERFLOW (638) Компилятор ограничил скрипт, после того, как он испортил стек. О переполнении стека читайте выше.
STACK_UNDERFLOW (639) Компилятор ограничил скрипт, после того, как он испортил стек. О недополнении стека читайте выше..
INVALID_COMMMAND (642) Компилятор засек вызов команды, неизвестной exeшнику. Возможно Script.ldf было обновлен командой, которая неизвестна текущему exeшнику. Обновите ваш exeшник.
DIVISION_BY_ZERO (644) В скрипте присутствует операция деления на 0 или же внутренняя команда не принимает 0 в качестве параметра (например команда Рандом(Random)). Убедитесь, что параметры скрипта защищены от превращения в 0(например во время их считывания из 2DA-файла). Найдите проблему с помощью проверки соответствующих лог-файлов. (FW_SCRIPT и FW_SCRIPT_COMMANDS)


Определения

#define STRREF_VIRTUALMACHINE_ERROR_TOO_MANY_INSTRUCTIONS           632
#define STRREF_VIRTUALMACHINE_ERROR_TOO_MANY_LEVELS_OF_RECURSION    633
#define STRREF_VIRTUALMACHINE_ERROR_FILE_NOT_OPENED                 634
#define STRREF_VIRTUALMACHINE_ERROR_FILE_NOT_COMPILED_SUCCESSFULLY  635
#define STRREF_VIRTUALMACHINE_ERROR_INVALID_AUX_CODE                636
#define STRREF_VIRTUALMACHINE_ERROR_NULL_VIRTUAL_MACHINE_NODE       637
#define STRREF_VIRTUALMACHINE_ERROR_STACK_OVERFLOW                  638
#define STRREF_VIRTUALMACHINE_ERROR_STACK_UNDERFLOW                 639
#define STRREF_VIRTUALMACHINE_ERROR_INVALID_OP_CODE                 640
#define STRREF_VIRTUALMACHINE_ERROR_INVALID_EXTRA_DATA_ON_OP_CODE   641
#define STRREF_VIRTUALMACHINE_ERROR_INVALID_COMMAND                 642
#define STRREF_VIRTUALMACHINE_ERROR_FAKE_SHORTCUT_LOGICAL_OPERATION 643
#define STRREF_VIRTUALMACHINE_ERROR_DIVIDE_BY_ZERO                  644
#define STRREF_VIRTUALMACHINE_ERROR_FAKE_ABORT_SCRIPT               645
#define STRREF_VIRTUALMACHINE_ERROR_IP_OUT_OF_CODE_SEGMENT          646
#define STRREF_VIRTUALMACHINE_ERROR_COMMAND_IMPLEMENTER_NOT_SET     647
#define STRREF_VIRTUALMACHINE_ERROR_UNKNOWN_TYPE_ON_RUN_TIME_STACK  648
#define STRREF_VIRTUALMACHINE_ERROR_ARRAY_ACCESS_OUT_OF_BOUNDS      649


Язык: English  • русский