Модератор форума: Kris†a™  
Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)

Вопросы по скриптам Papyrus
sansuli  Offline  Сообщение №1 написано: 31 августа 2012, 13:29 | Отредактировано: Multigone - 23 апреля 2020, 14:24


The Red Sun


193
Уроки по скриптованию на языке Papyrus
Прежде чем задать вопрос просмотрите вышеуказанные уроки.
ok


Тема регламентирована.


• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней.
• Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней.
• При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС.
• При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "
+" полезного сообщения.

Сообщения, не относящиеся к вопросам по скриптам Papyrus, ответам на них или уточнениям, являются оффтопом и могут быть удалены.

Красное солнце
Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
modgms_user  Offline  Сообщение №2641 написано: 5 февраля 2018, 12:59 | Отредактировано: Multigone - 22 апреля 2020, 12:47



20
Приветствую. Есть вопрос о целесообразности определенного кода. Есть такой мод NIOHighHeels, в нем есть скрипт со следующим фрагментом:
Код
Event OnDeath(Actor akKiller)
If effectActor
Self.RemoveEffect()
EndIf
EndEvent

Event OnUnload()
If effectActor
Self.RemoveEffect()
EndIf
EndEvent

Event OnCellDetach()
If effectActor
Self.RemoveEffect()
EndIf
EndEvent

Event OnDetachedFromCell()
If effectActor
Self.RemoveEffect()
EndIf
EndEvent

Function RemoveEffect()
Self.Dispel()
EndFunction

Т.е. при этих событиях установлено снимать эффект. Но в логе вижу периодические сообщения об ошибках:


Есть ли в этом коде вообще смысл? Может эффект прибивается при этих событиях и без надобности его снятия? Эффект поднимает перса, когда на нем высокие сапоги. Может этот кусок кода закомментировать?(точнее, я то закомментировал :) и проверю, но интересно узнать теорию. )

Просто на одной страничке с интерпретацией различных ошибок папируса читал вот такое:
When a magic effect is ready to expire, the Papyrus VM will aggressively destroy the instance of the script. It will generate errors like this if the script had an event pending before this happened.

Aksyonov  Offline  Сообщение №2642 написано: 6 февраля 2018, 18:25



937
Здравствуйте вопрос такой: есть ли скрипт который удаляет все предметы из инвентаря npc кроме одежды? Armor Cloth... очень бы пригодился.

modgms_user  Offline  Сообщение №2643 написано: 6 февраля 2018, 18:36 | Отредактировано: Multigone - 22 апреля 2020, 12:48



20
Цитата Multigone

можно перком Activate получить референс "активируемого" игроком объекта, сделать что нужно (проверить, положить предметы, еtс.) и потом активировать его по-настоящему


Спасибо за совет, только пока, полагаю, не могу воспользоваться, если правильно думаю. Там есть какие-то особенности, где-то специально галочки надо поставить? Создал перк, сделал Entry Point Activate, выбрал активировать немедленно, вставил скрипт, записал в функцию Fragment_0 код и добавил debug.trace, чтобы проверить, работает ли, но строки в логе нет, хотя в сохранении скрипт есть. Пробовал и условия во все три места добавлять(для перка, для активирующего и активируемого), вроде условия для активирующего GetIsID=Player , в условия перка тоже условие добавлял, вообще удалял все условия, но проверочной строчки так и не увидел. Что-то где-то пропустил и дойти никак не может. Код примерно такой:

Код
Scriptname PRKF_XTDPerk_OnContainerActi_0458E509 Extends Perk Hidden

import XTDUtil

MiscObject Property WDToken Auto
FormList Property WDContainersBlacklist Auto
Keyword Property AnimalKeyword Auto

Function Fragment_0(ObjectReference akTargetRef, Actor akActor)
If akTargetRef && !(WDContainersBlacklist.HasForm(akTargetRef.GetBaseObject() as Form)) && !akTargetRef.HasKeyword(AnimalKeyword) && !akTargetRef.GetItemCount(WDToken)
akTargetRef.AddItem(WDToken,1)
Endif
debug.trace("PRKF_XTDPerk_OnContainerActi_0458E509 Fragment_0 Executed > akTargetRef="+akTargetRef+", akActor="+akActor)
akTargetRef.Activate(akActor)
EndFunction

В конце debug.trace, от которого ожидалась информация в логе, но информации нет.

Multigone  Offline  Сообщение №2644 написано: 6 февраля 2018, 21:40



832
modgms_user, я помню такой порядок:

- указать Run Immediately, Replace Default.
- написать ; в скрипте, сохранить перк.
- очистить текстовое поле, добавить Property, написать текст.
- условия по вкусу.
- подать перк игроку.

Проверь, все ли на месте.

Kepper  Offline  Сообщение №2645 написано: 8 февраля 2018, 11:48



860
Цитата Aksyonov

Здравствуйте вопрос такой: есть ли скрипт который удаляет все предметы из инвентаря npc кроме одежды? Armor Cloth... очень бы пригодился.

Если можно использовать SKSE то
Код
Keyword Property ArmorCloth Auto
Function ReweighIngredientsIn(ObjectReference akContainer, Float afWeight) Global
 Int iFormIndex = akContainer.GetNumItems()
 While iFormIndex > 0
  iFormIndex -= 1
  Form kForm = akContainer.GetNthForm(iFormIndex)
  If !kForm.HasKeyword(ArmorCloth)  
   akContainer.RemoveItem(kForm, akContainer.GetItemCount(kForm))
  EndIf
 EndWhile
EndFunction

Если нет, то тут надо думать.

Wertys  Offline  Сообщение №2646 написано: 28 февраля 2018, 05:29



32
Вопрос к скриптерам: существует ли в папирусе аналог консольной команды PCB? PurgeCellBuffers, если точнее, для чистки ячеек. В консоли она вроде как работает, но в функциях не нашел.
Хочется смастерить простецкий модик, а то надоело постоянно консоль юзать.

Aksyonov  Offline  Сообщение №2647 написано: 2 марта 2018, 04:46 | Отредактировано: Aksyonov - 2 марта 2018, 04:47



937
Здравствуйте уважаемые - вопрос такой: можно ли применить морфинг скриптом? Нужно изменить навсегда физиономию
ГГ что бы он исказился в гримасе ненависти! Это реально организовать? В бою он скалится допустим, как это работает?

Multigone  Offline  Сообщение №2648 написано: 2 марта 2018, 08:02



832
Aksyonov, для Actor есть возможность установить выражение лица и сбросить:

Код
Function SetExpressionOverride(int aiMood, int aiStrength = 100) native
; Sets an expression to override any other expression other systems may give this actor.
; 7 - Mood Neutral
; 0 - Dialogue Anger        8 - Mood Anger        15 - Combat Anger
; 1 - Dialogue Fear            9 - Mood Fear        16 - Combat Shout
; 2 - Dialogue Happy        10 - Mood Happy
; 3 - Dialogue Sad            11 - Mood Sad
; 4 - Dialogue Surprise        12 - Mood Surprise
; 5 - Dialogue Puzzled        13 - Mood Puzzled
; 6 - Dialogue Disgusted    14 - Mood Disgusted
; aiStrength is from 0 to 100 (percent)

Function ClearExpressionOverride() native
; Clears any expression override on the actor

Не уверен, будет ли это сохраняться после новых диалогов или боя.

MrJygalag  Offline  Сообщение №2649 написано: 11 марта 2018, 20:43 | Отредактировано: MrJygalag - 11 марта 2018, 22:03



2
Вопрос - как мне "добавить" скрипт в конец сцены? Я пытался посмотреть, на примере сцены из квеста DLC2SoulSteal, но там нет конкретной опции, для того, чтобы добавить существующий скрипт, а есть только непонятное поле с Advanced и вполне ясное Papyrus Fragment. Если я вписываю свой скрипт в Papyrus Fragment, то CK выдаёт ошибку, хотя сам по себе скрипт прекрасно работает и компилируется. Сам скрипт:

Scriptname DSMiraak extends Scene
GlobalVariable Property DSMiraakCount Auto
float Property DSM Auto
Function DoSmth()
DSM = DSMiraakCount.Getvalue()
DSM+=1
DSMiraakCount.SetValue(DSM)
EndFunction

P.s: DSMiraakCount присвоено значение моей глобальной переменной DSMiraakCount, у которой изначальное значение "0" и тип - Short. DSM через Property задано значение "0". По идее, это не важно (так как её значение будет перезаписано другим), но я настроил её, на всякий случай.

По идее, если всё заработает правильно и мне удастся "прикрепить" скрипт к концу сцены, значение DSMiraakCount после каждой проигранной сцены (т.е. после поглощения души Мираком) должно будет увеличиваться на 1. Но как привязать свой рабочий скрипт я не знаю, поэтому и обращаюсь к вам.

Multigone  Offline  Сообщение №2650 написано: 12 марта 2018, 07:57



832
MrJygalag, попробуй так:

- в поле фрагментов напиши ;
- сохрани квест и зайди снова
- добавь новое Property с твоим именем
- в поле фрагментов напиши:

Код
DSMiraakCount.Mod(1.0)

- сохрани еще раз

Wertys  Offline  Сообщение №2651 написано: 28 марта 2018, 19:39



32
Решил я тут кое-что поправить в игре, и появилось 2 проблемки:
- как заставить в эффекте проиграть выбранный звук? Попытался сделать так:

Sound Property Sound Auto

Event OnMagicEffectApply(ObjectReference akCaster, MagicEffect akEffect)
...
Sound.play(GetRef())
...
EndEvent

Скрипт сохраняется без ошибок, свойства выставил, но в игре звук не работает все же.. 

- как проверить что маркер находится в конкретной ячейке? какую функцию лучше использовать для проверки (IsInLocation, GetCurrentLocation, GetLocation...), и как?

Заранее спасибо за любую помощь. Подойдет так же пример из игры, если таковой есть.

Multigone  Offline  Сообщение №2652 написано: 29 марта 2018, 13:16



832
Wertys,

1)

Код
Sound Property Sound Auto

Цитата Wertys

Скрипт сохраняется без ошибок, свойства выставил, но в игре звук не работает все же..

Если имя переменной совпадает с названием любого типа переменных, компилятор выдаст ошибку "cannot name a variable or property the same as a known type or script".

Для скрипта ActiveMagicEffect это должно быть что-то вроде:


Код
Sound Property MySound Auto

Event SomeEvent()
    MySound.Play(GetTargetActor())
    ...

2)

Код
ObjectReference Property MyRef Auto
Location Property MyLocation Auto

Event SomeEvent()
    IF MyRef.GetCurrentLocation() == MyLocation
        ...

Wertys  Offline  Сообщение №2653 написано: 1 апреля 2018, 20:50 | Отредактировано: Wertys - 1 апреля 2018, 20:51



32
Цитата Multigone

Для скрипта ActiveMagicEffect это должно быть что-то вроде:

Все изменил, но звук так и не заработал. Звук дефолтный из игры.
Поменял так же свой звук на звук пчелы в банке (он точно в скриптах используется) - ничего.
Возможно звуки просто не могут работать в эффектах?

Multigone  Offline  Сообщение №2654 написано: 2 апреля 2018, 14:22



832
Wertys, а что надо-то? Поменять дефолтный звук эффекта на другой? Так это в маг. эффекте в полях Sounds (в центральной правой части окна).

Wertys  Offline  Сообщение №2655 написано: 2 апреля 2018, 20:08



32
Multigone, короче смотри - есть заклинание со скриптовым эффектом, и, в зависимости от результата, проигрываются разные звуки. Т.е. если условия соблюдается, то проигрывается 1й звук, если нет то 2й. Собственно я уже впихнул туда Debug.Notification, но хотелось бы еще чтоб звук был. 
Я не стал весь скрипт приводить полностью, меня интересовало только как можно воспроизвести звук в скрипте. Но если это невозможно, то пусть.

Кстати, да, спасибо за информацию по GetCurrentLocation - работает. Правда, оказалось еще можно использовать GetParentCell() для этих целей blush

Multigone  Offline  Сообщение №2656 написано: 2 апреля 2018, 23:20 | Отредактировано: Multigone - 2 апреля 2018, 23:20



832
Wertys, звук может играться откуда угодно, будь то скрипт алиаса, эффекта, актера и т.д. Дай его - посмотрим, в чем дело.

Wertys  Offline  Сообщение №2657 написано: 5 апреля 2018, 23:29



32
Multigone, а можешь подсказать как сделать противоположный скрипт запирания. Хотелось бы сделать через EVENT OnEffectStart(). Попробовал вот такой вариант:

Код
Import Debug
Import Game
Bool iLevel

   EVENT OnEffectStart(Actor akTarget, Actor akCaster)
        iLevel =  GetPlayer().GetActorValue("Alteration")
        If akTarget.IsLocked() == 0        
              akTarget.Lock(iLevel)
              Notification("Заклинание создало замок!")
         else
              Notification("Замок уже есть!")
         endif   
ENDEVENT
Опять же, все нормально сохраняется, но скрипт не работает. Такое впечатление, что заклинание вообще не видит этот скрипт.

Multigone  Offline  Сообщение №2658 написано: 6 апреля 2018, 00:58 | Отредактировано: Multigone - 6 апреля 2018, 01:00



832
Wertys, он и не будет работать, т.к. маг. эффект (и его скрипт) будет запускаться только на актерах. Нужно это делать все так же через алиас с onHit().

Код
Spell Property MySpell Auto

EVENT OnHit(...
    IF akSource == MySpell
        If !GetRef().IsLocked()
              GetRef().Lock(GetPlayer().GetActorValue("Alteration"))
              Notification("Заклинание создало замок!")
         else
              Notification("Замок уже есть!")
         endif   
    ENDIF
ENDEVENT

Wertys  Offline  Сообщение №2659 написано: 6 апреля 2018, 04:21



32
Multigone, да попробовал уже и через Event OnHit, и алиас, и Event OnMagicEffectApply - ничего. Как будто не видит заклинание скрипт, шейдеры работают, скрипт нет. Алиас сделал в том же квесте, что и алиас открытия, надеюсь не нужно для каждого алиаса свой квест создавать.

Multigone  Offline  Сообщение №2660 написано: 6 апреля 2018, 14:02 | Отредактировано: Multigone - 6 апреля 2018, 14:15



832
Wertys, тебе нужно создать новый алиас с условиями...


Код
(S) (GetIsObjectType) (Container) (== 1) AND
(S) (GetLocked) (== 0)

...потому что в старый попадают только запертые предметы (я так думаю).

Скрипт:


Код
Spell Property MySpell Auto

EVENT OnHit(...
    IF akSource == MySpell
        GetRef().Lock(iInt(GetPlayer().GetActorValue("Alteration") AS Int, 1, 100))
        Notification("Заклинание создало замок!")
    ENDIF
ENDEVENT

Int FUNCTION iInt(Int A, Int B = 1, Int C = 0) ; Ограничение А внутри интервала В - С.
    IF B > C
        IF A >= B
            RETURN B
        ELSEIF A < C
            RETURN C
        ENDIF
    ELSEIF A <= B
        RETURN B
    ELSEIF A > C
        RETURN C
    ENDIF
    RETURN A
ENDFUNCTION

Wertys  Offline  Сообщение №2661 написано: 7 апреля 2018, 02:08



32
Multigone, разобрался, ошибка была еще в квесте.

Скрипт, в целом рабочий, но он почему-то закрывал мне ящики только на 0-й уровень, независимо от уровня навыка. Проблему решил так:

Код
GetRef().Lock(true)
GetRef().SetLockLevel(iInt(GetPlayer().GetActorValue("Alteration") AS Int, 1, 100))
Еще раз спасибо за помощь!

Sithis380  Offline  Сообщение №2662 написано: 19 мая 2018, 15:35



1
Здравствуйте,не могли бы вы помочь со скриптом для заклинания.Мне нужно,чтобы после использования заклинания на нпс проигрывалась определённая анимация.Заранее спасибо! thanks

SoulEx  Offline  Сообщение №2663 написано: 21 мая 2018, 21:07


Ashes to ashes, dust to dust


25
Ребят, помогите пожалуйста, я меч сделал и сделал под него активатор, чтобы он был воткнут в землю, так вот, мне нужен скрипт, что бы при активации сам активатор пропадал а в инвентарь падал меч

modgms_user  Offline  Сообщение №2664 написано: 22 мая 2018, 04:34 | Отредактировано: Multigone - 22 апреля 2020, 12:39



20
Цитата Sithis380

Здравствуйте,не могли бы вы помочь со скриптом для заклинания.Мне нужно,чтобы после использования заклинания на нпс проигрывалась определённая анимация.Заранее спасибо!


Есть мод FNIS Spells, так он делает описанное, можно в нем посмотреть скрипты на заклинаниях.

Multigone  Offline  Сообщение №2665 написано: 24 мая 2018, 22:09 | Отредактировано: Multigone - 24 мая 2018, 22:13



832
SoulEx,


Код
ScriptName MyScript Extends ObjectReference
    
ObjectReference Property MyRef Auto ; Референс меча.

EVENT OnActivate(ObjectReference xR)
    IF xR == Game.GetPlayer()
        xR.AddItem(MyRef)
        Disable()
    ;    Delete()
    ENDIF
ENDEVENT

asdklghl  Offline  Сообщение №2666 написано: 15 июня 2018, 16:33 | Отредактировано: asdklghl - 15 июня 2018, 20:25



4
Добрый день всем, нужна помощь по скриптину, если эта тема ещё жива.
Идея такая - при касте заклинания на призыв существа шанс успешного каста будет зависеть от наличия некоторых условий, как уровень навыка и наличия отсутствия перка.
Насколько я понял, алгоритм должен быть следующий:
1. активировать скрипт на старте эффекта
2. проверить есть ли у кастера нужный перк (или другие условия)
2.1. если нет, дать getrandompercent для заклинания
2.2. если да, ничего не делать, т.к. по умолчанию спелл кастуется 100процентно

Почему я не сделаю это через creationkit, используя в одном заклинание два маг. эффекта, один из которых содержит условие на getrandompercent и отсутствие перка, а другой 100% шанс и условие на наличие перка?
Потому что это работает не совсем корректно - процент вычисляется как нужно, и условия срабатывают так как должны, НО после получения нужных условий спелл призывает ВСЕХ кто не был призван когда условие не срабатывало.
Т.е. если ДО взятия условий мы сколдовали 10 раз, из которых 7 были успешными, а 3 нет, то ПОСЛЕ взятия условий 3ое существ всё равно будут призваны, причем в то самое место, куда мы их призывали до взятия условий.

Предполагаю, что скрипты такой проблемы не имеют.
Если же всё таки проблема останется, вижу другой алгоритм
1. осуществить призыв
2. проверить условия у кастера
2.1. если да, ничего не делать
2.2. если нет, убить призванное существо через какое-то время с каким-то шансом

Накидал вот что

Scriptname blabla extends activemagiceffect
Int ChanceRandom; переменная для шанса
Int ChanceRandomWaiting; переменная для времени ожидания
event onEffectStart(Actor Target, Actor Caster) ; запускаем на старте маг. эффекта
Actor Player=Game.GetPlayer() ;актер это игрок
ChanceRandom=Utility.RandomInt(0,2) ;присваиваем 1 из 3ёх значений, использую как 33% шанс
ChanceRandomWaiting=Utility.RandomInt(3,7) ;выбираем значение ожидание от 3 до 7 сек
If Caster.GetBaseActorValue("Conjuration")<25 && ChanceRandom>0 ; ставим условия - уровень скила и 33% шанс
Utility.Wait(ChanceRandomWaiting) ; ждём от 3 до 7 сек
ВОТ здесь должно быть убийство призванного существа
endif
endevent

Multigone  Offline  Сообщение №2667 написано: 17 июня 2018, 16:28



832
asdklghl,

В условиях эффекта (НЕ в окне Spell - Effect Item конструктора заклинаний):

Если у заклинателя (перк или навык или случай).
(S) (HasPerk) (SomePerk) (==) (1.0) OR
(S) (GetActorValue) (SkillName) (>=) (75.0) OR
(S) (GetRandomPercent) (>=) (33.0)

Если у заклинателя (перк и (навык или случай)).
(S) (HasPerk) (SomePerk) (==) (1.0) AND
(S) (GetActorValue) (SkillName) (>=) (75.0) OR
(S) (GetRandomPercent) (>=) (33.0)

Если у заклинателя (перк или (навык и случай)).
(S) (HasPerk) (SomePerk) (==) (1.0) OR
(S) (GetActorValue) (SkillName) (>=) (75.0) AND
(S) (HasPerk) (SomePerk) (==) (1.0) OR
(S) (GetRandomPercent) (>=) (33.0)

Эквивалентно ((перк или навык) и (перк или случай)).

Ссылки: принцип условий, функции условий.

asdklghl  Offline  Сообщение №2668 написано: 17 июня 2018, 18:17 | Отредактировано: Multigone - 21 апреля 2020, 20:43



4
Не верно, multigone
В таком случае заклинание ВООБЩЕ не будет кастоваться до тех пор, ПОКА обозначенные условия не будут выполнены.
Да, и лучше использовать getBASEactorValue - оно берёт базовое значение, а getActorValue возвращает текущее значение, со всеми бафами и дебафами.

Нужно писать скрипт, убедился в этом пока экспериментировал последние два дня - кит не позволяет создать полноценную динамическую систему условий.
Он, собственно, почти написан. Не хватает только функции, которая позволит мне получить доступ к призванному существу.
Скрипт будет проверять условия, и убивать призванное существо через какое-то время, давая нам попользоваться призванным небольшое время.
Работает корректно, проверил с другими командами, например с placeatme, restoreAV и target.kill (которая, к слову, убивает кастера - видимо когда мы кастуем призыв, мы и target, и caster сразу, не смотря на то, что заклинание колдуется на землю).
Единственное, что нужно добавить строку, дающую нам доступ к призванному существу.
 
Код
Scriptname MGSummonChance extends activemagiceffect

ActorBase property summoned auto
Actor summoned1
Int ChanceRandom; переменная для шанса
Int ChanceRandomWaiting; переменная для шанса ожидания

event onEffectStart(Actor Target, Actor Caster)
   Actor Player=Game.GetPlayer(); актёр это игрок
   ChanceRandom=Utility.RandomInt(0,2); присвоить переменной для шанса 1 из 3 значений
   ChanceRandomWaiting=Utility.RandomInt(3,7); присвоить переменной для ожидания значение от 3 до 7 секунд
   If Caster.GetBaseActorValue("Conjuration")<25 && ChanceRandom>0; если уровень навыка колдовства меньше 25, шанс рандома 66%
      Debug.Notification("Функция сработает через " +ChanceRandomWaiting); выводим сообщение сработало ли условие и когда оно включится
      Utility.Wait(ChanceRandomWaiting); ждём случайное время, от 3 до 7 секунд
      summoned1 .kill(); вот эта строчка должна убивать призванное существо, но НЕ РАБОТАЕТ
   endif
endevent

Multigone  Offline  Сообщение №2669 написано: 17 июня 2018, 19:56 | Отредактировано: Multigone - 17 июня 2018, 19:58



832
asdklghl, не совсем понял. Заклинание можно бросить независимо от выполнения или невыполнения условий, указанных в его эффектах или в списке конструктора заклинаний. При этом будет поглощена мана и полетит снаряд, если он есть. При невыполнении условий эффект не накладывается на цель. В случае архетипа SummonCreature игрок является и источником, и целью. Таким образом, если условия не выполняются, существо не должно быть призвано.

Узнать референс призванного существа напрямую невозможно, только с помощью Find(), но это не лучший вариант.

Большинство условий продублированы в СК и в папирусе, но делать сложные проверки лучше все-таки вторым.


Код
summoned1 .kill(); вот эта строчка должна убивать призванное существо, но НЕ РАБОТАЕТ
summoned1 объявлена как внутренняя переменная, ее начальное значение none, далее оно нигде не изменяется, поэтому none.kill() убьет никого.

asdklghl  Offline  Сообщение №2670 написано: 17 июня 2018, 20:08



4
Касательно условий в ките, заклинание просто не кастуется, если ты не удовлетворяешь условиям. Моя задача сделать так чтобы выполнение условий выдавало тебе бонус в успешном касте, условно говоря, с 10% без условий и до 100% со всеми условиями.
В любом случае, проблема решена, просто и универсально.
Spell property theSpell auto
Caster.DispelSpell(theSpell)

Не знаю что сразу не сообразил, все так просто было.

А теперь академический интерес. Чтобы summoned1 заработала, надо было ей присвоить значение призванного актёра? Если да, то знаешь как? Может быть, в будущем пригодится.

Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)
Поиск:





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