Редактор скриптов (Edit Scripts) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Редактор скриптов (Edit Scripts)



Основные сведения.

Редактор скриптов – это простой текстовый редактор, с помощью которого вы можете создавать и редактировать свои скрипты.

 

 

В верхней части окна находится главное меню. Пунктов меню всего три – Script (скрипт), Edit (редактировать) и Help (помощь).

Пункт меню Script.

При активизации кнопкой мыши открывается ниспадающее меню, имеющие следующие подпункты:

  • New (новый) - создать новый скрипт.
  • Open (открыть) - открыть уже существующий скрипт.
  • Next script (следующий скрипт) - перейти на следующий (по алфавиту) скрипт из списка Open, при этом текущий не сохраняется.
  • Previous script (предыдущий скрипт) - открыть предыдущий скрипт, при этом текущий не сохраняется;
  • Save (сохранить) - скомпилировать и сохранить скрипт. Если при компиляции возникают ошибки, то сохранение не производится. Исправьте найденные ошибки и сохраните снова.
  • Recompile all (скомпилировать всё) - перекомпилировать все скрипты в игре. Используется для проверки и поиска ошибок при работе с большим количеством скриптов (может занять некоторое время). Старайтесь не пользоваться этой опцией. По имеющимся отзывам, в том числе и на WIKI, делать это крайне не рекомендуется!
  • Delete (удалить) - удалить открытый скрипт.
  • Exit – закрыть редактор.

 

Пункт главного меню Edit.

  • Undo (отменить, Ctrl+Z) - отменяет ваше последнее действие.
  • Redo (возвратить, Ctrl+Y) - возвращает изменение в скрипте.
  • Find text (найти текст) - поиск заданного текста в вашем скрипте.
  • Find next (найти следующее, F3) – поиск, начиная с текущей позиции;
  • Go to line (перейти на строку) - переход на строку с указанным номером.

Пункт главного меню Help.

При выборе подпунктов этого меню вызывается запуск Интернет-браузера и производится попытка связаться с сервером, на котором находится официальный сайт The Elder Scrolls Construction Set WIKI, по адресу: http://cs.elderscrolls.com/constwiki/index.php/Main_Page
Следует отметить, что именно на этом ресурсе для игры TES 4 Oblivion вы найдете максимально возможное количество информации - как по плагиностроению в общем, так и по скриптингу в частности.

 

 

Панель инструментов.

 

 

Под главным меню находится панель инструментов с иконками, которые дублируют часть пунктов главного меню, а также поле для выбора типа скрипта - Script type. В нем вы указываете, к чему привязывается ваш скрипт – к обьекту (object), квесту (quest) или к магическому эффекту (мagic effect).

Иконки по порядку слева направо:

  1. Open – открыть существующий скрипт.
  2. Save – скомпилировать и сохранить скрипт.
  3. Previous – предыдущий скрипт.
  4. Next – следующий скрипт.
  5. Recompile all – скомпилировать ВСЕ скрипты. Не поддайтесь соблазну!
  6. Delete – удалить скрипт.
  7. Exit – закрыть.

 

Назначение и главная цель вашего скрипта

Приняв решение написать скрипт, вы должны четко представлять себе, какие функции он должен выполнять и нельзя ли обойтись без него. Дело в том, что любой скрипт занимает драгоценные миллисекунды вашего процессорного времени, понижая таким образом fps. Особенно это заметно, когда в сцене находится много персонажей или, например, деревьев. Много скриптов в такой сцене могут резко понизить производительность вашего процессора, сделав из игры “слайд-шоу”. Есть разумный предел, переступать через который нежелательно.

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

 

Ваш первый скрипт

Надеемся, вы уже знаете, как запустить редактор TES CS и что там делать, так что перейдём непосредственно к скриптам. В панели инструментов наверху найдите кнопку с карандашом (крайняя справа) – эта кнопка открывает редактор скриптов. Нажали? Значит, вы уже видите этот самый редактор. В нём сейчас пусто и основное его поле, где вам предстоит набирать будущий текст скрипта, имеет серый цвет.

Теперь перейдём к скриптам. Для начала можете посмотреть, как они вообще выглядят. Для этого нажмите на красную стрелку “вправо” и перед вами откроется первый в списке скрипт - AbandonedMineTrap02Script. Судя по названию, он отвечает за работу какой-то ловушки в заброшенной шахте. Всегда старайтесь давать своим скриптам понятные названия!

В этом скрипте есть все основные элементы скрипта:

В самой первой строке пишется название скрипта:

  1. ScriptName AbandonedMineTrap02Script – эта строка обязательна, в ней пишется имя скрипта.
  2. Чуть ниже идёт объявление переменных: short triggered – создание короткой целочисленной переменной. В скрипте может не быть вообще переменных, а может быть несколько десятков и разных типов.

Далее идут рабочие блоки:

Begin [тип блока] …. End

Именно в этих блоках и будет описываться работа скрипта.

А теперь создадим свой собственный, самый первый скрипт!

  1. В Object Window (окне объектов конструктора) отыщите отмычки. Вы найдете их в списке Items → Misc Item. Вместо отмычки подойдет любой обычный предмет - яблоко или что-нибудь подобное. Сделайте двойной щелчок на предмете.
  2. Откроется диалоговое окно со свойствами предмета. Там, где написано "Script: NONE", кликните на кнопку с тремя точками, находящуюся справа. Это откроет редактор скриптов.
  3. Выберите ScriptNew, чтобы создать новый скрипт.

Скопируйте приведенный ниже программный код комбинацией клавиш Ctrl + C и вставьте его в окно редактора с помощью комбинации Ctrl + V:

 

ScriptName HelloWorld Begin OnAdd Message "Hello World!", 10 End

 

Информация о данном скрипте:

· Первая строка – это имя скрипта (Scriptname). Убедитесь, что оно уникально. В противном случае вам придётся его изменить, т.к. редактор не позволит скомпилировать скрипт.

· "Begin OnAdd" означает, что код внутри данного блока будет исполняться всякий раз, когда вы подберете нужный предмет. "OnAdd" – это тип данного блока. Команда “end” закрывает секцию скрипта, которая связана с “OnAdd”. У вас может быть несколько отдельных блоков begin/end, имеющие одинаковые или различные типы блоков (blocktype).

· Между begin и end находится исполняемый программный код. В нашем случае это всего лишь одна функция – Message, которая выведет на экран сообщение "Hello World!".

· И последнее – временной контроль за строкой сообщения. В данном случае она имеет параметр «10», который означает, что строка будет отображаться на экране в течение 10 сек.

  1. Сохраните скрипт и закройте Редактор скриптов.
  2. Вернитесь к свойствам предмета, "HelloWorld" должно появиться как опция в ниспадающем списке скриптов. (Возможно, вам нужно будет закрыть окно свойств объекта и снова открыть его, чтобы скрипт "HelloWorld" появился в ниспадающем списке.)
  3. Щелкните ОК, чтобы сохранить изменения, и закройте окно.
  4. На панели инструментов выберите File -> Save; в окне сохранения введите имя файла HelloWorld (это будет ваш первый *.esp файл плагина - HelloWorld.esp!).
  5. Откройте Oblivion_Launcher и щелкните Data Files.
  6. Двойным щелчком мыши подключите свой HelloWorld.esp, щелкните OK и закройте окно.
  7. Теперь все должно работать! Запустите игру, бросьте отмычку (или предмет, который вы использовали) на землю и подберите ее. При этом должно появиться сообщение "Hello World!".

И с этим первым результатом добро пожаловать в увлекательный мир скриптинга!


 

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

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

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

Скриптовые операции делятся на две основные категории, каждая из которых имеет две подкатегории:

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

Команды

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

  • Административные команды – это 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; использование полученных внешних данных

Типы скриптов

 



Поделиться:


Последнее изменение этой страницы: 2016-07-11; просмотров: 902; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.221.165.246 (0.038 с.)