Учебник скриптирования: Основы скриптирования Из The Elder Scrolls Construction Set Wiki
Скрипт – это маленькая программа, которая запускается внутри игры, язык скриптов Обливиона сравнительно прост, опыт любых других языков программирования даст вам многое.
Главное правило: каждая операция должна начинаться с новой строки.
Вы также можете добавлять комментарии в свой скрипт, используя «;», все после точки с запятой будет проигнорировано.
Скриптовые операции могут быть разделены на две базовые категории, каждая с двумя подкатегориями.
1.Команды
Команды – это скриптовые операции, которые контролируют, что, собственно, происходит внутри скрипта. Команды управляют исполнением скрипта, однако не воздействуют на мир прямо.
[ Примечание переводчика: по-видимому, имеется в виду, команды не влияют прямо на события, происходящие в мире внутри игры, сиречь в Киродииле. В общем, понимайте как хотите =)]
Различают две подкатегории: административные команды и statement.
[Примечание переводчика: поскольку я не профессиональный программист, я не смог подобрать точного термина для «statement».Простите мне этот маленький грех. Вообще statement переводится как «заявление» или «утверждение». Однако в данной ситуации оба термина не будут точными, поскольку «statement» в скриптах Обливы (как и Морра) означает открытие своего рода конструкции, влияющей на исполнение скрипта – дальше по ходу вы сами это увидите. Давайте будет называть statement просто конструкциями. Еще раз прошу прощения. Если подберете нужный термин – отпишитесь мне на мыло, пожалуйста.]
• Административные команды – это Scriptname [название скрипта – прим. переводчика], Begin, End и блоки [Blocktypes – отдельное явление в скриптах Обливиона, об этом позднее, не путайте с обычными кусками скрипта, которые традиционно называют блоками; все, что касается Blocktypes я обозначу полужирным шрифтом – прим. переводчика], используемые командой Begin.Каждый работающий скрипт требует как минимум Scriptname и один «Begin...End» блок, чтобы назначить скрипт объекту и контролировать, когда скрипт будет исполнен.
• Конструкции – это Set, If, Return, а также объявления переменных. Конструкции не требуются, чтобы скрипт заработал, однако наиболее простые скрипты используют их, чтобы контролировать, как исполнен скрипт. [Сложно для понимания. Это не я, честно. У авторов тутора какая-то байда в этом месте была, словно печатали с перепоя. А может еще одна непонятная схема буржуйского языка. ИМХО, конструкции не только простые, но и сложные скриты используют. В общем, читайте так: большинство скриптов используют конструкции чтобы контролировать то, каким образом исполняется или исполнился скрипт – Тиберий.]
2. Функции
Функции – это скриптовые операции, которые взаимодействуют со внутриигровым миром. Это наибольшая категория скриптовых операций. Каждая функция обращает значение, которое может быть использовано как условие для «If»-конструкции или чтобы установить значение переменной с помощью «set»-конструкции.
Различают две категории: пассивные и активные функции.
• Пассивные функции проверяют определенные состояния внутри игры и обращают числовое значение, которые представляют их. Например, «GetActorValue», которое обращает конкретное число, или «GetDetected», которое обращает «1», если цель замечена и «0» если нет.
• Активные функции производят изменения во внутриигровом мири и обычно обращают булевые значения («1» или «0»). RemoveSpell, например, удаляет заклинание у цели [объекта скриптовой операции – Тиберий] и обращает «1», если действие было успешным ( то есть у цели было заклинание первоначально [короче говоря, было что отнимать – Тиберий]). PlaceAtMe создает объект в локации вызывающего и становится ссылкой на данный объект. [Вызывающий, ссылки... не паниковать! Читайте дальше, все просто на самом деле. Будут замечания по более точному переводу (термины я подобрал некрасивые) пишите на мыло - Тиберий]
3. Ссылки и Переменные
Функции влияют на вызывающий объект (которым запущен скрипт [я это так понял – в который рука разраба или моддера запихала скрипт и с существованием которого связано исполнение скрипта; как в старом добром Морре]) по умолчанию, однако вы можете перенаправить их на другой объект, используя ссылку на объект. Когда вы хотите, чтобы скрипт подействовал на игрока, например, используйте ссылку на игрока («Player») и «.» (точку), чтобы перенаправить действие ссылки на игрока вместо вызывающего объекта.
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
Учебник скриптирования: Мой первый скрипт
Из The Elder Scrolls Construction Set Wiki
http://cs.bethsoft.com/constwiki/index.php/Scripting_Tutorial:_My_First_Script
Этот небольшой тутор даст вам краткий инструктаж создания вашего первого скрипта. Это детальное пошаговое описание процесса создания скрипта займет около 5-10 минут.
Итак, приступим.
1. Откройте The Elder Scrolls Construction Set.
2. Выберите File --> Data, откроется окно. Двойным щелчком выберите Oblivion.esm и кликните OK. (Затем подождите пока все загрузится.)
3. В Object Window (Окне объектов), найдите отмычки. Вы найдете их в списке Items --> Misc Item. (Если у вас нет отмычки, подойдет любой обычный предмет, такой как яблоко или еще что-нибудь.) Двойной клик на предмете.
4. Откроется окно со свойствами предмета. Там, где написано Script: NONE, кликните 3 маленькие точки рядом.[Еще точнее: найдите строчку с этим текстом, там выпадающий список, а справа – кнопочка с тремя точками; вот ее-то и жмите; и не говорите, что Тиберий вас не любит – прим. переводчика.]. Это откроет Script Editor (редактор скриптов).
5. Выберите Script --> New, чтобы начать новый скрипт.
6. Вырезаем и вставляем следующее [буржуи, все им резать надо, лучше копируем Ctrl + C и вставляем Ctrl+V; вообще, учитесь все клавой делать, с наименьшим количеством щелчков мыши - Тиберий]:
ScriptName HelloWorld
Begin OnAdd
Message "Hello World!", 10
end
Инфо о данном скрипте:
- Первая строка – это имя скрипта [пресловутое Scriptname - Тиберий]. Убедитесь, что оно уникально[а если не убедитесь, редактор напомнит – начнет материться и взывать ко всем инстанциям – опять тот самый Тиберий].
- "Begin OnAdd" означает, что этот скрипт будет действовать будет исполняться всякий раз, когда вы подберете этот предмет. Команда «end» закрывает ту секцию скрипта, которая связана с «OnAdd». У вас может отдельный begin/end блок для каждого blocktype [помните, я говорил о блоках, которые я буду отмечать полужирным? Так вот, это тот саамы блок – Тиберий.] [Далее авторы предлагают посмотреть часть материала по Begin . Ссылку я оставил, хотя я это тоже переведу. Вообще говоря, свой материал в нете они выложили прегадко. Чтобы хоть о чем-то составить целостную картину, надо изрядно пощелкать мышью по ссылкам. Буржуи, что с них возьмешь - Тиберий]
- И последнее – контроль за строкой сообщения, которая будет отображена с «10», означающей как долго сообщение будет оставаться на экране.Посмотрите больше информации о команде вывода сообщений (message): Message . [Еще одна ссылка. Раз авторы сделали, значит так надо. Это все-таки материал Интернета. Можете полазить там, хотя я постараюсь все это перевести и выложить для русскоязычной аудитории]
7. Сохраните скрипт и затем закройте Редактор скриптов.
8. Вернитесь к свойствам предмета, "HelloWorld" должно появиться как опция в выпадающем списке скриптов. (Возможно, вам нужно закрыть окно свойств объекта и снова открыть его, чтобы «HelloWorld» скрипт появился в выпадающем списке.)
9. Щелкните ok, чтобы сохранить изменения и закройте окно.
10. На панели инструментов выберите File --> Save; в окне сохранения введите имя файла HelloWorld (это будет esp файл [плаг!!! Ваш первый или очередной обливовский плаг!!! - Тиберий], HelloWorld.esp)
11. Откройте стартовое меню Oblivion (splash screen) [вот как это у буржуев, мы-то его OblivionLauncher зовем - Тиберий], и щелкните Data Files.
12. Двойным щелчком подключите свой HelloWorld.esp кликните ok и закроите окно.
13. Теперь запускайте игру, и все должно работать! Бросьте отмычку на землю, подберите ее и должно появиться сообщение "Hello World!". И вместе с этим добро пожаловать в скриптировани!