Доброго дня. Кто подскажет, как в Conditions задать нужную дату (например, 1 января). При тщательном пересмотре обнаружил только вариант GetDayOfWeek, который позволяет выбрать день недели.
Доброго дня.Кто подскажет, как в Conditions задать нужную дату (например, 1 января). При тщательном пересмотре обнаружил только вариант GetDayOfWeek, который позволяет выбрать день недели.
Возникла безумная идея сделать все сложным и топорным способом. Число и месяц можно указать в аи-пакете. Следовательно, создаем НПС, который находится в одной локации, а нужного числа нужного месяца переходит в другую. В Conditions указываем для этого НПС условие GetInCell и получаем искомый результат. Не нравится мне такое решение, но лучшего придумать не могу. Если у кого-нибудь есть замечания - с удовольствием выслушаю )))
Добавлено (04 Ноября 2015, 22:06) --------------------------------------------- Возник вопрос. В редакторе по умолчанию GameDay = 17, а GameMonth = 7. Специально начал новую игру, чтобы посмотреть внутриигровую дату по выходу из Хелгена. Там показывает 17 последнего зерна, то бишь августа. Но август 8-й месяц. Правильно ли я понял, что нумерация месяцев в СК начинается с нуля (январь = 0, февраль = 1 и т.д.)?
Доброго времени суток. Хочу создать перк, который будет давать прибавку к урону в зависимости от значения заданного глобала. Для этого создал пустой перк и в поле PerkEntries добавил 5 пунктов ModAtackDamage с множителем MultipleValue от 1,2 до 2,0. Теперь в Conditions каждого пункта нужно добавить GetGlobalValue == 1 и т.д. В общем, чтобы каждый из пунктов срабатывал когда значение переменной достигает определенного уровня. Но в Conditions самого PerkEntry есть вкладки хозяин/оружие/цель. Мое условие, в принципе, не связано ни с каким конкретным объектом. Есть ли разница в какую вкладку его добавлять и будет ли оно работать?
P.S. Добавлю кое-какие пояснения. Есть питомец (собака), который должен прокачиваться в зависимости от повышения заданной глобальной переменной (от 0 до 5). Конкретно - у него должна повышаться скорость передвижения и наносимый урон. Со скоростью проблем не возникло, добавил в окно актера спелл, в котором пять эффектов SpeedMult с разным значением и разными условиями. Например, если глобал равен нулю - ни один эффект не работает. Если глобал повышается до 1 - срабатывает первый эффект (+10% скорости). Если повышается до 2 - первый эффект выключается и срабатывает второй (+20% скорости). Так я уже делал и это работает. А вот наносимый урон легче повысить через перк. Действовал по той же схеме, что и со спеллом. В окно атера добавлен перк и с повышением значения глобала должен включаться тот или иной PerkEntry. Проверить в игре мне это довольно сложно, поэтому второй вопрос: Можно ли в самой игре через консоль просмотреть или изменить текущее значение конкретной переменной?
У меня была мысль сделать 5 перков и 5 маг эффектов, которые берут свои значения из этих перков. Потом собрать эффекты в один спелл, как я сделал с прибавкой к скорости. Но я подумал, что с одним перком будет проще...
То есть ГГ проходит мимо/над НПС, затем входит в триггер и этот триггер даёт команду на подъем.
А может просто добавлять бандита за спину скриптом, через PlaceAtMe? И сразу на триггер этим же скриптом вешаем Self.Disable, а отложенным событием через какое-то время Self.Enable (чтобы не срабатывал несколько раз подряд).
SanBos, я бы поставленную задачу реализовал следующим образом:
1. Чтобы не занимал слот компаньона, не нужно добавлять ему FollowerFaction. Решать вопрос только через пакеты поведения. Допустим, мы создаем глобал, значение которого будет меняться через диалоги с ГГ. Затем добавляем аи-пакеты на все запланированные случаи, с указанием в Conditions условий при каких значениях нашего глобала они будут работать. Допустим, изначально персонаж сидит в какой-то таверне. Тогда добавляем пакет с привязкой к какому-нибудь маркеру в этой таверне и в условиях ставим "если глобал = 1". Соответственно наш глобал по умолчанию должен быть 1. Далее добавляем пакет следования за ГГ и в условиях ставим "если глобал = 2". А значит нам понадобится ветка диалога типа "Пошли со мной", к которой мы привязываем скрипт, меняющий значение нашего глобала на 2. Ну, еще понадобится ветка типа "Уходи, ты мне не нужен" со скриптом, изменяющим глобал снова на 1. При этом персонаж вернется обратно в таверну. Возможно море вариаций, при которых можно задавать через аи-пакеты дистанцию следования, отдых в определенном радиусе, даже можно определить новый дом для персонажа посредством перемещения какого-нибудь своего маркера и привязке пакета к нему.
2. Серану на предмет поведения не "препарировал", но теоретически могу предположить как создать нечто подобное. Когда редактируем аи-пакет следования за ГГ, ставим разницу между минимальной и максимальной дистанцией чуть больше, чтобы персонаж чувствовал себя свободнее и не срывался с места при малейшем перемещении ГГ. Также ставим True в строках, которые отвечают за использование фурнитуры, idle-маркеров, анимацию приема пищи и т.д. Таким образом персонаж следует за нами, но если ГГ какое-то время остается на одном месте, он может перемещаться в пределах заданных вами дистанций, используя мебель и прочее.
3-4. Просмотрите в квестах все диалоги по фильтру Generic. Там, если не ошибаюсь, собраны все возможные реплики, генерируемые в зависимости от ситуации и окружения. Там же зашиты стандартные приветствия и прочие возгласы для всех типов голоса. Вам, скорее всего, придется создать свой Voice и уже к нему в отдельном квесте привязывать возможные фразы на все случаи жизни.
Возможно предложенный мною способ по пунктам 1-2 далек от идеала в плане реализации и целесообразности, но он должен работать. К сожалению, я тоже очень слабо подкован в модостроении, иначе посоветовал бы вам что-то более стоящее.
Доброго времени суток. Если кто-то работал со звуками в СК - буду рад помощи. Ситауция такая: хочу привязать к объекту несколько звуков, чтобы проигрывались постоянно в случайном порядке. Для этого создал SaundDescriptor, забросил туда несколько звуковых файлов, включил Loop и привязал к объекту. В итоге постоянно проигрывается цикл из первого трека, а остальные не хотят. При отключении Loop проигрывается случайный трек, но лишь единожды, после него тишина. Попробовал вставить все это в звуковой маркер, поместил его рядом с объектом и получил тот же результат. Либо зацикленное воспроизведение, но только первый трек, либо же разные треки, но только один раз. Протестил ванильные маркеры, в которых включен Loop и наличествует несколько файлов, оказывается они тоже гоняют по кругу только первый. Это недоработка самой Бесезды или какое-то мое упущение? Есть вариант смиксовать все треки в один, но тогда каждый раз при заходе на локацию мы все равно будем слышать первый файл и он быстро приестся. Пробовал создать MusicType и включать его скриптом MusicType.Add(), но почему-то не работает. Подскажите выход, если у кого-то есть идеи.
З.Ы. Проблема решена. Вспомнил, что необходимая мне функция была реализована в модификации SpaceCore. Позаимствовал оттуда скрипт, переделал под себя и все работает )))
Всем привет. Недавно на примере одного лука разобрался, что дабы отобразить в описании магического эффекта текущее значение какого-либо глобала нужно добавить строчку Global=MyGlobalName в описание этого эффекта. До сего дня почему-то пребывал в уверенности, что подобная схема будет работать и в сообщениях, но она к сожалению не работает. Подскажите, как втиснуть в месседж-бокс отображение глобала? Чтобы в выскакивающем окне была информация, к примеру: "У вас осталось Global дней"?
З.Ы. Нашел в учебнике такую инфу:
Теги тектовых вставок могут использоваться в следующих текстовых полях:
Quest stage Log Entry
Quest objective Display Text
Topic prompts
Messages - Title and Message Text
Book text
Для объектов Message и Book, чтобы использовать текстовые вставки, базовый объект должен быть надлежащим образом связан с конкретным квестом.
Не могу разобраться. Если мне нужна только визуализация значений глобала в сообщении, то мне в любом случае нужно создавать квест и связывать с ним мой глобал? Достаточно ли для этого пустого квеста или нужен полноценный?
З.З.Ы. Вроде бы разобрался, сорри за беспокойство.
День добрый, друзья. Не могу решить проблемку. Есть активатор, который стоит в интерьере и должен постоянно воспроизводить звук. Есть саунд-дескриптор, в который забиты 10 звуковых дорожек. Если просто сделать саунд-маркер и поставить в интерьер или же просто в окне активатора задать ему наш дескриптор, чтобы он гонял его по кругу, то при таком варианте постоянно воспроизводится лишь один трек из десяти. Мне нужно, чтобы рандомно воспроизводились разные треки, поэтому решил сделать, как мне показалось, простой скрипт.
Event onLoad() PlayMySound() EndEvent
Function PlayMySound() While Self.is3DLoaded() Sound01.PlayAndWait(Self) EndWhile EndFunction
Вот вроде бы при загрузке объекта должна запускаться функция, которая гоняет музыку по кругу, пока модель объекта загружена. Если мы покидаем интерьер, то по идее модель выгружается и музыка прекращается. Но нет, при выходе наружу она продолжает играть, что не есть хорошо. Признаю, что совсем немного разбираюсь в скриптах и может это вовсе не так должно работать. Подскажите, как нужно сделать.
Добрый день. Есть вопрос - как заставить саунд-маркер воспроизводить по циклу звуковой дескриптор, в который забиты 10 дорожек? Проблема в том, что он постоянно гоняет по кругу лишь какой-то один трек из десяти, а нужно чтобы разные запускал.
Добавлено (31 Мая 2019, 14:56) --------------------------------------------- dog77555, когда при запуске СК открываете окно выбора загружаемого плагина, выделите нужный вам esp-файл и справа, под строчкой Parent Masters вы увидите перечень всех esm и esp, к которым привязан ваш плагин. Выделите тот, который не нужен, нажмите Ctrl+Delete, после чего загрузите и сохраните ваш плагин. Но для этого нужно быть уверенным, что он действительно не использует контент от того файла.
Лучше запускать музыку в одном ивенте, а потом в другом останавливать по instance id.
Вот в том и проблема, что если запустить музыку одним событием и оставить играть, пока мы ее не выключим, то она выберет случайный трек и зациклится на нем. Получается, что нужно ее каждый раз запускать заново, как бы искусственно с помощью скрипта создавая loop, и тогда она каждый раз запускает случайную дорожку.
Dsion, т.е. не закидывать 10 треков в один саунд, а сделать 10 саундов по одному треку в каждом и объединить в форм-лист? Ок, но как в этом случае добиться, чтобы скрипт постоянно воспроизводил случайные саунды из этого форм-листа, а не выбрал один саунд и гонял его по кругу?