Luna | Дата: Пятница-Fredas, 19.08.2011, 00:35 | Сообщение # 1 |
Министр Иносайтных дел
Группа: Администраторы
Сообщений: 16776
Награды: 155
Статус: Выехал
| Садим компаньона на лошадь.
Туториал предназначен для тех, кто уже может создать компаньона без СМ и сейчас мучается над тем, как сделать его поинтереснее. Я хочу, чтобы мой компаньон следовал за мной на лошади. Все управление компаньонами осуществляется с помощью АИ пакетов и скриптов. Для начала создаю лошадь для своего компаньона. Самое простое - взять готовую лошадь и просто поменять ей ID. Если у лошади есть какой-то скрипт, то убираем его, нам он не нужен совсем. Ставим лошадь в конюшню, любую, какую понравится. Разместив ее там, два раза щелкаем по ней ЛКМ - откроется окно Referense. Нам нужно зайти на вкладку Ownership, чтобы присвоить лошадь нашему компаньону. В окне NPC ищем ID созданного нами компаньона. Будьте внимательны, не ошибитесь, иначе компаньону придется бегать за Вами пешочком.
С лошадью пока закончили. Создаем компаньону пакет следования. Для этого в раскрывшемся окне пакетов щелкаем ПКМ, выбираем new - новый АИ-пакет и начинаем доводить его до ума.
Рассмотрим окошки и кнопки, какие там есть: Слева в углу ID - пишем ID пакета, лучше всего уникальный, если не хотим получить в игре необъяснимые глюки. у меня это aaaSelenaFollow. Далее - тип пакета Package Type пакет следования Follow. Далее ставим флаги Flags. ОБЯЗАТЕЛЬНО отмечаем окошко Use Horse - "использовать лошадь". Кроме того, по желанию отмечаем другие флаги. Я отметила Always Run (всегда бежать - потому что мой перс не умеет ходить пешком, вечно куда-то несется), Allow Swimming ( позволяет компаньону плыть вместе с нами, мало ли, куда занесет моего перса?), и Defensive Combat ( теперь компаньон будет отбиваться, если на него нападут). Это все мы делали на вкладке Schedule. Теперь перейдем на вкладку Target. В окне Any Object в Object ID выбираем в выпадающем списке Player - компаньон будет следовать за игроком.
Больше мы ничего не трогаем, сохраняем пакет, в поле результирующего скрипта Result Script в диалоге с компаньоном добавляем скриптовые команды RemoveScriptPackage ; это мы прекращаем выполнение любых других пакетов АИ AddScriptPackage aaaSelenaFollow ;это мы добавляем свой пакет следования
Теперь, если мы в диалоге с компаньоном выберем фразу "Следуй за мной", он будет следовать за нами на лошади. Жмем ОК, сохраняем плаг. Вроде бы, мы добились того, чего хотели. Самое интересное начнется сейчас, во время теста. Готовы? Идем тестить. Заходим в игру, предлагаем компаньону следовать за нами, садимся на лошадь и едем. Оглядываемся, - компаньон едет! За нами! На лошади!!! Получилось! УРА? А теперь слезьте с лошади и пробегитесь по дороге.. Оу.. Что за.. Кто там толкается толстой мордой? Оглядываемся.. Так и есть - наш компаньон. На лошади. Скачет за нами, в то время, когда мы идем пешком. Мда.. Безобразие... Ну что, идем в КС исправлять положение?
Создадим новый АИ пакет следования, но уже без лошади. Просто не будем ставить флаг Use Horse. Элементарно. Теперь надо бы добавить этот пакет компаньону, но.. Неувязочка.. Если мы поставим этот пакет, то откуда компаньон будет знать, какой из двух пакетов использовать? Придется призывать на помощь опять скрипты.Идем в окно диалогов. В тм же топике "Следуй за мной", где до этого мы вставляли скрипт в окно результирующего скрипта, подредактируем наш скрипт. Теперь он выглядит так:
RemoveScriptPackage; удаляем все АИ пакеты, запущенные ранее if ( player.IsRidingHorse == 0 ) ; создаем условие - если игрок не сидит на лошади, то... AddScriptPackage aaaSelFollow2 ; если игрок не сидит на лошади , то выполняется второй пакет следования, пешком else AddScriptPackage aaaSelenaFollow ; если игрок сидит на лошади, то выполняется первый пакет следования - на лошади endif
Вот и все )) Все очень просто. Теперь компаньон сможет следовать за Вами как пешком, так и на лошади. Если по какой-то причине он не захочет слезать с лошади при смене пакета, то достаточно будет, предложив ему следовать за вами, войти в какие-нибудь двери - дом, таверну, городские ворота. Впрочем, можно и еще поэкспериментировать с АИ пакетами и создть пакет путешествия Travel, указав в качестве цели путешествия игрока, и вставить его тоже в результирующий скрипт. Тогда, прежде чем включить пакет следования, игра заставит компаньона слезть с лошади, дойти до игрока, и там уже переоценить пакеты.
Остался маленький штрих. Представьте, что лошадь компаньона находится в Анвильской конюшне. А Вы совершили путешествие телепортом или фасттревелом в Бравил и собираетесь оттуда отправиться в путь верхом. Как-то неинтересно получается.. Вот если бы лошадку можно было призвать? А почему нет?? Сейчас мы сделаем ей заклинание вызова.
Рядом с лошадью, там, где мы ее поместили в конюшне, поставьте активатор. Для этого в окне активаторов Object Window в дереве находим Activator, щелкаем по списку ПКМ, выбираем new.
Появится окно активатора. Отредактируем его. Присваиваем ID, Name можно не писать, но зато присвоить модель для активатора. Чтобы он никому не мешал и не мозолил глаза, сделаем его невидимым. Тем, кто давно занимается КС, не составит труда найти нулевую модель в магических эффектах. Если у Вас все BSA архивы запакованы, то можно просто их распаковать специальной программой. В папке Meshes - MagicEffeсts находим Null.nif Копируем его куда-нибудь, где нам будет его легко найти. Посте этого щелкаем по верхней кнопке окна с активатором. Выскочит список папок в Meshes. Находим Null.nif, выбираем его. Теперь наш активатор невидим. Осторожно тащим его в конюшню и роняем клавишей F рядом с лошадью. После этого в окне Cell Viev (в нижнем правом углу экрана) находим нашу ячейку, куда поставили лошадь. ( самое простое - найти лошадь в окне Creature и выбрав ее, щелкнуть по ней ПКМ. Выпадет маленький список, найти там Use Info, пощелкать по нему. Тогда в Render откроется сразу же лошадь так, как она стоит в ячейке. )
Теперь в Cell Viev надо поискать наш активатор, щелкнуть ПКМ, выбрать Edit. Сразу же откроется окно Reference этого активатора. Присвойте ему Reference Editor ID, отметьте внизу галочкой Persistent Reference, нажмите ОК. Сохранитесь. Теперь можно и создать заклинание перемещения. Идем в окно скриптов. Кнопка быстрого запуска похожа на карандаш. Жмем на нее, выбираем Script - New. Пишем в открывшемся окне:
scriptname НАЗВАНИЕ СКРИПТА, например, aaaHorseScript Begin ScriptEffectStart [RefIDактиватора].moveto [RefIDкомпаньона], 0, 0, 0 ; активатор переносим к компаньону [RefIDлошади].moveto [RefIDактиватора] ; лошадь переносим к активатору End Begin ScriptEffectFinish End
Тип скрипта Magic Effect. Сохраняем.
Теперь создаем заклинание. В Object Window находим Spell, ПКМ - new. Создаем заклинание - ID, название, в окошке Effect опять щелкаем ПКМ, выбираем new.
Редактируем: Effect - Script Effect, Range - Self, Script - наш только что созданный скрипт. ОК. Теперь это заклинание надо добавить компаньону, так? Иначе какой смысл во всей этой возне? Добавим его в спеллист. Теперь создадим топик "Призови лошадь", добавим его в дерево диалогов компаньона, и в Result Script добавим строчку: Cast [IDзаклинания] [RefIDкомпаньона]. Все. По Вашей команде компаньон призовет лошадь, и уже на ней сможет сопровождать Вас.
Чем больше я сплю, тем меньше от меня вреда......
|
|
| |
ProfessorSeverus | Дата: Пятница-Fredas, 19.08.2011, 00:51 | Сообщение # 2 |
Партурнакс Георгиевич
Группа: Главный администратор
Сообщений: 17608
Награды: 157
Статус: Выехал
| Отлично!! Luna, спасибо!!!
О! Эльберет Гильтониэль! Где бы не были бестолковые животные, хищники всегда неподалеку... Янус Гассилдор
Моя главная проблема в жизни — это равнодушие к внешнему миру. ©Карл Лагерфельд
|
|
| |