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

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)

Замечание:

Для добавления стадий квестов и их описаний жмем ПКМ в соответствующих областях окна квестов.