• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней. • Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней. • При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС. • При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "+" полезного сообщения.
Сообщения, не относящиеся к вопросам по скриптам Papyrus, ответам на них или уточнениям, являются оффтопом и могут быть удалены.
Красное солнце Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
Изменение репутации для пользователя stalker1990
stalker1990Offline
Сообщение №1831
написано: 25 июля 2015, 13:43
| Отредактировано: stalker1990 - 25 июля 2015, 15:45
Пытаюсь написать мод ,нужно перехватить событие которое возникает при клике на кровать в тюрьме (отсидеть срок) его messageBox сы нашёл а вот скрипты не могу (((( Что нужно ? После того как ГГ попал в тюрьму и активировал кровать (раз в игровой день) отправить ГГ на исправительные работы (задание) по завершению работ (задания) переместить ГГ обратно в камеру. Подскажите как быть.Ссылки на статьи на русском языке приветствуются .
Здравствуйте снова, мне вот тут скрипт понадобился по квесту, нужно подкупить охотника несколькими сотнями септимов, можете написать скрипт ? думаю он короткий, для тех кто знаком с папирусом, нужно такое:
Даем золото персонажу если оно у нас есть в инвентаре.
Здравствуйте снова, мне вот тут скрипт понадобился по квесту, нужно подкупить охотника несколькими сотнями септимов, можете написать скрипт ? думаю он короткий, для тех кто знаком с папирусом, нужно такое:
Даем золото персонажу если оно у нас есть в инвентаре.
Я в диалогах не силен, но думаю надо делать так: 1. На фразе "[Подкупить]" надо добавить условие PlayerAlias.GetGold() >= <кол-во золота для подкупа>, чтобы фраза появлялась только если есть необходимое кол-во золота. 2. Соответственно при выборе фразы квест переходит к определенной стадии X. 3. Уже в свойствах стадии X добавить скрипт:
PlayerAlias.GetActorRef().RemoveItem( Gold, <кол-во золота для подкупа> ) HunterAlias.GetActorRef().AddItem( Gold, <кол-во золота для подкупа> )
Соответственно у скрипта добавляем и инициализируем свойства PlayerAlias, HunterAlias, Gold.
Только с такими конструкциями надо быть поосторожнее в длинных циклах... Game.GetPlayer().RemoveItem выполняется аж в два раза дольше, чем RemoveItem на заполненной проперти... Но тут это не важно, конечно...
Изменение репутации для пользователя Miter
MiterOffline
Сообщение №1838
написано: 11 августа 2015, 08:59
| Отредактировано: Miter - 11 августа 2015, 09:00
Уважаемые, вопрос, как можно сменить "SpecificReference" альясу через скрипт? Альяс имеет значение ОбъектРеференс, но я хотела бы через скрипт сменить значение этого референса.
Наука всегда оказывается не права. Она не в состоянии решить ни одного вопроса, не поставив при этом десятка новых. Джордж Бернард Шоу
Уважаемые, вопрос, как можно сменить "SpecificReference" альясу через скрипт? Альяс имеет значение ОбъектРеференс, но я хотела бы через скрипт сменить значение этого референса.
Event OnSpellCast(Actor akActor, Form akSpell) if akSpell == aaaEncBombarda akActor.damageav("Magica", 50) endif EndEvent
у меня этот скрипт висит на посохе. нужно, чтобы убывала магия при атаке. что делаю не так? в событие OnSpellCast нельзя включать Actor? вики по этому поводу
Не, нельзя... И ты вообще как-то слишком свободно интерпретируешь ивенты и функции... В описании ивента OnSpellCast сказано "Этот ивент вызывается, когда данный объект колдует заклинание". То есть, если бы твой посох валялся на земле и сам начал что-то колдовать, вот тогда сработал бы ивент. И, конечно, без akActor.
Event OnSpellCast(Actor akActor, Form akSpell) ; 1) Лишний аргумент Actor akActor. ; 2) Событие никогда не сработает, т.к. посох сам по себе не творит заклинания (это делает его владелец). if akSpell == aaaEncBombarda akActor.damageav("Magica", 50) ; "Magicka" endif EndEvent
Как более правильно:
1) Создать простое Ability. 2) К нему прицепить скрипт:
ScriptName _TESTTEST9 Extends ActiveMagicEffect
Enchantment Property MyENCH Auto ; Заполнить это Property нужным зачарованием.
Event OnSpellCast(Form xF) IF xF == MyENCH GetTargetActor().DamageAV("Magicka", 50.0) ; После исчерпания магии актер сможет стрелять из посоха (так и задумано?). ENDIF ENDEVENT
3) К посоху прицепить скрипт:
ScriptName _TESTTEST8 Extends ObjectReference
Spell Property MySPEL Auto ; Заполнить это Property созданным Ability.
Здрасти всем ! помогите пожалуйста заставить персонажа при входе в триггер подходить к давакину и заговаривать с ним, что нужно делать?
1. Создать квест. 2. Прописать диалоги.
Это понятно а что дальше, создать сцену ? Создать алисы? можно по подробней ?
И как собственно заставить активировать сцену тогда при помощи триггера - зашел на определенное место и к тебе подходит кузнец и говорит, ты чего тут трешься ? ну к примеру ! ))
Да и ещё скажите пожалуйста как персонажа можно заставить не бежать а идти скриптом (давакина) не NPC обычных а нас самих.
Aksyonov, пусть при заходе в триггер будет меняться стадия, в которой следует создать сцену. Создаешь алиас актера и прописываешь ему AI пакет в сцене нужный. Ну и диалог, с которого он будет начинать ставь Blocking.
"Шекспир когда-то написал, что жизнь — это всего лишь сон. Именно так я и проживаю свою. От одного сна до другого, ненавидя всякое обновление реальности." (Удар молнии)
Народ помогите, не могу понять почему не работают MAgicEffect скрипты которые я пишу? Делаю все как надо, создаю магический эффект или редактирую готовый, привязываю к нему скрипт, создаю для этого эффекта заклинание. Пробую тестить в игре и скрипт не работает Даже такой простенький скрипт не работает, хотя компилируется без каких-либо ошибок:
Код
Scriptname Infect extends activemagiceffect Spell Property SAS Auto
Event OnScriptEffectStart(Actor Target, Actor Caster) Debug.MessageBox("фывыфыаприыткпыви") Target.AddSpell(SAS) Target.Kill()
endEvent
Очень много времени и нервов потратил и так и не понял почему не работает.
Возможно, было бы лучше сделать через магический эффект без скрипта. Его можно накладывать и снимать когда нужно. И что самое важное, он сам снимется, если пользователь отключит мод. А если скриптом изменить ActorValue и отключить мод, то оно таким навсегда и останется...
А вообще, противоположность DamageAv - это RestoreAV(String asValueName, Float afAmount)
У меня вопрос к знатокам. Каким образом можно телепортировать напарника? С ГГ и актерами проблем нет. Это объекты известные, а кто будет напарником неизвестно. Должна быть соответствующая функция, но я ее найти не могу.
Серана тоже не ванильную систему спутничества использует... Забыл сказать. У неё другой алиас в другом квесте.
Можно либо настроиться на какую-то конкретную систему управления спутниками (как DialogueFollower) , либо на несколько конкретных (ванильную+Серана), либо попытаться сделать что-то, работающее с любым спутником из любого мода.
Для последнего нужен какой-то критерий (conditions), по которому можно отличить спутника от других NPC. Не так-то просто, учитывая разнообразие модов и того, как они работают. Может, GetPlayerTeammate, но наверняка найдется мод, в котором компаньон не является Teammate...
И еще, конечно, можно решить все проблемы, редактируя ванильные записи и моды... В любой мод можно добавить фичу, чтоб он сообщал твоему моду, кто в данный момент является спутником... Но я обычно стараюсь избежать такого...
Изменение репутации для пользователя nepewka
nepewkaOffline
Сообщение №1857
написано: 4 сентября 2015, 05:37
| Отредактировано: nepewka - 4 сентября 2015, 05:38
Добрый день. Сегодня пятница, а это значит что сегодня мы разберем очередную сумасшедшую идею!
Давайте ка разберемся с фракциями в игре. Можно ли создать убер агрессивного нпц, который будет нападать на всех кого видит, но если добавить ему фракцию, допустим фракцию игрока, то он будет нападать на всех кроме игрока ?
Как путем спавна двух разных нпц натравить их друг на друга?
Конечная цель: Создать турнир, на котором соберутся все самые великие воины тамриэля! и игрок здесь лишь изредка будет участником, в основном будут бои нпц против нпц.
При уровне агрессивности 2 (Very Aggressive) NPC как-раз и будет мочить всех не-союзников. А союзников можно добавлять через фракцию.
Но, возможно, будет лучше поставить гладиаторам уровень агрессивности 1 (Aggressive)... При этом уровне они набрасываются только на врагов. Потом создать две фракции: Команда1 и Команда2 враждебные друг к другу. И перед началом боя распределять NPC по этим командам. Тогда они будут сражаться между собой, но не нападут, скажем, на судью или зрителей.
Изменение репутации для пользователя Aksyonov
AksyonovOffline
Сообщение №1859
написано: 8 сентября 2015, 03:23
| Отредактировано: Aksyonov - 8 сентября 2015, 03:24
Уважаемые всем привет, нужно срочно персонажа посадить с анимацией на пол как это сделать скриптом ? анимация idleKneelldle.hkx Заходим в пещеру персонаж сидит на коленях в определенном месте, а когда к нему подходишь встает и заговаривает и не садился потом обратно )) помоги пожалуйста ! самому пока не хочется тратить время на изучение скриптов на столько углубленно, в будущим подучу но сейчас нужно реализовать задумку и побыстрее закончить мой первый квест.
Ребят, такой вот вопрос, у меня как-бы постоянно работает скрипт, постоянно выполняет функцию, заложенную в него. Мне-же нужно, что-бы она выполнялся единожды, потом скрипт переставал работать. Уже если честно устал крутиться кругами, без ответа! Надеюсь на вашу помощь!