Модератор форума: 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? Пиши не в ЛС, а в эту тему.
stalker1990  Offline  Сообщение №1831 написано: 25 июля 2015, 13:43 | Отредактировано: stalker1990 - 25 июля 2015, 15:45



2
Пытаюсь написать мод ,нужно перехватить событие которое возникает при клике на кровать в тюрьме (отсидеть срок) его messageBox сы нашёл а вот скрипты не могу ((((
Что нужно ?
После того как ГГ попал в тюрьму и активировал кровать (раз в игровой день) отправить ГГ на исправительные работы (задание) по завершению работ (задания) переместить ГГ обратно в камеру.
unsure Подскажите как быть.Ссылки на статьи на русском языке приветствуются .

Aksyonov  Offline  Сообщение №1832 написано: 6 августа 2015, 11:41



937
Здравствуйте снова, мне вот тут скрипт понадобился по квесту, нужно подкупить охотника несколькими
сотнями септимов, можете написать скрипт ? думаю он короткий, для тех кто знаком с папирусом, нужно такое:

Даем золото персонажу если оно у нас есть в инвентаре.

andrelo-1  Offline  Сообщение №1833 написано: 6 августа 2015, 18:40



172
Цитата Aksyonov

Здравствуйте снова, мне вот тут скрипт понадобился по квесту, нужно подкупить охотника несколькими
сотнями септимов, можете написать скрипт ? думаю он короткий, для тех кто знаком с папирусом, нужно такое:

Даем золото персонажу если оно у нас есть в инвентаре.



Я в диалогах не силен, но думаю надо делать так:
1. На фразе "[Подкупить]" надо добавить условие PlayerAlias.GetGold() >= <кол-во золота для подкупа>, чтобы фраза появлялась только если есть необходимое кол-во золота.
2. Соответственно при выборе фразы квест переходит к определенной стадии X.
3. Уже в свойствах стадии X добавить скрипт:

PlayerAlias.GetActorRef().RemoveItem( Gold, <кол-во золота для подкупа> )
HunterAlias.GetActorRef().AddItem( Gold, <кол-во золота для подкупа> )

Соответственно у скрипта добавляем и инициализируем свойства PlayerAlias, HunterAlias, Gold.

Multigone  Offline  Сообщение №1834 написано: 7 августа 2015, 07:27



832
andrelo-1, можно обойтись 1 строчкой и 1 Property (HunterAlias).

Код
Game.GetPlayer().RemoveItem(Game.GetFormFromFile(0000000F, "Skyrim.esm"), 100, false, HunterAlias.GetRef())

Dsion  Offline  Сообщение №1835 написано: 7 августа 2015, 09:06



Multigone, странно, что ты еще HunterAlias.GetRef() не заменил на akSpeaker :)

Multigone  Offline  Сообщение №1836 написано: 7 августа 2015, 10:25



832
Dsion, наверное, потому, что речь шла о стадии квеста. Но ты прав.

Если алиас охотника принадлежит этому же квесту:


Код
Game.GetPlayer().RemoveItem(Game.GetFormFromFile(0000000F, "Skyrim.esm"), 100, false, (GetAlias(iAliasID) AS ReferenceAlias).GetRef())

Dsion  Offline  Сообщение №1837 написано: 7 августа 2015, 11:06



Только с такими конструкциями надо быть поосторожнее в длинных циклах...
Game.GetPlayer().RemoveItem выполняется аж в два раза дольше, чем RemoveItem на заполненной проперти...
Но тут это не важно, конечно...

Miter  Offline  Сообщение №1838 написано: 11 августа 2015, 08:59 | Отредактировано: Miter - 11 августа 2015, 09:00



15
как скриптом уменьшить значение Магии у персонажа?
Player.RestoreAV() что-то такое, только на уменьшение.

nepewka  Offline  Сообщение №1839 написано: 11 августа 2015, 22:58



255
RestoreAV это для восстановления команда, попробуй Player.DamageAV (Magicka, number)

минус ставить не надо (п.с. таким скриптом сниженное кол-во маны никогда не восстановится)

Arin  Offline  Сообщение №1840 написано: 12 августа 2015, 16:36 | Отредактировано: Arin - 12 августа 2015, 16:39



570
Уважаемые, вопрос, как можно сменить "SpecificReference" альясу через скрипт? Альяс имеет значение ОбъектРеференс, но я хотела бы через скрипт сменить значение этого референса.

Наука всегда оказывается не права. Она не в состоянии решить ни одного вопроса, не поставив при этом десятка новых.
Джордж Бернард Шоу
andrelo-1  Offline  Сообщение №1841 написано: 12 августа 2015, 17:02



172
Цитата Arin

Уважаемые, вопрос, как можно сменить "SpecificReference" альясу через скрипт? Альяс имеет значение ОбъектРеференс, но я хотела бы через скрипт сменить значение этого референса.


ReferenceAlias.ForceRefTo( ObjectReference akNewRef )

Arin  Offline  Сообщение №1842 написано: 12 августа 2015, 17:06



570
Цитата andrelo-1

ReferenceAlias.ForceRefTo( ObjectReference akNewRef )

Спасибо огромное, добрый человек!=)

Наука всегда оказывается не права. Она не в состоянии решить ни одного вопроса, не поставив при этом десятка новых.
Джордж Бернард Шоу
andrelo-1  Offline  Сообщение №1843 написано: 12 августа 2015, 17:20



172
Цитата Arin

Спасибо огромное, добрый человек!=)


Да не за что ^_^ . У ReferenceAlias немного функций, так что найти ее было не трудно. Можешь так же через консоль попробовать сменить алиас:

1. Выбрать объект, на который хочешь сменить.
2. SetConsoleScopeQuest QuestID.
3. ForceRefIntoAlias AliasName.

Miter  Offline  Сообщение №1844 написано: 13 августа 2015, 23:31



15

Код
Enchantment Property aaaEncBombarda  Auto   

Event OnSpellCast(Actor akActor, Form akSpell)
      if akSpell == aaaEncBombarda
         akActor.damageav("Magica", 50)          
      endif
EndEvent
у меня этот скрипт висит на посохе. нужно, чтобы убывала магия при атаке.
что делаю не так?
в событие OnSpellCast нельзя включать Actor? вики по этому поводу

Dsion  Offline  Сообщение №1845 написано: 14 августа 2015, 06:50



Не, нельзя... И ты вообще как-то слишком свободно интерпретируешь ивенты и функции...
В описании ивента OnSpellCast сказано "Этот ивент вызывается, когда данный объект колдует заклинание". То есть, если бы твой посох валялся на земле и сам начал что-то колдовать, вот тогда сработал бы ивент. И, конечно, без akActor.

Multigone  Offline  Сообщение №1846 написано: 14 августа 2015, 06:57



832
Цитата Miter

что делаю не так?




Как более правильно:

1) Создать простое Ability.
2) К нему прицепить скрипт:

3) К посоху прицепить скрипт:


Aksyonov  Offline  Сообщение №1847 написано: 14 августа 2015, 10:18 | Отредактировано: Aksyonov - 14 августа 2015, 12:09



937
Здрасти всем ! помогите пожалуйста заставить персонажа при входе в
триггер подходить к давакину и заговаривать с ним, что нужно делать?

1. Создать квест.
2. Прописать диалоги.

Это понятно а что дальше, создать сцену ?
Создать алисы? можно по подробней ?

И как собственно заставить активировать сцену тогда при помощи триггера - зашел на
определенное место и к тебе подходит кузнец и говорит, ты чего тут трешься ? ну к примеру ! ))

Да и ещё скажите пожалуйста как персонажа можно заставить не бежать а идти скриптом (давакина) не NPC обычных а нас самих.

Rain_Show705  Offline  Сообщение №1848 написано: 15 августа 2015, 20:33



85
Aksyonov, пусть при заходе в триггер будет меняться стадия, в которой следует создать сцену. Создаешь алиас актера и прописываешь ему AI пакет в сцене нужный. Ну и диалог, с которого он будет начинать ставь Blocking.

"Шекспир когда-то написал, что жизнь — это всего лишь сон. Именно так я и проживаю свою. От одного сна до другого, ненавидя всякое обновление реальности."
(Удар молнии)
ditonator228  Offline  Сообщение №1849 написано: 15 августа 2015, 21:05



2
Народ помогите, не могу понять почему не работают MAgicEffect скрипты которые я пишу?
Делаю все как надо, создаю магический эффект или редактирую готовый, привязываю к нему скрипт, создаю для этого эффекта заклинание.
 Пробую тестить в игре и скрипт не работает 
Даже такой простенький скрипт не работает, хотя компилируется без каких-либо ошибок:

Код
Scriptname Infect  extends activemagiceffect
Spell Property SAS Auto

  Event OnScriptEffectStart(Actor Target, Actor Caster)
Debug.MessageBox("фывыфыаприыткпыви")
Target.AddSpell(SAS)
Target.Kill()

endEvent


 
Очень много времени и нервов потратил и так и не понял почему не работает.

Multigone  Offline  Сообщение №1850 написано: 15 августа 2015, 22:22



832
Цитата ditonator228

Event OnScriptEffectStart(Actor Target, Actor Caster)

Нет такого события, есть вот какое:

Код
Event OnEffectStart(Actor Target, Actor Caster)
Не за что.

Раньше было в шапке темы.
Здесь все есть.

ditonator228  Offline  Сообщение №1851 написано: 18 августа 2015, 15:42 | Отредактировано: Multigone - 27 апреля 2020, 16:45



2
Как изменить цвет кожы?? Пробовал ModActorValue("Face Tinting Color", 255, 255, 182 ) Но чет не получается((

Dsion  Offline  Сообщение №1852 написано: 28 августа 2015, 21:52



Возможно, было бы лучше сделать через магический эффект без скрипта. Его можно накладывать и снимать когда нужно. И что самое важное, он сам снимется, если пользователь отключит мод. А если скриптом изменить ActorValue и отключить мод, то оно таким навсегда и останется...

А вообще, противоположность DamageAv - это RestoreAV(String asValueName, Float afAmount)

Нарада  Offline  Сообщение №1853 написано: 30 августа 2015, 08:18



129
У меня вопрос к знатокам. Каким образом можно телепортировать напарника? С ГГ и актерами проблем нет. Это объекты известные, а кто будет напарником неизвестно. Должна быть соответствующая функция, но я ее найти не могу.

Dsion  Offline  Сообщение №1854 написано: 30 августа 2015, 10:48



Обычного ванильного? Можно попробовать вот так:

ReferenceAlias Property Follower Auto

Follower.GetReference().MoveTo(куда)

(проперти Follower нужно заполнить алиасом с квеста DialogueFollower)

Нарада  Offline  Сообщение №1855 написано: 30 августа 2015, 17:31 | Отредактировано: Нарада - 30 августа 2015, 17:54



129
Спасибо. С алиасом Follower  получилось. Тестирую мод  с не ванильным напарником.

Dsion  Offline  Сообщение №1856 написано: 30 августа 2015, 23:22



Серана тоже не ванильную систему спутничества использует... Забыл сказать. У неё другой алиас в другом квесте.

Можно либо настроиться на какую-то конкретную систему управления спутниками (как DialogueFollower) , либо на несколько конкретных (ванильную+Серана), либо попытаться сделать что-то, работающее с любым спутником из любого мода.

Для последнего нужен какой-то критерий (conditions), по которому можно отличить спутника от других NPC. Не так-то просто, учитывая разнообразие модов и того, как они работают. Может, GetPlayerTeammate, но наверняка найдется мод, в котором компаньон не является Teammate...

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

nepewka  Offline  Сообщение №1857 написано: 4 сентября 2015, 05:37 | Отредактировано: nepewka - 4 сентября 2015, 05:38



255
Добрый день.
Сегодня пятница, а это значит что сегодня мы разберем очередную сумасшедшую идею!

Давайте ка разберемся с фракциями в игре. Можно ли создать убер агрессивного  нпц, который будет нападать на всех кого видит, но если добавить ему фракцию, допустим фракцию игрока, то он будет нападать на всех кроме игрока ?

Как путем спавна двух разных нпц натравить их друг на друга?

Конечная цель:
Создать турнир, на котором соберутся все самые великие воины тамриэля!
и игрок здесь лишь изредка будет участником, в основном будут бои нпц против нпц.

Dsion  Offline  Сообщение №1858 написано: 4 сентября 2015, 06:13



При уровне агрессивности 2 (Very Aggressive) NPC как-раз и будет мочить всех не-союзников. А союзников можно добавлять через фракцию.

Но, возможно, будет лучше поставить гладиаторам уровень агрессивности 1 (Aggressive)... При этом уровне они набрасываются только на врагов.
Потом создать две фракции: Команда1 и Команда2 враждебные друг к другу. И перед началом боя распределять NPC по этим командам. Тогда они будут сражаться между собой, но не нападут, скажем, на судью или зрителей.

Aksyonov  Offline  Сообщение №1859 написано: 8 сентября 2015, 03:23 | Отредактировано: Aksyonov - 8 сентября 2015, 03:24



937
Уважаемые всем привет, нужно срочно персонажа посадить с анимацией на пол как это сделать скриптом ? анимация idleKneelldle.hkx
Заходим в пещеру персонаж сидит на коленях в определенном месте, а когда к нему подходишь встает и заговаривает и не садился потом
обратно )) помоги пожалуйста !   ^_^ самому пока не хочется тратить время на изучение скриптов на столько углубленно, в будущим подучу
но сейчас нужно реализовать задумку и побыстрее закончить мой первый квест.

W@nTeD  Offline  Сообщение №1860 написано: 9 сентября 2015, 17:58


l3g3nD@rY cR3@tuR3


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

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





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