• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней. • Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней. • При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС. • При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "+" полезного сообщения.
Сообщения, не относящиеся к вопросам по скриптам Papyrus, ответам на них или уточнениям, являются оффтопом и могут быть удалены.
Красное солнце Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
Посмотрел скрипты на No Death Mod... Я, конечно, пока не бог программирования, но даже мне очевидно, что автору еще многому предстоит научиться. Если бы он умел хоть массивы использовать, скрипты и сам мод были бы раз в 10 меньше Ну да ладно. Мне-то что.
Проблем с передвижением, на сколько я знаю, не у кого не возникало. Если скрипты "сырые" и сам мод глючный, то насколько реально создать свой подобный мод более стабильный и работающий? И к кому можно обратится (платно или нет - не важно).
После "смерти" игрока будет бросать в ближайший храм, а вещи будут попадать в сундук к какому-то бандиту боссу... Это очень простенький мод получился бы.
Можно и какое-то другое наказание за смерть ввести, если придумаешь.
--- Или используйте готовый с нексуса. Как я понял, пока читал комменты, есть и более удачные аналоги. Там писали названия, но я уже забыл.
Изменение репутации для пользователя LEN
LENOffline
Сообщение №1173
написано: 10 августа 2014, 11:24
| Отредактировано: LEN - 10 августа 2014, 11:25
LEN, если хочешь, я попробую сделать... После "смерти" игрока будет бросать в ближайший храм, а вещи будут попадать в сундук к какому-то бандиту боссу... Это очень простенький мод получился бы.
Можно и какое-то другое наказание за смерть ввести, если придумаешь.
--- Или используйте готовый с нексуса. Как я понял, пока читал комменты, есть и более удачные аналоги. Там писали названия, но я уже забыл.
Было бы шикарно если б ты помог Мы перепробовали ВСЕ доступные на сегодняшний день моды на смерть, и нам подошел только этот глючный . Очень долго ломали голову, но теперь я понял что нужно было сразу отписать сюды. Го в ЛС.
Изменение репутации для пользователя Kepper
KepperOffline
Сообщение №1174
написано: 11 августа 2014, 05:57
| Отредактировано: Kepper - 11 августа 2014, 06:17
В логе папируса мой мод генерирует ошибку ERROR: Unable to bind script lernS_IceFrostbiteDecrScript to Item 4 in container (00000014) because their base types do not match
Она вроде не критична и накладок в работе мода не замечено, но хотелось бы её нейтрализовать. Скрипт висит на книге
Скрипт lernS_TemplaSpellDecriptorScript расширяет Book Он объявляет несколько функций.
Скрипт lernS_IceFrostbiteDecrScript расширяет lernS_TemplaSpellDecriptorScript Реализует объявленные ранее функции
В принципе я могу вместо Book расширять ObjectReference. Но хотелось бы понять причину не соответсвия типов.
Kepper, Book, Armor, Weapon, Static, Light итп - это всё базовые объекты. Из них создаются реальные объекты в мире, но все реальные объекты - это ObjectReference. И стена в каком-то доме - это ObjectReference, и книга - тоже ObjectReference.
По одному базовому объекту в мире может быть создано 1000 реальных референсов. И для каждого создается своя копия скрипта. Скрипты именно с реальными объектами работают.
Джек_, удалять перки при разэкипировании предмета не надо? Других проблем не вижу, кроме того, что будет работать только для игрока. С др. стороны, крафт тоже может производиться только им.
Удалять нужно конечно. Оптимизация и все такое... пока оправдаюсь тем что разрабы сами не удосужились это сделать. Дело в том что не могу создать этот скрипт в игре, или даже найти его, предварительно скинув в папку "Scripts" или "source".
Scriptname MyScript extends ObjectReference ; Цепляем к предмету, который можно экипировать.
Import Game ; Импортируем, чтобы каждый раз не писать Game.GetPlayer()
Perk Property MyPerk01 Auto Perk Property MyPerk02 Auto Perk Property MyPerk03 Auto ; Перечисляем нужные перки. Чем меньше - тем лучше. Если содержимое перков воможно объединить, лучше сделать это.
EVENT OnEquipped(Actor akActor) ; Событие при экипировании предмета. IF akActor == GetPlayer() ; Проверяем, является ли актер, экипирующий этот предмет, игроком. GetPlayer().AddPerk(MyPerk01) GetPlayer().AddPerk(MyPerk02) GetPlayer().AddPerk(MyPerk03) ; Добавляем игроку кучу перков. ENDIF ; Завершаем проверку. ENDEVENT ; Завершаем событие.
EVENT OnUnequipped(Actor akActor) ; Событие при разэкипировании предмета. IF akActor == GetPlayer() GetPlayer().RemovePerk(MyPerk01) GetPlayer().RemovePerk(MyPerk02) GetPlayer().RemovePerk(MyPerk03) ; Удаляем у игрока кучу перков. ENDIF ENDEVENT
Dsion, я ничего не решаю, я только предлагаю. Теоретически, его нужно цеплять к любому предмету, имеющему возможность экипировки (оружие, элементы одежды). Подобные скрипты есть в СК (см. Бритва Мерунеса).
Изменение репутации для пользователя GF_RaiseD
GF_RaiseDOffline
Сообщение №1183
написано: 19 августа 2014, 22:28
| Отредактировано: Джек_ - 19 августа 2014, 22:45
В идеале это должен быть скрипт, добавляющий перк Персонажу, что использует определенный тип стрел и удалятся, когда эти стрелы не используются. К сожалению к стрелам скрипт прикрепить нельзя - только к лукам (хотя так даже лучше). Вот примерное содержание скрипта. Сразу должен сказать: в скриптах я не силен.
Добавлено (20 Августа 2014, 02:28) --------------------------------------------- Как же я туплю. Бог ты мой... С первым теперь все ок. Мб поможете другой дописать? Я не уверен правильно ли я разместил оператор "или", не уверен что правильно передал параметры в функцию, проверяющую присутствие перка у "актера", а так же функцию его удаляющую. Если ответите на эти вопросы, то скрипт смогу дописать сам.
Эти перки я уже добавил игроку и настроил их. Нужно чтоб ими могли пользоватся неписи и компаньйоны. Добавлять его всем "Актерам" очень долго. Вот почему нужен скрипт. Нужно еще посмотреть как подобное сделали в моде "Auto Unequip Ammo" - там как-то отловили момент экипирования стрел.
1) Актерам, кроме игрока, нельзя выдавать / удалять перки с помощью скриптов. 2) Актерам, кроме игрока, нельзя выдавать перки с помощью маг. эффектов.
Твой скрипт написан неправильно:
Event OnEquipped(Actor akActor) - отслеживает экипирование конкретного предмета, на котором висит этот скрипт. Экипирование любых других предметов отслеживаться не будет. Чтобы отслеживать экипирование абсолютно любых предметов, нужно использовать событиеEvent OnObjectEquipped(Form akBaseObject, ObjectReference akReference) в скриптах, расширяющих Actor или ReferenceAlias.
IF GetEquipped(DaedricArrowFire1||DraugrArrowFire1||DwarvenArrowFire1||...) == 1 - неверно. Как верно:
IF akActor.GetEquipped(DaedricArrowFire1) || akActor.GetEquipped(DraugrArrowFire1) || akActor.GetEquipped(DwarvenArrowFire1)
Твой скрипт выглядел бы подобным образом (но то, что он делает, можно выполнить проще - через условия в перках):
Scriptname MyScript extends Actor ; Цепляется к актеру, но работает только для игрока
Perk Property MyPerk01 Auto Perk Property MyPerk02 Auto Perk Property MyPerk03 Auto
EVENT OnObjectEquipped(Form akBaseObject, ObjectReference akReference) IF akBaseObject == MyArrow11 || akBaseObject == MyArrow12 || akBaseObject == MyArrow13 Self.AddPerk(MyPerk01) ; Цель Self означает, что функция будет применена к актеру, к которому прицеплен данный скрипт ; Self можно не писать вовсе; запись Self.AddPerk(MyPerk01) эквивалентна AddPerk(MyPerk01) ELSEIF akBaseObject == MyArrow21 || akBaseObject == MyArrow22 || akBaseObject == MyArrow23 AddPerk(MyPerk02) ELSEIF akBaseObject == MyArrow31 || akBaseObject == MyArrow32 || akBaseObject == MyArrow33 AddPerk(MyPerk03) ENDIF ENDEVENT
Понял. Благодарю. Именно это меня интересовало. А вот то что Прочим персонажам не выйдет добавить перки скриптами 100% инфа? Хотел проапгрейдить свой мод со стрелами хотя бы для компаньйонов.
Всё можно, если осторожно Зря ты с самого начала не рассказал, чего именно пытаешься добиться. Высока вероятность, что для этого перки вообще не нужны.
Dsion, что можно? Выдавать перки? Поведай, каким образом. Подозреваю, для решения этого вопроса нужны перки _VjidachaPerkovPERK и _RazreshenijeNaVjidachuPerkovPERK.
Изменение репутации для пользователя GF_RaiseD
GF_RaiseDOffline
Сообщение №1191
написано: 22 августа 2014, 11:07
| Отредактировано: RiseD - 22 августа 2014, 11:42
Multigone, можно и не использовать перки. Но тогда нужен скрипт, отлавливающий попадание в цель срелой с определенным кивордом. Я такие скрипты писать не умею.
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №1192
написано: 22 августа 2014, 11:42
| Отредактировано: Multigone - 22 августа 2014, 12:04
FormList Property MyFLST Auto ; Создаем лист, куда кидаем Projectile нужных стрел
Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) ; Событие при применении любого воздействия на цель (не обязательно при нанесении урона). Например, игрок стреляет в цель из лука. Тогда: ; akAggressor == игрок ; akSource == оружие (лук), из которого он стреляет ; akProjectile == снаряд (стрела), которой он попадает ; Все данные о агрессоре, источнике урона, снаряде, видах атак (силовая, скрытая) и т.д. в момент применения воздействия на цель будут учтены и переданы в это событие. Эти данные можно проверить, соответствуют ли они каким-либо параметрам.
IF MyFLST.HasForm(akProjectile) ; Если лист имеет форму, которой является akProjectile, то... ... ENDIF
Изменение репутации для пользователя GF_RaiseD
GF_RaiseDOffline
Сообщение №1193
написано: 22 августа 2014, 13:51
| Отредактировано: RiseD - 22 августа 2014, 13:53
1-й: При (экипировании/разэкипировании) стрел из определенным кивордом (добавлять/удалять) перк. 2-й: Забить на перки и наносить урон скриптом если это возможно. Или же как то заставить срабатывать заклинание на цели, пораженной прожективой с определенного листа (лис). И опять же я без понятия возможно ли сделать второе. Я полагаю что первый способ проще, вот только к чему прикрепить этот скрипт и как заставить его работать. Я все таки делаю глупось - ведь в разы проще добавить перки игроку и не создавать себе проблем.
RiseD, есть несколько вариантов (не меньше двух), как наложить заклинание на цель, пораженную конкретной стрелой.
1) Создаем зачарование лука. В этом зачаровании указываем множество магических эффектов, которые соответствуют урону от конкретных стрел. В заклинании для каждого эффекта делаем проверку следующего вида:
По-идее, "Target" (T) указывает на источник заклинания, а "Subject" (S) - на жертву (цель) заклинания. Неясно, как это будет работать в случае с зачарованием. Нужно тестировать!
В результате при экипировании конкретных стрел будет срабатывать только одно условие (в некотором маг. эффекте), который и будет накладываться на цель при выстреле из лука с таким зачарованием.
Недостаток: если в момент между выстрелом и попаданием стрелы в цель открыть инвентарь и экипировать др. стрелы, возможно, эффект от попадания будет от последних экипированных стрел.
2) В Projectile каждой конкретной стрелы указываем свой взрыв (Explosion) с очень маленьким радиусом действия и без виз. эффектов. Для этого взрыва создаем свое зачарование типа FF - Contact (No Area). При попадании стрелы произойдет взрыв и все цели, попавшие в радиус действия (а он указан очень маленьким) также будут поражены этим зачарованием.
Лукам зачарования добавлять - никак не вариант. Конфликты - меньшая из проблем что могут возникнуть. Да и убого это. Если пользоватся вторым способом, то прожектива исчезнет (Или улетит? - не знаю. Тестил со взрывом, но после выстрела стрел я не находил). Если будет маленький радиус, то возможно все будет в порядке, но это еще нужно тестить. Имхо через перк - пока идеальный вариант. Насколько я понял "MyArrow" - это конкретный тип стрел, а не переменная. Или как?
Добавлено (22 Августа 2014, 19:05) --------------------------------------------- Не совсем понял, как ты собираешься при помощи перков добавлять дополнительные свойства стрелам (заклинания, срабатывающие при попадании?). У перков для этих целей есть только один Entry Point - Apply Combat Hit Spell. Он работает только при ударе оружием (или кулаками?) в ближнем бою. Для стрел там нет ничего.
А, есть еще Weapon Swing Spell, работающий, когда по цели, имеющей этот перк, наносят удар в ближнем бою (опять-таки!).
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №1198
написано: 22 августа 2014, 15:07
| Отредактировано: Dsion - 22 августа 2014, 15:14
Самые обычные стрелы, пущенные из самого обычного лука рукой обычного NPC должны накладывать заклинание? И чтоб не менять всех ванильных NPC? Не, ничего не приходит в голову. Разве что Cloak заклинание, которое будет отслеживать попадания по всем целям в радиусе полёта стрелы. Но это, наверное, не очень правильно с точки зрения производительности...
Короче, как я бы это сделал, если бы мне это позарез было надо, не заботясь о нагрузке на процессор:
- Создаю маг. плащ, который раздает маг. эффект в радиусе 200 (1000) футов от игрока. - К нему цепляю скрипт:
Событие при воздействии (OnHit). Если агрессор имеет экипированные стрелы Применить к цели заклинание в зависимости от экипированных стрел ЭндЕсли ЭндСобытие
Добавлено (22 Августа 2014, 19:18) --------------------------------------------- Dsion, ну вот, мы с тобой и мыслим одинаково... Или это действительно единственный путь.
Честно говоря я плохо понимаю механизм получения/отлова урона в Скае, но я сделал мод и он работает. Пожалуй тема изжила себя. То о чем мы говорим было бы полезно будь возможность скриптами добавлять перки неписям, но мне твердят что это не есть возможным. Такой механизм смотрелся бы красиво в плане оптимизации (по крайней мере не плохо), но так как перки неписям добавлять нельзя, то проще уже вручную закинуть их всем нужным "актерам"... Multigone, там дело в условиях. Посмотри оригинальный перк "Фалмерский яд". Остальное - ответы на интересующие меня вопросы, за что вам, собственно, спасибо.
Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)