Dsion, зато в них можно выводить почти любые переменные с помощью as string. Плюс, в моде не надо создавать лишние формы MESG... Так что, думаю, да, неплохой.
Artem13, почти все игровые алгоритмы находятся в движке, а не во внешних скриптах. Скриптовых команд "добавить зачарование", "удалить зачарование" - нет. Каких-либо способов использовать стандартные проверки условий в меню зачарования - нет. Выводы делай сам.
Netico, скорей всего, не до конца установлен SKSE.
3. Copy the .psc files in Data\Scripts\Source\ into the Data\Scripts\Source\ folder of your installation. The .psc files are only needed if you have the CreationKit installed and intend to create or compile Papyrus scripts.
Я тоже против оружия, доступного каждому, но за оружие, доступное только мне. Поэтому подайте-ка помповый дробовик (желательно SPAS-12), я научу выстреливать по два патрона за раз.
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №436
| Тема: Общение
написано: 19 ноября 2014, 20:30
| Отредактировано: Multigone - 19 ноября 2014, 20:49
Кто-нибудь знает, как измерить угол Х поверхности, на которой стоит игрок, с учетом направления его взгляда по оси Z?
Myprism, по поводу события OnDying (возможно, и OnDeath тоже?) - при завершении маг. эффекта с архетипом SummonCreature по времени это событие должно срабатывать (возможно, и под действием Banish тоже). Вот почему нужна проверка уровня здоровья, т.к. в ванильной игре взрыв должен происходить только при гибели атронаха от действий источников, снижающих AV Health.
Но простого условия Target.GetAV("Health") <= 0.0 недостаточно, т.к. при добивании в ближнем бою с помощью KillMove это условие не сработает (атронах погибнет с уровнем здоровья больше нуля). Конечно, ванильные атронахи не имеют анимаций добивания их игроком, речь о призванных существах с наличием таких анимаций (призванный огненный взрывающийся питомец, например). Поэтому нужно использовать:
EVENT OnDying(Actor myKiller) IF Target.GetAV("Health") <= 0.0 || Target.IsInKillMove() ; Погибает. ELSE ; Изгоняется или истекает время.
Это к слову о том, зачем там проверка уровня здоровья.
По поводу шлемов: разве нельзя вместо периодической проверки "оружие взято в руки" отслеживать анимацию Draw \ Sheatle с помощью RegisterForAnimationEvent(ObjectReference akSender, string asEventName)?
Во-вторых, необязательно для каждого шлема создавать отдельный скрипт. Достаточно одного скрипта на алиасе игрока и 2х FormList (можно вообще одного) с открытыми и закрытыми версиями. При экипировании к-л. открытой формы из первого листа находится его позиция Х и устанавливается соответствующая закрытая форма из второго. Можно и наоборот.
Dsion, дай угадаю: отсутствие Property подразумевает присутствие FormList (тоже Property, но уже одно-единственное)? Все равно, Property нужны для обмена переменными между скриптами, верно? Как минимум - текстовыми переменными и переменными форм, а числовые можно передавать через глобальные.
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №440
| Тема: Вопросы по скриптам Papyrus
написано: 30 января 2015, 00:05
| Отредактировано: Multigone - 30 января 2015, 00:06
1) Сделать Ability - плащ. Посмотри, как устроены заклинания плащей, там первое заклинание - это заклинание с архетипом FF Self. Сделай подобное, но с Constant Self. Второе заклинание - это заклинание воздействия на врагов Concentration Aimed, связанное с первым. Сюда добавь маг. эффект уязвимости.
2) Сделать Ability со скриптом. При старте эффекта Ability должно периодически (напр., через 3 с) сотворяться заклинание FF Self Area (напр., с радиусом 50 фт., не забудь установить флаг Ignore LOS в самом заклинании). Эффект заклинания - уязвимость, его длительность - тоже 3 с. Маг. эффекты с площадью действуют на всех, кроме источника заклинания (в данном случае - игрока). Пример части скрипта:
EVENT OnEffectStart(Actor xT, Actor xC) RegisterForSingleUpdate(0.0) ENDEVENT
Ronolus, в Ability магнитуда эффекта определяет радиус в футах, на которое будет распространяться действие заклинания Conc Aimed. У тебя это радиус в 1 фут. Стандартное значение ванильных плащей (расстояние вытянутой руки) - 8.
Если у тебя рус. версия СК, то без понятия, за что там отвечает Delivery "на цель". В англ. версии есть Aimed, Target Actor, Target Location. Тебе нужен Aimed.
В заклинании для эффекта Conc Aimed установи продолжительность 1 с, а галку "No Duration" сними.
А также: чтобы визуально определять, доставляется ли эффект к цели, в Conc Aimed укажи Hit Shader - LifeDetected и установи флаг FX Persist.
1) В MMSFireWeaknessConstantSelf сними флаг Recover. Плащ с ним работать не будет. 2) В MMSAbFireWeakness сними все флаги выше Description (не критично, но они просто не нужны). 3) В MMSFireWeaknessCloakAimed сними флаги выше Description, кроме первого, если он нужен (если урон от заклинания не должен быть поглощен / отражен). 4) Если урон от заклинания не должен снижаться из-за сопротивления, вместо флага Ignore Resistance (который в заклинании) в MMSFireWeaknessConcAimed просто не нужно указывать к.-л. сопротивление в графе Resist Value. 5) В MMSFireWeaknessConcAimed сними флаг Hostile и установи Painless (возможно, и No Hit Event). Если нужно, чтобы он действовал только на врагов, укажи в Target Conditions условие: (S) (IsHostileToActor) (TARGET) (!= 0.0) (AND)
Вроде все.
ЗЫ: А вообще, снижение сопротивления огню на 75% эквивал. повышению урона от огня на столько же (верно для актеров, имеющих AV Resist Fire = 0). Подумай, точно ли тебе нужен именно такой перк? Тем более, что огненные существа, обладающие иммунитетом к огню, потеряют его.