Модератор форума: 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? Пиши не в ЛС, а в эту тему.
Alisa1992  Offline  Сообщение №1081 написано: 12 июня 2014, 15:59 | Отредактировано: Alisa1992 - 12 июня 2014, 16:17



MemoriaVetusta, спасибо. Проверю позже. Может еще подскажете где можно ускорить исчезновение трупов. Только поподробнее пожалуйста. :)

Alisa1992  Offline  Сообщение №1082 написано: 12 июня 2014, 18:14 | Отредактировано: Alisa1992 - 12 июня 2014, 18:23



MemoriaVetusta, кстати как думаешь в DLC у неписей свой уборщик трупов, а то я заметила , что Мираковские фанаты вообще не собираются исчезать.

В GameSetting, eсли искать через фильтр "DeadBody" выходит только одно значение fCheckDeadBodyTimer равное 20.

Aksyonov  Offline  Сообщение №1083 написано: 13 июня 2014, 08:42



937
Уважаемые всем привет ! пожалуйста напишите мод для статического объекта регенерацию здоровья в области - нужен
для последующего моего мода упомяну вас в описании к моду обязательно ! скиньте скрипт если напишите в лс, заранее благодарен.

Aksyonov  Offline  Сообщение №1084 написано: 13 июня 2014, 12:08



937
MemoriaVetusta, спасибо огромное ! только можно по подробней по поводу форм: EXPL, ENCH, MGEF может сможете создать esp плагин
было бы вообще замечательно чем объяснять привязку скрипта - можете закинуть любой статик в вайтран и применить скрипт на него.

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

Aksyonov  Offline  Сообщение №1085 написано: 13 июня 2014, 13:33



937
Да это да сделать бы руку от первого лица которая бы брала предмета а что думаю это реально сделать ? нет ? за esp спасибо буду ждать ) а про задержку проблемка конечно ) ну ладно  не суть важно, а просто значит можно прикрутить к действию одевания предмета и выкидывания анимацию ? надо надо если можно сделать )

Aksyonov  Offline  Сообщение №1086 написано: 13 июня 2014, 13:55 | Отредактировано: Aksyonov - 13 июня 2014, 13:58



937
MemoriaVetusta, спасибо ещё раз ! очень мне помогаешь :) коллега ) скажи а как долго ты занимаешься скриптингом и вообще сколько времени нужно на это убить ? я просто прихожу к выводу что столько бы мог всего реализовать если бы сам умел писать скрипты.. эх долго изучать ? материалы то есть видел статьи инструкции просто много времени уделять надо наверно ? верно ? скрипта завтра протестирую отпишусь )

Aksyonov  Offline  Сообщение №1087 написано: 13 июня 2014, 15:19



937
AkActor - что это? К кому он применяется? вот вот понимаю я сейчас на скрипты тоже так же смотрю хех что зачем кого? спс за редактирования скинишь тогда ссылку на новую версию плагина ) спасибо за тест и все остальное - значит думаю скрипты уж и не такие страшные как могут показаться надо будет учить, расскажи о себе кстати :) можешь написать в лс - модами занимаешься в качестве хобби где работаешь какая основная работа ? сколько времени уделяешь скайриму - ? для создания модов - кстати уже создал что то дай ссылку на твои работы :)

Nikiiita  Offline  Сообщение №1088 написано: 15 июня 2014, 13:32



2
Напишите пожалуйста скрипт на то когда одеваешь определённый сет брони открывается портал и заходишь в него телепортирует в локацию.

Юс
Dsion  Offline  Сообщение №1089 написано: 15 июня 2014, 21:15 | Отредактировано: Dsion - 15 июня 2014, 21:28



Цитата MemoriaVetusta

ЗЫ: Оцените, насколько можно сократить код:



Честно говоря, над твоей редакцией стоило бы еще поработать. Результаты не совпадают с оригинальным методом:


Код

         GameTime    OrigMeth    TestMeth             
             0           7           7             
           0.5           0           7             
             1           0           7             
           1.5           0           7             
             2           0           7             
           2.5           0           7             
             3           0           0             
           3.5           1           0             
             4           1           0             
           4.5           1           0             
             5           1           0             
           5.5           1           1             
             6           1           1             
           6.5           2           1             
             7           2           1             
           7.5           2           1             
             8           2           1             
           8.5           2           1             
             9           2           2             
           9.5           3           2             
            10           3           2             
          10.5           3           2             
            11           3           2             
          11.5           3           2             
            12           3           3             
          12.5           4           3             
            13           4           3             
          13.5           4           3             
            14           4           3             
          14.5           4           4             
            15           4           4             
          15.5           5           4             
            16           5           4             
          16.5           5           4             
            17           5           4             
          17.5           5           5             
            18           5           5             
          18.5           6           5             
            19           6           5             
          19.5           6           5             
            20           6           5             
          20.5           6           6             
            21           6           6             
          21.5           7           6             
            22           7           6             
          22.5           7           6             
            23           7           6             
          23.5           7           7             
            24           7           7             
          24.5           0           7             
            25           0           7             
          25.5           0           7             
            26           0           7             
          26.5           0           7             
            27           0           0             
          27.5           1           0             
            28           1           0             
          28.5           1           0             
            29           1           0             
          29.5           1           0             
            30           1           1             
          30.5           2           1             
            31           2           1             
          31.5           2           1             
            32           2           1             
          32.5           2           1             
            33           2           2             
          33.5           3           2             
            34           3           2             
          34.5           3           2             
            35           3           2             
          35.5           3           2             
            36           3           3             
          36.5           4           3             
            37           4           3             
          37.5           4           3             
            38           4           3             
          38.5           4           3             
            39           4           4             
          39.5           5           4             
            40           5           4             
          40.5           5           4             
            41           5           4             
          41.5           5           4             
            42           5           5             
          42.5           6           5             
            43           6           5             
          43.5           6           5             
            44           6           5             
          44.5           6           5             
            45           6           6             
          45.5           7           6             
            46           7           6             
          46.5           7           6             
            47           7           6             
          47.5           7           6             
            48           7           7

    

Но и оригинальный тоже кривоват действительно.

Dsion  Offline  Сообщение №1090 написано: 16 июня 2014, 11:20 | Отредактировано: Dsion - 16 июня 2014, 11:32



Цитата MemoriaVetusta

Dsion, не знаю, как ты считал.



Да... Это я облажался. Не поставил .0 после целых чисел и c++ всё неправильно посчитало.

В любом случае, это всё фигня... Вот моя редакция формулы:
int phase = qFloor((time + 23.5)/3.0) % 8;
Это если фаза начинается в полдень (как в оригинале).

Или даже еще проще:
int phase = qFloor(time/3.0) % 8;
Если фаза начинается в полночь.

И всё тут.

Dsion  Offline  Сообщение №1091 написано: 16 июня 2014, 23:06 | Отредактировано: Dsion - 16 июня 2014, 23:11



qFloor - это Floor. А % - это modulo. Офигенный оператор. Ты меня уже, наверное, ненавидишь и не хочешь никаких советов, иначе я бы посоветовал разобраться с modulo. Очень полезно для любых программистов.

Он возвращает остаток от деления:
8 % 8 = 0 - делится без остатка.
9 % 8 = 1
10 % 8 = 2
80 % 8 = 0
83 % 8 = 3
4 % 8 = 4

Если брать остаток от деления именно на 8, то он всегда меньше 8.

Dsion  Offline  Сообщение №1092 написано: 17 июня 2014, 06:41



Я формулы в Qt проверял и оттуда скопировал... У Qt чуть ли не всё на "q" или "Q" начинается...
Для папируса действительно надо просто Floor, а остальное без изменений.

Munky  Offline  Сообщение №1093 написано: 18 июня 2014, 06:27 | Отредактировано: Munky - 18 июня 2014, 06:43



18
Вот такой вопрос. Хочу сделать что то вроде автомата, который бы стрелял в частности дротиками из нордских ловушек. Лук автоматическим сделать не получается, поэтом решил сделать посох и зачарование для него, который будет работать по принципу лука/арбалета в том смысле, что будет расходовать некоторый вид боеприпаса. Как такое описать? Пока делаю примерно так (висит на магическом эффекте, который используется в зачаровании, эффект Concentration):
Код
Scriptname FireNordicDart extends activemagiceffect     
{Fires nordic dart}

Form Property PropDartItem auto
Spell Property PropSingleDartSpell auto
Spell Property PropThisSpell auto

Event OnEffectStart(Actor akTarget, Actor akCaster)    
      while (akCaster.GetItemCount( PropDartItem ) > 0) && (akCaster.IsCasting( PropThisSpell )) && !IsDead( akCaster )
         akCaster.RemoveItem( PropDartItem, 1 )
         PropSingleDartSpell.Cast( akCaster, akTarget )
         Utility.Wait( 0.113 )
      endwhile
EndEvent
Но IsCasting  и IsDead походу в Papyrus нет в таком виде.

Dsion  Offline  Сообщение №1094 написано: 18 июня 2014, 08:21



Цитата Munky

Как такое описать?



Ну если задача именно так стоит...
Наверное, в энчанте понадобилось бы два магических эффекта:

1. Концентрация на цель. С кастомными Projectile. Метает Projectile и наносит урон. Но урон-то магический. Я не помню точно, можно ли установить физическую защиту как ресист для магического эффекта. Надо проверить. Для создания этого эффекта можно скопировать эффект с обычного "Пламени".

2. Концентрация на самого себя. Со скриптом, который отбирает стрелы каждую секунду и прерывает каст, если стрел нету. Зачем этот эффект? Тебе ведь нужно, чтоб стрелы отбирались постоянно во время стрельбы, а не только тогда, когда ты в кого-то попадаешь.

Кастомные Projectile очень легко создать. Для тестов можно даже обычные стрелы использовать.

Вот.. Но это только те мысли, что сразу пришли. Может, есть и поинтереснее способы.

Munky  Offline  Сообщение №1095 написано: 18 июня 2014, 09:56



18
Цитата Dsion

прерывает каст, если стрел нету

а как это делать?

Dsion  Offline  Сообщение №1096 написано: 18 июня 2014, 10:03 | Отредактировано: Dsion - 18 июня 2014, 10:06



akCaster.InterruptCast()

Но какой от этого всего толк, если нельзя указать физическую защиту как ресист...

Тоесть, можно, конечно, сделать скрипт, который будет высчитывать урон, основываясь на броне цели и навыке стрельбы кастера... Но как-то это криво. Разобраться бы, как обычное оружие автоматическим сделать. Или, возможно, стреляющие длинными очередями.

Munky  Offline  Сообщение №1097 написано: 18 июня 2014, 10:56 | Отредактировано: Munky - 18 июня 2014, 11:22



18
Dsion, вроде есть на этом сайте плагин с двемерскими автоматами/винтовками. надо бы поковырять, вероятно завтра этим займусь. Но он вроде как на Dawnguard т.е. это особенности арбалетов я полагаю. а мне б хотелось на чистом скайриме такой. Урон физический/магический мне вообще говоря до фени. и так и эдак он не значительный. Куда полезнее яд, которым они будут отравлять цель. Его я хочу сделать несколько сильнее и хитрее быть может, чем оригинальный

Добавлено (18 Июня 2014, 14:35)
---------------------------------------------
InterruptCast() - прерывает все касты? т.е. если а кастую с двух рук и в одной кончается боеприпас - прервутся оба? Если так то можно ли сделать "посох" двуручным?

Добавлено (18 Июня 2014, 14:39)
---------------------------------------------
Цитата MemoriaVetusta

Создается эффект (такой же архетип) - Self (эффект-пустышка, только для этой проверки). akCaster.HasMagicEffect(имя этого эффекта)

Сейчас поколдуем)

Добавлено (18 Июня 2014, 14:56)
---------------------------------------------
Еще такой вопрос. Ну сделаю я это на отдельный эффект на себя. Но я полагаю цикл while не прервется с прерыванием каста. Если кончаются дротики то цикл завершается и каст прерывается - очевидно. но вот если игрок сам прекратил каст? Выполнение OnEffectStarted ведь не должно прерываться? Наверно лучше через Register/Unregister Update? Или за решение такой проблемы отвечает akCaster.HasMagicEffect() в условии цикла? 
И как объединить два эффекта с разными delivery в одном зачаровании?

Myprism  Offline  Сообщение №1098 написано: 18 июня 2014, 11:39


Физик


Munky, деталей сейчас не помню, но год назад я пытался перетащить в свой мод арбалеты, при условии, что я делаю моды только независящие от дополнений. И мне это не удалось. Дело в том, что для арбалетов используется своя анимация. Но это ещё пол беды. Анимация эта заточена на изменённую систему ВСЕЙ анимации, и это изменение происходит в Даунгарде :(

Dsion  Offline  Сообщение №1099 написано: 18 июня 2014, 12:33 | Отредактировано: Dsion - 18 июня 2014, 13:07



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

Добавлено (18 Июня 2014, 16:33)
---------------------------------------------
Попробуй вот такой вариант. Сначала создается посох и зачарование для него с Concentration Self эффектом.
К зачарованию цепляется скрипт:


Код

Scriptname DartMassacre extends ActiveMagicEffect

Weapon Property TrapDartWeapon01 Auto
Ammo Property TrapDart Auto
Actor Caster

Event OnEffectStart(Actor akTarget, Actor akCaster)
    Caster = akCaster
    RegisterForSingleUpdate(0.1)
EndEvent

Event OnUpdate()

    If (Caster.GetItemCount(TrapDart) > 0)
        Caster.RemoveItem(TrapDart, 1)
        TrapDartWeapon01.Fire(Caster, TrapDart)
        RegisterForSingleUpdate(0.1)

    Else
        Caster.InterruptCast()

    EndIf

EndEvent




Все Property в скрипте заполняются автоматическим заполнением.

Работает это всё почти так, как тебе нужно. Но всплывают несколько проблем... В общем, попробуй.
В любом случае, это весело. Я минут 7 не мог оторваться от расстрела мирных жителей дротиками.
Хорошо бы придумать, как обойтись без посоха. Идея есть, вроде.

Dsion  Offline  Сообщение №1100 написано: 18 июня 2014, 17:48



Цитата MemoriaVetusta

Dsion, а ты боезапас экипируешь? Если да, то за одно обновление будет съедаться 2 ед. боезапаса.


Да? Если экипированы, сами расходуются? Так даже лучше. Можно обойтись одной функцией IsEquipped(дротик) вместо проверки количества и удаления.

Но там основная проблема в другом... Если персонаж держит в руках стрелковое оружие, то всё круто. А если держит некоторые другие виды оружие, то 1) оружие становится невидимым 2) дротики летят не совсем точно туда, куда целишься. Посох как-раз к таким "другим" видам относится. Как бы так сделать включение и отключение пулемета без использования посоха?

Munky  Offline  Сообщение №1101 написано: 19 июня 2014, 09:33 | Отредактировано: Munky - 19 июня 2014, 07:42



18
Цитата Dsion

как обойтись без посоха

Я угарнул - сделал посох с моделькой лука. однако прикольно. лук древний драугровский, так что даже похож на посох когда его держат как посох. А насчет скрипта. Запилил кароч) круто) ток анимашку надо починить. Выставлю на AttackLoop - гляну. + надо его сделать все таки двуручным

Добавлено (19 Июня 2014, 11:44)
---------------------------------------------
Ток я полагаю на голом Update - е работало бы) написал вот так: 

Код
Scriptname FireDartUsingAmmoScrip extends activemagiceffect   

Weapon Property PropWeapon auto
Ammo Property PropAmmo auto
float Property PropCooldownTime auto

Actor Caster

Event OnEffectStart(Actor akTarget, Actor akCaster)
    Caster = akCaster           
    RegisterForSingleUpdate( PropCooldownTime )  
EndEvent

Event OnUpdate()  
    If (Caster.GetItemCount( PropAmmo ) > 0)  
       Caster.RemoveItem( PropAmmo , 1, true)  
           PropWeapon.Fire( Caster, PropAmmo )  
           RegisterForSingleUpdate( PropCooldownTime )  
    Else  
           Caster.InterruptCast()  
    EndIf  
EndEvent

Добавлено (19 Июня 2014, 11:46)
---------------------------------------------
12 выстрелов в секунду сделал (0.083333 задержка). Расход боезапаса - жестокий) Зато весьма неплохой урон, если попадать по цели

Добавлено (19 Июня 2014, 12:18)
---------------------------------------------
Как задать анимацию атаки? Что то Attack Anim вообще не канает. Хотелось бы чтобы проигрывалась анимация либо посоха направленного на цель либо, в идеале, часть анимации стрельбы из лука, но так, чтобы предмет не воспринимался как лук

Добавлено (19 Июня 2014, 13:33)
---------------------------------------------
Еще вопрос. Хочу скриптом снять любые боеприпасы, какие бы не были одеты на некоторого Актера. Пока делаю через итерирование по FormList`у, однако он не может учитывать боеприпасы, о которых не знает мой плагин. (например болты из официальных дополнений). Function UnequipItemSlot(int aiSlot) - казалось бы идеальное решение, однако! Не могу найти ID слота для боеприпасов :( Везде выложены лишь слоты брони


Dsion  Offline  Сообщение №1102 написано: 19 июня 2014, 12:55



Если задуматься, то не круто это всё... Скорее всего, DPS у такого скрипта будет зависеть от производительности компьютера и частоты смены кадров.
Но других идей нету пока...

Munky  Offline  Сообщение №1103 написано: 19 июня 2014, 13:37



18
Цитата Dsion

от производительности компьютера и частоты смены кадров.

Вообще да, но, я полагаю, ловушки с дротиками устроены аналогично. + если я все таки не буду проверять все виды боеприпасов - ничего сильно тормозящего в самом скрипте нет (а с проверкой - появляются значительные задержки. где-то 0.5 сек вместо 0.083). Замечательно то, что урон зависит от урона пушки Оо. Ну и в принципе я к этому посоху указал навыка стрельбы. Поиграв уже с пару часиков пришел к выводу что дамаг просто непозволительно большой, пока хватает дротиков. ну во всяком случае до 10-20 уровня вещь весьма эпична и разносит все и вся. Прост пулемет. Делать дротики дороже наверно не целесообразно, вероятно лучше просто резать урон. Считайте 40 дротиков у меня крафтится из Железного слитка и Костной муки. расходуются они за 3 с лишним секунды. но 3-4 дротика сливают в 0 небоевых актеров

Dsion  Offline  Сообщение №1104 написано: 22 июня 2014, 10:21



MemoriaVetusta, уфф...

Сначала общее:

1. Я бы очень не рекомендовал использовать RegisterForUpdate вообще. Даже на creationkit.com об этом написано длинное предупреждение:
http://www.creationkit.com/RegisterForUpdate_-_Form
Если пользователь отключит твой мод, эта регистрация так и останется висеть в сейве навсегда. И это только одна из многих проблем, связанных с этой функцией.

2. Допустим, есть простое кольцо, не занесенное ни в какой алиас. Когда оно у тебя в инвентаре, у него НЕТУ собственного ID. И оно не может регистрироваться для каких-то событий. Когда выбрасываешь в мир, оно получает ID. Берешь в инвентарь - теряет ID. Выбрасываешь - снова получает ID, но уже другое. Это еще одна причина не использовать RegisterForUpdate...

Теперь ближе к вопросу:

1. Для первого варианта надо обеспечить, чтоб у кольца всегда было собственное ID. Запихивание в алиас должно помочь... А потом алгоритм такого типа:
- каждую секунду кольцо определяет, лежит ли оно в чьем-то инвентаре.
- если НЕ лежит, то проверят, загружена ли его модель. Если загружена, колдует заклинание.
- если лежит в инвентаре, проверят, загружена ли модель того, у кого оно лежит. Если загружена, колдует другое заклинание от имени того, у кого лежит.

В принципе, никакого ущерба производительности игры одна маленькая проверка раз в секунду не нанесет... Но можно и по-другому.

2. Если кольцо валяется в мире, то просто начинает кастит вокруг себя ауру после OnLoad. Но если попадает к кому-то в инвентарь, то оно запихивает своего НОСИТЕЛЯ в алиас квеста. А на алиасе уже скрипт, ивент OnLoad и каст ослабленной ауры.

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

Ну это то, что сходу придумалось. Может, есть и лучше способы...

Dsion  Offline  Сообщение №1105 написано: 22 июня 2014, 18:09



Цитата MemoriaVetusta

IF Uknown as MiscItem ;???
;do everything
ENDIF



Ага... Только если это ObjectReference, наверное, сначала нужно еще GetBaseObject()

Dsion  Offline  Сообщение №1106 написано: 22 июня 2014, 19:44



Я что-то уже засыпаю и торможу очень... Но, вроде, уже похоже на правду...
Важно не забыть поставить у алиаса галочку Optional.
Написал еще вот такую версию скрипта, но в таком сонном состоянии я мог упустить даже очень очевидные и важные вещи :)

Код

Scriptname TESTItemScript extends ObjectReference

TESTAliasScript Property AuraSource Auto
Spell Property StrongSpell Auto
Spell Property WeakSpell Auto

Event OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer)

     If (akNewContainer)
         AuraSource.ForceRefTo(akNewContainer)
         AuraSource.SpellToCast = WeakSpell
         AuraSource.Carrier = akNewContainer
     Else
         AuraSource.ForceRefTo(Self)
         AuraSource.SpellToCast = StrongSpell
         AuraSource.Carrier = Self
     EndIf

     AuraSource.RegisterForSingleUpdate(1.0)

EndEvent

;====================================================================

Scriptname TESTAliasScript extends ReferenceAlias

Spell Property SpellToCast Auto
ObjectReference Property Carrier Auto

Event OnLoad()
     RegisterForSingleUpdate(1.0)
EndEvent

Event OnUpdate()
     If (Carrier.Is3DLoaded())
         SpellToCast.Cast(Carrier)
         RegisterForSingleUpdate(1.0)
     EndIf
EndEvent


ceil100  Offline  Сообщение №1107 написано: 23 июня 2014, 02:17


ArielRebel


117
Кто нибудь знает как можно в MCM-меню мода прицепить регулировку урона оружия?
Чтобы fDamageWeaponMult изменять динамически из меню.
В Реквием это реализовано, но так и не смог разобраться как самому это сделать.
Подскажите кто знает плз

Dsion  Offline  Сообщение №1108 написано: 23 июня 2014, 19:23 | Отредактировано: Dsion - 23 июня 2014, 19:24



Можно еще кастом... Если на квесте SomeQuest есть скрипт SomeQuestScript, то можно вот так:

Quest Property SomeQuest Auto

Event OnInit()
(SomeQuest As SomeQuestScript).Func()
EndEvent

Я как-то для одного мода сильно извратился и получилось использовать папирус почти как нормальный объектно-ориентированный язык программирования... То есть, создавать свои классы, передавать и возвращать их из функций. Но это уже вряд ли кому-то тут надо.

Kepper  Offline  Сообщение №1109 написано: 30 июня 2014, 10:05



860
Мне надо хранить в игре для произвольного числа заклинаний(spell) одно значение типа int(номер варианта).

Внутри скрипта мне хранить не хочется так как при обновлении это скорее всего затрется.

Пока что я придумал так:
Сделать контейнер и в него класть книги заклинаний. Книга указывает тип заклинания, их количество в контейнере - номер варианта.

Может быть кто-нибудь подскажет более хороший вариант?
Создавать для каждого заклинания глобальную переменную не хочется.

Kepper  Offline  Сообщение №1110 написано: 30 июня 2014, 11:46



860
MemoriaVetusta, У пользователя работала одна версия скрипта. Он устанавливает новую версию.
Разве не должен в этот момент скрипт перезапуститься?

Да и я хочу чтобы скрипт завершался после выполнения. Так как там выделяется память. На глазок скрипт будет использован за игру всего раз 40 и содержит кучу массивов которые едят память. Поэтому чего им засорять сохранения.
Можно конечно соорудить отдельный скрипт хранилище. Но идея с контейнером мне пока больше нравится.

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





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