• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней. • Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней. • При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС. • При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "+" полезного сообщения.
Сообщения, не относящиеся к вопросам по скриптам Papyrus, ответам на них или уточнениям, являются оффтопом и могут быть удалены.
Красное солнце Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
Изменение репутации для пользователя Alisa1992
Alisa1992Offline
Сообщение №1081
написано: 12 июня 2014, 15:59
| Отредактировано: Alisa1992 - 12 июня 2014, 16:17
Уважаемые всем привет ! пожалуйста напишите мод для статического объекта регенерацию здоровья в области - нужен для последующего моего мода упомяну вас в описании к моду обязательно ! скиньте скрипт если напишите в лс, заранее благодарен.
MemoriaVetusta, спасибо огромное ! только можно по подробней по поводу форм: EXPL, ENCH, MGEF может сможете создать esp плагин было бы вообще замечательно чем объяснять привязку скрипта - можете закинуть любой статик в вайтран и применить скрипт на него.
Кстати тут вопрос раз уж вы разбираетесь в скриптах, скажите пожалуйста у меня была идея тут для весьма лорного мода, в общем реально ли написать скрипт который при выбрасывании оружия из инвентаря запускал бы проигрывания анимации у персонажа (у нас) то есть выкидываем меч проигрывается анимация что давакин приседает и уже потом из нашего инвентаря с небольшой задержкой (когда кончиться анимация) у нас выкидывается предмет.
Да это да сделать бы руку от первого лица которая бы брала предмета а что думаю это реально сделать ? нет ? за esp спасибо буду ждать ) а про задержку проблемка конечно ) ну ладно не суть важно, а просто значит можно прикрутить к действию одевания предмета и выкидывания анимацию ? надо надо если можно сделать )
Изменение репутации для пользователя Aksyonov
AksyonovOffline
Сообщение №1086
написано: 13 июня 2014, 13:55
| Отредактировано: Aksyonov - 13 июня 2014, 13:58
MemoriaVetusta, спасибо ещё раз ! очень мне помогаешь коллега ) скажи а как долго ты занимаешься скриптингом и вообще сколько времени нужно на это убить ? я просто прихожу к выводу что столько бы мог всего реализовать если бы сам умел писать скрипты.. эх долго изучать ? материалы то есть видел статьи инструкции просто много времени уделять надо наверно ? верно ? скрипта завтра протестирую отпишусь )
AkActor - что это? К кому он применяется? вот вот понимаю я сейчас на скрипты тоже так же смотрю хех что зачем кого? спс за редактирования скинишь тогда ссылку на новую версию плагина ) спасибо за тест и все остальное - значит думаю скрипты уж и не такие страшные как могут показаться надо будет учить, расскажи о себе кстати можешь написать в лс - модами занимаешься в качестве хобби где работаешь какая основная работа ? сколько времени уделяешь скайриму - ? для создания модов - кстати уже создал что то дай ссылку на твои работы
Да... Это я облажался. Не поставил .0 после целых чисел и c++ всё неправильно посчитало.
В любом случае, это всё фигня... Вот моя редакция формулы: int phase = qFloor((time + 23.5)/3.0) % 8; Это если фаза начинается в полдень (как в оригинале).
Или даже еще проще: int phase = qFloor(time/3.0) % 8; Если фаза начинается в полночь.
И всё тут.
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №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.
Я формулы в Qt проверял и оттуда скопировал... У Qt чуть ли не всё на "q" или "Q" начинается... Для папируса действительно надо просто Floor, а остальное без изменений.
Изменение репутации для пользователя Munky
MunkyOffline
Сообщение №1093
написано: 18 июня 2014, 06:27
| Отредактировано: Munky - 18 июня 2014, 06:43
Вот такой вопрос. Хочу сделать что то вроде автомата, который бы стрелял в частности дротиками из нордских ловушек. Лук автоматическим сделать не получается, поэтом решил сделать посох и зачарование для него, который будет работать по принципу лука/арбалета в том смысле, что будет расходовать некоторый вид боеприпаса. Как такое описать? Пока делаю примерно так (висит на магическом эффекте, который используется в зачаровании, эффект Concentration):
Ну если задача именно так стоит... Наверное, в энчанте понадобилось бы два магических эффекта:
1. Концентрация на цель. С кастомными Projectile. Метает Projectile и наносит урон. Но урон-то магический. Я не помню точно, можно ли установить физическую защиту как ресист для магического эффекта. Надо проверить. Для создания этого эффекта можно скопировать эффект с обычного "Пламени".
2. Концентрация на самого себя. Со скриптом, который отбирает стрелы каждую секунду и прерывает каст, если стрел нету. Зачем этот эффект? Тебе ведь нужно, чтоб стрелы отбирались постоянно во время стрельбы, а не только тогда, когда ты в кого-то попадаешь.
Кастомные Projectile очень легко создать. Для тестов можно даже обычные стрелы использовать.
Вот.. Но это только те мысли, что сразу пришли. Может, есть и поинтереснее способы.
Но какой от этого всего толк, если нельзя указать физическую защиту как ресист...
Тоесть, можно, конечно, сделать скрипт, который будет высчитывать урон, основываясь на броне цели и навыке стрельбы кастера... Но как-то это криво. Разобраться бы, как обычное оружие автоматическим сделать. Или, возможно, стреляющие длинными очередями.
Изменение репутации для пользователя Munky
MunkyOffline
Сообщение №1097
написано: 18 июня 2014, 10:56
| Отредактировано: Munky - 18 июня 2014, 11:22
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 в одном зачаровании?
Munky, деталей сейчас не помню, но год назад я пытался перетащить в свой мод арбалеты, при условии, что я делаю моды только независящие от дополнений. И мне это не удалось. Дело в том, что для арбалетов используется своя анимация. Но это ещё пол беды. Анимация эта заточена на изменённую систему ВСЕЙ анимации, и это изменение происходит в Даунгарде
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №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, а ты боезапас экипируешь? Если да, то за одно обновление будет съедаться 2 ед. боезапаса.
Да? Если экипированы, сами расходуются? Так даже лучше. Можно обойтись одной функцией IsEquipped(дротик) вместо проверки количества и удаления.
Но там основная проблема в другом... Если персонаж держит в руках стрелковое оружие, то всё круто. А если держит некоторые другие виды оружие, то 1) оружие становится невидимым 2) дротики летят не совсем точно туда, куда целишься. Посох как-раз к таким "другим" видам относится. Как бы так сделать включение и отключение пулемета без использования посоха?
Изменение репутации для пользователя Munky
MunkyOffline
Сообщение №1101
написано: 19 июня 2014, 09:33
| Отредактировано: Munky - 19 июня 2014, 07:42
Я угарнул - сделал посох с моделькой лука. однако прикольно. лук древний драугровский, так что даже похож на посох когда его держат как посох. А насчет скрипта. Запилил кароч) круто) ток анимашку надо починить. Выставлю на AttackLoop - гляну. + надо его сделать все таки двуручным
Добавлено (19 Июня 2014, 11:44) --------------------------------------------- Ток я полагаю на голом Update - е работало бы) написал вот так:
Добавлено (19 Июня 2014, 11:46) --------------------------------------------- 12 выстрелов в секунду сделал (0.083333 задержка). Расход боезапаса - жестокий) Зато весьма неплохой урон, если попадать по цели
Добавлено (19 Июня 2014, 12:18) --------------------------------------------- Как задать анимацию атаки? Что то Attack Anim вообще не канает. Хотелось бы чтобы проигрывалась анимация либо посоха направленного на цель либо, в идеале, часть анимации стрельбы из лука, но так, чтобы предмет не воспринимался как лук
Добавлено (19 Июня 2014, 13:33) --------------------------------------------- Еще вопрос. Хочу скриптом снять любые боеприпасы, какие бы не были одеты на некоторого Актера. Пока делаю через итерирование по FormList`у, однако он не может учитывать боеприпасы, о которых не знает мой плагин. (например болты из официальных дополнений). Function UnequipItemSlot(int aiSlot) - казалось бы идеальное решение, однако! Не могу найти ID слота для боеприпасов Везде выложены лишь слоты брони
Если задуматься, то не круто это всё... Скорее всего, DPS у такого скрипта будет зависеть от производительности компьютера и частоты смены кадров. Но других идей нету пока...
от производительности компьютера и частоты смены кадров.
Вообще да, но, я полагаю, ловушки с дротиками устроены аналогично. + если я все таки не буду проверять все виды боеприпасов - ничего сильно тормозящего в самом скрипте нет (а с проверкой - появляются значительные задержки. где-то 0.5 сек вместо 0.083). Замечательно то, что урон зависит от урона пушки Оо. Ну и в принципе я к этому посоху указал навыка стрельбы. Поиграв уже с пару часиков пришел к выводу что дамаг просто непозволительно большой, пока хватает дротиков. ну во всяком случае до 10-20 уровня вещь весьма эпична и разносит все и вся. Прост пулемет. Делать дротики дороже наверно не целесообразно, вероятно лучше просто резать урон. Считайте 40 дротиков у меня крафтится из Железного слитка и Костной муки. расходуются они за 3 с лишним секунды. но 3-4 дротика сливают в 0 небоевых актеров
1. Я бы очень не рекомендовал использовать RegisterForUpdate вообще. Даже на creationkit.com об этом написано длинное предупреждение: http://www.creationkit.com/RegisterForUpdate_-_Form Если пользователь отключит твой мод, эта регистрация так и останется висеть в сейве навсегда. И это только одна из многих проблем, связанных с этой функцией.
2. Допустим, есть простое кольцо, не занесенное ни в какой алиас. Когда оно у тебя в инвентаре, у него НЕТУ собственного ID. И оно не может регистрироваться для каких-то событий. Когда выбрасываешь в мир, оно получает ID. Берешь в инвентарь - теряет ID. Выбрасываешь - снова получает ID, но уже другое. Это еще одна причина не использовать RegisterForUpdate...
Теперь ближе к вопросу:
1. Для первого варианта надо обеспечить, чтоб у кольца всегда было собственное ID. Запихивание в алиас должно помочь... А потом алгоритм такого типа: - каждую секунду кольцо определяет, лежит ли оно в чьем-то инвентаре. - если НЕ лежит, то проверят, загружена ли его модель. Если загружена, колдует заклинание. - если лежит в инвентаре, проверят, загружена ли модель того, у кого оно лежит. Если загружена, колдует другое заклинание от имени того, у кого лежит.
В принципе, никакого ущерба производительности игры одна маленькая проверка раз в секунду не нанесет... Но можно и по-другому.
2. Если кольцо валяется в мире, то просто начинает кастит вокруг себя ауру после OnLoad. Но если попадает к кому-то в инвентарь, то оно запихивает своего НОСИТЕЛЯ в алиас квеста. А на алиасе уже скрипт, ивент OnLoad и каст ослабленной ауры.
3. Предыдущее варианты подходят только тогда, когда предмет уникальный или их мало. Есть еще вариант, который позволит штамповать предметы в любом количестве... Если будет нужно, тоже напишу...
Ну это то, что сходу придумалось. Может, есть и лучше способы...
Я что-то уже засыпаю и торможу очень... Но, вроде, уже похоже на правду... Важно не забыть поставить у алиаса галочку Optional. Написал еще вот такую версию скрипта, но в таком сонном состоянии я мог упустить даже очень очевидные и важные вещи
Код
Scriptname TESTItemScript extends ObjectReference
TESTAliasScript Property AuraSource Auto Spell Property StrongSpell Auto Spell Property WeakSpell Auto
Кто нибудь знает как можно в MCM-меню мода прицепить регулировку урона оружия? Чтобы fDamageWeaponMult изменять динамически из меню. В Реквием это реализовано, но так и не смог разобраться как самому это сделать. Подскажите кто знает плз
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №1108
написано: 23 июня 2014, 19:23
| Отредактировано: Dsion - 23 июня 2014, 19:24
Можно еще кастом... Если на квесте SomeQuest есть скрипт SomeQuestScript, то можно вот так:
Quest Property SomeQuest Auto
Event OnInit() (SomeQuest As SomeQuestScript).Func() EndEvent
Я как-то для одного мода сильно извратился и получилось использовать папирус почти как нормальный объектно-ориентированный язык программирования... То есть, создавать свои классы, передавать и возвращать их из функций. Но это уже вряд ли кому-то тут надо.
Мне надо хранить в игре для произвольного числа заклинаний(spell) одно значение типа int(номер варианта).
Внутри скрипта мне хранить не хочется так как при обновлении это скорее всего затрется.
Пока что я придумал так: Сделать контейнер и в него класть книги заклинаний. Книга указывает тип заклинания, их количество в контейнере - номер варианта.
Может быть кто-нибудь подскажет более хороший вариант? Создавать для каждого заклинания глобальную переменную не хочется.
MemoriaVetusta, У пользователя работала одна версия скрипта. Он устанавливает новую версию. Разве не должен в этот момент скрипт перезапуститься?
Да и я хочу чтобы скрипт завершался после выполнения. Так как там выделяется память. На глазок скрипт будет использован за игру всего раз 40 и содержит кучу массивов которые едят память. Поэтому чего им засорять сохранения. Можно конечно соорудить отдельный скрипт хранилище. Но идея с контейнером мне пока больше нравится.
Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)