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

Комментарии

Комментарии обозначаются точкой с запятой (;). Они могут быть добавлены на новой строке или в конце строки с кодом

; вход в крадущийся режим

Fargoth->ForceSneak

Fargoth->AiTravel -11468.595,-71511.531,173.728 ;идет к дереву

Отступы / использование табуляторов

Ради вашего же блага, используйте отступы (табуляторы) в конструкциях if-elseif – это дает возможность гораздо легче их воспринимать, и вы вряд ли забудете поставить endif в конце. В разделе Советы и Трюки вы найдете ссылку на внешний редактор скриптов EMACS, который будет автоматически оставлять отступы.

If ( variable1 )

If ( variable2 )

[делать что-то]

endif

endif

лучше, чем

If ( variable1 )

If ( variable2 )

[делать что-то]

endif

endif

Переменные Типы переменных

Существуют три типа переменных в скриптах TES: короткие (short), длинные (long) и с плавающей точкой (float). Им могут быть присвоены следующие значения:

Short -32,768 to 32,767 (целочисленное со знаком)

Long -2,147,483,648 to 2,147,483,647 (длинное целочисленное со знаком)

Float 3.4E +/- 38 (с плавающей точкой, 7 разрядов)

Границы типа long верны только отчасти. В TES CS максимальное значение, которое вы можете задать, равняется 2147483520 (Информация с форумов / Argent).

Теоретически должны также быть еще и строковые переменные, но, по моим данным, они не включены в редактор. К сожалению, нет типа переменных, в которых бы можно было сохранить идентификаторы объектов, что ограничивает язык скриптов до определенной степени.

Переменные могут быть сгруппированы как локальные переменные (действительны только в том скрипте, где они объявлены) и глобальные переменные (действительны во всех скриптах).

Примечание: Глобальная переменная типа long на самом деле имеет тип float! В локальном скрипте переменная типа long имеет 32 бита. Но если использовать ее как глобальную, то количество битов падает до 24, как у типа float. Открыл это Mental Elf, когда пытался использовать “упаковку битов”, чтобы получить 32 флага из глобальной переменной типа long. (Информация с форумов / mental elf).

Локальные переменные

Локальные переменные должны быть объявлены в скрипте:

Float floatvarname

Short shortvarname

Long longvarname

Локальные переменные уникальны в пределах данного экземпляра скрипта. То есть одинаковые локальные переменные на разных объектах не влияют друг на друга. Длина имени переменной не ограничена, но запрещено использовать имена функций (будут ошибки в игре) и зарезервированные знаки (напр. -, +, /, *, =, ", и т.д.), что просто не даст скомпилировать скрипт. Т.е. "variable-1" не подходит для имени переменной. Знак подчеркивания допускаются (“my_variable”). Точки в именах использовать нельзя (см. ниже «Использование переменных в других локальных скриптах»).

Глобальные переменные

Чтобы объявить глобальную переменную, зайдите в меню Gameplay и выберете Globals. Нажмите New, задайте имя и начальное значение глобальной переменной13. По умолчанию оно равно 0. Глобальные переменные полезны в квестах, когда вам нужно отследить события, удаленные в пространстве и времени. Также это простой способ обмена информацией между скриптами.

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