Модератор форума: КсюXa, ApeX  
Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)

Скрипты
a3apbi4  Offline  Сообщение №1 написано: 7 декабря 2010, 18:01



11
Скрипты - неотъемлемая часть GECK. При написании возникает очень много казусов. Данная тема должна помочь не наступать на "грабли" новичкам и делиться опытом с другими более продвинутых мододелов.




Ipatow  Offline  Сообщение №1591 написано: 16 июня 2017, 18:54



Цитата DEBILBOY

возможно ли привязать эффект увеличения роста (на подобие команды "setscale") к силовой броне?

Гм. Первая мысль была делать это не динамически, а статически - то есть просто увеличить размеры самой силовой брони. Не будет конфликтов с другими модами, тоже изменяющими масштаб (навскидку вспоминается мод, который просто вносит небольшое разнообразие в размеры людей, чтобы не выглядели слишком штамповаными), не будет странностей с перемасштабированием, когда объект меняется, а его коллизия - нет (скажем, ты можешь увеличить человечка, чтобы ему озеро стало по колено, но он всё равно через озеро "поплывёт" над водой, потому что помнит, какой у него "на самом деле" размер). Но поскольку броня надевается на тот же самый человеческий скелет, увеличенная в пропорции 1.3 броня будет сидеть... Ну, как если бы там внутри действительно был человек (представь себе, что силовая броня сгибает ногу не там, где колено у человека внутри, а где колено у брони! движок сломать ногу человеку не позволит, и выглядеть это будет странно - скорее всего, ногу скрутит в крендель).

Получается, что придётся наплевать на побочные эффекты перемасштабирования и именно его и устроить. В точности как ты предположил - дать броне новый эффект, скрипт которого будет по старту эффекта выставлить буквально SetScale 1.3, а по финишу SetScale 1.0...

sabardfix  Offline  Сообщение №1592 написано: 24 июня 2017, 17:55



11
Здравствуйте. Как можно сделать так, чтобы при определенных действий, в определенном месте появлялся объект. Например: отправил гулей в космос, на тумбочке в Новаке появилась маленькая ракета. Это из области скриптов или как-то еще можно этого добиться?

Ipatow  Offline  Сообщение №1593 написано: 24 июня 2017, 18:56



Цитата sabardfix

Как можно сделать так, чтобы при определенных действий, в определенном месте появлялся объект. Например: отправил гулей в космос, на тумбочке в Новаке появилась маленькая ракета. Это из области скриптов или как-то еще можно этого добиться?

Например, можно нужный объект в нужное место положить сразу, поставить этому его экземпляру (reference) флажок Initially Disabled, и в какой-то момент в каком-то скрипте выдать про него функцию Enable. Если и так уже какие-то Enable/Disable происходят, можно привязать этот экземпляр к уже пропадающему/появляющемуся при помощи свойства экземпляра Enable Parent (возможно, с инверсией). Можно объекты не исчезать/появлять, а перетаскивать их с места на место - например, лежала ракета на полу в недоступном складе, а ты её рраз и MoveTo на тумбочку. Наконец, можно просто динамически сотворить объект при помощи PlaceAtMe...

sabardfix  Offline  Сообщение №1594 написано: 24 июня 2017, 19:38



11
Цитата Ipatow

Например, можно нужный объект в нужное место положить сразу, поставить этому его экземпляру (reference) флажок Initially Disabled, и в какой-то момент в каком-то скрипте выдать про него функцию Enable. Если и так уже какие-то Enable/Disable происходят, можно привязать этот экземпляр к уже пропадающему/появляющемуся при помощи свойства экземпляра Enable Parent (возможно, с инверсией). Можно объекты не исчезать/появлять, а перетаскивать их с места на место - например, лежала ракета на полу в недоступном складе, а ты её рраз и MoveTo на тумбочку. Наконец, можно просто динамически сотворить объект при помощи PlaceAtMe...

А можно подробнее пожалуйста. Я не очень силен в этих вещах. Если в кратце, то хочу сделать мод, который бы добавлял разные маленькие трофеи в номер мотеля в Новаке, после выполнения квестов. Редактором владею на уровне изменения параметров оружия и создания интерьеров. Пытался сделать на примере покупки верстака, через терминал в люксе Лаки 38, но нужного скрипта не нашел. Да и не совсем понял куда в квесте его вставлять, даже если нашел бы. Если не сложно, то какой-нибудь простой пример, было бы очень здорово.

STELS_BOY  Offline  Сообщение №1595 написано: 24 июня 2017, 20:07 | Отредактировано: STELS_BOY - 24 июня 2017, 20:07



95
sabardfix, Создаешь триггер в определенном месте и вешаешь на него скрипт такой или в результируещем скрипте в квесте пишешь - 456.enable  ;(Вместо 456 пишется REF имя обьекта):


(Здесь можно более подробно узнать обо всем - ссылка)

sabardfix  Offline  Сообщение №1596 написано: 29 июля 2017, 14:42



11
Здравствуйте. Я уже обращался сюда с просьбой о помощи, но к сожалению так и не смог разобраться. Хочу сделать так, чтобы после выполнения квеста, в определенном месте, появлялся определенный предмет. Я понял что в игре это реализовано, так, что нужный предмет изначально находится на своем  месте, но с пометкой "изначально отключен". Скрипт же его появляет. Может есть здесь добряк скриптовик, который бы смог объяснить как это сделать самому.

Shtuka  Сообщение №1597 написано: 29 июля 2017, 15:38 | Отредактировано: shtuka - 29 июля 2017, 15:42

sabardfix, привет, чтобы правильнее ответить нужно знать что у тебя за квест, есть ли например диалог, после котрого нужно сделать появление?
Это нужно знать, потому как результирующий скрипт(команду) можно по разному исполнить, ну вот вписать в поле диалога, а может в поле стадий...

sabardfix  Offline  Сообщение №1598 написано: 29 июля 2017, 15:51



11
shtuka, любой квест. К примеру запустил гулей в космос, на полке в номере Новака, появилась сувенирная ракета. И так дальше, со всеми квестами. Мне важно понять сам принцип, ведь с помощью этого, можно не только сувениры на полки ставить, а скажем, изменять сами поселения. Чем больше выполнил квестов, тем больше изменений в мире произошло. Хотя бы косметических.

tundruck73  Offline  Сообщение №1599 написано: 29 июля 2017, 15:56 | Отредактировано: tundruck73 - 29 июля 2017, 15:57



Если нужна проверка на "выполненность" какого-либо квеста, то это выглядит примерно так:

if GetQuestCompleted questname; здесь ID квеста
ПредметREF.enable

Вот справка по этой функции

Мосье, же не манж па сис жур...
Умер 23.04.2019
sabardfix  Offline  Сообщение №1600 написано: 29 июля 2017, 16:08



11
tundruck73, а куда это записывать? И как получить ref id предмета?

Shtuka  Сообщение №1601 написано: 29 июля 2017, 16:11 | Отредактировано: shtuka - 29 июля 2017, 16:11


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

Добавлено (29 Июля 2017, 19:11)
---------------------------------------------
реф айди объекта, если не существует, то придумываешь сам.

tundruck73  Offline  Сообщение №1602 написано: 29 июля 2017, 16:14 | Отредактировано: tundruck73 - 29 июля 2017, 16:16



Ref id вы самостоятельно должны дать копии своего предмета, помещенной в игровой мир. То есть кладете предмет на нужное место, открываете двойным кликом окно Reference и в верхней строке что-нибудь пишете (на картинке редактор для Fallout4, но разницы в данном случае нет никакой):

Ref Id не должен начинаться с нуля и вообще с цифр, иначе могут возникнуть проблемы со скриптом.

P.S. Не забывайте отметить галкой чекбокс initially disabled

Мосье, же не манж па сис жур...
Умер 23.04.2019
Shtuka  Сообщение №1603 написано: 29 июля 2017, 16:18

sabardfix, походу вы только начинаете модить, может дать учебников по Гекку? Есть у меня собственная подборка, по крайней мере самые популярные там есть.

Добавлено (29 Июля 2017, 19:18)
---------------------------------------------


a1
tundruck73, я тоже использую а1, реально очень удобно, удобней чем аааа или zzz :)

sabardfix  Offline  Сообщение №1604 написано: 29 июля 2017, 16:25



11
tundruck73, а скрипт писать в "результирующий скрипт"? Т.е. ту строку, которую вы написали, скопировать в окно результирующего скрипта, но вставить id квеста и предмета? 
shtuka, я, как бы это сказать, гуманитарий, так что раздел со скриптами, как и программирование в целом, для меня на столько темный лес, что ух. Учебники не помешают в любом случае.

tundruck73  Offline  Сообщение №1605 написано: 29 июля 2017, 16:33



sabardfix, если вы хотите воспользоваться результирующим скриптом, то первая строчка не нужна. Просто напишите ПредметREF.enable в окне Result script финальной стадии вашего квеста или в последней фразе диалога, который в нем звучит. Проверка нужна лишь в том случае, если мы пишем "большой" скрипт для предмета или для квеста.

shtuka, а1 - хорошее сочетание, удобное. Мне нравится :)

Мосье, же не манж па сис жур...
Умер 23.04.2019
Shtuka  Сообщение №1606 написано: 29 июля 2017, 16:35 | Отредактировано: shtuka - 29 июля 2017, 16:36

sabardfix, прошу https://yadi.sk/d/520hhhQG3LXpB9

tundruck73  Offline  Сообщение №1607 написано: 29 июля 2017, 16:38 | Отредактировано: tundruck73 - 29 июля 2017, 16:41



sabardfix, забыл спросить. Вы хотите, чтобы предмет появлялся после выполнения сделанного вами квеста? Или речь идет о каком-то квесте из оригинальной игры? Если квест ванильный, то я бы не стал его трогать во избежание сюрпризов, проще еще один сделать, технический.

Мосье, же не манж па сис жур...
Умер 23.04.2019
sabardfix  Offline  Сообщение №1608 написано: 29 июля 2017, 16:54



11
shtuka, спасибо
tundruck73, ну да, выполнил и предмет появился. Попробовал, ничего не произошло. Для примера я поместил бочку в дом дока Митчела, справа от пистолета пулемета. Поставил галочку "изначально отсутствует", ref id написал barrel. Затем в самой последней стадии самого первого квеста "Удар по голове" добавил строку: barrelREF.enable начал новую игру, выполнил квест и ничего не произошло. Где может быть ошибка? 

Shtuka  Сообщение №1609 написано: 29 июля 2017, 17:50

sabardfix, 
добавил строку: barrelREF.enable 

Подозреваю что пишете id не так как надо, типа надо абсолютно так же как в преференс окне.

sabardfix  Offline  Сообщение №1610 написано: 29 июля 2017, 19:26



11
shtuka, tundruck73, хаха! Получилось!=) Правда название квеста теперь на английском. Такое же, кстати, происходит и после редактирование оружия или брони. Как оставить русский язык?

tundruck73  Offline  Сообщение №1611 написано: 30 июля 2017, 02:00 | Отредактировано: tundruck73 - 30 июля 2017, 07:16



Цитата sabardfix

Как оставить русский язык?

Использовать русифицированный FalloutNV.esm. Cлучайно у меня он завалялся на яндекс-диске - тыц.

Можно, конечно, обратно перевести название квеста (или любого другого изменяемого объекта) на русский в вашем моде, но в данном случае повторю, что трогать ванильный квест - занятие рискованное, лучше сделать новый, предназначенный только для активации вашего предмета. Идете в раздел "квесты", тыкаете в него правой кнопкой мыши, выбираете вариант "New" и создаете новый квест с новым ID, допустим, a1myQuest. Отмечаете чекбокс Start game enable, ставите какой-нибудь приоритет, например 10:

Сделав все это, нажимаете ОК, пока вам этот квест не нужен, сейчас надо писать скрипт. Жмете на кнопку с карандашом на верхней панели, открывается окно Script Edit. Нажимаете в нем на кнопку Script, выбираете вариант New:

После этого в окне Script type выбираете вариант Quest:

Сам скрипт будет выглядеть примерно так:

scn a1myQuestScript

begin Gamemode
if GetQuestCompleted VCG01; здесь ID квеста "Удар по голове"
ПредметRef.enable
stopquest a1myQuest; эта команда останавливает наш квест после того, как он выполнил свою функцию и стал не нужен
endif
end

Сохраняете этот новый скрипт, просто закрыв его, а потом возвращаетесь к своему квесту, открываете его и в окне Script выбираете только что написанный скрипт, после чего нажимаете ОК. Все, дело сделано.

Мосье, же не манж па сис жур...
Умер 23.04.2019
sabardfix  Offline  Сообщение №1612 написано: 30 июля 2017, 11:03



11
tundruck73, спасибо большое, так действительно будет и лучше и надежнее.

tundruck73  Offline  Сообщение №1613 написано: 30 июля 2017, 14:35



sabardfix, да не за что. У вас все получилось?

Мосье, же не манж па сис жур...
Умер 23.04.2019
sabardfix  Offline  Сообщение №1614 написано: 30 июля 2017, 15:21 | Отредактировано: sabardfix - 30 июля 2017, 16:49



11
tundruck73 да, все работает хорошо

tundruck73  Offline  Сообщение №1615 написано: 31 июля 2017, 01:20 | Отредактировано: tundruck73 - 1 августа 2017, 08:36



Кстати, проверку GetQuestCompleted можно поменять на GetStage. В этом случае нужный предмет будет появляться при наступлении определенной стадии какого-либо квеста, а не при его завершении.
http://geck.bethsoft.com/index.php?title=GetStage

Мосье, же не манж па сис жур...
Умер 23.04.2019
georgy11  Offline  Сообщение №1616 написано: 26 декабря 2017, 09:58



31
Доброго времени суток! Ребят, кто шарит в скриптах? Скажите как сделать чтобы свет вращался,ну например как полицейские мигалки?
Я видел такое в моде RE2 для Фоллаут. В гекк,в разлеле свет,есть klaxon light,-это оранжевая сигнальная лампа,и когда например открываешь дверь,эта лампа начинает вращаться вместе с оранжевым светом.

КсюXa  Offline  Сообщение №1617 написано: 26 декабря 2017, 10:41 | Отредактировано: КсюXa - 26 декабря 2017, 13:25


Гид по Мастерской


Цитата georgy11

есть klaxon light,-это оранжевая сигнальная лампа,и когда например открываешь дверь,эта лампа начинает вращаться вместе с оранжевым светом.

   Вращение света клаксона заложено в саму 3D-модель этой лампы, ну то есть - в ней(в модели) есть встроенные анимации свечения и вращения. По умолчанию эти анимации не проигрывается, поэтому к этой лампочке прикручен скрипт, заставляющий в нужный момент проигрывать нужную анимацию (команда playgroup в скрипте). А нужный момент для этого клаксона - это как раз открывание двери. Клаксон связан с дверью реф-связью и дверь является "включателем" для клаксона.
   Скрипт для клаксона называется KlaxonLightScript. Его можно взять за основу, чуть подправить и приспособить под свои нужды. Как править - тут нужны уточнения. В том плане, что нужно знать, как задумано это вращение в игре: что это будет за "мигалка", где будет стоять, когда должна включаться и кто её должен включать.
   P.S. Названия встроенных анимаций, если они есть в моделях, можно посмотреть в Превью. Это когда в окне объектов выделяешь выбранный объект и по клику ПКМ в контексте выбираешь "Просмотр". Откроется окно и в низу окна будет отдельное поле со списком встроенных в модель анимаций. Можно выбрать любую и по кнопке пуск, посмотреть, как она проигрывается.

Ой, всё...
georgy11  Offline  Сообщение №1618 написано: 27 декабря 2017, 02:42



31
КсюXa, Ксюша это конечно хорошо все, буду пытаться редачить скрипт. Ты спросила смотря какие нужды,вот отвечаю:-В моде который я делаю будет несколько машин полиции,задача такая,вот ты заходишь на эту локацию а там стоят машины полиции,двери открыты,а мигалки сверкают. Смысл,сделать скрипт на постоянную работу анимации. Сам клаксон не нужен,нужно лишь накладной источник света заставить сверкать должным образом. Есть какие нибудь идеи по этому поводу? Просто этот скрипт мне уже как 1,5-2 года покоя не даёт. Отпишись пожалуйста. Я не прощаюсь)

КсюXa  Offline  Сообщение №1619 написано: 27 декабря 2017, 03:53 | Отредактировано: КсюXa - 27 декабря 2017, 03:54


Гид по Мастерской


georgy11, ну вот смотри - в ГЕКК в категории активаторов есть объект KlaxonLight. Это лампа-мигалка.

А в категории Light (источники света) есть объект KlaxonLightGlow. Это луч света от лампы мигалки

На локации они составляют пару: лампа-мигалка светится и внутри её вращается лампа. А поверх лампы светится и вращается внешний луч.

Оба этих объекта используют один и тот же скрипт KlaxonLightScript.
Для твоих целей достаточно такого варианта: сделать дубликаты активатора и свечения (открыть, поменять ID и сохранить, как новые объекты). Затем в категории скриптов создать новый простенький скрипт, в котором прописать команду на постоянное проигрывание анимации свечения\вращения и назначить этот скрипт своему новому активатору и новому источнику света.

Затем размещаешь лампу-активатор в локации, "вешаешь" на неё колечком луч-свечение, как на третьей картинке и готово. В игре эта мигалка-сирена всегда будет светиться и свет вращаться. Кстати, у копии луча света (которую разместишь в локации) на вкладке Extra можно увеличить радиус освещения. По-умолчанию там стоит 256.

Ой, всё...
georgy11  Offline  Сообщение №1620 написано: 20 марта 2018, 01:48



31
КсюXa, Ксюш, спасибо тебе огромное что разъяснила что к чему. Когда все сделаю,то мод будет здесь на сайте,сможешь посмотреть. В список людей которым я благодарен за любую оказанную помощь при создании мода,ты уже попала. Дальше я сам. Спасибо ещё раз, и с наступающим Новым годом тебя!

Добавлено (20 Марта 2018, 04:48)
---------------------------------------------
Ксюх,Привет,вынужден снова к тебе обратиться. Дело вот в чем: Есть скрипты для простейшего квеста по поиску документа\записки? Выглядит это так: Приходим на локацию,читаем там найденную записку,после прочтения появляется название квеста "Невидимый враг", и добавляется задание:" Найдите все документы о вирусе"(всего их 20)
После нахождения всех квест завершается. Ну собственно и все. Сможешь чем нибудь помочь?


Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)
Поиск:





Ответ на жалобу смотрите в разделе жалоб