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

Sazan's Theme

Вопросы по моддингу Fallout 3 и New Vegas

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

11 часов назад, RaggaL сказал:

Впервые сел делать пакеты АИ, по инструкции. Автор легко и просто создает условия работы пакета,а у меня почему-то нет нужного квеста в выпадающем списке. Прилагаю скрин условия и скрин квеста. В квесте созданы стадии.

В этом квесте нет переменных, к чему ты собрался пакет привязывать? Поэтому его и в списке нет.

 

Условие GetQuestVariable подразумевает использование скриптовых переменных квестов. Для стадий квестов есть условие GetStage.

Поделиться сообщением


Ссылка на сообщение
В 09.04.2021 в 16:52, Паха007 сказал:

В этом квесте нет переменных, к чему ты собрался пакет привязывать? Поэтому его и в списке нет.

 

Условие GetQuestVariable подразумевает использование скриптовых переменных квестов. Для стадий квестов есть условие GetStage.

То есть, я могу сделать пакеты АИ через стадии квеста, которые будут переключаться диалогами, а в самих пакетах использовать GetStage?

 

А еще я нашел баг  в своем моде про биореактор.  Моя реплика GOODBYE имеется у всех НПС, хотя в условиях прописан только нужный НПС. Скрин прилагаю.

Спойлер

Screenshot_1.png

 

Поделиться сообщением


Ссылка на сообщение
5 часов назад, RaggaL сказал:

То есть, я могу сделать пакеты АИ через стадии квеста, которые будут переключаться диалогами, а в самих пакетах использовать GetStage?

Там можно использовать любые условия, как и в диалогах, хоть стадии, хоть переменные. Вот только при переключении стадий, если игрок будет стоять рядом AI NPC может подтупливать. Поэтому при переключении стадий лучше запускать процедуру пересмотра пакетов этим NPC, для этого есть скриптовая функция - РефкренсID.Evp, то бишь нужен референс ID персонажа, прописать можно либо в скрипте каком-нибудь, либо в результ-окне стадии, например. Если хочешь делать через переменные, тогда создавай в квесте скрипт и прописывай в нем переменную.

5 часов назад, RaggaL сказал:

А еще я нашел баг  в своем моде про биореактор.  Моя реплика GOODBYE имеется у всех НПС, хотя в условиях прописан только нужный НПС. Скрин прилагаю.

Странно, вроде условие правильно прописано. Может это все-таки не твоя реплика у всех остальных NPC, а какая-то из другого квеста, многоточие. А что это вообще за скрин, почему там одна реплика, у тебя же их три было, и зачем там стоят галочки Rendom и Rendom End, если реплика всего одна.

 

Поделиться сообщением


Ссылка на сообщение
9 часов назад, Паха007 сказал:

Странно, вроде условие правильно прописано. Может это все-таки не твоя реплика у всех остальных NPC, а какая-то из другого квеста, многоточие. А что это вообще за скрин, почему там одна реплика, у тебя же их три было, и зачем там стоят галочки Rendom и Rendom End, если реплика всего одна.

Пришлось отказаться от трех реплик, так как микрофон сломался и я не мог их озвучить. Заменил на многоточие.

Оказалось, что источник проблем- другой мой плагин. 

 

Раз через стадии будет подтупливать, то этот способ лучше не использовать.

А скрипт мне непонятен, несмотря на туториал. собезьянничал вот так:

Спойлер

scn RGLfollowerScript2

short RGLScottMorrisonFollowerFollower
short RGLScottMorrisonFollowerTacticsCombat
short RGLScottMorrisonFollowerTacticsDistance
short RGLScottMorrisonFollowerWaiting
short RGLScottMorrisonFollowerWaitingLeaveDay

 

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

Также мне не понятно, почему у этих переменных не нужно прописывать их возможные значения. 

Поделиться сообщением


Ссылка на сообщение
4 часа назад, RaggaL сказал:

Раз через стадии будет подтупливать, то этот способ лучше не использовать.

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

 

4 часа назад, RaggaL сказал:

Пришлось отказаться от трех реплик, так как микрофон сломался и я не мог их озвучить. Заменил на многоточие.

В таком случае галочки Random и Rendom End не нужны. Достаточно отдной галочки Goodbye.

 

4 часа назад, RaggaL сказал:

Очевидно, что не хватает команды "end" , но с ней скрипт не сохраняется.

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

Спойлер

55746b80cb69.jpg
 

 

4 часа назад, RaggaL сказал:

И к квесту привязываться не хочет, не появляется в списке.

Не появляется, потому, что в верхнем правом углу в графе "тип скрипта" у тебя прописано - Object, а надо - Quest:

Спойлер

ad9c24337192.jpg

Что бы он появился в списке, необходимо выбрать строку - Quest, сохранить скрипт и закрыть его. Закрыть квест, если он был открыт во время сохранения скрипта. Далее открываем квест и скрипт отображается в списке.

 

4 часа назад, RaggaL сказал:

Также мне не понятно, почему у этих переменных не нужно прописывать их возможные значения. 

Тебе, похоже, вообще непонятен принцип работы скриптовых переменных. Значение всех переменных по умолчанию - 0. А ты уже сам начисляешь им значения. Начислять значения переменных можно где угодно и какие угодно. Приставка short говорит о том, что значения могут быть только целочисленные, не дробные. Можно, например, вот здесь начислить, во время диалога:

Спойлер

e38418c05d4f.jpg

Или вот тут, при запуске стадии:

Спойлер

2f9d36914c38.jpg

А можно в самих скриптах, но для тебя это, наверное, сложно, так как ты не умеешь скрипты "сочинять".

Спойлер

505c36eda80a.jpg

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

  • Нравится 1

Поделиться сообщением


Ссылка на сообщение
5 часов назад, Паха007 сказал:

Тебе, похоже, вообще непонятен принцип работы скриптовых переменных. Значение всех переменных по умолчанию - 0. А ты уже сам начисляешь им значения. Начислять значения переменных можно где угодно и какие угодно. Приставка short говорит о том, что значения могут быть только целочисленные, не дробные.

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

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

Страшно подумать,что будет дальше...Еще будет колесо компаньона, уникальный перк, который еще стоит придумать.

Поделиться сообщением


Ссылка на сообщение
4 часа назад, RaggaL сказал:

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

Главное не забывать компилировать все вписанные скриптовые строчки, кнопка находится рядом с окном. Если скриптовые строчки прописаны правильно, они сохраняться без проблем. Вот тут как раз, во время начисления нужного значения переменной (если это значение для запуска пакета), и нужно запускать процедуру пересмотра пакетов NPC. Тогда NPC начнет исполнять пакет незамедлительно. Например:

 

Set RaggalQuest.RaggalValue to 1

RaggalREF.evp

 

В данном тексте - RaggalQuest - это твой квест, RaggalValue - это прописанная в скрипте квеста переменная, 1 - это значение, которое мы начисляем. А RaggalREF - это рееренс ID NPC, который выполняет пакет.

Поделиться сообщением


Ссылка на сообщение
В 13.04.2021 в 03:23, Паха007 сказал:

Главное не забывать компилировать все вписанные скриптовые строчки, кнопка находится рядом с окном. Если скриптовые строчки прописаны правильно, они сохраняться без проблем. Вот тут как раз, во время начисления нужного значения переменной (если это значение для запуска пакета), и нужно запускать процедуру пересмотра пакетов NPC. Тогда NPC начнет исполнять пакет незамедлительно. Например:

 

Set RaggalQuest.RaggalValue to 1

RaggalREF.evp

 

В данном тексте - RaggalQuest - это твой квест, RaggalValue - это прописанная в скрипте квеста переменная, 1 - это значение, которое мы начисляем. А RaggalREF - это рееренс ID NPC, который выполняет пакет.

Итак, я сделал нечто такое:
 

Спойлер

scn RGLfollowerScript2

short RGLFollow ; 0=NO 1=YES
short RGLWeap ; 0=range 1=melee
short RGLDist ; 0=long 1=close
short RGLWait ; 0=NO 1=Yes
short RGLAgression ; 0=default 1=agressive 2=passive

Begin OnLoad

If RGLWeap ==0
   RGLfollowerREF.SetRGLWeap FollowersCombatStyleRanged
Else
If RGLWeap ==1
   RGLfollowerREF.SetRGLWeap FollowersCombatStyleMelee
EndIf

END

 

 

Конечно же, скрипт не хочет сохраняться. Но почему?
Если я правильно понимаю, то выше BeginOnLoad у меня мои личные переменные, которые я сам задаю и переключаю как хочу. Это даже работает, если писать в консоль sqv <Мой квест>, то я вижу смену этих переменных. Персонаж начинает следовать за ГГ вполне исправно, но вот ждать или увольняться не хочет, хотя пакеты AI с условиями есть. Ой, отвлекся.

А ниже BeginOnLoad у меня пересекаются мои переменные и переменные самой игры, FollowersCombatStyleRanged я видел и переключал в окне создания NPC. Верно?

Поделиться сообщением


Ссылка на сообщение

Во-первых, на что наложен этот скрипт? На NPC или квест? И что он должен делать по твоей задумке?

 

6 часов назад, RaggaL сказал:

RGLfollowerREF.SetRGLWeap FollowersCombatStyleRanged


GLfollowerREF.SetRGLWeap FollowersCombatStyleMelee

Во-вторых, что это за бред сивой кобылы? Что ты хочешь сделать этими строчками?

Поделиться сообщением


Ссылка на сообщение
46 минут назад, Паха007 сказал:

Во-первых, на что наложен этот скрипт? На NPC или квест? И что он должен делать по твоей задумке?

 

Во-вторых, что это за бред сивой кобылы? Что ты хочешь сделать этими строчками?

На квест. 

Хочу топиками диалога переключать оружие npc с дальнего на ближний и обратно. 

Поделиться сообщением


Ссылка на сообщение

Всем привет ,как дела на 2021 год обстоят в моддинге игр на геймбрио ? 
Сам вопрос, SFW можно установить через MO2 , так же как и TTW ?

Поделиться сообщением


Ссылка на сообщение

И ты сам это сочинил? Или списал где-то?

 

scn RGLfollowerScript2

short RGLFollow ; 0=NO 1=YES
short RGLWeap ; 0=range 1=melee
short RGLDist ; 0=long 1=close
short RGLWait ; 0=NO 1=Yes
short RGLAgression ; 0=default 1=agressive 2=passive

Begin OnLoad

If RGLWeap == 0 Перед 0 пропустил пробел
   RGLfollowerREF.SetRGLWeap FollowersCombatStyleRanged Неправильно, вообще бессмыслица
   RGLfollowerREF.SetCombatStyle FollowersCombatStyleRanged Надо так
Else
If RGLWeap == 1 Опять пропустил пробел
   RGLfollowerREF.SetRGLWeap FollowersCombatStyleMelee Опять бессмыслица
   RGLfollowerREF.SetCombatStyle FollowersCombatStyleMelee Надо так
EndIf

END

Вот так должно сохраниться. Но будет-ли написанное тобой работать корректно в связки с какими-то твоими диалогами, которые я не знаю как реализованы, я не знаю. Какая-то это странная реализация.

Поделиться сообщением


Ссылка на сообщение
1 час назад, Паха007 сказал:

Вот так должно сохраниться. Но будет-ли написанное тобой работать корректно в связки с какими-то твоими диалогами, которые я не знаю как реализованы, я не знаю. Какая-то это странная реализация.

Да куда мне самому сочинить...Пока не научился.
Подрезал здесь: ВИДЕО, в описании оригинал скрипта. Там все было сделано как надо, это я в процессе внедрения своих переменных увлекся. 
Спасибо за разъяснения, очень скоро вернусь с новыми вопросами.:crazy:

Поделиться сообщением


Ссылка на сообщение
2 часа назад, Паха007 сказал:

 

Вот так должно сохраниться. Но будет-ли написанное тобой работать корректно в связки с какими-то твоими диалогами, которые я не знаю как реализованы, я не знаю. Какая-то это странная реализация.

Хе, не думал,что так быстро вернусь.
После внесения правок скрипт не захотел сохраняться. Оказалось, что его нужно цеплять не к квесту (Я так сделал), а к NPC. Сменил тип квеста с quest на object, сохранил и повесил на НПС. И это сломало все-все условия в диалогах, а новые создать не удается, так как в списке GetQuestVariable нет моего квеста.
Немного бомбит.

Поделиться сообщением


Ссылка на сообщение
19 минут назад, RaggaL сказал:

так как в списке GetQuestVariable нет моего квеста.

Нет, потому, что ты переместил скрипт с квеста на NPC, и теперь условие GetQuestVariable надо сменить на GetScriptVariable, в нем найдешь своего NPC и его переменные.

Спойлер

02b8a0cf5c00.jpg

 

Условие GetQuestVariable используется для переменных скриптов, которые привязаны к квестам. Условие GetScriptVariable используется для переменных скриптов, которые привязаны к NPC и прочим объектам. 

  • Нравится 1

Поделиться сообщением


Ссылка на сообщение
38 минут назад, Паха007 сказал:

Нет, потому, что ты переместил скрипт с квеста на NPC, и теперь условие GetQuestVariable надо сменить на GetScriptVariable, в нем найдешь своего NPC и его переменные.

  Показать контент

Условие GetQuestVariable используется для переменных скриптов, которые привязаны к квестам. Условие GetScriptVariable используется для переменных скриптов, которые привязаны к NPC и прочим объектам. 

Я вроде бы понял, условия переделал. Естественно, это не работает. Выскакивает ошибка о невозможности сохранения result script. Ну я же понятливый, сменил квест на скрипт, как это видно в окне result script.  Но где же очередной косяк?
 

Спойлер

Screenshot_3.png
Screenshot_4.png

 

Поделиться сообщением


Ссылка на сообщение
15 минут назад, RaggaL сказал:

Но где же очередной косяк?

Set RGLfollowerREF.RGLWeap to 0

RGLfollowerREF.EVP

Поделиться сообщением


Ссылка на сообщение
12 часов назад, Паха007 сказал:

Set RGLfollowerREF.RGLWeap to 0

RGLfollowerREF.EVP

Скрипты и диалоги сделаны, настал черед пакетов AI. Моррисон нанимается в отряд, появляется колесо компаньона. Но следовать за ГГ или менять оружие по команде не хочет. А еще нападает сразу после первой же атаки на него,чего у компаньона быть не должно. куда копать теперь?
 

Спойлер

Screenshot_5.png

 

Поделиться сообщением


Ссылка на сообщение
В 15.04.2021 в 16:19, RaggaL сказал:

Скрипты и диалоги сделаны, настал черед пакетов AI. Моррисон нанимается в отряд, появляется колесо компаньона. Но следовать за ГГ или менять оружие по команде не хочет.

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

В 15.04.2021 в 16:19, RaggaL сказал:

А еще нападает сразу после первой же атаки на него,чего у компаньона быть не должно. куда копать теперь?

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

 

При найме:

Set IDREF.Waiting to 0 на всякий случай отменяет ожидание, если оно активировано
IgnoreCrime 1 игнорирует атаки игрока
NPCREF.AddPerk CompanionSuite какой-то игровой перк для компаньонов, не помню точно какой, однако это и есть колесо спутника.
Player.AddPerk NPCFollowerPerk (ID перка) добавляет игроку уникальный перк напарника, если таковой имеется
Set NPCREF.IsFollowingDefault to 1 активирует стандартную дистанцию следования (через пакет)
Set NPCREF.CombatStyleRanged to 1 активирует дальний стиль боя по умолчанию

SetPlayerTeammate 1 функция "товарищ по команде"
SetIgnoreFriendlyHits 1 действие перка "дружеские подколки"
Set NPCREF.RaggalHired to 1 начисляет переменную, значение 1 -  персонаж нанят, нужна для настройки пакетов
Set NPCREF.RaggalFired to 0 начисляет переменную, значение 0 -  персонаж не уволен
NPCREF.AddToFaction FollowerFaction 1 добавляет персонажа во фракцию игрока
NPCREF.SetFactionRank TeammateFaction 1 фракционная функция
NPCREF.ResetAI перезагружает AI  напарника
ShowMessage IDMsg (ID сообщения "Message") выводит на экран сообщение о присоединение персонажа к игроку
ShowMessage IDMsg (ID сообщения "Message") выводит сообщение о добавлении игроку уникального перка напарника, если таковой имеется

 

При увольнении прописываются функции, обратные этим, кроме некоторых.

Set NPCREF.Waiting to 0 на всякий случай отменяет ожидание, если оно активировано
IgnoreCrime 0 Отменяет игнорирование атак игрока
Set NPCREF.RaggalHired to 0 начисляет переменную, значение 1 -  персонаж не нанят нужна для настройки пакетов
Set NPCREF.RaggalFired to 1 начисляет переменную, значение 1 -  персонаж уволен, нужна для настройки пакетов
Set NPCREF.RaggalL38 to 0 начисляет переменную, значение 1 -  персонаж уволен, 1 - направлен в Лаки 38, 0 - отправлен туда, где обитал ранее, нужна для настройки пакетов
NPCREF.SetPlayerTeammate 0
NPCREF.RemovePerk CompanionSuite забирает у напарника вышеупомянутый перк
Player.RemovePerk NPCFollowerPerk (ID перка) забирает у игрока перк напарника
NPCREF.RemoveFromFaction FollowerFaction исключает персонажа из фракции игрока
ShowMessage IDMsg выводит на экран сообщение о увольнении напарника
ShowMessage IDMsg выводит сообщение о потери игроком уникального перка напарника, если таковой имеется
NPCREF.ResetAI

 

Извиняюсь, если разочаровал, но прежде чем смотреть какие-то ролики в интернете, нужно было посмотреть реализации спутников в оригинальной игре, или скачать базовый туториал по созданию супермутанта-компаньона "Малыш Джимми". Там подробно все описано, как раз под колесо. В принципе, вариантов реализации напарников много, в ванильном Fallout 3, например, они вообще по другому созданы в сравнении с NV. Так что, твой вариант с колесом не подружится.

  • Нравится 2

Поделиться сообщением


Ссылка на сообщение

Скажите пожалуйста, что я делаю не так?
НПС не вешается на крест. Я подглядел, что у ванильных все делает пакет ИИ. Скопировал и себе такой, разместил в мире объект мебели, но вот указать его как цель путешествия не могу, его нет в выпадающем списке. Пробовал делать через linked reference и у креста, и у непися, и у обоих сразу.

Прилагаю скриншот, наверное неинформативный.
 

Спойлер

Screenshot_1.png


Забегая вперед, спрошу. Если удастся его подвесить, возможно ли будет переключать enable/disable этого непися через GetScriptVariable?

Поделиться сообщением


Ссылка на сообщение
4 часа назад, RaggaL сказал:

Скопировал и себе такой, разместил в мире объект мебели, но вот указать его как цель путешествия не могу, его нет в выпадающем списке. Пробовал делать через linked reference и у креста, и у непися, и у обоих сразу.

Прилагаю скриншот, наверное неинформативный.

Галочку надо поставить Persisdent Reference (постоянная ссылка) в окне креста. И вообще это галочка должна стоять на всех объектах, которым ты даешь референс ID. Далее, надо нажать "окей" в окне, тем самым сохранить результат.

Поделиться сообщением


Ссылка на сообщение
8 часов назад, Паха007 сказал:

Галочку надо поставить Persisdent Reference (постоянная ссылка) в окне креста. И вообще это галочка должна стоять на всех объектах, которым ты даешь референс ID. Далее, надо нажать "окей" в окне, тем самым сохранить результат.

Заработало, спасибо. С переключением появления непися тоже разобрался.

  • Нравится 1

Поделиться сообщением


Ссылка на сообщение

Вспомнил, что в моде про биореактор не сделал отключение личностного модуля, как у всех ванильных обитателей Стока. Потыкался в их реплики, но не до конца понял,как это работает.
Есть квест NVDLC03DialogueHQBuddies, есть переменная bBuddiesTalk. Есть message box-ы с кнопками, открывающие меню рецептов био-станции или Магги.  А дальше как? Куда смотреть?

Поделиться сообщением


Ссылка на сообщение

Я не понимаю, что такое личностный модуль, так как не знаком с модом про биреактор. Переменная bBuddiesTalk - это, видимо, какая-то переменная, которую ввел автор мода для чего-то. Что касается message box-а с кнопками - все действия, которые он выполняет прописываются в скрипте, есть такая внутриигровая переменная - Button, она как раз и завязана с вариантами выбора и их последствиями при выборе вариантов из message box-а.

Поделиться сообщением


Ссылка на сообщение

Надеюсь не будет оффтопом) 

Кто нибудь знает почему до сих пор нет мода на реплейсер слайдов концовок игры? Сложно ли в реализации такого мода?

Поделиться сообщением


Ссылка на сообщение

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

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

Создать учетную запись

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

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

Войти

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

Войти


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