Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OSFM v1.2.0.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.49 Mб
Скачать

4. Основы скриптинга

4.1 Общая информация

Скрипты – это небольшие программы, работающие непосредственно в игре. Скриптовый язык Обливиона довольно прост и ваш опыт в любом другом языке программирования будет весьма полезен. Основное правило при написании скриптов: каждая операция должна записываться в новой строке. Вы можете также снабдить ваш код комментариями, используя ";". Все, что стоит в строке после точки с запятой, будет в дальнейшем игнорироваться компилятором и игрой, но на этапе разработки и обсуждения скрипта комментарии облегчат процесс его понимания. Скриптовые операции делятся на две основные категории, каждая из которых имеет две подкатегории:

  • Команды: административные и утверждения.

  • Функции: активные и пассивные.

Команды Команда – это скриптовая операция, контролирующая все, что происходит в скрипте. Команды регулируют выполнение скрипта, но не влияют на игровой мир непосредственно. Команды делятся на две подкатегории:

  • Административные команды – это Scriptname, Begin...End и Blocktypes (типы блоков), используемые командой Begin. В каждом скрипте должны быть по крайней мере команда Scriptname, и один Begin...End блок - для назначения скрипта на объекты и определения, когда тот должен заработать.

  • Утверждения – это Set, If, Return и команды объявления переменных (variable declarations). Утверждения не запускают скрипт, но во всех скриптах, кроме самых простых, используются для управления их работой.

Функции Функции – это скриптовые операции, которые взаимодействуют с игровым миром. Это самая большая категория скриптовых операций. Каждая функция возвращает значение, которое может быть использовано при проверке условий "if" или которое можно сохранить в переменной, используя команду set. Функции подразделяются на две подкатегории: пассивные и активные:

  • Пассивные функции проверяют определённые игровые величины и возвращают их значения. Например, функция GetActorValue возвращает определённое значение характеристики актера, а функция GetDetected - только проверяет и возвращает "1", если цель обнаружена, или "0", если нет.

  • Активные функции вносят изменения в игровой мир и обычно возвращают логический результат ("1" или "0") - были ли действия успешными или нет. RemoveSpell, к примеру, снимает заклинание с цели и возвращает "1", если действие прошло успешно (т.к. на цели было заклятие). PlaceAtME создает какой-либо объект в локации вызвавшего эту функцию и возвращает ссылку на копию этого объекта.

Ссылки и переменные Функции оказывают действие на "вызывающий объект" (тот, на котором работает скрипт) по умолчанию, но вы можете вызвать их и на другом объекте, используя ссылку на объект. Когда вы хотите, чтобы скрипт влиял, например, на игрока, используйте ссылку на игрока (“Player”) и точку “.”, чтобы перенаправить вызов функции (function-call) на игрока с вызывающего объекта:

player.additem gold_001 100

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

short addgold   set addgold to 100   player.additem gold_001 addgold

Для своих целей вы можете использовать как локальные переменные, объявленные в этом же скрипте, так и глобальные. Из функции нельзя напрямую обратиться к переменной в другом скрипте. Но такой возможностью обладают команды If и Set. Например, эта строка скрипта работать не будет:

player.additem gold_001 otherobject.addgold

Следует написать так:

Short addgold   ; объявление вспомогательной локальной переменной   set addgold to otherobject.addgold   ; присвоить ей значение внешней локальной переменной player.additem gold_001 addgold   ; использование полученных внешних данных

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]