• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней. • Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней. • При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС. • При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "+" полезного сообщения.
Сообщения, не относящиеся к вопросам по скриптам Papyrus, ответам на них или уточнениям, являются оффтопом и могут быть удалены.
Красное солнце Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
Изменение репутации для пользователя nodtrial
nodtrialOffline
Сообщение №3031
написано: 3 апреля 2021, 10:42
| Отредактировано: nodtrial - 3 апреля 2021, 13:38
nodtrial, должно работать... А на чистом сейве или на новой игре не пробовали? Может, у вас сейв, в котором проперти в скрипте не была заполнена или была константой.
Всем привет, помогите пожалуйста с простым скриптом. Суть в следующем - скрипт вешается на предмет и при одевании проверяется какое-либо условие (например пол нпц) и выполняется что-либо. Проблема в том, что я никак не могу найти REF предмета к которому прикреплен скрипт.
Та да, есть такое. У обычных предметов, лежащих в контейнерах, референсов и нету.
Вроде, есть у тех, что также находятся в алиасе. Не уверен.
Можно сделать проперти типа Armor и сунуть туда базовый объект. Тогда можно будет его снять.
Armor Property Magic2Ring Auto;
Event OnEquipped(Actor akActor)
akActor.UnequipItem(Magic2Ring);
EndEvent
Но если надето несколько одинаковых предметов, то и не фак, что снимется нужный.
Если я вас правильно понял, то мне придется под каждый предмет делать скрипт и вписывать туда Property с его рефом. У меня сотни предметов, добавляющиеся через лвл-листы всем нпц, для большинства из них не сделаны муж. версии, поэтому я решил повесить на вещи скрипт. Наверное это надо делать как-то через пустой квест.
JohnSmith, хватит одного скрипта-шаблона, который будет повешен на все формы, и у которого проперти будет заполнено этой формой. В смысле, если для всех предметов требуется выполнить одно и то же действие (например, снять или удалить).
Здравствуйте. Подскажите,пожалуйста, есть ли такой скрипт, чтобы в контейнер один раз в сутки добавлялись определенные предметы, но не просто обновлялись, а плюсовались. Допустим, если добавляется две единицы молока, то через неделю их было в контейнере уже 14? Спасибо.
Например, такое (на контейнер, он не должен авто-обновляться вместе с локацией):
MiscObject Property MyItem Auto ; Предмет (для оружия, брони, зелий, боеприпасов вместо MiscObject использовать соотв. Weapon, Armor, Potion, Ammo) Int Property MyCount Auto ; Кол-во
; В данном случае скрипт впервые добавляет предметы через 12 ч. после первой инициализации референса контейнера, и далее каждые 24 ч. Чтобы предмет добавлялся в опред. промежуток времени суток / строго в опред. время суток, скрипт должен быть немного сложнее, но я не могу его сейчас написать и проверить, т.к. не установлен СК и нет исходников.
Например, такое (на контейнер, он не должен авто-обновляться вместе с локацией):
MiscObject Property MyItem Auto ; Предмет (для оружия, брони, зелий, боеприпасов вместо MiscObject использовать соотв. Weapon, Armor, Potion, Ammo) Int Property MyCount Auto ; Кол-во
; В данном случае скрипт впервые добавляет предметы через 12 ч. после первой инициализации референса контейнера, и далее каждые 24 ч. Чтобы предмет добавлялся в опред. промежуток времени суток / строго в опред. время суток, скрипт должен быть немного сложнее, но я не могу его сейчас написать и проверить, т.к. не установлен СК и нет исходников.
Спасибо! Мне и не надо в определенное время, главное, что бы когда я возвращалась домой, в контейнере лежал не один предмет, а по количеству прошедших дней.
Здравствуйте. Подскажите, пожалуйста, как мне в моем квесте отследить событие диалога, ну например, когда Лидия говорит "Целительные чары? Ты что, из храма?". Мне нужно, чтобы после этих слов сработала функция в моем квесте. Но вроде бы ванильные скрипты диалогов править нежелательно. Как мне поймать это событие? Но необязательно этот диалог. Любой другой ванильный диалог.
Multigone , да, спасибо. Щас посмотрел SM Event Node, там есть ActorDialogueEvent, как я понял, надо создать квест который будет запускаться при событии диалога. Короче пока для меня тут много непонятного, как все работает
Допускю, что этот скрипт дичь полнейшая, потому что теоретического образования по программированию у меня ноль. Нужно, чтобы бессмертный актер после нападения на него игрока становился смертным. Флаг Essential стоит на актере, не на алиасе.
Буду надеяться, что сюда кто-нибудь заглянет
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №3044
написано: 29 марта 2022, 21:49
| Отредактировано: Multigone - 29 марта 2022, 21:55
Lexo, а, эт я не знаю, не пользовался. Насколько я понял из описания, GetKeywordData() и SetKeywordData() позволяют получить и установить значение некой float-переменной, соотнесенной с кейвордом, имеющимся у этой локации (зачем? почему? непонятно). При этом, добавлять новые кейворды к формам, насколько я знаю, в процессе игры нельзя.
Действительно, можно запоминать какую-либо информацию об этой локации, шифруя ее значением float-переменной кейворда, при условиях:
1) У каждой локации, данные которой требуется запомнить, есть один или несколько известных кейвордов (предустановленных в СК), и
2) Дефолтное значение переменной кейворда (если его можно устанавливать из СК) не совпадает с числами, которыми предполагается шифровать информацию, и
3) Другие моды не управляют значениями этих переменных.
Multigone, я сам не понял, в чём прикол, но вот этот скрипт пока без нареканий работает. Разумеется, позже будет больше тестов - может быть что-то и выявится. Но этот почему-то работает. Так что если вдруг, можно иметь в виду...
Есть перк, хочу выдать его всем нпц и монстрам в игре, существует ли возможность выдать его посредством скрипта ? (напомню в Fallout 4 перки можно динамически вешать на нпц, в отличии от Skyrim ) Нужен какой-то оптимальный метод, по которому можно обратиться ко всему игровому миру и ввести скриптовую команду addperk
nepewka, не знаю, что там в F4, в Скайриме это делается так (пример для Ability):
1) Создается заклинание с FF / Self / Area, на что-либо вешается скрипт с апдейтом Х сек., кастующим это заклинание игроком. На заклинании скрипт, добавляющий попавшим в зону действия целям это Ability.
2) Либо (требуется SKSE) берется локация, в которой находится игрок в текущий момент, перебираются все подряд референсы этой локации (не уверен, что временные референсы тоже учитываются, хотя, скорее всего, да). Тем из них, что являются актерами, добавляется Ability.
Ability, добавленное скриптом, имеет баг - когда актер выгружается из мира, а потом снова загружается, Ability формально остается, но актер теряет его Effects. Хотя это можно обойти.
Особенности работы скриптов в F4 можно обсудить в этой теме.
Привет! Да тоже самое что и в Скайриме, тот же ведь движок скриптовый. С той лишь разницей что доработали некоторые вещи, типа выдача динамически перков любому актёру через скрипт, что было недоступно в Скайриме.
Цитата Multigone
Особенности работы скриптов в F4 можно обсудить в этой теме.
Там раздел мёртвый( а так как скрипты один в один в двух играх, думаю лучше писать сюда)
Цитата Multigone
1) Создается заклинание с FF / Self / Area, на что-либо вешается скрипт с апдейтом Х сек., кастующим это заклинание игроком. На заклинании скрипт, добавляющий попавшим в зону действия целям это Ability.
Этот вариант мне кажется проще и интереснее.
В F4 нету возможности что-либо кастовать самому, но можно это сделать через энчант на какой-нибудь вещи и потом через скрипт в MGEF повесить заклинание на игрока с селфкастом.
Нужно сделать так, чтобы это происходило автономно и с периодичностью такой, чтобы если начался бой(даже не наш если), актёры участвующие в нём получали эту Ability/Perk
Введу в курс дела: идея заключается в том, чтобы сделать кастомный резист к тому или иному типу урона, чтобы он просчитывался через перк и мог снижаться от входящего урона.
nepewka, чтобы это работало, нужно взаимодействие между скриптом и заклинанием. Каковы особенности редактора в F4, не в курсе. Поэтому, если нужно, могу расписать версию для СК Скайрима.
Изменение репутации для пользователя Lexo
LexoOffline
Сообщение №3057
написано: 22 апреля 2022, 15:02
| Отредактировано: Lexo - 22 апреля 2022, 15:02
nepewka, создать заклинание-плащ с магнитудой 1000, в него вставить заклинание-концентрацию с галочками NoHitEffect, NoHitEvent и прочими, помогающими не обнаруживать его. Создать квест, в нём создать алиас, в котором будет выбран игрок. На этот алиас игрока повесить заклинание-плащ. А уже через эффект-концентрацию раздавать всем перки.
Изменение репутации для пользователя emelya8307
emelya8307Offline
Сообщение №3058
написано: 24 апреля 2022, 20:25
| Отредактировано: emelya8307 - 24 апреля 2022, 21:23
чтобы это работало, нужно взаимодействие между скриптом и заклинанием. Каковы особенности редактора в F4, не в курсе. Поэтому, если нужно, могу расписать версию для СК Скайрима.
с удовольствием рассмотрю твоё предложение)
идея отличается от того, что предложил Lexo ?
Попытаюсь ещё больше вести в курс дела того, что хочу сделать.
Дело в том, что в F4 своеобразная система работы резистов по урону, в которой не обошлось без васянства разработчиков.
Два основных вида урона в игре - физический(баллистический. обычные виды оружия) и энергетический (всякие лазерки, плазма пушки) Формула снижения урона работает таким образом, что чем больше урон превосходит резист, тем больше будет входящий урон, вплоть до 99% и наоборот, если резист(броня) больше урона, вплоть до снижения урона в 91%. Так должно быть в идеале и так работают игровые формулы с физическим уроном, но не работают таковым образом с энергетическим. Формулы считают только базовый энергетический урон, но при этом не считают уйму бонусов, с помощью которых этот базовый урон можно увеличить. А для физического всё считают нормально.
В следствии чего получается, что физический урон при прочих равных всегда превосходит энергетический. Доходит до абсурда, вплоть до того, что непись может иметь физ резиста больше, чем энерго, но при этом физ оружие по нему будет бить больше, чем энерго. Из-за кривости формул.
Причём из-за того, что навасянили на уровне формул, которые хардкодовые, исправить это невозможно. Сама беседа, конечно, за много лет игры это не исправила.
Как я планирую исправить данную проблему:
1) Убрать зависимость энерго резиста от движковых формул. 2) Создать свою собственную систему снижения урона через перки и кастомные Actor values (для тех кто не в курсе, одно из нововведений в F4 - возможность создавать свои собственные Actor value ) 3) Сам перк будет выглядеть вот так:
Entry point: Mod typed incoming weapon damage в кейвордах укажем, что наш урон энергетический
4) Перк должен висеть на всех актёрах в игре, в том числе и на игроке. Как видите на скриншоте мы можем регулировать получаемый актёром урон на число actor value его брони с нужным нам множителем, надо только поставить + или - , чтобы перк срабатывал как снижение урона.
Также мы можем создать уникальный вид урона и регулировать его через кастомные actor value в перке. Это если будем возиться с новыми типами урона, но в таком случае придётся в предметах брони или статах неписей прописывать значение кастомного actor value
Пока что не будем ничего создавать в плане новых типов урона, а пофиксим работу сломанного энергетическог урона. Для этого, как вы уже поняли нам понадобится Ability на игроке, который будет вешать этот перк неписям вокруг него.
Как-то так, надеюсь теперь вам понятнее стала задача Спасибо за помощь!
Lexo, плащ очень часто обновляется (период явно меньше 1 с). Это сделано для того, чтобы актер, попавший в радиус действия (который обычно оч. небольшой), сразу же почувствовал на себе его эффекты. Большой радиус плаща вызовет (значительное?) повышение нагрузки на игру из-за частых проверок множества актеров. Впрочем, это только мое мнение.
emelya8307, хороший способ, я даже никогда и не пользовался статистикой. В зависимости от того, что задумывалось делать при открытии новой локации, и что считается новой локацией, может как подходить только для новой игры, так и для установки мода при любом прогрессе игры.
nepewka, попробуй сперва с плащом.
Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)