- •Задачник по скриптам Обливиона Автор: Visman
- •Вступление
- •Задача 1: Автодобавление предметов
- •Задача 2: Записи в квестовом журнале
- •Задача 3: Автоактивация
- •Задача 4: Множественность ядовитости (ф-ии obse)
- •Задача 5: Ловушка (простая)
- •Задача 6: Почувствуй себя богом :) (заклинания и анимация)
- •Задача 7: Автоподбор (ф-ии obse)
Задача 7: Автоподбор (ф-ии obse)
Задача:
Хочу, чтобы предметы, встречающиеся на моем пути, автоматически брались и добавлялись в мой инвентарь :)
Решение:
Сложность задачи в том, что нам нужно знать ссылку на предмет, чтобы манипулировать им. И без OBSE тут ни куда.
В расширенных функциях есть ф-ия GetCrosshairRef, которая выдает ссылку на объект игрового мира, который находится в области действия руки игрока и его прицеле.
Создаем и сохраняем новый скрипт svaScriptTestQ7. Тип скрипта Quest (задаем в поле Script Type).
scn svaScriptTestQ7
float fQuestDelayTime ; спец.перемнная, задает частоту выполнения квестового скрипта
ref Templar ; переменная для хранения ссылки на объект с которым работаем
long lType ; переменная для хранения типа объекта-цели
; работаем в игровом режиме
Begin GameMode
Set fQuestDelayTime to 0.1 ; скрипт будет выполняться 10 раз в секунду
Set Templar to GetCrosshairRef ; определяем объект который находится перед игроком в его прицеле
Set lType to GetObjectType Templar ; определяем тип этого объекта
; если объект удовлетворяет условию (коды типов объектов игры смотрите в описании OBSE раздел Type Codes)
if (lType == 20 || lType == 22 || lType == 25 || lType == 27 || lType == 33 || lType == 34 || lType == 38 || lType == 39 || lType == 40 || lType == 42 )
Templar.Activate Player ; активируем этот объект игроком
endif
End
Дальше создаем квест svaQuestTestQ7. Ставим галку Start Game Enabled для автостарта квеста и выбираем скрипт svaScriptTestQ7 в выпадающем списке Script.
Сохраняем квест, плагин и идем его тестировать.
Задания:
1. Измените скрипт так, чтобы автоподбор чужого предмета не считался воровством и не приводил к вызову стражи. (Смотрите ф-ию SetOwnership)
2. Измените скрипт так, чтобы автоподбор не применялся к чужим предметам. (Смотрите ф-ию OBSE GetOwner и др. ф-ии раздела Ownable. Возможно пригодится стандартная ф-ия IsOwner)
3. Добавьте в плагин скриптовое заклинание, которое будет вкл/выкл автоподбор. (С автдобавлением заклинания игроку, но без добавления нового квеста)
4. Сделайте замедление автоподбора для удерживаемого предмета в фокусе (а то из инвентаря нельзя выложить предмет пока автоподбор работает).
5. Попробуйте сделать управление автоподбором через меню (которое вызывается заклинанием), где можно было бы выбрать тип подбираемых предметов и их стоимость (дешевые не брать :) ).
