FeyfolkenKM

FeyfolkenKM

На Пикабу
поставил 9305 плюсов и 7492 минуса
отредактировал 1 пост
проголосовал за 3 редактирования
Награды:
5 лет на ПикабуС Днем рождения Пикабу!
61К рейтинг 167 подписчиков 130 подписок 46 постов 1 в горячем

Основы скриптинга в Skyrim или разрываем ткань Обливиона

Guten Abend, meine liebe Genossen и сегодня очередная часть "повествования" о том, как идет процесс "подгонки" Скайрима под мои нужды.


И, прежде чем продолжить, хотелось бы обратиться к новым подписчикам, которые успели появиться с момента выхода прошлой части:


Товарищи, мне не известно, насколько вам интересны мои публикации. Если вы подписались потому, что вам интересен мой контент - спасибо и добро пожаловать, я всегда рад новым "целевым" подписчикам.


Однако, иногда бывает так, что подписывается совершенно случайный человек, который "оказался рядом", увидев, к примеру, мой комментарий в совершенно стороннем посте. Если вы - один из таких, убедительная просьба - не ставьте минусов публикациям лишь по той причине, что их содержание не пересекается с вашими интересами. Поверьте, это не только нагоняет тоску, но и отбивает всякое желание дальше публиковать что-то.


А теперь мы продолжаем. Как вы уже успели заметить из моих предыдущих постов - я медленно, но, верно, делаю дом игрока на манер локации "Туманная роща".


Обливион - это не пещера, не дом  и не замок. Простому смертному туда не попасть через дверь. Разорвать ткань Обливиона могут лишь те, кто познал мастерство магии.


Блин, да кому вообще интересен весь этот напыщенный пафос? В общем, господа, сегодня мы будем делать заклинание, которое будет телепортировать игрока в локацию и обратно. Причем не абы как, а с сохранением исходной точки! Откуда ушли, туда и пришли. А в этом нам поможет Папирус - скриптовый язык Скайрима.


Итак, начнем с простого. У нас уже имеется так называемый COCMarkerHeading, вот его и задействуем. Для тех, кто далек от этой темы - данный маркер обозначает место, в которое игрок будет телепортирован при использовании консольной команды "сос имялокации". К слову, в обычных помещениях используются схожие маркеры, определяющие, где окажется игрок после прохождения через дверь.

Основы скриптинга в Skyrim или разрываем ткань Обливиона The Elder Scrolls, The Elder Scrolls V: Skyrim, Creation Kit, Видео, Длиннопост

Также для для реализации данной задумки понадобится вспомогательная локация. Для чего она нужна? Чтобы не плодить мусор в основной локации, все объекты, которые задействованы в работе, отправляются в неё.


Таковая у меня уже имеется. В неё мы помещаем так называемый XMarkerHeading, и переименовываем в MGHMarkTeleport - так нам будет удобнее. Для чего он нужен? Об этом расскажу ниже. Также в этой локации можно заметить кучу суровых нордских мужичков - это NPC которые необходимы для нормального функционирования плодородной земли - каждая "грядка" ссылается на своего NPC. 30 посадочных мест - 30 немытых нордов. И, собственно, наш маркер:

Основы скриптинга в Skyrim или разрываем ткань Обливиона The Elder Scrolls, The Elder Scrolls V: Skyrim, Creation Kit, Видео, Длиннопост

Топаем в раздел Magic - Spell. Тут хранятся все имеющиеся заклинания. Создаем новое. Вписываем ID, имя, временный placeholder для описания, а также назначаем эффект.

Основы скриптинга в Skyrim или разрываем ткань Обливиона The Elder Scrolls, The Elder Scrolls V: Skyrim, Creation Kit, Видео, Длиннопост

Стоп, что? Какой эффект?

Ах, да, все заклинания устроены весьма интересным образом.

Spell - заклинание, которое появляется, собственно, в разделе заклинаний.


При чтении заклинания активируется привязанный эффект. Этот самый эффект и надо будет создать. Для этого топаем в Magic - Magic Effect и создаем новый. Видим кучу всего непонятного:

Основы скриптинга в Skyrim или разрываем ткань Обливиона The Elder Scrolls, The Elder Scrolls V: Skyrim, Creation Kit, Видео, Длиннопост

На самом деле, всё довольно понятно.


ID - собственно, ID.

Name - пока не разобрался, замещено placeholderom, потом глянем, где всплывет.

Effect Archetype - выставлено "Скрипт". Это значит, что магический эффект сам не будет делать ничего, а отдаст эту обязанность скрипту.

Casting type - "Выстрелил и забыл". И ежу понятно - один раз прочитали, скрипт активировался и всё. После этого можно читать еще раз.

Delivery - v subbotu указывает, на кого применяется результат заклинания - на цель, или же на себя.

Magic Skill - колдовство. Отвечает за сортировку - в какой вкладке будет заклинание.

Minimum Skill Level - пока не разобрался, что это и на что влияет.


Так, что дальше...

Визуальные эффекты - подглядываем в какое-нибудь готовое заклинание и повторяем. Собственно, это и есть визуальные эффект - для огненного шторма будут эффекты огня, для ледяного лед, у нас же эффекты призыва.

Звуки - они и в Африке звуки.

А теперь самое интересное - скрипт!

Добавляется он кнопочкой Add, что справа внизу.


Но, для начала, давайте разберемся с логикой работы скрипта.

Вот, собственно, и он сам. Кому надо - забирайте.


Scriptname MGHScriptTeleport extends ActiveMagicEffect

ObjectReference Property Marker Auto
ObjectReference Property Mark Auto
Cell Property TargetCell Auto

{TargetCell is name for your cell}

Event OnEffectStart(Actor Caster, Actor Target)

If Caster.GetParentCell() != TargetCell
Utility.Wait(1.0)
Mark.MoveTo(Caster)
Caster.MoveTo(Marker)

Else
Utility.Wait(1.0)
Caster.MoveTo(Mark)

EndIf

EndEvent

Что это вообще такое? Ну, если понимать что к чему, то всё довольно понятно:


Scriptname - служебная фраза, обозначает начало скрипта.

MGHScriptTeleport - имя скрипта.

extends - служебная фраза. Дословно - "Расширяет" или же "Основывается"

extends ActiveMagicEffect - основывается на "Родителе" ActiveMagicEffect


А теперь немного логики. Вот как работает скрипт:


Для начала мы объявим "свойства":


ObjectReference Property Marker Auto
ObjectReference Property Mark Auto
Cell Property TargetCell Auto

Что есть свойства? Свойства позволяют использовать один скрипт множество раз.

К примеру, я хочу сделать два заклинания - первое телепортирует в первый дом, а второе - во второй.


Тогда бы мне пришлось писать два разных скрипта:


Игрок.ТелепортироватьВ - Дом_1
Игрок.ТелепортироватьВ - Дом_2

Через свойства это можно сделать одним скриптом:


Игрок.ТелепортироватьВ - СвойствоДом

И после этого уже сделать два заклинания и каждому сослаться:

СвойствоДом = Дом_1

СвойствоДом = Дом_2


Не понятно, да? Ладно, продолжим.


Предположим, игрок стоит в Вайтране и читает скрипт первый раз, дабы перенестись в локацию.


"Стоит в Вайтране" - то есть, стоит где угодно, но не в конечной локации.


Для того, чтобы проверить это условие, впишем строку:


If Caster.GetParentCell() != TargetCell


Иными словами:


Если:

ПозицияИгрока НеРавна СвойствоЛокация - вот тут просто ссылаемся на нашу локацию, а не жестко прописываем её имя.


То:

Utility.Wait(1.0) - подождать одну секунду, дабы сперва мы увидели графический эффект от чтения заклинания.

Mark.MoveTo(Caster) - "Метка" - тот самый маркер MGHMarkTeleport, который находился ранее во вспомогательной локации и на который мы ссылаемся в свойствах, передвигается на место игрока. Всё! Метка размещена и игра помнит, где она находится!

Caster.MoveTo(Marker) - Заклинатель, то есть игрок, перемещается на место, где расположен другой маркер - COCMarkerHeading, то есть, который расположен в основной локации и при перемещении на него, игрок перемещается в локацию.


С этим всё! Но, помните строчку?

"Стоит в Вайтране" - то есть, стоит где угодно, но не в конечной локации.


Но что, если игрок оказался в конечной локации? А это значит, что он уже прочитал заклинание в первый раз и оказался в конечной локации. А теперь хочет прочитать его второй раз и отправить обратно. Туда, где расположен маркер.


Эту работу осуществляет всё та же строчка кода:

If Caster.GetParentCell() != TargetCell


А нужный код помещает под условием Иначе


Utility.Wait(1.0) - ждем секунду

Caster.MoveTo(Mark) - игрок перемещается обратно на метку, которая расположилась в месте первого чтения заклинания и ждет не дождется, когда когда мы на неё вернемся.



EndIf - конец цикла "Если/То/Иначе"


EndEvent - конец кода (события, вообще-то - это немного другое)


Всё!

Ничего не понятно, да?

Ладно, попробую рассказать это всё нормальным, человеческим языком:



Вот вам три свойства:


Маркер

Метка

Локация


Читаем заклинание первый раз:


Выполняем проверку:


Мы в Локации?

Нет! Значит, мы хотим туда попасть!

Размещаем Метку туда, где стоим, пусть дожидается нас.

Отправляемся в Локацию.


Читаем заклинание второй раз:


Выполняем проверку:


Мы в Локации:

Угууу! Значит, мы хотим попасть обратно.

Тогда просто перемещаемся на метку, которая нас уже ждет.


Ура! Разобрались!

Дело осталось за малым.

Вставляем текст нашего скрипта и компилируем.

Основы скриптинга в Skyrim или разрываем ткань Обливиона The Elder Scrolls, The Elder Scrolls V: Skyrim, Creation Kit, Видео, Длиннопост

Переходим в Свойства скрипта и начинаем связывать Свойста с нужными объектами:

Основы скриптинга в Skyrim или разрываем ткань Обливиона The Elder Scrolls, The Elder Scrolls V: Skyrim, Creation Kit, Видео, Длиннопост

Mark ссылается на Маркер, который будет ставиться нам под ноги.

Marker ссылается на Маркер, который расположен там, где мы окажемся после чтения заклинания.

TargetCell - ссылаемся на нашу локацию - AAAMGHaven. ААА - временный префикс для сортировки локации вверх списка. MGHaven - Misty Grove Haven, то бишь "Убежище в Туманной роще"


Всё! Вот теперь правда всё, честно честно!


Бежим проверять, уряяя!

Показать полностью 6 1

Об эльфийских ремеслах

Об эльфийских ремеслах The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост
Об эльфийских ремеслах The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост
Об эльфийских ремеслах The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост
Об эльфийских ремеслах The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост

© Skyrim Requiem


P.S. Нет, правда, надо искать искать новую текстуру для страницы и вензеля. Где это слыхано - чтобы в книге высоких эльфов были узоры немытых нордов?


P.P.S Да почините вы уже баянометр! Он опять на чьи-то непристойности ссылается.

Показать полностью 4

Тем временем в далекой-предалекой галактике...

Тем временем в далекой-предалекой галактике... Новости, Сенатор, Политика, Длиннопост
Тем временем в далекой-предалекой галактике... Новости, Сенатор, Политика, Длиннопост
Тем временем в далекой-предалекой галактике... Новости, Сенатор, Политика, Длиннопост
Тем временем в далекой-предалекой галактике... Новости, Сенатор, Политика, Длиннопост
Тем временем в далекой-предалекой галактике... Новости, Сенатор, Политика, Длиннопост
Показать полностью 4

The Elder Scrolls "Трагедия в черных тонах"

The Elder Scrolls "Трагедия в черных тонах" The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост, Картинка с текстом
The Elder Scrolls "Трагедия в черных тонах" The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост, Картинка с текстом
The Elder Scrolls "Трагедия в черных тонах" The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост, Картинка с текстом
The Elder Scrolls "Трагедия в черных тонах" The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост, Картинка с текстом

P.S. Ни у кого нет более приличной текстуры книжной страницы и кельтских вензелей? Был бы очень признателен.

Показать полностью 4

Руководство по даэдрическому снаряжению. Дневник исследователя

Руководство по даэдрическому снаряжению. Дневник исследователя The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост
Руководство по даэдрическому снаряжению. Дневник исследователя The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост
Руководство по даэдрическому снаряжению. Дневник исследователя The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост
Руководство по даэдрическому снаряжению. Дневник исследователя The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост
Руководство по даэдрическому снаряжению. Дневник исследователя The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост

© Skyrim Requiem

P.S. Кто писал код баянометра? Уже второй раз находит схожесть с разными непотребствами...

Показать полностью 5

Живой или мёртвый, по завету Шора, никто не пройдёт по этому мосту...

Именно эту фразу вам не раз доводилось слышать во время прохождения финального квеста основного сюжета. Совнгард - последнее пристанище нордов, где душа не знает ни голода, ни болезней, ни тревоги.


Вам никогда не казалось, что с этим местом что-то не так? Не возникало чувства чьего-то пристального взгляда сквозь туман? Давайте ка взглянем на эту локацию еще раз, повнимательнее.


Начало квеста. Перед нами предстает Совнгард, залитый туманом стараниями Пожирателя Мира, а также статуи:

Живой или мёртвый, по завету Шора, никто не пройдёт по этому мосту... The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост

Воспользуемся командой tfc, дабы взглянуть на них со стороны:

Живой или мёртвый, по завету Шора, никто не пройдёт по этому мосту... The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост

И с другого ракурса:

Живой или мёртвый, по завету Шора, никто не пройдёт по этому мосту... The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост

Ничего особенного - скажете вы. Однако, давайте сделаем паузу и полюбуемся этой красивой каменной стеной:

Живой или мёртвый, по завету Шора, никто не пройдёт по этому мосту... The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост

Поворачиваемся обратно. И...

Живой или мёртвый, по завету Шора, никто не пройдёт по этому мосту... The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост
Живой или мёртвый, по завету Шора, никто не пройдёт по этому мосту... The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост

С другого ракурса:

Живой или мёртвый, по завету Шора, никто не пройдёт по этому мосту... The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост
Живой или мёртвый, по завету Шора, никто не пройдёт по этому мосту... The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост

Пройдемся до конца лестницы и спустимся вниз...

Живой или мёртвый, по завету Шора, никто не пройдёт по этому мосту... The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост

Хм...

Живой или мёртвый, по завету Шора, никто не пройдёт по этому мосту... The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост

Ой, цветочек.

Живой или мёртвый, по завету Шора, никто не пройдёт по этому мосту... The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост

И снова ощущение тяжелого взгляда в спину...

Живой или мёртвый, по завету Шора, никто не пройдёт по этому мосту... The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост
Живой или мёртвый, по завету Шора, никто не пройдёт по этому мосту... The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост
Живой или мёртвый, по завету Шора, никто не пройдёт по этому мосту... The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Длиннопост

P.S. Баянометр, как я вижу, поломался. Ибо показывает совпадение с каким-то клубничным постом.

Показать полностью 14

Кастомизация Skyrim под себя или на кой нам сдался мини-бар

Tag, meine liebe Genossen и сегодня мы будем делать функциональную полку для хранения зелий.


Интересный факт - разработчики изначально планировали реализовать данную функцию в игре, однако, почему-то решили от нее отказаться.


Делается всё не так уж и сложно, как может показаться на первый взгляд. Для начала необходимо проследовать в папку Data-Scripts и снести скрипты PlayerPotionRack-бла-бла-бла - 3 штуки. Они изначально дефектные прямо как цыгане и работать не будут.

Далее находим скрипты книжных полок PlayerBookShelf-бла-бла-бла, копируем их, да переименовываем их в вышеназванные.

Кастомизация Skyrim под себя или на кой нам сдался мини-бар The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Видео, Длиннопост

Далее потребуется отредактировать эти три новых скрипта (PotionRack, не BookShelf).


Открываем любым текстовым редактором, я использовал стандартный WordPad и производим замену:


BookShelf на PotionRack

Book на Potion

book на potion

BOOK на POTION


Следим за регистром!

Сохраняем...

Кастомизация Skyrim под себя или на кой нам сдался мини-бар The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Видео, Длиннопост

Еще разок открываем скрипт контейнера и правим одну строчку, добавляя =0 после Ammount, без пробелов. Сохраняем...

Кастомизация Skyrim под себя или на кой нам сдался мини-бар The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Видео, Длиннопост

Топаем в Creation Kit, заходим в раздел Keyword и создаем дополнительные ключевые слова:

Кастомизация Skyrim под себя или на кой нам сдался мини-бар The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Видео, Длиннопост

Далее находим вот эти три объекта:

Кастомизация Skyrim под себя или на кой нам сдался мини-бар The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Видео, Длиннопост

Потребуется отредактировать каждый.

Тыкаем на скрипт - Edit Source. Копилируем и сохраняем. Это нужно для того, чтобы объекты "подцепили" наши отредактированные скрипты.

После этого тыкаем по скрипту пкм - Edit Properties.

А после этого каждому Keyword назначаем свой Keyword. Что касается остальных пунктов - тыкаем Autofill, если это необходимо.


Если где-то запутались, всегда можете отыскать образец объекта книжной полки и посмотреть, как всё устроено там.
Кастомизация Skyrim под себя или на кой нам сдался мини-бар The Elder Scrolls, The Elder Scrolls V: Skyrim, Skyrim, Видео, Длиннопост

Ну а далее просто собираем полку по типу обыкновенной книжной. Но, вместо пустышки-книжки используем пустышку-зелье. Размещаем в нужных местах и вращаем, по желанию, вокруг вертикальной оси, дабы внести разнообразие в их расположение.


Проверяем!

Оригинальная "инструкция" на английском

Показать полностью 6 1

Кастомизация Skyrim под себя или где хранить фолианты

Этот пост - не инструкция, а, скорее, демонстрация того, что можно сделать в Creation Kit при наличии прямых рук и немного фантазии (с которой у меня всё ой как плохо).


"Только дурак нуждается в порядке. Гений же господствует над хаосом.
-Леонид Ильич Стетхем-

Кому нужны все эти здоровенные шкафы, когда есть стол?

Отличная работа, все прочитано!