Перейти к содержанию

Рекомендуемые сообщения

Опубликовано
17.07.2023 20:50:21, Azazellz сказал(-а):

Никак, насколько я помню этот вопрос.
По крайней мере простыми путями такое не сделать.

Что касается сложных путей, там вообще через костыли и не один час?
  • Ответов 4,8 тыс
  • Создана
  • Последний ответ

Топ авторов темы

Опубликовано
18.07.2023 07:22:09, mrlavoviy сказал(-а):

Что касается сложных путей, там вообще через костыли и не один час?

Там надо куда-то глубоко в код забираться. Через SKSE и SkyUI, либо через самописные dll.

В Complete Crafting Overhaul Remastered вроде такое сделано, но сам я его не проверял.

  • Нравится 1
Опубликовано
18.07.2023 16:05:15, Azazellz сказал(-а):

Там надо куда-то глубоко в код забираться. Через SKSE и SkyUI, либо через самописные dll.
В Complete Crafting Overhaul Remastered вроде такое сделано, но сам я его не проверял

Понял,огромное спасибо

Опубликовано

Добрый день, подскажите, как сделать анимацию движения губ нпс? А то он фразы произносит, но губы не двигаются

Опубликовано (изменено)

День добрый , может вопрос глупый но я не нашел на него ответа. Созданая мною оружейная стойка , работает как то не так. Оружие в левом держателе отображается значительно выше, чем необходимо , при том что правый работает как надо. 
Не могли ли вы подсказать как это исправить?

 

P.S  Я кажется понял , что это связано с тем под каким градусом установлен стенд, но это не точно.

Изменено пользователем Eon_Tal
Опубликовано

Здравствуйте, в своем моде я обновил поведение Валерики из дополнения Dawnguard посредством создания нового квеста => Quest alias => Alias Package data => Мои аи пакеты на сон, еду, работу.
Проблема в том, что Валерика выбирает нестандартные пути перемещения из точки А (например сад Волкихара) в точку Б (например главный зал замка). Вместо того, что бы напрямую перейти из локации А в локацию Б, она прыгает в колодец, потом выходит за пределы замка, идет по мосту и только потом заходит внутрь точки Б. Таких примеров можно привести несколько.

 

Вопрос в следующем: Возможно ли создать АИ пакет, который будет запрещать Валерике посещать те или иные локации?
Если такое возможно, то как должен выглядеть этот аи пакет? Какие в нем должны быть прописаны условия?
Если такой вариант не возможен, возможно, Вы поделитесь идеей лучше/проще по решению данного вопроса?

Опубликовано
19.07.2023 08:57:58, Pyrrhula сказал(-а):

Добрый день, подскажите, как сделать анимацию движения губ нпс? А то он фразы произносит, но губы не двигаются

Вам нужно сгенерировать Lip файлы. Подробнее можно узнать по ссылке ниже.
https://gamer-mods.ru/forum/94-2043-1

Опубликовано

Доброго времени господа. 
Подскажите пожалуйста, как установить условие при исполнении которого, прибежит курьер через пару дней и принесёт письмо.

Стоит задача, вызвать гонца с письмом ПОСЛЕ выполнения определённого квеста, через ПАРУ игровых дней.

Может быть у кого то есть ссылка на урок по подобным событиям и как их устанавливать для курьера. Или может быть даже пример у кого то есть? Искал сам в КК. Хотел сделать на основе квеста ярла Фолкрита... когда 10 уровня достигаешь прибегает курьер... думал там найду условие... но нет, так и не нашёл где это условие прописывается. 
Буду очень признателен за помощь.
 

Опубликовано (изменено)
24.07.2023 22:52:51, tokugava сказал(-а):

Может быть у кого то есть ссылка на урок по подобным событиям и как их устанавливать для курьера. Или может быть даже пример у кого то есть? 

Есть множество вариаций по реализации данного вопроса. Вот один из них:

В условиях квеста поставьте условие "GetStageDone", с указанием на нужный Вам квест

2023-07-25-160214263.png.webp.png

Изменено пользователем GOLDEN_KINDER
Опубликовано (изменено)
25.07.2023 07:26:01, GOLDEN_KINDER сказал(-а):

Есть множество вариаций по реализации данного вопроса. Вот один из них:
000

Я смотрел этот урок. С помощью него и сделал доставку письма. Но как ни искал, не могу найти событие (Event) отвечающее за стадию ванильного квеста.
То есть:
Event OnActivate(ObjectReference akActionRef) <<<< - Событие Активации не подходит. А событие со стадией квеста не могу найти.

 

....NoteAliasRef ForceRefTo... бла бла бла
....Приносит записку
EndEvent

Надеялся на что то типа:

Event QuestDA14(SetStage == 200)

....(завершён) тогда несём письмо.

EndEvent

В событии как раз и весь вопрос. А вообще хотел поставить 2 события... проверка на завершённый ванильный квест и денёк игрового времени. Но не нашёл ни одно событие.

 

Установка условия GetStageDone DA14 200  - не помогла. Курьер не приходит. Ждал 3 дня. Побегал. Курьера нет. =( Видимо что то не так.

Установил условие на вкладке QuestStages... вот
image.jpg.jpeg 
Может ошибся где?

 

 

 

UPD РЕШЕНО
Вобщем я сам дурак. Не выставил чекбокс "Start Game Enabled"

Огромное вам спасибо за помощь!

Изменено пользователем tokugava
  • Нравится 1
Опубликовано
25.07.2023 08:06:23, tokugava сказал(-а):
В событии как раз и весь вопрос.

Тут всё веселье и начинается.

Уже завершенный квест просто проверить - в OnInit (ну или в какое другое место, которое на самой первой загрузке будет один раз срабатывать) своего квеста для курьера ставишь проверку IsCompleted и уже после этого делаешь свой код на таймер и вызов курьера.

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

 

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

Можно выбрать что-то типа OnSleepStop или OnFastTravelEnd. Эти ивенты не слишком часто случаются, поэтому проверки по производительности бить не будут.

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

Т.е. логика такая: игрок что-то делает -- идет проверка на завершение квеста (неудача) -- игрок завершает квест -- игрок что-то делает -- идет проверка на завершение квеста (успех) -- курьер пошел.

 

Не забудь только отключить это всё, после того, как курьера отправишь.

Опубликовано (изменено)

К слову о курьерах. Сейчас тоже создаю своего:

Спойлер
function OnUpdate()

if !GK_RavSha.IsInLocation(DLC1VampireCastleLocation)
GK_MinerWorking03.enable(false)
self.MoveWorker(GK_RavSha, GK_MinerWorking03)
self.MoveWorker(GK_JAmsh, GK_MinerWorking03)
endIf
actor PlayerActor = game.GetPlayer()
if PlayerActor.IsInLocation(DLC1VampireCastleGuildhallLocation) || PlayerActor.IsInLocation(DLC1VampireCastleLocation)
self.RegisterForSingleUpdate(120.0000)
return
endIf
GK_MinerWorking03.disable(false)
self.MoveWorker(GK_RavSha, GK_Teleport)
self.MoveWorker(GK_JAmsh, GK_Teleport)
GK_RestoreShipyardMarker.disable(false)
GK_ShipMarker.disable(false)
self.GotoState("StateAuto")
IsBusy = false
GK_CourierNoteAlias.ForceRefTo(PlayerActor.PlaceAtMe(Note03))
(WICourier as WICourierScript).AddAliasToContainer(GK_CourierNoteAlias)

endFunction


В конце своего скрипта добавил строки с курьером. Курьер прибегает, отдает нужную мне записку. Все работает, за исключением одного НО
При передаче курьером записки ГГ, нет уведомления о добавлении предмета в инвентарь (сам же предмет появляется в инвентаре). Сижу теперь думаю, с чем это связано и как это исправить. Может кто подскажет? Изменено пользователем GOLDEN_KINDER
Опубликовано
25.07.2023 10:59:17, GOLDEN_KINDER сказал(-а):
Сижу теперь думаю, с чем это связано и как это исправить. Может кто подскажет?

 

В команде AddItem есть настройки уведомления.

Опубликовано
25.07.2023 16:15:56, Azazellz сказал(-а):

В команде AddItem есть настройки уведомления.

Разве можно в данном случае использовать additem? Ведь у меня идет ссылка на алиес.
(WICourier as WICourierScript).AddAliasToContainer(GK_CourierNoteAlias)
(WICourier as WICourierScript).AddItemToContainer(GK_CourierNoteAlias)?
(WICourier as WICourierScript).AddItem(GK_CourierNoteAlias)?

Опубликовано
25.07.2023 17:10:37, GOLDEN_KINDER сказал(-а):
Разве можно в данном случае использовать additem? Ведь у меня идет ссылка на алиес.

Вот чего не помню - того не помню.

Но можно ведь и без алиса обойтись вполне, не обязательно всё через них делать.

Опубликовано (изменено)
25.07.2023 09:52:45, Azazellz сказал(-а):

Тут всё веселье и начинается.

Уже завершенный квест просто проверить - в OnInit (ну или в какое другое место, которое на самой первой загрузке будет один раз срабатывать) своего квеста для курьера ставишь проверку IsCompleted и уже после этого делаешь свой код на таймер и вызов курьера.

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

 

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

Можно выбрать что-то типа OnSleepStop или OnFastTravelEnd. Эти ивенты не слишком часто случаются, поэтому проверки по производительности бить не будут.

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

Т.е. логика такая: игрок что-то делает -- идет проверка на завершение квеста (неудача) -- игрок завершает квест -- игрок что-то делает -- идет проверка на завершение квеста (успех) -- курьер пошел.

 

Не забудь только отключить это всё, после того, как курьера отправишь.

Всё проще делается. Просто в условия срабатывания своего квеста добавляется  GetStageDone КВЕСТ СТАДИЯ(Завершающая). А так же выставляются чекбоксы Start Game Enabled и запускать квест один раз. И всё. Тогда ванильные квесты вообще не трогаются. Просто проверяем завершены они или нет уже в своём квесте. Просто. Удобно. Действенно.
С таймером решил не связываться и так нормально получилось.

Сейчас пытаюсь разобраться как делается разный интерьер дома. Типа по квесту сначала дом надо зачистить от врагов, там разруха, мусор и темнота, а потом чистый пустой дом. И мебель привязанная к иксмаркерам, то есть пока не скрафтиш не видно. 
Как я понял нужно пилить 2 одинаковых интерьера... один с мусором и тьмой с врагами, другой жилой дом. И как то настраивать двери наверное... что бы в первом случае телепортировали в один интерьер.. а после победы и прохождения квеста в другой. Вобщем думок ещё на сутки =)

Изменено пользователем tokugava
Опубликовано (изменено)
26.07.2023 03:18:22, tokugava сказал(-а):

Сейчас пытаюсь разобраться как делается разный интерьер дома. Типа по квесту сначала дом надо зачистить от врагов, там разруха, мусор и темнота, а потом чистый пустой дом. И мебель привязанная к иксмаркерам, то есть пока не скрафтиш не видно. 
Как я понял нужно пилить 2 одинаковых интерьера... один с мусором и тьмой с врагами, другой жилой дом. И как то настраивать двери наверное... что бы в первом случае телепортировали в один интерьер.. а после победы и прохождения квеста в другой. Вобщем думок ещё на сутки =)

Есть два варианта:
1) в интерьере размещаете объекты разрушения и привязываете их к Х маркеру. Потом в этом же интерьере, размещаете объекты для "чистого" дома и так же привязываете к тому же Х маркеру, но в окне референта ставите галочку Set enable state to opposite of parrent.

Спойлер
2023-07-26-143624322.png.webp.png

Создаете скрипт, в котором по тем или иным причинам вызывается процесс восстановления и пишете туда строчку YourObject.disable(false) (скрипт пихаете в активатор/квест/диалог и т.д. Все зависит от Ваших задумок и способа их реализации)
2) создаете две локации. Первая разрушенная, вторая восстановленная. Потом делаете ту же самую привязку, как в первом варианте, но только с дверьми. Этот способ удобен лишь для NavMesh. В разрушенной локации своя сетка путей, в восстановленной другая.

В качестве примера можете зайти в Волкихар. Там есть два примера:
1) Сад Валерики (2 вариации живой и мертвый)
2) Проход во внутренний двор через разговор с Гараном Маретти (проход завален или расчищен) Изменено пользователем GOLDEN_KINDER
Опубликовано (изменено)
26.07.2023 05:04:11, GOLDEN_KINDER сказал(-а):
ивой и мертвый)

 

26.07.2023 05:04:11, GOLDEN_KINDER сказал(-а):

Есть два варианта:
1) в интерьере размещаете объекты разрушения и привязываете их к Х маркеру. Потом в этом же интерьере, размещаете объекты для "чистого" дома и так же привязываете к тому же Х маркеру, но в окне референта ставите галочку Set enable state to opposite of parrent.

Создаете скрипт, в котором по тем или иным причинам вызывается процесс восстановления и пишете туда строчку YourObject.disable(false) (скрипт пихаете в активатор/квест/диалог и т.д. Все зависит от Ваших задумок и способа их реализации)
2) создаете две локации. Первая разрушенная, вторая восстановленная. Потом делаете ту же самую привязку, как в первом варианте, но только с дверьми. Этот способ удобен лишь для NavMesh. В разрушенной локации своя сетка путей, в восстановленной другая.

В качестве примера можете зайти в Волкихар. Там есть два примера:
1) Сад Валерики (2 вариации живой и мертвый)
2) Проход во внутренний двор через разговор с Гараном Маретти (проход завален или расчищен)

Слишком сложно для меня. YourObject - это алиас? Или что это?
2 вариант пробовал сделать поломал весь мод =) Переписываю заново.
Хотел сделать по стадии своего квеста, что бы двери не было, до 20 стадии. В итоге квест перестал работать совсем. Снова переписываю и перекомпилирую.
Может быть вы знаете какие нибудь видеоуроки или статьи по теме? Буду благодарен за ссылку. 
 

Изменено пользователем tokugava
Опубликовано
26.07.2023 16:11:01, tokugava сказал(-а):

Слишком сложно для меня. YourObject - это алиас? Или что это?
 

Это имя вашего objectreference property. Грубо говоря название вашего Хмаркера, к которому будет ссылаться скрипт. Вы можете различным способом активировать и деактивировать Хмаркер. Это может быть активация через диалоги, активаторы, квесты. 
Например через активатор это будет выглядеть примерно так:

Спойлер
objectreference property GK_MinerWorking01 auto

function OnActivate(ObjectReference akActionRef)

actor ActivatorActor = akActionRef as actor
if ActivatorActor == game.GetPlayer()
Xmarker.disableNoWait(false)


В диалоге так же 
Спойлер
Xmarker.disableNoWait(false)
Опубликовано (изменено)
26.07.2023 19:38:58, GOLDEN_KINDER сказал(-а):

Это имя вашего objectreference property. Грубо говоря название вашего Хмаркера, к которому будет ссылаться скрипт. Вы можете различным способом активировать и деактивировать Хмаркер. Это может быть активация через диалоги, активаторы, квесты. 
Например через активатор это будет выглядеть примерно так:

Спойлер
objectreference property GK_MinerWorking01 auto

function OnActivate(ObjectReference akActionRef)

actor ActivatorActor = akActionRef as actor
if ActivatorActor == game.GetPlayer()
Xmarker.disableNoWait(false)


В диалоге так же 
Спойлер
Xmarker.disableNoWait(false)

CK слишком пока сложный и пока что не очень понятный инструмент для меня, когда дело касается скриптов. Только в диалогах масса мест куда можно вписать скрипты и постоянно не понятно куда... 
Я реализовал отображение двери после стадии квеста куском папируса в диалогах на вкладке quest stages:

SetObjectiveCompleted(10)
Alias_SangXMarker001.GetRef().Enable()
SetObjectiveDisplayed(20)

Это "костыль" скорее всего... но он работал, а самое поганое что квест тупо перестал запускаться в какой то момент когда я создал 2 квест...
Начало квеста срабатывает в 0 стадии с таким кодом (курьер с письмом при получании письма квест должен запускаться):

;Start the Quest
alias_SangNote.ForceRefTo(Game.GetPlayer().PlaceAtMe(SangNote))
(WICourier as WICourierScript).addAliasToContainer(alias_SangNote)

Курьер прибегает отдаёт письмо, но квест не запускается. Чекбокс Start up Stage конечно же выставлена на нулевой стадии, там же где код ;Start the quest
При том что квест работал.. до того момента когда я попытался создать второй квест и использовал того же НПС с новым альясом в новом квесте. 
Альяс из первого квеста, я конечно же не трогал... Вобщем написание квестов тот ещё гемморой... от вылета СК из-за xml файлов DIalog View, до странных вещей... 
Например квест работал. Оттестировал с начала до конца. Создал второй квест. Первый перестал работать. Удалил полностью 2 квест. Со всеми зависимостями. Код первого квеста не трогал... но он просто перестал запускаться. Удивительно...

UPD: Ск странная штука.... сутки прошли, запустил игру и квест заработал. Вообще СК не открывал. 

Изменено пользователем tokugava
Опубликовано

Приветствую, есть ли возможность востановить ванильную локацию если решил что внесенные измененния более не акткальны?

  Если есть то не могли ли бы Вы сказать как?

Опубликовано (изменено)

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

 Я спользую наиболее , смоее точки зрения ,подходящий шаблон освещения WhindhelmInteriorTemplate02 , но я не знаю как сделать его более теплым.

Изменено пользователем Eon_Tal
Опубликовано
29.07.2023 06:16:37, Eon_Tal сказал(-а):
есть ли возможность востановить ванильную локацию если решил что внесенные измененния более не акткальны?

xEdit это может, и довольно удобно. Находишь свою ячейку в списке изменений и просто удаляешь.

По поводу СК не помню.

 

 

29.07.2023 06:38:00, Eon_Tal сказал(-а):
еще один вопрос : как создать мегкий свет имитирующий солнечное освещение во всей локации без использования осветительных маркеров

https://tesall.ru/tutorials/the-elder-scrolls-modding/modostroenie-skyrim/1186-svet-i-effekti

Опубликовано

Большое Вам спасибо , теперь могу смело двигатся дальше)

 

29.07.2023 14:27:49, Azazellz сказал(-а):

xEdit это может, и довольно удобно. Находишь свою ячейку в списке изменений и просто удаляешь.

По поводу СК не помню.

 

 

https://tesall.ru/tutorials/the-elder-scrolls-modding/modostroenie-skyrim/1186-svet-i-effekti

Опубликовано

У меня вопрос. Как добавить папирус-скрипт на дерево в CK, если его туда добавить нельзя. Есть альтернативы?
(Я думаю, может, проблема в том, что она не активатор и нужно её сделать активатором).

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

×
×
  • Создать...