- •Задачник по скриптам Обливиона Автор: Visman
- •Вступление
- •Задача 1: Автодобавление предметов
- •Задача 2: Записи в квестовом журнале
- •Задача 3: Автоактивация
- •Задача 4: Множественность ядовитости (ф-ии obse)
- •Задача 5: Ловушка (простая)
- •Задача 6: Почувствуй себя богом :) (заклинания и анимация)
- •Задача 7: Автоподбор (ф-ии obse)
Задача 5: Ловушка (простая)
Задача:
Чтобы усложнить игроку жизнь сделаем ловушку в виде ядовитого тумана, который можно разместить в различных местах игрового мира.
Решение:
Понадобится активатор в виде тумана и конечно скрипт для обработки столкновений активатора и объекта.
Для создания активатора в папку Oblivion\Data кидаем файл trigzonecloud.nif.
Создайте новый активатор svaActivatorTestQ5 и выберите для него модель trigzonecloud.nif. Скрипт пока не прописывайте.
Создаем новое заклинание svaSpellTestQ5 в Spell. Название "Ядовитый туман", тип "Spell", эффект "Понижение здоровья" (сила 5, длительность 3), область действия Touch.
Создаем и сохраняем новый скрипт svaScriptTestQ5. Тип скрипта Object (задаем в поле Script Type).
scn svaScriptTestQ5
float fireTimer ; храним время до следующего поражения актера
short activated ; триггер, показывает сработала ловушка или нет
ref rS ; ссылка на актера, который попал в туман
; обрабатываем столкновения с актерами
begin onTriggerActor
if activated == 0 ; если ловушка еще/уже не сработала
Set rS to GetActionRef ; получаем ссылку на актера в тумане
cast svaSpellTestQ5 rS ; накладываем на него наше заклинание понижения здоровья
set activated to 1 ; указываем, что ловушка активирована
set fireTimer to 1 ; таймер до следующего срабатывания устанавливаем на 1 секунду
endif
end
; работаем в игровом режиме
begin gameMode
; ниже обрабытываем таймер с помощью ф-ии getSecondsPassed
; и по прошествии 1 сек устанавливаем ловушку в готовое положение (activated=0)
if activated == 1
if fireTimer > 0
set fireTimer to fireTimer - getSecondsPassed
endif
if fireTimer <= 0
set activated to 0
endif
endif
end
Пропишите данный скрипт в активаторе svaActivatorTestQ5.
Разместите активатор в игровом мире (например в Торговом районе Имперского города) и проверьте его работу.
Замечания:
1. Одномоментно больше одной цели не обрабатывается при столкновениях с активатором.
2. Лучше разместить несколько маленьких туманов рядом, чем один большой, если ловушку будут посещать несколько целей разом.
Задания:
1. Измените скрипт так, чтобы он действовал только на игрока.
2. Измените скрипт так, чтобы он стал смертельным для игрока (используйте два разных подхода к этому решению).
Задача 6: Почувствуй себя богом :) (заклинания и анимация)
Задача:
Нужно заставить НПС молиться игроку :)
Решение:
Введем новое условие-анимацию в массив Idle Animations отвечающий за различные анимационные движение актеров, а для его активации напишем заклинание-скрипт.
Сначала создадим новый предмет svaMiscTestQ6 в MiscItem, который будет являться флагом включения новой анимации. Я его создал из золота.
Далее зададим условие-анимацию в меню Gameplay - Idle Animations.
Для наших целей подойдет анимация PrayatGrave в ветке Characters\_Male\IdleAnims - AnimObjectAnims, так как она воспроизводит моление на коленях и в игре не используется (кроме тестовых целей).
С помощью кнопки MoveUp поднимите PrayatGrave в начало ветки для большего приоритета.
В таблице условий выполнения вместо имеющеегося пропишите два условия:
GetItemCount svaMiscTestQ6 > 0 (т.е. в инвентаре есть предмет svaMiscTestQ6) и
GetDistance PlayerRef < 300 (т.е. расстояние до игрока меньше 300 пунктов)
Создаем и сохраняем новый скрипт svaScriptTestQ6. Тип скрипта Magic Effect (задаем в поле Script Type).
scn svaScriptTestQ6
; выполняется при начале действия заклинания
Begin ScriptEffectStart
if ( GetItemCount svaMiscTestQ6 == 0 ) ; если у объекта нет вещи svaMiscTestQ6
Additem svaMiscTestQ6 1 ; добавим ее
endif
PlayGroup Idle 1 ; заставим объект проигрывать анимацию Idle
PickIdle ; для верности, чтобы точно началась воспроизводиться новая анимация
End
; выполняется каждый фрейм пока действует заклинание
Begin ScriptEffectUpdate
End
; выполняется при окончании действия заклинания
Begin ScriptEffectFinish
End
Теперь в Spell создадим новое заклинание svaSpellTestQ6.
Имя - Молиться, тип - Spell, установить галку Disallow Spell Absorb/Reflect.
В магических эффектах добавим новый: Effect - Script Effect, Range - Torch, Script - svaScriptTestQ6, Effect name - Молиться, убрать галку Effect is Hostile.
Создайте квест и скрипт автодобавления игроку заклинания svaSpellTestQ6 при старте плагина и вперед на завоевание паствы.
Задания:
1. Измените заклинание и скрипт так, чтобы НПС после 10 секунд прекращали свою молитву.
2. Измените условия в анимации PrayatGrave так, чтобы при диалоге с игроком НПС не молился.
3. Измените заклинание и скрипт так, чтобы при приближении игрока к НПС подвергшимся воздействию заклинания ближе, чем на 300 пунктов, эти НПС сразу начинали молиться, а при удалении игрока от них - сразу прекращали (смотрите ф-ию GetDistance).
P.S. Ординатор молится на Дремору :)
