mka_n
Offline
|
Сообщение №1
| Тема: Вопросы по скриптам Papyrus
написано: 3 октября 2020, 06:25
|
|
Привет! Подскажите как посчитать вещи одетые на персонажа с определенным кейвордом. if Game.GetPlayer().WornHasKeyword(ArmorType) - эта конструкция возвращает true. А точное кол-во как получить?
|
|
|
|
|
mka_n
Offline
|
Сообщение №2
| Тема: Вопросы по скриптам Papyrus
написано: 3 октября 2020, 13:58
| Отредактировано: Multigone - 4 октября 2020, 11:13
|
|
Цитата MultigoneБез SKSE - есть Conditions (WornApparelHasKeywordCount, см. PerkMatchingSet). Спасибо. Но этот Conditions не работает по неведомой мне причине с моим кейвордом(( А если цеплять из skyrim.esm любой то отрабатывает как надо.
|
|
|
|
|
mka_n
Offline
|
Сообщение №3
| Тема: Вопросы по скриптам Papyrus
написано: 21 октября 2020, 07:21
| Отредактировано: Multigone - 22 октября 2020, 09:00
|
|
Всем привет. Подсобите ограничить "посадку" определенных трав, если не выполнены условия. Если я правильно понял то нужно на контейнере подправить скрипт.
Получилось такое:
Код Keyword Property isNirnroot Auto function OnItemAdded(form akBaseItem, Int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer) If akSourceContainer == Game.GetPlayer() if akBaseItem.HasKeyword(isNirnroot) Debug.MessageBox("1") else Debug.MessageBox("0") endif Endif endfunction
Проблема что всегда Debug.MessageBox("0") , хотя кейворд на Nirnroot есть.
и можно ли на контейнере проверять стадию квеста?
debug.Notification(NN01) int MyQuestStage = NN01.GetStage() debug.Notification(MyQuestStage)
На активаторе эта поделка работает(на контейнере none), но нужно чтоб если квест не выполнен то нельзя было посадить растение.
|
|
|
|
|
mka_n
Offline
|
Сообщение №4
| Тема: Вопросы по скриптам Papyrus
написано: 21 октября 2020, 21:25
|
|
Dsion, да заполнил, простое debug.Notification(keyword) выдает none.
|
|
|
|
|
mka_n
Offline
|
Сообщение №5
| Тема: Вопросы по скриптам Papyrus
написано: 23 октября 2020, 07:25
| Отредактировано: Multigone - 23 октября 2020, 10:49
|
|
Dsion, да нет ж -) На самом MISC
Код function OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer) if akNewContainer == game.GetPlayer() as ObjectReference && akOldContainer == none if itemToAddPotion game.GetPlayer().AddItem(itemToAddPotion as form, ItemCount, true) endIf if (NN01.GetStageDone(200)) if itemToAddIngredient ;debug.trace(self as String + " akNewContainer = " + akNewContainer as String + ", akOldContainer = " + akOldContainer as String, 0) game.GetPlayer().AddItem(itemToAddIngredient as form, ItemCount, true) endIf else Debug.MessageBox("Качество хромает, похоже я пока не умею это сажать, нужно учиться") endIf game.GetPlayer().RemoveItem(myBase as form, 999, true, none) endIf endFunction
Работает(я даже проверли не забыл ли заполнить), криво конечно ,я хотел чтоб он вообще не давал его посадить. Наверно можно это де событие вызывать на самом INGR , но хз как будет это рабоать когда ты сразу стек кидешь а не по одному в грядку. Тут пишут что не всегда будет работать.
Друзья, а как вешать spell на противника при каждой физ.атаке? Что-то типа дебафа брони\резов...
|
|
|
|
|
mka_n
Offline
|
Сообщение №6
| Тема: Вопросы по скриптам Papyrus
написано: 25 октября 2020, 07:52
| Отредактировано: mka_n - 25 октября 2020, 07:52
|
|
В papyrus есть функция аналог "entry point Apply Combat Hit Spell" ?
|
|
|
|
|