
Скрипты в GECK
#21
Отправлено
Знающие люди, подскажите, существует ли функция, при помощи которой можно узнать, сколько времени player провёл в режиме сна.
Есть функция GetPCSleepHours, но насколько я понял, она возвращает значение, которое игрок выставляет в меню сна. Мне кажется это не очень надёжным.
Мне нужна надёжная функция, которая по окончании сна, возвратила бы количество часов/минут/секунд.
#22
Отправлено
Подскажите учебник или гайд по управлению готовой анимацией : т.е. я хочу чтобы определенные анимации включались когда мне нужно ( типа отдых сидя , но не на стульях а на земле в любом месте ) - может есть и готовые но у меня есть желание выбрать анимацию из разных модов и сделать сборник, которые будут активироваться например с горяч. клавиш .
#24
Отправлено
Кто-нибудь знает как поменять текстуру головы с помощью скрипта в GECK для New Vegas? Есть функция SwapTextureOnRef, но она не работает для головы, только для тела. Использую так:
SwapTexture player "FemaleHead" "characters\daughtersofares\Head\1"
#28
Отправлено
Присоединяюсь к Артее. Команда на выдачу перка в ГЭКК-е?
player.AddPerk MS03DreamCrusherPerk
Сообщение отредактировал Pepel12: 18 мая 2025 - 14:31
- SisterlovingAltmer это нравится
#29
Отправлено
player.AddPerk MS03DreamCrusherPerk
Уже сам разобрался, но спасибо.
Кстати, а что делать с референсами? Как их правильно прописывать в фоллаутском скрипте? Например, конкретную НПС отображать, ТОЛЬКО если ГГ соответственной расы - во всём разобрался давно, кроме, как именно в ГЭКК указать конкретно ее реф.
#31
Отправлено
Уже сам разобрался, но спасибо.
Кстати, а что делать с референсами? Как их правильно прописывать в фоллаутском скрипте? Например, конкретную НПС отображать, ТОЛЬКО если ГГ соответственной расы - во всём разобрался давно, кроме, как именно в ГЭКК указать конкретно ее реф.
Это проще чем кажется.
Ставишь нпс. На него пару раз кликаешь. В Reference Editor ID прописываешь например Raketa01Ref.
Далее Галочку на Initiall Disable(Изначально отключен) и Persistent Reference если вдруг не стоит ->Ok
Теперь скрипт с условием, допустим через активатор.
ScriptName Boos
begin onActivate
;Дополнительные условия
Raketa01Ref.enable
End
Добавляешь в мир активатор, желательно новый, вешаешь на него скрипт Boos.
Сохраняешь/проверяешь/добавляешь условия по вкусу. Вроде как-то так было.
Что касаемо расы в условиях функция вроде такая: Если (Игрок или ref ссылка НПС).GetIsRace (Раса для проверки на совпадение)
if player.GetIsRace Ghoul
Raketa01Ref.enable
endif
Примерно так, там по ходу разберешься.
Сообщение отредактировал Pepel12: 04 июня 2025 - 23:05
#32
Отправлено
Это проще чем кажется.
Ставишь нпс. На него пару раз кликаешь. В Reference Editor ID прописываешь например Raketa01Ref.
Далее Галочку на Initiall Disable(Изначально отключен) и Persistent Reference если вдруг не стоит ->Ok
Теперь скрипт с условием, допустим через активатор.
ScriptName Boos
begin onActivate
;Дополнительные условия
Raketa01Ref.enable
End
Добавляешь в мир активатор, желательно новый, вешаешь на него скрипт Boos.
Сохраняешь/проверяешь/добавляешь условия по вкусу. Вроде как-то так было.
Что касаемо расы в условиях функция вроде такая: Если (Игрок или ref ссылка НПС).GetIsRace (Раса для проверки на совпадение)
if player.GetIsRace Ghoul
Raketa01Ref.enable
endif
Примерно так, там по ходу разберешься.
Буду смотреть.
#34
Отправлено
Так, спасибо, Пепел Двенадцатый. А я вот какую штуку еще спрошу:
Как сделать мелкий активатор, который не собьешь и не передвинешь при помощи Z?
В разделе World Objects, там где подраздел Door(Двери) и Static, есть подраздел, первый по счету Activator, делается обычно через него.
Вроде как, все модели там статические, без физики падения.
Ну а дальше по классике, выбираешь, что приглянулось в разделе, меняешь Id, Name(Отображение названия в игре), пересохраняешь, дальше открываешь измененный активатор снимаешь старый скрипт, если был, выбираешь новый. Выносишь активатор на сцену, пару раз на него щелкаешь, Панелька 3D Data – параметр Scale отвечает за размер модельки.
В принципе через Activator, можно использовать любую модельку из игры, у которой присутствует коллизия, грубо говоря, которая в игре насквозь не проходится. Только из архива придется доставать.
#35
Отправлено
В разделе World Objects, там где подраздел Door(Двери) и Static, есть подраздел, первый по счету Activator, делается обычно через него.
Вроде как, все модели там статические, без физики падения.
Ну а дальше по классике, выбираешь, что приглянулось в разделе, меняешь Id, Name(Отображение названия в игре), пересохраняешь, дальше открываешь измененный активатор снимаешь старый скрипт, если был, выбираешь новый. Выносишь активатор на сцену, пару раз на него щелкаешь, Панелька 3D Data – параметр Scale отвечает за размер модельки.
В п
В разделе World Objects, там где подраздел Door(Двери) и Static, есть подраздел, первый по счету Activator, делается обычно через него.
Вроде как, все модели там статические, без физики падения.
Ну а дальше по классике, выбираешь, что приглянулось в разделе, меняешь Id, Name(Отображение названия в игре), пересохраняешь, дальше открываешь измененный активатор снимаешь старый скрипт, если был, выбираешь новый. Выносишь активатор на сцену, пару раз на него щелкаешь, Панелька 3D Data – параметр Scale отвечает за размер модельки.
В принципе через Activator, можно использовать любую модельку из игры, у которой присутствует коллизия, грубо говоря, которая в игре насквозь не проходится. Только из архива придется доставать.
Знаю, но мелкие активаторы (медвежонок, пюпитр) все равно падают.
#36
Отправлено
Знаю, но мелкие активаторы (медвежонок, пюпитр) все равно падают.
Дело в параметрах модели. Данную проблему можно решить 3 способами:
1.Кратко. 3ds Max + Nif plagin, импорт модели, в модификаторе bhkRigidBody в объекте коллизий меняем пункт Convex Shape(Объект с физикой падения) на Strips Shape(Статик) , Выбираем на сцене точку с именем bhkRigidBody(она в виде квадрата в центре оси, имя может быть другое) в параметрах меняем Mass(масса объекта) на 60, экспорт.
2. Через NifSkope, загружаешь модель, ищешь пункт bhkCollisionObject -> bhkRigidBody –Layer и Layer Copy меняешь на OL_STATIC – Mass на 60, сохраняешь. Возможно что-то упустил, можешь поковыряться или сравнить с готовой статикой по параметрам.
3. Через скрипт FOSE, но это уровень «еб--ся мишки». Так делать не надо.
Сообщение отредактировал Pepel12: 07 июня 2025 - 15:36
#38
Отправлено
Итак, разобрался, в чем была загвоздка... скрипт просто нули не хочет признавать. Заменил их на ааа, всё прошло как по маслу.
Но теперь спрошу опять:
1. Возможно ли создать новое меню (не рецепт, именно меню) крафта, если да, то как?
2. Возможен ли автоподгон черт лица НПС (но НЕ пола!) под черты лица ГГ? Если да, то как этого дообиться? Вроде бы так с батей в третьем Фоллауте было.
3. Возможно ли изменение имени НПС, напр. с "Неизвестная девушка" на, скажем "Иоланта" скриптово через диалог, если да, то как?
#39
Отправлено
Итак, разобрался, в чем была загвоздка... скрипт просто нули не хочет признавать. Заменил их на ааа, всё прошло как по маслу.
Но теперь спрошу опять:
1. Возможно ли создать новое меню (не рецепт, именно меню) крафта, если да, то как?
1. Самый простой по типу крафта Fallout 3 сообщение -меню+скрипт, для обработки событий этого меню.
Object Window ->Miscellaneous ->Message
В разделе создаешь новый id например TerasMsg (id используется в скрипте для вызова) Галочку на Message Box, если не стоит.
В Message Text пишешь текст который появится на над кнопками при активаций объекта или события. Например: “Для создания оружия вам понадобится металлолом”.
Menu Bullions создаешь 3 новые кнопки.
Item Text название выделенной кнопки. Первой обычно присваивают имя “Отмена” и в скрипте она пустая. Вторая “Собрать пистолет”, третья “Cобрать автомат”
Item Conditions тут создаются условия при которых кнопки будут отображаться, аналогичны условиям диалоговой системы.---Ok
Дело за скриптом:
ScriptName WeaponCraftS
short Button
Begin OnActivate
ShowMessage TerasMsg
End
Begin GameMode
set Button to GetButtonPressed
If button == 0
; Отмена
elseif button == 1
; Собрать пистолет
if ( player.GetItemCount SpareParts >= 2 ) ;Если у игрока есть 2 куска металлолома
Player.additem Weap10mmPistol 1 ; Добавить 10-мм пистолет
player.removeitem SpareParts 2 ;Удалить 2 куска металлолома
endif
elseif button == 2
; Cобрать автомат
if ( player.GetItemCount SpareParts >= 4 ) ;Если у игрока есть 4 куска металолома
Player.additem WeapChineseAssaultRifle 1; Добавить Китайский автомат
player.removeitem SpareParts 4 ;Удалить 4куска металлолома
endif
endif
endif
endif
end
1.1 В виде терминала, Object Window ->World Objects->Terminal / принцип создания тот же.
1.2 Через диалоговую систему. Бегло. Создается новый квест+Npc. В квесте в разделе Topics(Темы) добавляются новые темы, в них диалоги, в диалогах есть поле Condition в нем настраиваются условии. Поле Result Script вписывается результат диалога, например результат крафта Player.additem Weap10mmPistol 1. Дальше ставится какой нить активатор в виде модели верстака , к нему скрипт на активацию диалога с npc. В адоне «Разлом» на вегас, есть пример, торговый ящик вроде.
1.3 В Вегасе есть своя система крафта с отдельным интерфейсом. Честно в ней не ковырялся, но предполагаю, что она работает, как в Fallout4. Создается или дублируется новый верстак, далее в самих рецептах идет настройка необходимых ресурсов, и там же пункт привязка к конкретному Id верстака.
1.4 Непосредственно меню-интерфейс, на подобие выбора перка, торговли, диалога с плавающей камерой, голода, самого MCM, спидометр транспорта. Сам интерфейс пишется(разметка элементов для вывода данных) в формате XML, подключается через функций из Fose или Nvse, а вот логика уже конкретно зависит от того, что ты хочешь сделать. Где-то хватит стандартных функций, где-то расширенных. А вот для чего глобального , каких нить механик, например паркура и ползанью по стенам, как в ассасине, потребуется визуал студия с++ и компилятор для dll.
Сообщение отредактировал Pepel12: 20 июня 2025 - 19:25
#40
Отправлено
3. Возможно ли изменение имени НПС, напр. с "Неизвестная девушка" на, скажем "Иоланта" скриптово через диалог, если да, то как?
Поменять не получится, только присвоить.
Создается npc, id Например:IolantaS.
Cоздается Message, id Например: IolantaD.
В поле Title присваемое имя Иоланта.
Функция IolantaS.SetActorFullName "IolantaD" прописывается в поле Result Script. ->Compile Scripts.
Еще как вариант. Если стоит Fose или Nvse, открыть консоль, клик на NPC, команда SetName НовоеИмя.
Сообщение отредактировал Pepel12: 20 июня 2025 - 19:57
Количество пользователей, читающих эту тему: 2
0 пользователей, 2 гостей, 0 скрытых