• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней. • Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней. • При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС. • При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "+" полезного сообщения.
Сообщения, не относящиеся к вопросам по скриптам Papyrus, ответам на них или уточнениям, являются оффтопом и могут быть удалены.
Красное солнце Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
Помогите со скриптом. Хочу чтобы при попадании предмета в инвентарь перед игроком появлялся двемерский паук. Скрипт компилируется нормально, но не работает.
Scriptname DwarvenSpiderRC extends ObjectReference ActorBase property DwarvenSpider auto
Event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer)
Привет народ! помагите пожалйсто мне со ксриптами я в них разбираюсь но посредствено нужна помошь в написании
1. сушество( любой не только гг) находясь в зоне тригера получает систематический урон снимаюший по 10 % хп с переодичностью в 1-2 сикунды влоть до смерти , причем на сушество в этом момент должен наклыдываться эфект электричества типа его током бьет. 2. находясь в зоне тригера гг должен плавать в воде как только гг покидает зону тригера вода изчензает, а по возврашению все повторяется, нужен скрипт такой но чтобы он распространялся только на игрока а на его спутников нет, тоесть гг плавает а компаньоны и нпс игнорируют этот эффект когбудто воды вовсе нет. 3. нужен скрипт чтобы в воремя битвы с сушеством сняв ему скажем 10% или больше хп в совокупностит или срузу, сушество телепортировалась за спину игроку с эфектом вызова, а при показатели звдоровья 50% и ниже появлялсиь его союзники появления союзников я знаю как сделать, но вот чтобы они на 50 и ниже хп появлялись уже нет, союзникRef.enable
Подскажите пример уже имеющегося в игре простенького скрипта, который при активации выводит меню с разными вариантами, а в каждом варианте запускается соответствующее событие. В частности - енейблятся или дизейблятся определенные объекты.
Здравствуйте, помогите кто нибудь. При установке Dawnguard я случайно Strings файлы спутал с Scripts и закинул в Scripts, тем самым стер тамошние скрипты. Теперь игра не включается. Кто нибудь даст мне эти скрипты в формате PEX ? Вот что я послал на замену Dawnguard_Russian.DLSTRINGSDawnguard_Russian.ILSTRINGS Dawnguard_Russian.STRINGS Skyrim_Russian.DLSTRINGS Skyrim_Russian.ILSTRINGS Skyrim_Russian.STRINGS Update_Russian.DLSTRINGS Update_Russian.ILSTRINGS Update_Russian.STRINGS
А можно как-нибудь сделать так, чтоб факел не исчезал, когда прогорит? Это я хочу сделать крафтабельный и носибельный фонарь. Задумка такая: гг куёт фонарь, делает или надыбывает свечку, оснащает фонарь этой свечкой = фонарь светит. Потом свечка прогорает = фонарь не светит, но и не исчезает, а остаётся в инвентаре гг без свечки и ждёт, когда его заправят. Как это можно реализовать? Помогите, пожалуйста!
Koxae, В этом моде фича в том что скрипт уподобляет факелу фонарь, свечи внутри отдельная модель она тоже подогнана под руку так чтобы находилась равномерно с фонарем. Сам фонарь будет бесконечно находиться в руке тк не имеет параметров времени присущие факелу, он является Miscitem а не Light. Но эти параметры есть у свечей и они заданы -1(вечности и бесконечности). Возможно это то что надо, поменять значения свеч, они будут исчезать а фонарь возможно останется в руке пустым...а может и не останется, надо смотреть.
Добавлено (21.04.2013, 20:56) --------------------------------------------- Проверил...нет не будет. Видимо скрипт удерживает две модели как одну, исчезают свечи и фонарь за ними пропадает.
Отними у меня апельсин - и я тебя убью Съешь мой апельсин - и я тебя убью Подари мне апельсин - и... я тебя убью Мне не нужен никто, лишь мой апельсин А тот кто не пойман - не ассасин!
Никак не могу увеличить шанс прока на мгновенное убийство Бритвой Мерунеса. Вроде этот скрипт, но любые манипуляции с кодом не дают результат. Не подскажите в чем проблема?
Никак не могу увеличить шанс прока на мгновенное убийство Бритвой Мерунеса. Вроде этот скрипт, но любые манипуляции с кодом не дают результат. Не подскажите в чем проблема?
Я в скриптах конечно не понимаю, но может ввести переменную(Property) Int value? И в коде как-то указать это...
Играю в Mass Effect 3, пишите в ЛС поиграем вместе!
Я в скриптах конечно не понимаю, но может ввести переменную(Property) Int value? И в коде как-то указать это...
Кстати, может, уже существует глобальная переменная в списке Globals? В Обливионе для много чего, что там изначально разработчики сделали, использовало глобальные переменные - типа квеста Умбакано, например, или Темного братства.
Изменение репутации для пользователя slastik
slastikOffline
Сообщение №195
написано: 30 апреля 2013, 07:51
| Отредактировано: slastik - 29 апреля 2013, 15:20
Подскажите, как задать время респауна для отдельного объекта (растение). Ситуация следующая - нужно, чтобы после активации объект был бы готов к повторной активации через определенное время. Можно ли прикрутить к нему скрипт на респаун? Теоретически я понимаю, что в скрипте нужно прописать срок, через который объект сам удалится и заменится на новый аналогичный. На практике не знаю как реализовать. Взял для примера скрипт на замену заклинаний из шапки. Понимаю, что нужно заменить строку
Event OnEffectStart(Actor akTarget, Actor akCaster)
Как изменить эти строки, чтобы объект сам удалился и заменился на новый? Самостоятельно никак не разберусь. Постигаю скриптописание чисто интуитивно, разбирая для примера чужие готовые скрипты. Может есть более простой способ? Буду благодарен за любую помощь.
Доброго дня парни, и девушки. В общем возник по скриптам следующий Вопрос: в интернетах (на нексусе) наткнулся на мод, делающий быстрые перемещения на драконах в реальном времени. И сразу же возникла мысль - можно-ли заскриптовать дракона так, чтобы при нажатии определённой клавиши он летел в торону маркера, установленного игроком ?
Добавлено (07.05.2013, 09:33) --------------------------------------------- Доброго дня парни, и девушки. В общем возник по скриптам следующий Вопрос: в интернетах (на нексусе) наткнулся на мод, делающий быстрые перемещения на драконах в реальном времени. И сразу же возникла мысль - можно-ли заскриптовать дракона так, чтобы при нажатии определённой клавиши он летел в торону маркера, установленного игроком ?
Добавлено (07.05.2013, 09:34) --------------------------------------------- Извините за повтор, с телефона пишу
...Homing Missile, что в переводе означает: ракета-хомяк
Razum13, а зачем тут скрипт. Мап маркер делаем чтобы он отображался на карте и быстрое перемещение туда работает как обычное и на драконе.
Отними у меня апельсин - и я тебя убью Съешь мой апельсин - и я тебя убью Подари мне апельсин - и... я тебя убью Мне не нужен никто, лишь мой апельсин А тот кто не пойман - не ассасин!
Razum13, кидаешь на землю MapMarker открываешь его редактирование - в раздел Marker Data вписываешь название и выбираешь иконку для карты, ставишь флажок на Can travel too
Отними у меня апельсин - и я тебя убью Съешь мой апельсин - и я тебя убью Подари мне апельсин - и... я тебя убью Мне не нужен никто, лишь мой апельсин А тот кто не пойман - не ассасин!
Изменение репутации для пользователя AleksTirex
AleksTirexOffline
Сообщение №201
написано: 10 мая 2013, 21:49
| Отредактировано: AleksTirex - 10 мая 2013, 21:53
Никак не могу увеличить шанс прока на мгновенное убийство Бритвой Мерунеса. Вроде этот скрипт, но любые манипуляции с кодом не дают результат. Не подскажите в чем проблема?
В строке If (Utility.RandomInt() <= 1) цифра "1" - это шанс 1%, если поставишь 50 - будет 50%, строку удалишь (+ End) - мгновенное убийство.
Как сделать, чтобы после того, как заканчивается диалог, экран темнел(FadeIn), к игровому времени + 2 часа(например до того как диалог был активирован было время в игре 13.00, а после 15.00), через 5 секунд экран светлел(FadeOut)?
Добавлено (11.05.2013, 09:09) --------------------------------------------- Пытаюсь сделать так, чтобы после окончания диалога добавлялся AI пакет. Сделал 2 алиаса DGFAliasNPCSerana и DGFAliasPackageSerana. Назначил Properties(DGFNPCSerana, DGFPackageSerana присвоил им зачения), но возникают вот такие ошибки:
I:\Games\The Elder Scrolls 5.Skyrim.v 1.7\Data\Scripts\Source\temp\AaaDGF_TIF__0300CE09.psc(12,17): ForceRefTo is not a function or does not exist I:\Games\The Elder Scrolls 5.Skyrim.v 1.7\Data\Scripts\Source\temp\AaaDGF_TIF__0300CE09.psc(13,13): EvaluatePackage is not a function or does not exist
вот фрагмент кода:
Код
;BEGIN FRAGMENT Fragment_3 Function Fragment_3(ObjectReference akSpeakerRef) Actor akSpeaker = akSpeakerRef as Actor ;BEGIN CODE DGFPackageSerana.ForceRefTo(DGFNPCSerana) DGFNPCSerana.EvaluatePackage() ;END CODE EndFunction ;END FRAGMENT
Кто знает в чем проблема?
Изменение репутации для пользователя AleksTirex
AleksTirexOffline
Сообщение №203
написано: 11 мая 2013, 12:26
| Отредактировано: AleksTirex - 11 мая 2013, 13:10
Как сделать, чтобы после того, как заканчивается диалог, экран темнел(FadeIn), к игровому времени + 2 часа(например до того как диалог был активирован было время в игре 13.00, а после 15.00), через 5 секунд экран светлел(FadeOut)?
Это можно сделать через ImagespaseModifier Его создать самому или найти такой готовый в списке. Если кто помнит, где применялся такой эффект затемнения (квестовое действие, скрипт и т.д.), то можно найти.
Скрипт на его применение зависит от выбранного варианта ImagespaseModifier, и будет примерно такой:
1. На одном ImagespaseModifier:
ImageSpaceModifier Property IntroFX Auto ; назначается нужный эффект
introFX.apply(1.0) ; 1.0 - амплитуда эффекта (регулируется подбором) Utility.Wait(3.0) ; длительность эффекта (она прописана в самом эффекте) IntroFX.remove()
2. На двух ImagespaseModifier (убывание яркости и её восстановление):
ImageSpaceModifier Property IntroFX Auto ImageSpaceModifier Property OutroFX Auto
introFX.apply(1.0) ; 1.0 - амплитуда эффекта (регулируется подбором) Utility.Wait(1.5) ; длительность эффекта (она прописана в самом эффекте) introFX.PopTo(offFX, 1.0) ; замена первого эффекта на второй, 1.0 - амплитуда эффекта Utility.Wait(1.5) ; длительность эффекта (она прописана в самом эффекте) offFX.remove()
3. На трёх ImagespaseModifier (убывание яркости, темнота и её восстановление):
ImageSpaceModifier Property IntroFX Auto ImageSpaceModifier Property LoopFX Auto ImageSpaceModifier Property OutroFX Auto
introFX.apply(1.0) ; 1.0 - амплитуда эффекта (регулируется подбором) Utility.Wait(1.0) ; длительность эффекта (она прописана в самом эффекте) introFX.PopTo(LoopFX, 1.0) ; замена первого эффекта на второй, 1.0 - амплитуда эффекта Utility.Wait(1.0) ; длительность эффекта (произвольная) LoopFX.PopTo(offFX, 1.0) ; замена второго эффекта на третий, 1.0 - амплитуда эффекта Utility.Wait(1.5) ; длительность эффекта (она прописана в самом эффекте) offFX.remove()
----------------------
"Перепрыгнуть" два часа вперёд:
GlobalVariable Property GameHour Auto
GameHour.SetValue(GameHour.GetValue() + 2)
*******************
Ошибки Не понятно, где алиасы, а где актёры. Надо так: алиас.GetActorRef().EvaluatePackage() или актёр.EvaluatePackage() алиас.ForceRefTo(актёр) Свойство алиасов должно быть ReferenceAlias, а не Alias
********************** ********************** Открой ImagespaseModifier, задублируй VC01BlackOutImod, у дубликата поменяй ID, открой его. В окошке Duration измени значение 12.000 на 5.000, ОК. Сделай скрипт:
ImageSpaceModifier Property IntroFX Auto ; назначается твой ImagespaseModifier
Пытаюсь сделать так, чтобы после окончания диалога добавлялся AI пакет. Сделал 2 алиаса DGFAliasNPCSerana и DGFAliasPackageSerana. Назначил Properties(DGFNPCSerana, DGFPackageSerana присвоил им зачения), но возникают вот такие ошибки
AleksTirex, спасибо большое! Поменял property DGFPackageSerana с Alias на ReferenceAlias, DGFNPCSerana это тоже был property alias, но его я поменял, на actor, выбрал актера и все нормально сработало!
Добавлено (11.05.2013, 18:54) --------------------------------------------- Как сделать, чтобы если стадия квеста меньше 10, то актеры скрыты(disable), а если стадия больше или равна 10, то они появились(enable)?
Еще, как сделать, чтобы если DGFNPCSerana(это актер, а не алиас) заходит в зону триггера, то у нее прекращается AI пакет(Сообщение №208), и ее перемещает к определенному месту(например к DGFMarkerMoveSerana(это XMarkerHeading))?
Как сделать, чтобы если стадия квеста меньше 10, то актеры скрыты(disable), а если стадия больше или равна 10, то они появились(enable)?
В КК на этих актёрах ставится галочка Initially Disabled, тогда они выключены по умолчанию. Если актёров мало (1-3), то можно их включать каждый отдельно: akActor1.Enable() akActor2.Enable() akActor3.Enable() назначив каждому свойству (akActor) своего НПС. Если актёров много, то лучше выбрать одного и сделать его основным. В скрипте прописать только его akActor.Enable() У всех остальных актёров во вкладке Enable Parent назначить "родителем" твоего основного актёра (в той вкладке нажать на Select Refererce...) и курсором (в виде мишени) тыркнуть на этого основного актёра. Так надо сделать со всеми остальными актёрами, которые должны быть включены.
Команда akActor.Enable() прописывается в стадийном скрипте (Papyrus Fragment) стадии №10.
*******************************
Прекратить работу пакета можно разными способами. Если пакет свой (не дефолтный), то можно через условия пакета. Всё зависит от конкретной ситуации. Например, условие "Если актёр не в какой-то локации", тогда пакет не будет работать в той локации, куда ты телепортируешь актёра. Условие "Если у актёра есть фракция @@", тогда добавляя и удаляя фракцию у актёра, пакет будет включаться и выключаться. (это желательно делать с командой EvaluatePackage). Вариантов очень много.
Скрипт тригзоны:
ObjectReference Property DGFMarkerMoveSerana Auto
Event OnTriggerEnter(ObjectReference akActionRef) if akActionRef == DGFNPCSerana ; if стадия квеста и прочее ; DGFNPCSerana.RemoveFromFaction(aSeranaFaction) - например так, для прекращения пакета DGFNPCSerana.MoveTo(DGFMarkerMoveSerana) ; endif endif EndEvent
******* Если пакет должен будет работать потом, когда актёр покинет ту локацию, куда был перемещён, то лучше всего в условиях пакета прописать "Если не в ... локации".
Открой ImagespaseModifier, задублируй VC01BlackOutImod, у дубликата поменяй ID, открой его. В окошке Duration измени значение 12.000 на 5.000, ОК. Сделай скрипт:
ImageSpaceModifier Property IntroFX Auto ; назначается твой ImagespaseModifier
Иsкатель, какой вариант включения актёров у тебя сделан? При каком ответе что должно происходить? (при каждом ответе) Поясни, тогда быстро всё поправим.
*************
Сперва перед командой Utility.Wait(5.0) поставь точку с запятой, скомпилируй. Тогда эта команда перестанет работать. Потом открой свой эффект и в окне Duration увеличивай время (5 - 15), то есть настрой как надо тебе. Цифру поменял - проверил в игре, если не нравится, то опять меняй. Потом эту окончательную цифру пропиши в команде Utility.Wait(5.0) вместо "5.0" и убери точку с запятой, скрипт скомпилируй.
При каком ответе что должно происходить? (при каждом ответе) Поясни, тогда быстро всё поправим.
При ответе "Куда ты, туда и я" срабатовает скрипт:
Код
;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment ;NEXT FRAGMENT INDEX 2 Scriptname AaaDGF_TIF__03002F9B Extends TopicInfo Hidden
Quest PROPERTY DGFReturnSoulsCairn AUTO
;BEGIN FRAGMENT Fragment_1 Function Fragment_1(ObjectReference akSpeakerRef) Actor akSpeaker = akSpeakerRef as Actor ;BEGIN CODE (GetOwningQuest() as DLC1_NPCMentalModelScript).TalkedPostQuest = true ; Чтобы NPC больше не говорил этот диалог DGFReturnSoulsCairn.SetStage(5) ; Устанавливаю стадию квеста 5, потому что имменно в этой стадии появляются(enable) актеры ;END CODE EndFunction ;END FRAGMENT
;BEGIN FRAGMENT Fragment_0 Function Fragment_0(ObjectReference akSpeakerRef) Actor akSpeaker = akSpeakerRef as Actor ;BEGIN CODE DGFReturnSoulsCairn.SetObjectiveDisplayed(10) DGFReturnSoulsCairn.SetStage(10) ; ;END CODE EndFunction ;END FRAGMENT
;END FRAGMENT CODE - Do not edit anything between this and the begin comment
При ответе "Несейчас" срабатовает скрипт:
Код
;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment ;NEXT FRAGMENT INDEX 1 Scriptname AaaDGF_TIF__03002F9E Extends TopicInfo Hidden
Quest Property DGFReturnSoulsCairn Auto
;BEGIN FRAGMENT Fragment_0 Function Fragment_0(ObjectReference akSpeakerRef) Actor akSpeaker = akSpeakerRef as Actor ;BEGIN CODE (GetOwningQuest() as DLC1_NPCMentalModelScript).TalkedPostQuest = true ; Чтобы NPC больше не говорил этот диалог (GetOwningQuest() as DLC1_NPCMentalModelScript).Dismiss() ; "Отпускает" компаньона DGFReturnSoulsCairn.SetStage(5) ; Устанавливаю стадию квеста 5, потому что имменно в этой стадии появляются(enable) актеры ;END CODE EndFunction ;END FRAGMENT
;END FRAGMENT CODE - Do not edit anything between this and the begin comment
При ответе "у меня есть дела и поважней" срабатовает скрипт:
Код
;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment ;NEXT FRAGMENT INDEX 5 Scriptname AaaDGF_TIF__0300CE09 Extends TopicInfo Hidden
Quest Property DGFReturnSoulsCairn Auto ReferenceAlias Property DGFPackageSerana Auto Actor Property DGFNPCSerana Auto
;BEGIN FRAGMENT Fragment_0 Function Fragment_0(ObjectReference akSpeakerRef) Actor akSpeaker = akSpeakerRef as Actor ;BEGIN CODE (GetOwningQuest() as DLC1_NPCMentalModelScript).TalkedPostQuest = true ; Чтобы NPC больше не говорил этот диалог (GetOwningQuest() as DLC1_NPCMentalModelScript).Dismiss() ; "Отпускает" компаньона DGFReturnSoulsCairn.SetStage(5) ; Устанавливаю стадию квеста 5, потому что имменно в этой стадии появляются(enable) актеры ;END CODE EndFunction ;END FRAGMENT
;BEGIN FRAGMENT Fragment_4 Function Fragment_4(ObjectReference akSpeakerRef) Actor akSpeaker = akSpeakerRef as Actor ;BEGIN CODE DGFPackageSerana.ForceRefTo(DGFNPCSerana) DGFNPCSerana.EvaluatePackage() ;END CODE EndFunction ;END FRAGMENT
;END FRAGMENT CODE - Do not edit anything between this and the begin comment
Иsкатель, как я понял, то у тебя при любом ответе должны появляться актёры и срабатывает стадия №5? Тогда включай основного актёра на стадии №5 (а не №10). Или добавляй эту команду прямо в скрипт топиков (в каждый топик).
Но вот "появляется только основной актёр" - этого не может быть (если правильно назначены паренты). Скорее всего там бродит другой актёр, не тот основной.
AleksTirex, добавил в топик. Теперь все появляются. Спасибо!!!=)
Есть 4 дракона, как сделать, чтобы 1 атаковал DGFNPCSerana, только, чтобы не огнем и не холодом, а просто кусал, после 2-3 укусов, DGFNPCSerana падала и ползала(как ползают NPC когда у них мало health), пока ГГ не убьет всех драконов и не заговорит с ней и кстати когда она ползает, дракон который ее атаковал, должен перестать ее атаковать и начать атаковать ГГ
Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)