Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скрипты Morrowind.doc
Скачиваний:
91
Добавлен:
29.10.2018
Размер:
2.81 Mб
Скачать

Сообщения об ошибках, неправильная работа и обычные причины в игре, когда исполняется скрипт: в редакторе

Редактор обычно указывает строку, на которой есть ошибка, так что их, чаще всего, легко исправить.

"Mismatched If/else/endif starting on line..."

один или несколько if-блоков не закрыты. Используйте табуляцию, чтобы облегчить нахождение утерянных endif-ов. Это также случается, когда используются неверные имена функций-переменных и другие ошибки написания.

"Function reference object "Foobject" not found"

Эта ошибка показывает, что объект в запросе, например

Foobject -> GetDistance Player

не существует. Когда вы пишете скрипт, а затем создаете новый объект, на который ссылаетесь из скрипта, вы также получите эту ошибку. Закройте окно редактора и перезапустите его, чтобы компилятор зарегистрировал объект.

"Could not find variable or function "Foobject""

Другая синтаксическая ошибка, показывающая, что вы использовали необъявленную переменную, функцию или не существующий объект.

"Script command "foofunc" not found on line 3"

Команда / функция не узнается компилятором. Обычно из-за опечаток.

"You need to end a script with script End scriptname"

Указывает, что компилятор не нашел End. Также случается, когда процесс компиляции нарушен предыдущими ошибками.

"Syntax error Line 20. Miss matched paranthesis"

Указывает, что вы не закрыли все открытые скобки или наоборот.

"You need to enter a value on line 20"

Вы не указали все аргументы, нужные для функции.

Внутриигровые сообщения:

"EXPRESSION in script..."

После чего идет

"RightEval ..."

Эта ошибка указывает на то, что переменная не объявлена. Чаще всего происходит с переменными, которые работают как функции, например PCEquip.

EXPRESSION в основном появляется, если переменные не объявлены в скрипте.

"LeftEval"

эта ошибка появляется, если вы случайно объявили функцию как переменную. Например, следующие строки сгенерируют эту ошибку:

short ScriptRunning

if (ScriptRunning "MyScript" == 1 )

Обе ошибки могут быть вызваны простым отсутствием пробелов в нужных местах. Всегда оставляйте пробелы между скобками и вызовами функций, переменными и т.д.

If ( OnActivate == 1 ), а не if (OnActivate==1). Это порождает ошибки очень редко, но иногда порождает, поверьте мне.

"Infix to Postfix" error

Обычно указывает на плохой синтаксис. Может быть вызвано неправильной командой set с использованием стрелки:

set somevar to ActorID->GetHealth

следует заменить на:

set somevar to ( ActorID->GetHealth )

Также эта ошибка может снова указывать на забытое объявление переменной, работающей как функция, например OnPCEquip, и т.д. (Спасибо Horatio и Ragnar_GD)

AiTravel не работает

Обычная ошибка заключается в том, что координаты по ошибке заданы слишком далеко (например, пропустив "-" или задав много цифр). Однажды я столкнулся с этой ошибкой, введя два раза "-", который в редакторе выглядел как один, только чуть длиннее.

Удвоение NPC

Удвоение NPC и других объектов изредка случается, когда новая версия плагина переписывает старую, а в сохраненной игре остается информация, приводя к клонированию NPC, даже если на нем просто поменялся скрипт. Попытайтесь загрузить плагин в ячейке, далекой от NPC. Похоже можно обойти эту проблему, если сохранять уникальное имя мода, так как в файле сохранения, по видимому, есть информация об имени мода с NPC (спасибо Raptormeat). За более подробной информацией о задвоении и о том, как его избежать, сходите на великолепную страничку Shadowsongs, посвященную этой проблеме:

http://www.angelfire.com/clone2/shadowsong/index.html