• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней. • Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней. • При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС. • При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "+" полезного сообщения.
Сообщения, не относящиеся к вопросам по скриптам Papyrus, ответам на них или уточнениям, являются оффтопом и могут быть удалены.
Красное солнце Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
Multigone, ну это самый простой вариант, а мне интересен именно динамичный способ по ходу игры. Я хочу сделать по примеру эбонитовой кольчуги, там зачарование + скрипт в самом предмете при надевании an akactor.addspell. Там в принципе ничего сложного, на основе этого я и хочу сделать кольцо. Просто интересно, есть ли техническая возможность такого для нпц..? Чтобы понять о чем я говорю, посмотри пожалуйста в CK Skyrim.esm Эбонитовая кольчуга, называется предмет. Просто, раз ты говоришь, что функция addspell работает для нпц, то и это должно работать
А я по опыту добавления скриптом пассивных абилити NPC могу сказать, что нихрена она у них не остается даже если просто покинуть локацию, а потом вернуться. Но, может, это именно с Ability так. Я не сильно проверял.
Ладно-ладно. Только не говорите потом, что я не предупреждал... Хехехе.
Я это проверял, когда делал модик с оглушением. Сначала сделал просто накладывающийся на NPC эффект, но эффект тут же моментально спадает со всех NPC в локации, когда игрок эту локацию покидает и она выгружается.
Потом хотел добавлять NPC скриптом пассивную абилити. Но они и её сразу теряют, когда выгружаются (OnUnload).
И хотя я выход таки нашел в конце концов, все-равно не получилось сделать красивое и правильное сохранение статуса оглушения, если игрок перезаходит в локацию. В самом лучшем случае, при входе игрока, NPC стояли стобами, а только через секунду падали. И вовсе не в тех позах, в которых были оставлены.
Попробуй так: 1. Выбрать любого NPC на площади Вайтрана и через консоль добавить ему абилити: addspell 5030b 2. Убедиться, что он стал крутым полупрозрачным духом. 3. Выйти из города через главные ворота и сразу зайти обратно. 4. Убедиться, что NPC вернулся в ряды живых.
Dsion, консоль ни есть хорошо. Почему мой метод с предметом хорош? Да потому что, даже если Dsion прав и выданные по ходу игры spell'ы и ability спадают - скриптовым предметом и эвентом onequip они всегда будут раздаваться снова при появлении рядом игрока, разве не так Multigone?
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №1749
написано: 22 июня 2015, 17:04
| Отредактировано: Dsion - 22 июня 2015, 17:06
Разумеется, не так. Будет работать только если ты добавишь предмет в Outfit. Тогда NPC будет надевать его каждый раз во время загрузки и получать свою абилку. Если же просто наденешь на него кольцо, то он его снимет во время OnUnload. А если наденешь кольцо с флагом "не снимать", то он его не снимет, но магический эффект с него все-равно спадет после выгрузки и больше не повесится во время загрузки.
Ладно, разбирайтесь. По-моему, чтоб называть какой-то метод "хорошим" надо чтоб он сначала заработал...
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №1750
написано: 22 июня 2015, 17:19
| Отредактировано: Multigone - 22 июня 2015, 17:41
Dsion, в общем, результаты: наложенное заклинание или выданное абилити после выгрузки НПС завершают работу своих MGEF (т.е. срабатывает OnEffectFinish()). При загрузке НПС в мир MGEF не начинают свою работу снова, однако абилити проходит проверку HasSpell() (для заклинания не знаю, чем проверить его наличие, кроме как через маг. эффект, исчезающий после выгрузки).
В случае, описанном Dsion'ом, я бы сделал на игроке апдейт с кастом др. заклинания большой площадью (игнорируя преграды), которое проверяет наличие абилити и отсутствие эффекта абилити. Если проверка пройдена, абилити накладывается снова. Пока все, что придумал.
Есть еще вариант помещать НПС в алиасы, на которых события OnLoad() и OnUnload(), но он оч. громоздкий и для конечного числа целей.
UPD: Короче, я заколебался искать косяки там, где их не должно быть.
Multigone, щас не понял. Даже если я сделаю outfit с нужными мне зачарованными и заскриптованными кольцами, заклинания все равно будут спадать ??? А ты говорил не видишь препятствий) ) и что ещё за повторная загрузка? Не пойму
Multigone, запустить скрипт с активатора мне удалось. Для теста. Но вот с квеста не получается. Распиши пожалуйста поподробней как это сделать. Чтобы предмет появлялся по завершению квеста. А то у меня либо он не срабатывает, либо выдает ошибку компиляции.
Multigone, значит вся проблема в том, что при выгрузке нпц он загружает стандартный outfit и если там нету нашего кольца, соответственно никакой абилки не будет.? Окей, ну хотя бы через outfit работает.
Добавлено (22 Июня 2015, 21:14) --------------------------------------------- Dsion, хочу чтобы предметы имели больше импакта в игре, в морровинде вот предметы имеют активные заклинания, здесь же только зачарования. Их доработать и с constant плащами они будут почти как заклинания) )
Так, ребята. Прочитав ещё раз наш диалог от начала и до конца пришел к выводу, что придется отказаться от динамичного добавления актерам spell'ов и ability. Слишком уж геморойно это, хотя от идеи добавления плаща от предмета все же не откажусь. Не побрезгую тем, что придется использовать CK. Тем более я хочу добавить такие предметы всего лишь нескольким актерам через созданный мною outfit. (Dsion, стандартные outfit'ы трогать не буду) Главное чтобы это работало. Ну а с другой стороны, почему работать не будет?? Вы говорите проблема при выгрузке, но если при выгрузке он загружает наш outfit с заскриптованным кольцом, то и проблем не должно быть, ведь так? Хотя с другой стороны многое зависит от того, как работает событие event OnEquipped, если оно каждый раз будет срабатывать при выгрузке нпц и выдавать ему ability то ок. Или же оно срабатывает при появлении игрока? Не важно, главное чтобы оно не зависло и не перестало выдавать ability
Multigone, все сделал по пунктам. Но при попытке компиляции в окне "Papyrus Fragment" выдает две ошибки. variable MyREFR is undefined none is not a known user-defined type
3) Перейди во вкладку квеста Scripts. Там появится скрипт с названием QF_(Editor ID квеста)_(Form ID квеста). 4) Нажми ОК в самом квесте (т.к. сперва скрипт не может показать исходник и кнопку Add Property). 5) Открой заново этот квест и ЛКМх2 по созданному скрипту. 6) Нажми кнопку Add Property. 7) В появившемся окне выбери тип переменной (ObjectReference) и введи ее имя (MyREFR). ОК. 8) Перейди во вкладку стадий квеста, выбери нужную стадию, щелкни Log Entry. 9) Сотри написанное и скопируй туда:
MyREFR.Enable()
10) Перейди во вкладку квеста Scripts (чтобы скрипт скомпилировался снова). Нажми кнопку ОК квеста. 11) Открой квест и проверь исходник. Он должен представлять из себя такую... не знаю, как еще это назвать, шнягу.
;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment ;NEXT FRAGMENT INDEX 1 Scriptname QF__MVAActivateQUST_0207D9CF Extends Quest Hidden
;BEGIN ALIAS PROPERTY _MVAActivateREFA ;ALIAS PROPERTY TYPE ReferenceAlias ReferenceAlias Property Alias__MVAActivateREFA Auto ;END ALIAS PROPERTY
;BEGIN FRAGMENT Fragment_0 Function Fragment_0() ;BEGIN CODE MyREFR.Enable() ;END CODE EndFunction ;END FRAGMENT
;END FRAGMENT CODE - Do not edit anything between this and the begin comment
ObjectReference Property MyREFR Auto
12) Открой Property скрипта и для MyREFR укажи конкретный объект в окне рендера.
Вроде все. Алгоритма с меньшим кол-вом действий я пока не нашел.
Господа, у меня любопытный вопрос. Так получилось, что я делаю собаке в модах пакет, который приказывал ей перемещаться из дома во двор и обратно. Разрешение на использование дверей стоит на расе, но, судя по всему, разрабы не придумали анимации открытия дверей для собаки, поэтому, когда она "переходит" на глазах игрока, то просто зависает перед дверью, так как не срабатывает анимация (которой нет...). Вопрос, можно ли сделать так, чтобы при попытке активировать дверь, собака просто телепортировалась в нужное место (перед другой дверью соотвественно)?
Наука всегда оказывается не права. Она не в состоянии решить ни одного вопроса, не поставив при этом десятка новых. Джордж Бернард Шоу
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №1764
написано: 24 июня 2015, 07:27
| Отредактировано: Multigone - 24 июня 2015, 07:29
Multigone, помнишь, наш товарищ AlexTirex написал вот такой прекрасный скрипт на неограниченное кол-во здоровье у актеров: (как его адаптировать под игрока?)
Скрипт вешается на Алдуина (тип Actor) или на алиас с Алдуином (тогда добавить GetActorRef()):
Multigone, есть такое дружище, после долгих тестов заметил, что после 10к хп замечаются неоднократные баги в получении урона. Поэтому и нужен скрипт
Добавлено (26 Июня 2015, 00:44) --------------------------------------------- просто после превышения actor value health points 10000 вычисления здоровья производятся неправильно, поэтому надо сделать скрипт 10 тысяч по несколько раз, чтобы это работало нормально
изменить, всмысле лучше вообще убрать? Мне вот akTarget здесь вообще не нравится, цель которая наносит урон может быть любой от монстра1 до монстра5.
А вам что в скрипте не нравится? Deffered kill помоему крутая штука
Добавлено (26 Июня 2015, 18:24) --------------------------------------------- кстати, через что лучше вешать скрипт, через вкладку Actors на конкретного актёра или же на референс актёра через квест с автостартом?
Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)