- •Задачник по скриптам Обливиона Автор: Visman
- •Вступление
- •Задача 1: Автодобавление предметов
- •Задача 2: Записи в квестовом журнале
- •Задача 3: Автоактивация
- •Задача 4: Множественность ядовитости (ф-ии obse)
- •Задача 5: Ловушка (простая)
- •Задача 6: Почувствуй себя богом :) (заклинания и анимация)
- •Задача 7: Автоподбор (ф-ии obse)
Oblivion & Fallout 3 Modding http://www.modder.ucoz.ru
Задачник по скриптам Обливиона Автор: Visman
E-mail: visman@inbox.ru Сайт: http://alltes.ru/
Оглавление
Вступление
Задача 1: Автодобавление предметов
Задача 2: Записи в квестовом журнале
Задача 3: Автоактивация
Задача 4: Множественность ядовитости (ф-ии OBSE)
Задача 5: Ловушка (простая)
Задача 6: Почувствуй себя богом :) (заклинания и анимация)
Задача 7: Автоподбор (ф-ии OBSE)
Вступление
Данный задачник был написан мной (Visman'ом) для школы скриптинга сайта tesall.ru по просьбе Siegrun в начале 2009 года. За что можете ей сказать большое спасибо.
Ниже представлены задачи, которые помогут вам разобраться с написанием скриптов (надеюсь ;) ).
Сейчас выложено 7 задач, возможно в будущем добавлю еще.
Для работы вам понадобятся:
1. TES CONSTRUCTION SET - для создания плагинов (написания скриптов);
2. Учебник по скриптам OSFM V1.0. Том 1 (online) или OSFM V1.2. Том 1 (offline);
3. Расширитель функций скриптового языка Oblivion (OBSE) - для некоторых задач.
Задача 1: Автодобавление предметов
Задача:
Требуется один раз добавить определенный предмет в инвентарь игрока (при старте плагина).
Решение:
В данном случае необходим квестовый скрипт, который будет стартовать автоматически при запуске игры, выполнять необходимые действия и выключать себя после этого.
Сначала создаем квест svaQuestTestQ1. В нем ни чего прописывать не надо. Он служит только для автозапуска скрипта (галка Start Game Enabled включена).
Создаем и сохраняем новый скрипт svaScriptTestQ1. Тип скрипта Quest (задаем в поле Script Type).
scn svaScriptTestQ1
; блок работает когда у вас не открыто ни одного меню
Begin GameMode
Player.AddItem Gem6DiamondFlawless, 1 ; Добавляем игроку безупречный бриллиант в кол-ве 1 шт.
StopQuest svaQuestTestQ1 ; Останавливаем квест svaQuestTestQ1 в котором работает данный скрипт
End
Снова открываем окно квестов, выбираем квест svaQuestTestQ1 и в поле Script выбираем скрипт svaScriptTestQ1.
Жмем ОК.
Сохраняем плагин.
P.S. Через некоторое время после первого старта игры с этим плагином у вас в инвентаре появится безупречный бриллиант!
Задания:
1. Измените скрипт, чтобы он добавлял игроку два разных предмета.
2. Добавьте вывод информирующего окна при добавлении предмета игроку. (Используйте ф-ию MessageBox)
3. Измените скрипт так, чтобы предмет был добавлен не игроку, а какому-нибудь торговцу (торговца выберите по своему усмотрению).
Замечание:
После изменения скрипта (в ходе выполнения заданий) либо загружайтесь с сейва, в котором не было подключено данного плагина, либо переименовывайте плагин, чтобы изменения от старой версии скрипта были отменены.
Задача 2: Записи в квестовом журнале
Задача:
Оставить записи в квестовом журнале о посещении определенных мест (городов).
Решение:
Нужен квест в котором пропишем требуемые записи и скрипт для управления выводом этих записей в журнал квестов.
Сначала создаем квест svaQuestTestQ2. В имени квеста пишем Посещение городов и ставим галку Start Game Enabled для автостарта квеста (скрипт пока не указываем).
На вкладке Quest Stages прописываем стадии квеста. Это и будут наши сообщения в журнале квестов.
Стадии с 10 по 70 однотипны. В них заполняется поле Log Entry, которое и видно в игре.
10 - Я посетил Анвил.
20 - Я посетил Бравил.
30 - Я посетил Бруму.
40 - Я посетил Чейдинхолл.
50 - Я посетил Коррол.
60 - Я посетил Лейавиин.
70 - Я посетил Скинград.
80 стадия отличается от предыдущих. Она финальная - установлена галка Complete Quest и в поле результирующего скрипта Result Script стоит команда StopQuest svaQuestTestQ2 (для остановки данного квеста).
Поле Log Entry для этой стадии содержит Все города посещены.
Жмем OK.
Далее создаем и сохраняем новый скрипт svaScriptTestQ2. Тип скрипта Quest (задаем в поле Script Type).
scn svaScriptTestQ2
; переменные s1-7 будут отвечать за посещении городов
short s1
short s2
short s3
short s4
short s5
short s6
short s7
Begin GameMode
if ( s1==0 && Player.GetInWorldspace AnvilWorld )
; если посещение Анвила еще не было отслежено скриптом и игрок в Анвиле
SetStage svaQuestTestQ2 10; включаем 10 стадию квеста про Анвил, при этом выводится квестовое сообщение и в журнал квестов заносится запись
Set s1 to 1; отмечаем посещение этого города
elseif ( s2==0 && Player.GetInWorldspace BravilWorld )
; аналогично Бравил
SetStage svaQuestTestQ2 20
Set s2 to 1
elseif ( s3==0 && Player.GetInWorldspace BrumaWorld )
; аналогично Брума
SetStage svaQuestTestQ2 30
Set s3 to 1
elseif ( s4==0 && Player.GetInWorldspace CheydinhalWorld )
; аналогично Чейдинхолл
SetStage svaQuestTestQ2 40
Set s4 to 1
elseif ( s5==0 && Player.GetInWorldspace ChorrolWorld )
; аналогично Коррол
SetStage svaQuestTestQ2 50
Set s5 to 1
elseif ( s6==0 && Player.GetInWorldspace LeyawiinWorld )
; аналогично Лейавиин
SetStage svaQuestTestQ2 60
Set s6 to 1
elseif ( s7==0 && Player.GetInWorldspace SkingradWorld )
; аналогично Скинград
SetStage svaQuestTestQ2 70
Set s7 to 1
endif
End
Снова открываем окно квестов, выбираем квест svaQuestTestQ2 и в поле Script выбираем скрипт svaScriptTestQ2.
Жмем ОК.
Сохраняем плагин.
P.S. Подключаем плагин, запускаем игру и посещаем города. В каждом городе один раз будет выдаваться соответствующее сообщение и записываться в квестовый журнал.
Задания:
1. Добавьте стадию квеста 75 - Я посетил Университет Волшебства и измените скрипт, чтобы при посещении университета в журнал квестов была добавлена эта запись.
2. Измените скрипт так, чтобы после посещения всех 7 городов включилась 80-ая стадия квеста. (При наступлении этой стадии квест завершиться и в журнале перейдет в разряд выполненных)
3. (Трудное) Дополните стадии квеста так, чтобы построение предложений было правильно для женского и мужского персонажей. (Смотрите ф-ию GetPCIsSex)
Замечание:
Для добавления стадий квестов и их описаний жмем ПКМ в соответствующих областях окна квестов.
