• Страница 1 из 1
  • 1
Форум » Записи участника [mka_n]

Результаты поиска
mka_n  Offline  Сообщение №1 | Тема: Вопросы по скриптам Papyrus написано: 3 октября 2020, 06:25



6
Привет!
Подскажите как посчитать вещи одетые на персонажа с определенным кейвордом.
if Game.GetPlayer().WornHasKeyword(ArmorType) - эта конструкция возвращает true.
А точное кол-во как получить?

mka_n  Offline  Сообщение №2 | Тема: Вопросы по скриптам Papyrus написано: 3 октября 2020, 13:58 | Отредактировано: Multigone - 4 октября 2020, 11:13



6
Цитата Multigone

Без SKSE - есть Conditions (WornApparelHasKeywordCount, см. PerkMatchingSet).

Спасибо. Но этот Conditions не работает по неведомой мне причине с моим кейвордом(( А если цеплять из skyrim.esm любой то отрабатывает как надо.

mka_n  Offline  Сообщение №3 | Тема: Вопросы по скриптам Papyrus написано: 21 октября 2020, 07:21 | Отредактировано: Multigone - 22 октября 2020, 09:00



6
Всем привет.
Подсобите ограничить "посадку" определенных трав, если не выполнены условия.
Если я правильно понял то нужно на контейнере подправить скрипт.

Получилось такое:
Код
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



6
Dsion, да заполнил, простое debug.Notification(keyword) выдает none.

mka_n  Offline  Сообщение №5 | Тема: Вопросы по скриптам Papyrus написано: 23 октября 2020, 07:25 | Отредактировано: Multigone - 23 октября 2020, 10:49



6
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



6
В papyrus есть функция аналог "entry point Apply Combat Hit Spell" ?

Форум » Записи участника [mka_n]
  • Страница 1 из 1
  • 1
Поиск:





Ответ на жалобу смотрите в разделе жалоб