• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней. • Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней. • При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС. • При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "+" полезного сообщения.
Сообщения, не относящиеся к вопросам по скриптам Papyrus, ответам на них или уточнениям, являются оффтопом и могут быть удалены.
Красное солнце Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
nepewka, идеи есть, только не понял, зачем это тебе вообще. Куда стреляет пушка? Похоже, маркер цели задается на основе того, куда смотрит актер с этим маг. эффектом.
Чтобы один скрипт создал сразу 5 пушек, нужно, во-первых, избавиться от обновления, т.к. оно задает новую точку стрельбы (в одной форме может быть только одно обновление onupdate()). Вместо него использовать While. Оформить все в виде функции, которая будет вызвана при старте эффекта 5 раз.
Или: в основное заклинание добавить еще 4 доп. эффекта. Каждый доп. эффект должен являться копией основного, и у него должен быть этот скрипт. Как-то так, в общем.
Изменение репутации для пользователя nepewka
nepewkaOffline
Сообщение №2162
написано: 27 июля 2016, 19:26
| Отредактировано: nepewka - 27 июля 2016, 19:30
в первую очередь для личного пользования и удобства , никаких модов я не делаю. Так , для себя. Понравилась какая-нибудь механика , записал её для себя , сохранил. В этом списке , кстати , уже не малый вклад от тебя))
В идеале хотелось бы , чтобы все 5 или сколько там угодно пушек , работали и стреляли посредством одного скрипта без дубликатов MGEF. А в двойном идеале , чтобы потом при добавлении второго эффекта в заклинание вызова пушки (с таким же MGEF как и у первого эффекта на вызов 5 пушек), они стакались и работали так , чтобы вызывалось в конечном счёте 10.
Короче говоря , хочется удобства и вариативности, поэтому обращаюсь к тебе)
Добавлено (27 Июля 2016, 22:26) --------------------------------------------- попробовал действовать по твоему совету , убрал апдейт , поставил While. стрельба действительно задавалась в апдейте , как итог у меня получилось так , что из 1 пушки теперь вылетает 5 снарядов. при добавлении второго такого эффекта с этим же MGEF в спелл , работает только один из них/
Вообщем-то почти получилось сделать то, чего я и хотел изначально. Ведь за 1 апдейт тайм вылетает 5 снарядов , что равносильно 5 пушкам. Но при вызове этого заклинания ещё раз - пушка пропадает , а хотелось бы , чтобы она оставалась и работала как Fire and Forget и чтобы одинаковые MGEF стакались
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №2163
написано: 27 июля 2016, 19:35
| Отредактировано: Multigone - 27 июля 2016, 19:40
Конечно , как всегда буду рад увидеть твой вариант в действии)
Добавлено (28 Июля 2016, 10:39) ---------------------------------------------
Цитата Multigone
Чтобы это происходило, нужно убрать архетип Scripts, и вместо него поставить ValueMod (параметр Morality, к примеру).
не знаю о каком Morality была речь в effect archetype (это же вроде что-то там из Actor , не?) , но , действительно помогло. Теперь всё стакается и через многократный каст и через одинаковый MGEF) всё стало в разы удобнее, спасибо
пол дела сделано , осталось победить скрипт
Добавлено (28 Июля 2016, 15:36) --------------------------------------------- дошло о чём ты, у меня в параметер здоровье там стоит , но я не заметил что оно какой-то эффект оказывает на меня (в эффекте прописано на себя) , можно None поставить в принципе
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №2165
написано: 28 июля 2016, 14:35
| Отредактировано: Multigone - 28 июля 2016, 17:45
Activator Property FXEmptyActivator Auto Activator Property ORD_Smh_DwarvenAutocannon_Activator Auto Float Property ORD_ShootZ Auto Float Property ORD_DistanceInFront Auto Float Property ORD_UpdateRate Auto Float Property ORD_DistanceZ Auto Spell Property ORD_Smh_DwarvenAutocannon_Spell_Proc Auto Sound Property ORD_Smh_DwarvenAutocannon_Marker_Deploy Auto Sound Property ORD_Smh_DwarvenAutocannon_Marker_Destroyed Auto
Perk Property ORD_Smh30_RemoteControl_Perk_30 Auto Activator Property ORD_Smh_DwarvenAutocannon_Activator_RemoteControl Auto Float Property ORD_RemoteControlDist Auto
Int Property ORD_Electrobolt Auto Spell Property ORD_Smh_DwarvenAutocannon_Spell_Proc_Electrobolt Auto Explosion Property ORD_Smh_DwarvenAutocannon_Explosion_Electrobolt Auto Perk Property ORD_Smh50_Electrobolt_Perk_50 Auto
Perk Property ORD_Smh80_SpinUp_Perk_80 Auto Float Property ORD_SpeedUpDelta Auto
Perk Property ORD_Smh70_FiringLine_Perk_70 Auto Float Property ORD_AngleDelta Auto Float Property ORD_Min Auto
MiscObject Property ORD_Smh_DwarvenAutocannon_Misc Auto
Actor TargetActor Int iC = 5 ; Количество пушек. Bool bF
Event OnEffectStart(Actor akTarget, Actor akCaster) TargetActor = akTarget RegisterForSingleUpdate(0.0) EndEvent
Event OnEffectFinish(Actor akTarget, Actor akCaster) bF = true EndEvent
Multigone, спасибо. Встречался с заклинаниями , которые вызывают какой-либо шторм и снаряды при этом кастуются с неба ? (метеоритный дождь или вызов шторма (такой крик вроде в оригинальной игре есть)
так вот , вопрос. такие заклинания , как правило , работают только Outdoor , то есть на открой площади , вне подземелий и строений. (также как и вызов дракона , работает только на улице)
Можно ли как-нибудь сделать , чтобы они работали везде , в том числе и в подземельях ?
nepewka, формально да. Но маркер, создающий заклинание, располагается высоко в небе. В подземельях он будет выше потолка, в результате метеорит никуда не прилетит. Ну, мне так кажется.
Изменение репутации для пользователя Нарада
НарадаOffline
Сообщение №2170
написано: 30 июля 2016, 11:29
| Отредактировано: Нарада - 30 июля 2016, 11:44
Здравствуйте, у меня назрел такой вопрос. Пытаюсь сделать, чтобы дерево нельзя было срубить без топора. Выбрал для этого случая объект Flora, там есть поле для скрипта. Написал простенький активатор, но не тут-то было. Активатор работает, но первой срабатывает обработка Flora - мол "бревно" добавлено, а потом появляется надпись, об отсутствии инструмента. Кто-нибудь знает, как перехватить обработку Flora или обмануть ее?
Написал вот такой код через блокировку, но не помогло
miscobject property Item01 auto miscobject property Item02 auto
message property Message01 auto Int property ItemCount = 1 auto
Event onActivate(ObjectReference akActorRef)
if akActorRef.GetItemCount(Item01 as form) == 0 self.BlockActivation(true) Debug.Notification("У вас нет топора") endIf if akActorRef.GetItemCount(Item01 as form) >= 1 self.Activate(akActorRef, true) ;Game.GetPlayer().AddItem( Item02, 1) endIf endEvent
Multigone, привет понравилась тут одна механика в моде перма.
заклинание, которое при активации "оживляет" экипированный на нас меч в правой руке (а если есть ещё один перк, то и в левой) как это работает: через скрипт вызывается невидимой расы Actor и ему присваивается наше оружие.
визуально это выглядит как: просто появляется летающий меч , который летает и атакует врагов.
что мне не нравится в суммонах-мечниках (например дремора) , что если их вызвать 10 штук , из-за своего большого размера , 3-4 из них окружат одну цель и будут её атаковать , а другие 6-7 будут бегать вокруг и тупить, так вот , вопрос:
в случае с этой механикой и невидимой расой actor , можно ли сделать так , чтобы эти мечи накладывались друг на друга (как например двемерские автопушки из твоего скрипта) и атаковали все сразу и многократно ???
а не так как дреморы: несколько атакуют , остальные тупят. То есть в идеале хотелось бы так , чтобы сколько угодно этих невидимых actorov-мечей я бы не вызывал , все из них могли бы одновременно наносить удары
Нарада, если перк только для игрока, то можно выдать через маг. эффект (Perk to apply), можно скриптом в любом месте (Game.GetPlayer().AddPerk(MyPerk)).
То есть, перк нужно запустить и он уже будет отрабатывать при каждой последующей активации (независимо чего) и сработает только на той, которая определена скриптом у него. Так?
Нарада, при каждой активации чего угодно будет обрабатываться скрипт. Если скрипт пустой, то никакого контекстного действия при нажатии кнопки активации не будет происходить.
Изменение репутации для пользователя nepewka
nepewkaOffline
Сообщение №2178
написано: 1 августа 2016, 07:57
| Отредактировано: Multigone - 23 апреля 2020, 14:51
а какие эвенты для кастов спеллов мы можем использовать в Activator'e ?
Допустим есть заклинание , оно вызывает взрыв , взрыв в свою очередь вызывает Placed Object (допустим коробку, которая будет во вкладке Activator) Какие скрипты можно использовать на этой коробке ?
Видел , как в перме для кастов спеллов подобным образом использовался Event OnHit
Код
Scriptname xMAALTSpellPrismScript extends ObjectReference int toDestruct = 10
explosion property xMAALTSpellPrismCreateExplosion auto explosion property xMAALTSpellPrismDestroyExplosion auto
Activator Property FXEmptyActivator Auto
spell property xMAALTSpellPrismDestructionspell Auto spell property xMAALTSpellPrismAlterationspell Auto spell property xMAALTSpellPrismConjurationspell Auto spell property xMAALTSpellPrismRestorationspell Auto spell property xMAALTSpellPrismIllusionspell Auto
idle property IdlePickup_ground auto miscobject property IgnotGold auto int property count = 8 auto int property myresourceCount = 8 auto bool property dayly = true auto int property multiRes = 8 auto int property multHour = 24 auto String property String01="Вы забрали" auto String property String02=" золотых слитков. Готово к отправке еще " auto String property Warning="Шахтеры еще не добыли достаточно руды для переплавки, вернитесь позже." auto int count01 int hoursImport Utility Import Mathevent onload() Hours = floor(GetCurrentGameTime()*24) count01=count endevent Event OnActivate(ObjectReference akActionRef) BlockActivation(true) if (hours)+multHour <= (floor(GetCurrentGameTime()*24)) && (Count01<count) count01=count01+multiRes*(floor(GetCurrentGameTime()*24)-hours) hours=floor(GetCurrentGameTime()*24) endif ;debug.Messagebox(count01+" "+hours+" "+(floor(GetCurrentGameTime())*24)) if count01>0 if count01>count count01=count endif dayly=true if (akActionRef==game.getPLayer()) && dayly && (count01>=myResourceCount) game.getplayer().PlayIdle(IdlePickup_ground) wait(2) game.getPLayer().additem(Resource, myResourceCount) count01 = count01 - myResourcecount debug.messagebox(String01+" "+myResourceCount+" "+String02+count01) endif elseif (count01<=0)||(count01<=myResourceCount) dayly=false debug.messagebox(Warning) endif BlockActivation(false) endevent
Starting 1 compile threads for 1 files... Compiling "_KM_ActivatorOreScript"... F:\Skyrim - Legendary Edition\Data\Scripts\Source\temp\_KM_ActivatorOreScript.psc(14,4): Unknown user flag Utility F:\Skyrim - Legendary Edition\Data\Scripts\Source\temp\_KM_ActivatorOreScript.psc(15,17): required (...)+ loop did not match anything at input 'onload' No output generated for _KM_ActivatorOreScript, compilation failed.
Batch compile of 1 files finished. 0 succeeded, 1 failed. Failed on _KM_ActivatorOreScript
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №2180
написано: 1 августа 2016, 10:11
| Отредактировано: Multigone - 1 августа 2016, 10:18
взрыв ведь вызвать можно через placeatme, а заклинание ?
Не понял вопрос - заклинание что? Взрыв может существовать сам по себе, а заклинание может только накладываться на актеров. Способ, которым оно будет доставлено актеру, зависит от его типа. Как частный случай, можно выбрать снаряд.
idle property IdlePickup_ground auto miscobject property IgnotGold auto int property count = 8 auto int property myresourceCount = 8 auto bool property dayly = true auto int property multiRes = 8 auto int property multHour = 24 auto String property String01="Вы забрали" auto String property String02=" золотых слитков. Готово к отправке еще " auto String property Warning="Шахтеры еще не добыли достаточно руды для переплавки, вернитесь позже." auto int count01 int hours
Я так понял, этот скрипт заставляет некий объект, когда тот получает хит, создавать такое же заклинание (по кругу?), каким его ударили.
механика интересная.
типа да , попадаешь заклинанием в объект - он по кругу - по всем сторонам выпускает 18 (или 21, не понял по коду скрипта?) снаряда я вот тоже по-началу думал , что заклинания , каким его ударили , только в скрипте в properties стоят ссылки на определенные спеллы , следовательно нет...
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №2182
написано: 1 августа 2016, 11:46
| Отредактировано: Multigone - 1 августа 2016, 11:51
nepewka, а что нужно-то? Чтобы объект творил заклинание? Если в Cast() не указать цель, объект-не-актер должен стрелять заклинанием Aimed куда-то в одну точку (думаю, по направлению одной из его осей). Чтобы указать цель, нужно знать ее референс. В маг. эффекте это может быть Caster \ Target, в др. скрипте - по обстоятельствам, смотря, какие задачи требуются от объекта. Цель можно найти через Find(), GetCombatTarget(), ну и через прочие функции, способные вернуть Actor или ObjectReference.
Изменение репутации для пользователя nepewka
nepewkaOffline
Сообщение №2183
написано: 1 августа 2016, 14:01
| Отредактировано: nepewka - 1 августа 2016, 14:07
У игрока есть заклинание , которое при взрыве Placed Object'ом вызывает некий объект будь-то коробка или ещё что или же вызывает его многократно если надо, функцией в скрипте заклинания MGEF target.placeatme(activator_korobka, 10)
этот объект/ы появляются на короткое время (30-60сек) и наводят шорох , затем исчезают. (их работу мы уже прописываем в отдельных скриптах во вкладке Activator)
как по мне прикольное заклинание получилось бы ;)
только как бы сделать поуникальнее его , поинтереснее что ли ? Чтобы каждая коробка кастовала 1 условный фаербол каждую секунду или же наоборот выпускала по 18 снарядов в разные стороны раз в 10 секунд ? Предложи чего-нибудь) Спасибо
nepewka, кому, как не тебе, знать, что требуется от твоего мода. Но раз просишь подсказать "что-нибудь", вот эти идеи реализовывал в тестовом "фейерверке":
- объект стреляет снарядами в произвольном направлении, но не ниже плоскости горизонта. - объект стреляет снарядами, первый снаряд направлен вертикально вверх, затем угол Z плавно уменьшается, а снаряды летят все более полого (по кругу). Получается, как будто он раскручивается. Последние снаряды летят горизонтально. Процесс можно обратить в др. сторону.
Одновременно снаряды не могут вылетать, для обработки каждого следующего направления требуется время порядка 0.1 с.
Одновременно снаряды не могут вылетать, для обработки каждого следующего направления требуется время порядка 0.1 с.
видимо это актуально , только когда даёшь команду стрелять по разным направлениям ? Когда объект стреляет в одну точку - несколько снарядов визуально вылетают моментально (как было замечено мною с теми же двемерскими автопушками)
Добавлено (01 Августа 2016, 20:03) --------------------------------------------- Multigone, кстати , а как работает скрипт обработки стрельбы ? допустим мы заспавним в одном и том же месте 10 одинаковых коробок с одним и тем же скриптом.
Обработка стрельбы и соответственно вылет снарядов будет производиться одновременно для каждой коробки ? То есть задержек стрельбы между 1 , 4, 7 и 10 коробки не будет ? По идее
nepewka, подозреваю, частично это зависит от вычислительной мощности процессора. Если создать одновременно много объектов с тяжелыми скриптами на них, обработка каждой копии должна быть замедлена. Я не знаю, короче. Умозрительные выводы бывают ошибочны.
Изменение репутации для пользователя nepewka
nepewkaOffline
Сообщение №2187
написано: 2 августа 2016, 07:02
| Отредактировано: Multigone - 23 апреля 2020, 14:58
Multigone, ну пока решил начать с самого простого:
есть заклинание (малая способность), при касте которой в цель вылетает снаряд. При соприкосновении он создает 10 коробок (Вот здесь вопрос, как сделать ? Чтобы он размещал 10 Placed Object'ов активатором или взрывом через Placed Object в Explosion ? Я так думаю, без разницы? ) Скрипт в MGEF снаряда (Fire and Forget, aimed):
Код
scriptname aA11 extends ActiveMagicEffect
activator property OurBox auto explosion property BoxExplosion auto
Cкрипт самого Placed Object'a в Activator. Вот тут 2 вопроса: нужен ли маркер, как было с двемерскими автопушками ? и как быть с временем работы ? Я не совсем понял. В MGEF у нас есть Duration и OnEffectFinish, мы таким способом можем закрыть WHILE, а как его закрыть здесь, чтобы коробка проработала ровно 30 секунд ? 10 коробок простоят 30 секунд, выпуская по 1 фаерболлу раз в 1,5 секунды в цель, куда смотрит персонаж :
Код
scriptname aA22 extends ObjectReference
Activator Property FXEmptyActivator Auto Actor property playerref auto
Spell property Fireball auto
int WorkTime = 0 float CharacterAngle float ShootTime = 1.5
Multigone, прошарив нексус на поиск модов по рунам , не нашёл ничего интереснее , чем модов на изменение ренжа каста рун + измнение самого капера рун.
Лично мне , не нравится в рунах то , что они ставятся только по одной руне за раз(в смысле за 1 каст). Их нужно часто перекастовывать , направляя курсор на землю , что ни есть удобно.
Хотелось бы сделать заклинание , в котором за 1 каст рун , их будет ставится допустим сразу 3 , причём не в 1 месте , а как-то так: х - 3 руна (шаг вперед) х - 2 руна (шаг вперед) х - 1 руна (на которую мы навели курсор)
Вообще , кастануть 3 руны сразу в принципе не проблема. Можно воспользоваться скриптом OnSpellCast через формлист можно даже как-нибудь через костыли: вызвать 3 взрыва через скрипт , а во взрыве поставить Projectile рун (на сколько я помню руны работают именно через Projectile > Explosion) , но тут сложнее будет.
Самое сложное конечно это сделать так , чтобы кастанув первую , другие две поставились не в 1 месте там где первая, а чуть в других
Добавлено (03 Августа 2016, 15:11) --------------------------------------------- как-то так , всё работает, только: 1) как бы сделать так, чтобы ставились они всё же чуть подальше друг от друга , а не в 1 месте ? 2) с целью балансировки хотелось прикрутить cooldown секунд на 10 на это заклинание , это вообще возможно в редакторе ?
Код
Scriptname aa10 extends activemagiceffect
Formlist property aa auto actor target = none
Event OnEffectStart(actor t, actor c) target = t EndEvent
Event OnEffectFinish(actor t, actor c) target = None EndEvent
Event onSpellCast(Form s) if aa.hasForm(s) (s as Spell).cast(target, None) (s as Spell).cast(target, None) endif EndEvent
Multigone, можно ли вообще повесить кулдауны на обычные спеллы/зачарования в скайриме ?
вот знаю, что есть кулдаун на малой способности (но он вроде единичный для всех и задаётся в настройках), есть кулдаун на крики. А на эти вещи можно как-нибудь сделать ?