Arin, если мне не изменяет память, она не работает. Когда мне нужно было делать проверку через условия, я пользовался, как уже подсказывал Dsion, GetIsCurrentWeather. Однако предусмотреть проверку погоды, добавляемой модами, в этом случае невозможно. Плюс для каждой ванильной нужно делать свою проверку (- быстродействие). Например:
(S) (IsInInterior) () (==) (0.0) (AND) (S) (GetIsCurrentWeather) (Weather:SkyrimOvercastRain) (==) (1.0) (OR) (S) (GetIsCurrentWeather) (Weather:SkyrimOvercastRainFF) (==) (1.0) (OR) (S) (GetIsCurrentWeather) (Weather:SkyrimOvercastRainMA) (==) (1.0) (OR) (S) (GetIsCurrentWeather) (Weather:SkyrimOvercastRainRE) (==) (1.0) (OR) (S) (GetIsCurrentWeather) (Weather:SkyrimOvercastRainTU) (==) (1.0) (OR) (S) (GetIsCurrentWeather) (Weather:SkyrimOvercastRainVT) (==) (1.0) (OR) (S) (GetIsCurrentWeather) (Weather:SkyrimStormRain) (==) (1.0) (OR) (S) (GetIsCurrentWeather) (Weather:SkyrimStormRainFF) (==) (1.0) (OR) (S) (GetIsCurrentWeather) (Weather:SkyrimStormRainTU) (==) (1.0) (AND)
Но ты проверь все же.
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №545
| Тема: Вопросы по скриптам Papyrus
написано: 13 июня 2015, 10:37
| Отредактировано: Multigone - 13 июня 2015, 10:55
Arin, это ActorValue, хранящее опред. информацию о актере, такую, как здоровье, сопротивление магии и проч. Очевидно, эта переменная отвечает за состояние актера, как "усыновлен игроком" (может, и ошибаюсь). Значит, чтобы добиться такого же состояния, нужно повторить эту команду в своем диалоге.
Однако, вот что говорится по этому поводу в вики:
Variable07
(Vampires) Track if the NPC has been bitten by the player.
(Wisp) Used to track when child wisps are dead, triggering berserk script.
Arin, возможно, на детей навешаны пакеты, которые проверяют эту переменную, и, в зависимости от ее значения, отсылают ребенка в указанный в одном из этих пакетов дом. Хз.
nepewka, если я правильно понял, тебе нужно увеличить кол-во ударов, на которые хватит одного (любого) пузырька яда. Ванильное значение - на один удар; с перком ConcentratedPoison - на 2 удара. За изменение этой величины отвечает Entry Point -> Mod Poison Dose Count. Вроде все.
nepewka, действительно, если использовать крик "Замедление времени", то игрок замедляется вместе с остальными; если применить действие перка "Быстрые рефлексы", то игрок будет иметь нормальную скорость, а мир вокруг - замедлен.
Я много не тестировал, но подозреваю, что дело в следующем: в перке QuickReflexes, помимо наложения заклинания с замедлением времени, есть еще Entry Point -> Modify Player Magic Slowdown.
nepewka, во многих архивах нет исходников, скомпилированные скрипты только.
anton, я видел такой декомпилятор. Он превращает .рех в нечитаемую (наполовину читаемую) абракадабру. Но это была хорошая попытка. Может, его и нет в природе.
nepewka, все события OnEffectStart() сработают практически одновременно (с ничтожной, пренебрежимо малой разницей во времени???), причем не обязательно в том порядке, в котором расположены скрипты в окне Papyrus.
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №559
| Тема: Вопросы по скриптам Papyrus
написано: 18 июня 2015, 11:07
| Отредактировано: Multigone - 18 июня 2015, 16:20
slastik, заклинания могут быть любыми. Значит, придется редактировать каждый эффект каждого заклинания? А если у игрока заклинания, добавленные к.-л. модом?
nepewka, да, это я. Бери любого НПС, какой нравится, но настрой ему класс / боевой стиль под мага.
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №561
| Тема: Вопросы по скриптам Papyrus
написано: 18 июня 2015, 16:46
| Отредактировано: Multigone - 18 июня 2015, 22:22
через Mod Spell Magnitude с определенными Conditions для Target
Если в маг. эффекте не будет указан флаг Power Affect: Magnitude, то для него перк не сработает.</зануда мод>
nepewka, с НПС вроде проблем нет никаких. Хочешь мага - возьми какого-нибудь мастера-пироманта EncWarlock07TemplateFire и создай своего актера с похожими настойками Stats, AI Data, SpellList и т.д. Ничто не мешает сделать свои CombatStyle и Class на основе нужных.
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №562
| Тема: Вопросы по скриптам Papyrus
написано: 18 июня 2015, 17:38
| Отредактировано: Multigone - 18 июня 2015, 17:39
Dsion, мне казалось, что флаги Power Affects вкл./откл. возможность изменять силу / продолж. эффекта с помощью перков. Сейчас проверил - похоже, они вообще ни на что не влияют.
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №563
| Тема: Вопросы по скриптам Papyrus
написано: 18 июня 2015, 18:20
| Отредактировано: Multigone - 18 июня 2015, 18:38
Gvinpin, заполнил ли ты GlobalVariable Property Ara09testcote Auto во всех скриптах? Предположим, да.
Код
Ara09testcote.Mod(1)
Будет работать как с Int-глобальными, так и с Float. В обоих случаях можно писать Ara09testcote.Mod(1.0), это более лорно.
Код
If Ara09testcote.GetValue() >= 0 && Ara09testcote.GetValue() < 3
Проверка правильная. Но всегда лучше делать так:
Код
Int iGlobal = Ara09testcote.GetValueInt() IF iGlobal >= 0 && iGlobal < 3
... поскольку значение глобальной в начале исполняемого отрезка кода и в его конце может быть разным, если эта глобальная может меняться сразу из нескольких событий / скриптов.
nepewka, ты проверял? Работает? Тут Dsion подсказывал, что можно выполнить задачу, используя перк (я, кстати, об этом не подумал). В принципе, можно любым способом, но скрипты немного более динамичны (например, можно задать игнорирование хитов для тех актеров, Actor и ActorBase которых мы изначально не знаем - теоретически, для любых актеров, в т.ч. из др. модов).
Цитата nepewka
если оставлять пустые скобки в IgnoreFriendlyHits bool разве по умолчанию будет true?
Если оставлять пустые скобки, то аргументом функции будет значение, заданное изначально для нее. Смотрим:
Код
Function IgnoreFriendlyHits(bool abIgnore = true) native
Это верно для функций с флагом Native. Для функций с флагом Global при вызове функции все аргументы должны быть указаны. Function Flags.
nepewka, нет, конечно, тот кейворд, который ты дашь атронахам (мне лень было загружать .esm).
Насчет урона от одних другим, я не уверен. Можно было бы воспользоваться комбо из следующих проверок, если бы они работали (перк для НПС):
Perk Owner: (S) (GetFactionRelation) ([TARGET]) (>) (1.0) (AND) ; Вот насчет этой не знаю, передается ли инфа о цели в перк. В маг. эффекты передается.
Target: (S) (GetIsID) (Player) (==) (1.0) (OR) (S) (HasKeyword) (KYWD) (==) (1.0) (AND)
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №570
| Тема: Вопросы по скриптам Papyrus
написано: 19 июня 2015, 13:33
| Отредактировано: Multigone - 19 июня 2015, 13:49
Кстати, снижение магнитуды до нуля перком вовсе не означает, что к НПС не будет применяться эффект вовсе. Если он имеет Hostile, то НПС может перестать быть другом и начать становиться недругом. Просто в битве, в которой участвуют 1) враги 2) игрок 3) НПС на стороне игрока, НПС игнорирует любые атаки игрока до момента, пока битва не закончится. Просто к сведению.
Еще поделюсь следующим наблюдением: у игрока есть FF заклинание с 2 эффектами. Первый лечит всех живых существ, второй наносит урон нежити (и является враждебным). Так вот, если это заклинание применяется к живому, он станет врагом. Казалось бы, раз негативный эффект не применяется, т.к. ему не дает его условие, то заклинание не должно являться враждебным. Однако, если в заклинании в любом эффекте есть Hostile, то все заклинание является Hostile, даже если остальные его эффекты не враждебные.