Модератор форума: 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? Пиши не в ЛС, а в эту тему.
Amiball1992  Offline  Сообщение №2191 написано: 5 августа 2016, 10:53



23
Товарищи, как сделать, хм, эффект немоты для ГГ, при котором он не сможет пользоваться криками? Желательно, в виде активного эффекта.

Lexo  Offline  Сообщение №2192 написано: 6 августа 2016, 18:43 | Отредактировано: Lexo - 6 августа 2016, 18:46


Всепознающий мододел


223
Цитата Amiball1992

эффект немоты для ГГ, при котором он не сможет пользоваться криками

Это не в раздел скриптов писать надо...

Создаёшь перк, в котором выбираешь Entry Point - Mod Shout OK, выставляешь Set Value = 0.

Создаёшь магический эффект, архитип не важен, поэтому можно скрипт... в разделе Perk To Apply выставляешь созданный выше перк и всё - по-идее должно помочь.

Добавлено (06 Августа 2016, 21:43)
---------------------------------------------
Но у меня самого вопрос:

Создаём эффект превращения из одного существа в другое... вот скрипт:


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

"Всё слишком относительно, что бы утверждать столь однозначно..." ©

Aksyonov  Offline  Сообщение №2193 написано: 18 августа 2016, 00:12 | Отредактировано: Aksyonov - 18 августа 2016, 00:16



937
Я не знаю почему но у меня перестали работать диалоги у персонажа NPC, озвучка не работает, персонаж молчит, не говорит, хотя всё подключено.

Внимание уважаемые! все те кто задаёт себе вопросы оставленные мной в качестве примера выше, я знаю в чём может заключаться ваша проблема!
я уже не раз сталкивался с подобным сам, и вчера наконец всё таки нашел причину этого бага, возможно я кому то помогу с этим и у вас тоже заработают
диалоги снова, в общем не спешите возвращаться к старой esp с работающей версией вашего мода итак вот решение:


Я не знаю по каким причинам это происходит но при условии правильно подключенных esp и с прописанным скриптом:

Quest Property TFQuest  Auto
Event OnInit()
TFQuest.Start()
EndEvent

По каким то причинам прописанные условия появления диалогов у NPC перестают работать, и
ошибок больше не в чём нет! алиасы есть всё есть, но если у вас по прежнему не работают диалоги
просто зайдите в ветку с ключевым топиком вашего квеста, и снова измените условия появления диалога
удивительно но именно эта мелочь и поможет вам, мне помогла и у меня вновь всё заработало.



Я несколько десятков раз проверял эту причину, и анализировал данные, и мне получилось выяснить
что при сохранении esp условия появления диалогов во вкладке Conditions из за чего то бьются, но вы
возможно как и я не знаете этого ( редактор ведь об этом нам не сообщит ) и вы берете и копируете битое
условие и вставляете в другой топик для экономии времени - но таким образом вы и распространяете
невидимый баг в своём квесте, так что имейте это теперь ввиду, лучше всего не копировать значения Conditions
а создавать их с нуля через функцию new - но даже в этом случае, помните что функции созданные таким образом
тоже могут разрушиться при сохранении esp, я не знаю почему такое происходит но это именно так будьте уверены.


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

PS. друзья, возможно вы тоже самостоятельно нашли ответ на свой вопрос сами, пожалуйста не ленитесь и пишите как вы это
сделали на нашем форуме, не думайте что ваш вопрос никому не интересен, я уверен что с вашим возникшим багом встретятся
многие модмекеры и вы очень поможете написал сюда как вы справились со своей задачей.

Спасибо всем тем кто помогал и мне решить мои задачи в моддинге, давайте продолжать развиваться вместе помогая друг другу, всего доброго :)
Модераторам - этот пост можно прикрепить думаю в FAQ CREATION KIT - он будет очень полезен так как подобные ошибки в квестах встречаются достаточно часто.

MaxwellDemon  Offline  Сообщение №2194 написано: 22 августа 2016, 17:28 | Отредактировано: MaxwellDemon - 22 августа 2016, 04:27



104
Привет "скайримщикам"!
Тут такое дело ... после скриптов Fallout 3Fallout NV - дай, думаю, поковыряюсь в Skyrim.  Я думал, что разницы нет, а оказывается - тут всё не совсем так ... или даже совсем не так.

Люди, помогите вникнуть, на простом и конкретном примере:

Нужен скрипт "спамер" - что бы повторялся, ну скажем, каждую секунду.
Если в игре нет призванного игроком, ну например, огненного атронаха - вызвать его.

Может кто нибудь написать этот скрипт и чуть-чуть разжевать как его создать?

Добавлено (22 Августа 2016, 17:51)
---------------------------------------------
Один "пустой" квест, один скрипт, три переменных.

Код
Scriptname ModPetSCRIPT extends Quest  

MagicEffect Property ModPetEFFECT  Auto  

SPELL Property ModPetSPELL  Auto  

Actor Property ModPetPLAYER  Auto  

Event OnInit()

   RegisterForSingleUpdate(1.0)

EndEvent

Event OnUpdate()
   
   If ModPetPLAYER.HasMagicEffect(ModPetEFFECT) == false
      ModPetSPELL.Cast(ModPetPLAYER, ModPetPLAYER)
   EndIf

   RegisterForSingleUpdate(1.0)

EndEvent

Добавлено (22 Августа 2016, 20:28)
---------------------------------------------
Такой вот вопросик - как получить переменную из "горячих" клавиш? Не могу найти команду, нужно что то вроде команды из Fallout GetHotkeyItem.


grumpos  Offline  Сообщение №2195 написано: 24 августа 2016, 18:31



24
Какой скриптовой командой можно остановить анимацию, запущенную с помощью PlayIdle?

Multigone  Offline  Сообщение №2196 написано: 24 августа 2016, 18:45 | Отредактировано: Multigone - 24 августа 2016, 19:30



832
Цитата MaxwellDemon

Calling the PlayIdle function on the same actor, with the same idle again, will have the actor stop playing it (if it's a looped animation).


AlexeyVN  Offline  Сообщение №2197 написано: 22 сентября 2016, 10:07 | Отредактировано: Multigone - 23 апреля 2020, 14:45



52
Подскажите пожалуйста, что не так с этим скриптом
Код

Scriptname Altar extends ObjectReference

FormList Property DisenchantList   Auto
ObjectReference item

Event OnActivate(ObjectReference akActivator)
   Form akBaseItem= item.GetBaseObject()
   If akActivator == Game.GetPlayer()
      if (akBaseItem as Armor) || (akBaseItem as Weapon)
         if !(akBaseItem as Armor).GetEnchantment() && !(akBaseItem as Weapon).GetEnchantment()
            DisenchantList.AddForm(akBaseItem)
         endif
      endIf
      Game.GetPlayer().ShowGiftMenu(True, DisenchantList)
   EndIf
EndEvent

Multigone  Offline  Сообщение №2198 написано: 22 сентября 2016, 13:04 | Отредактировано: Multigone - 22 сентября 2016, 13:04



832
AlexeyVN, что должен делать этот скрипт? Желательно подробнее.

AlexeyVN  Offline  Сообщение №2199 написано: 22 сентября 2016, 13:39 | Отредактировано: AlexeyVN - 22 сентября 2016, 14:33



52
при активации открывалась GiftMenu  только зачарованными вещами

Добавлено (22 Сентября 2016, 16:39)
---------------------------------------------
Multigone, при активации открывалась GiftMenu  только зачарованными вещами из инвентаря ГГ

Multigone  Offline  Сообщение №2200 написано: 22 сентября 2016, 14:47



832
AlexeyVN, я правильно понимаю, что при активации алтаря должно появляться меню, где игрок может подарить зачарованный предмет? Вот только кому, самому себе, что ли? Непонятно. Я же просил описать подробности.

Ладно, предположим, нам нужно, чтобы игрок мог перемещать только зачарованный(-ые) предмет(-ы) из своего инвентаря в некий контейнер при активации алтаря через GiftMenu. Нам понадобится: любой актер как посредник (кому будем отдавать предметы через меню, спрятан в любом месте), скрипт на алтаре. При активации алтаря перебираем все до единого предмета в инвентаре игрока и формируем лист из подходящих предметов, открываем меню подарков с НПС. После закрытия меню отправляем все предметы из инвентаря НПС в конечный контейнер.

Если я угадал, могу написать.

AlexeyVN  Offline  Сообщение №2201 написано: 22 сентября 2016, 15:04 | Отредактировано: Multigone - 23 апреля 2020, 14:47



52
Multigone, Я через алиас выкидываю его на алтарь
Код

Scriptname DisenchantPlayerAlias extends ReferenceAlias

Event OnItemRemoved(Form akBaseItem, Int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer)
   if ui.IsMenuOpen("GiftMenu")
      ObjectReference  NewItem = akDestContainer.DropObject(akBaseItem, 1)
      Int Selection = AlexDisenchantMessage.Show(1, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000)
      if Selection == 0
         input.TapKey(1)
         NewItem.SetMotionType(NewItem.Motion_Keyframed)
         NewItem.SetAngle(DisenchantAltar.GetAngleX() +80.0, DisenchantAltar.GetAngleY() +0.0, DisenchantAltar.GetAngleZ() + 0.0)
      Else
         Game.GetPlayer().AddItem( NewItem as Form, 1, true)
      endIf
   endIf
endEvent

Multigone  Offline  Сообщение №2202 написано: 22 сентября 2016, 16:39



832
AlexeyVN, не совсем понял, что происходит с предметом после того, как будет помещен в меню подарков. Меню закрывается, он возвращается (?) игроку, и...?

Вот примерные версии (названия другие, т.к. тестировал на компиляцию). См. комменты:


Код
Scriptname _TESTTEST15 extends ObjectReference ; Алтарь.

_TESTTEST16 Property L Auto
            ; Важно! Вместо _TESTTEST16 указать реальное название скрипта, который прикреплен к алиасу игрока, иначе не будет компилировать.
            ;В СК заполнить эту переменную прикрепленным скриптом из алиаса!
FormList Property DisenchantList Auto

Event OnActivate(ObjectReference akActivator)
    GoToState("S") ; Пока не будет обработан текущая активация, все следующие пропускаются.
    If akActivator == Game.GetPlayer()
        DisenchantList.Revert()
        Int iC = akActivator.GetNumItems() - 1
        WHILE iC >= 0
            Form xF = akActivator.GetNthForm(iC)
            if (xF as Weapon && (xF as Weapon).GetEnchantment()) || (xF as Armor && (xF as Armor).GetEnchantment())
                DisenchantList.AddForm(xF)
            endIf
            iC -= 1
        ENDWHILE
        IF DisenchantList.GetAt(0)
            L.bL = true
            (akActivator AS Actor).ShowGiftMenu(True, DisenchantList)
        ELSE
            Debug.Notification("Игрок не имеет зачарованных предметов!")
        ENDIF
    EndIf
    GoToState("")
EndEvent

STATE S
    Event OnActivate(ObjectReference akActivator)
    EndEvent
ENDSTATE


Код
Scriptname _TESTTEST16 extends ReferenceAlias ; Алиас игрока.

ObjectReference Property DisenchantAltar Auto
Message Property AlexDisenchantMessage Auto
Bool Property bL Auto Hidden ; Упрощает проверку и предупреждает срабатывание скрипта при любом открытом меню подарков.

Event OnInit()
    RegisterForMenu("GiftMenu")
endEvent

Event OnItemRemoved(Form akBaseItem, Int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer)
    if bL ; Определяем, был ли активирован алтарь, ибо меню подарков может быть открыто во многих случаях.
        akItemReference = akDestContainer.DropObject(akBaseItem, 1) ; Используем имеющуюся переменную вместо создания новой.
        if !AlexDisenchantMessage.Show(1, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000)
            input.TapKey(1)
            akItemReference.SetMotionType(akItemReference.Motion_Keyframed)
            akItemReference.SetAngle(DisenchantAltar.GetAngleX() + 80.0, DisenchantAltar.GetAngleY(), DisenchantAltar.GetAngleZ())
        Else
            Game.GetPlayer().AddItem(akBaseItem, 1, true) ; ?
        endIf
    endIf
endEvent

Event OnMenuClose(string menuName)
    bL = false
endEvent

AlexeyVN  Offline  Сообщение №2203 написано: 22 сентября 2016, 16:59



52
Multigone,  Снимает чары  не разрушая предмет 

          (akBaseItem as Armor).SetEnchantment(none) 
          (akBaseItem as Weapon).SetEnchantment(none) 

Спасибо Огромное , то что нужно .

Aksyonov  Offline  Сообщение №2204 написано: 1 октября 2016, 15:09 | Отредактировано: Aksyonov - 1 октября 2016, 16:23



937
Здравствуйте фишка такая: есть мод kadji.bsa и kadji.esp открываем esp в редакторе и при любом изменении скриптов в моде персонажи отказываются говорить, с чем это может быть связано? нужно ли распаковывать архив bsa что бы вносить изменения в мод? раньше не запаковывал поэтому работал я с открытыми папками и файлами meshes и так далее, но что происходит с квестом и диалогами когда я изменяю скрипт распакованный из bsa, вот вношу изменения, по логике скрипт должен подгружаться не из bsa а из директории data по такому же пути что и был в архиве bsa, но всё перестаёт работать.. не могу проследить логику, скрипт отношения к диалогам не имеет..помогите пожалуйста понять почему это происходит.

> Хм оказалось скрытия npc влияет на цикл квеста и он не начинается судя по всему,
кстати а можно ли скриптом включить для персонажа (не главного героя) что бы его
убить нельзя было а потом отключить? 

По квесту просто в стадии если до нужной стадии убиваешь персонажа, то порядок стадий сбивается и баги |
начинаются... нажо бы как нибудь сделтать неубиваемым персонажа в определенной стадии квеста, что кто
предложит? какие есть варианты?

Myprism  Offline  Сообщение №2205 написано: 1 октября 2016, 16:59


Физик


Aksyonov, у персонажей есть несколько флагов, один из них отвечает за неубиваемость. Он стоит у всех важных квестовых персонажей, например, у ярлов. Вот этот атрибут и надо ставить и убирать.

Aksyonov  Offline  Сообщение №2206 написано: 2 октября 2016, 00:03



937
Цитата Myprism

Aksyonov, у персонажей есть несколько флагов, один из них отвечает за неубиваемость. Он стоит у всех важных квестовых персонажей, например, у ярлов. Вот этот атрибут и надо ставить и убирать.


Да я в курсе этого, но этот флаг мне нужно убрать в определенной стадии квеста можно ли сделать это при помощи скрипта назначить неузнаваемость? сейчас персонажа убивают до нужной стадии и квест не продолжается так как в условие сказано - что для продолжения нужна стадия когда убиваешь персонажа + стадия действующая, то есть нужно убит npc строго в определенную стадию после покупки вещей, я если сделать флаг активных его нельзя убить, а мне необходимо что бы он реально погиб, а не ползал на коленях.

Myprism  Offline  Сообщение №2207 написано: 2 октября 2016, 04:58


Физик


Aksyonov, посмотри тут:
http://www.creationkit.com/index.php?title=SetEssential_-_ActorBase
Там приведены конкретные примеры. Кажется, это то, что нужно.

Lexo  Offline  Сообщение №2208 написано: 5 октября 2016, 17:58


Всепознающий мододел


223
У меня ещё один вопрос: можно ли сделать скрипт, который сделает так, что, если я сворую предмет, то он не будет считаться сворованным?

"Всё слишком относительно, что бы утверждать столь однозначно..." ©

Multigone  Offline  Сообщение №2209 написано: 6 октября 2016, 15:52



832
Lexo, проблема в том, что 1) в инвентаре предметы не имеют референсов, 2)сворованные и "чистые" предметы складываются как попало в один стек, 3) никак нельзя определить, что предмет, уже находящийся в инвентаре, сворован.

Есть вариант с побочными эффектами. Основывается на следующем: исследуются условия, при которых в инвентарь игрока попадают предметы. Когда обстановка потенциально соответствует краже (т.е. игрок непосредственно перед этим смотрел на чей-то предмет или контейнер, или открыто контейнер-меню с живым персонажем), все предметы такой же базовой формы, что и добавленный, удаляются из инвентаря игрока и ему возвращаются новые в таком же количестве. Недостаток же, что могут удалиться: заточенные предметы, заполненные камни душ, предметы, зачарованные игроком.

Вот примерная версия (на алиас игрока, не проверял, нужен СКСЕ):


Код
Scriptname _TESTTEST17 extends ReferenceAlias

Bool bD

Event OnInit()
    RegisterForCrosshairRef()
endEvent

Event OnCrosshairRefChange(ObjectReference ref)
    IF ref.GetActorOwner() || ref.GetFactionOwner()
        bD = true
    ELSE
        bD = false
    ENDIF
EndEvent

Event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer)
    IF akSourceContainer AS Actor
        IF (akSourceContainer AS Actor).IsDead() || !ui.IsMenuOpen("ContainerMenu")
            RETURN
        ENDIF
    ELSEIF !bD
        RETURN
    endIf
    Actor xA = GetActorRef()
    Int iC = xA.GetItemCount(akBaseItem)
    xA.RemoveItem(akBaseItem, iC, true)
    xA.AddItem(akBaseItem, iC, true)
endEvent

Есть вариант с OnStoryAddToPlayer, который позволяет более точно установить, каким образом предмет попал в инвентарь игрока, но там все печально.

Dsion  Offline  Сообщение №2210 написано: 6 октября 2016, 21:27



Если тупо почитерить, то можно добавить себе золота побольше, а потом продать предмет скупщику краденого и купить обратно - это снимает статус украденности. Ну или выбросить на землю и убрать владельца через консоль.

А если для дела, то можно еще несколько вариантов рассмотреть, в зависимости от задачи... Через перк, например. Создаем перк, в нем две Entry Point для перехвата активации предметов и NPC. Первая будет активации предметов, которые можно взять, - нужно навешать соответствующих условий. И скрипт такого типа:
Код

akTargetRef.SetActorOwner(None);
Game.GetPlayer().AddItem(akTargetRef);

Это делает вещь ничейной, а потом суёт игроку в сумку. Не копию, а именно активированный референс.

А вторая для кражи у NPC. Тоже нужны соответствующие условия и скрипт типа:
Код

(akTargetRef As Actor).OpenInventory(True);

Это открывает инвентарь NPC - можно брать что-угодно и вещи не будут считаться крадеными.

Myprism  Offline  Сообщение №2211 написано: 8 октября 2016, 03:01


Физик


Как скриптом сменить пол персонажа (манекена)?

Multigone  Offline  Сообщение №2212 написано: 8 октября 2016, 07:01



832
Myprism, похоже, что никак. Только заменой актера.

Myprism  Offline  Сообщение №2213 написано: 8 октября 2016, 07:55


Физик


Multigone, но ведь консоль это делает!
Когда-то давно облюбовал один мод на манекены. Там из меню управления можно менять расу манекена. Автор обещал сделать и смену пола. Уж много лет прошло, а он обещание так и не выполнил. Решил я сам туда залезть, и вот такой облом.

SoulEx  Offline  Сообщение №2214 написано: 17 октября 2016, 16:41


Ashes to ashes, dust to dust


25
Здравствуйте, уважаемые, мне нужна ваша помощь, я тут задумал заклинание сделать, но мне нужен скрипт, что бы при использовании заклинания у игрока оставалось по 1% жизней и маны. Возможно ли это сделать, и если возможно, то как? К слову, в скриптах я полный ноль...

Multigone  Offline  Сообщение №2215 написано: 17 октября 2016, 22:15



832
SoulDiablo, если заклинание FF - Self, то добавить в маг. эффект:


Код
Scriptname _TESTTEST18 Extends ActiveMagicEffect

EVENT OnEffectStart(Actor xT, Actor xC)
    Float fP = xT.GetAVPercentage("Health")
    IF fP > 0.01
        xT.DamageAV("Health", xT.GetAV("Health") * (1.0 - 0.01 / fP))
    ENDIF
    fP = xT.GetAVPercentage("Magicka")
    IF fP > 0.01
        xT.DamageAV("Magicka", xT.GetAV("Magicka") * (1.0 - 0.01 / fP))
    ENDIF
ENDEVENT

Если заклинание FF - Aimed, чуть сложнее:

1) Создать алиас игрока в постоянно работающем квесте.
2) Добавить алиасу:


Код
Scriptname _TESTTEST19 extends ReferenceAlias

Spell Property MySpell Auto ; Модное заклинание, заполнить.

EVENT OnSpellCast(Form xS)
    IF xS == MySpell
        Actor xT = GetActorRef()
        Float fP = xT.GetAVPercentage("Health")
        IF fP > 0.01
            xT.DamageAV("Health", xT.GetAV("Health") * (1.0 - 0.01 / fP))
        ENDIF
        fP = xT.GetAVPercentage("Magicka")
        IF fP > 0.01
            xT.DamageAV("Magicka", xT.GetAV("Magicka") * (1.0 - 0.01 / fP))
        ENDIF
    ENDIF
ENDEVENT

AlexeyVN  Offline  Сообщение №2216 написано: 18 октября 2016, 14:07



52
Multigone, Здравствуйте. Хочу спросить Почему то новые зачарованные вещи не показывает в GiftMenu. Это можно исправить?

Multigone  Offline  Сообщение №2217 написано: 18 октября 2016, 15:30



832
AlexeyVN, думаю, что с текущей редакцией SKSE - нет. И вот почему.

Dsion  Offline  Сообщение №2218 написано: 18 октября 2016, 15:58 | Отредактировано: Multigone - 23 апреля 2020, 14:31



AlexeyVN, а подробнее нельзя? У меня пока всё отображается: http://i.piccy.info/i9....ot5.jpg

Multigone  Offline  Сообщение №2219 написано: 18 октября 2016, 17:20



832
Dsion, там перед тем, как дать подарок, создается лист из зачарованных вещей, находящихся в инвентаре игрока. Проблема в том, что при переборе вещей те из них, что зачарованы самостоятельно, не могут определиться как имеющие чары через GetEnchantment().

AlexeyVN  Offline  Сообщение №2220 написано: 18 октября 2016, 22:15



52
Multigone, Ясненько. А через скрипт Зачарования выучить можно?

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





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