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

Общий синтаксис функций:

Функции не различаются по регистру, но все равно рекомендуется писать со строчными и прописными для облегчения чтения (напр. GetSpellEffects вместо getspelleffects).

"Object_ID" -> Function, [параметры]

Это формат для всех функций, взаимодействующих или относящихся к определенному объекту в игре. «Стрелка» указывает, на какой объект вызовется функция. “Object_ID” – это уникальный идентификатор (не имя!), который присваивается каждому объекту в редакторе (первая колонка). Если не указать объект, то функция будет вызвана на объект по умолчанию, которому присвоен скрипт.

Некоторые функции можно вызывать с другим объектом в качестве параметра:

"Object_ID1" -> Function, "Object_ID2"

Примечание: Функции с «стрелкой» будут компилироваться, если только объект уже был помещен в игровой мир в редакторе (то есть имеет хотя бы одну копию).

В некоторых функциях использование «стрелки» бессмысленно и даже может привести к ошибкам, напр. В функция которые по умолчанию вызываются для игрока (напр. GetDetected, GetPCRank и т.д.)

Использование «стрелки» для неуникальных объектов приведет к вызову функции только для первого объекта! Так что использование в глобальном скрипте:

"cliff racer" -> SetHealth, 0

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

SetHealth, 0

сделает чудеса, потому что каждая копия скального наездника будет иметь скрипт и применять функцию на себя.

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

If ( GetPCRank == 0 )

If ( CellChanged == 0 )

FadeOut, 2

Общий синтаксис: запятые, скобки и пробелы.

К скриптам TES не предъявляется слишком высоких требований по синтаксису. Запятые могут быть пропущены, а пробелы в большинстве случаев игнорируются. Тем не менее, я бы посоветовал следовать следующим принципам:

  • Используйте запятые между параметрами9

  • Если вы используете ID, содержащий пробелы, то нужно заключить его в кавычки: "Object ID". А еще лучше писать вместо пробелов знак подчеркивания: Object_ID.10

  • Всегда оставляйте пробелы между операторами, скобками и переменными: if ( variable == 1 ), а не: if (variable==1), Object_ID1 -> Function, Object_Id2, а не Object_ID1->Function,Object_ID2. Хотя часто это не имеет значения, иногда это создает странные и непредсказуемые ошибки11.

  • (От Dinkum Thinkum): Подчеркивание в начале ID объектов и переменных приводит к непредсказуемым результатам в редакторе: в некоторых местах это работает, в некоторых редактор выдает ошибки (обычно не имеющие ничего общего с проблемой). Например:

PlaceItemCell, "_dt_Racial_ClothierNord", "Vivec, Agrippina Herennia: Clothier", -348, 48, -221, 0

работает нормально, но

_dt_Racial_ClothierNord -> PositionCell, -348, 48, -221, 0, "Vivec, Agrippina Herennia: Clothier"

вызывает ошибки12.

По крайней мере, одно из руководств по моддерству рекомендовало использовать подчеркивание в начале ID объектов, потому что так они собираются в начале списков объектов и их легко найти. Я и многие люди последовали этом совету. Подчеркивание в переменных также ведет к непредсказуемым результатам: иногда они работают, иногда нет. Так что я НЕ использую подчеркивание ни для чего в CS.