Модератор форума: 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? Пиши не в ЛС, а в эту тему.
Dsion  Offline  Сообщение №1801 написано: 2 июля 2015, 22:40



В каких еще свойствах?

Frostik  Offline  Сообщение №1802 написано: 2 июля 2015, 22:47 | Отредактировано: Frostik - 2 июля 2015, 22:48



53
Dsion

Выделяю NPC - (reference) вкладка scripts пусто ;   edit base - AI Packages пусто
Если скрипт запускается из диалога, то где его искать? )

Dsion  Offline  Сообщение №1803 написано: 2 июля 2015, 23:28



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

Brough  Offline  Сообщение №1804 написано: 3 июля 2015, 19:43 | Отредактировано: Brough - 3 июля 2015, 19:45



1
Люди добрые , наверное пишу не в ту тему , но прошу помощи :)
У меня проблема с ГГ , точнее с оружием на ГГ. Оно у меня , буквально летает.



Может это из-за модов , или надо заменить файл в textures/meshes. Может даже фикс есть. Прошу помочь! :)

На NPC такой проблемы нет. И да , кинжалы не летают.

Multigone  Offline  Сообщение №1805 написано: 3 июля 2015, 21:17



831
Brough, ссылка.

mxac  Offline  Сообщение №1806 написано: 8 июля 2015, 11:58



178
Народ, подскажите как добавить предмет в уровневый список скриптом, а то забыл и creationkit.com не открывается нигадяй...


Multigone  Offline  Сообщение №1807 написано: 8 июля 2015, 12:48



831
mxac,

; Adds the given count of the given form to the under the given level in this leveled list
Function AddForm(Form apForm, int aiLevel, int aiCount) native


Код
MyLVLI.AddForm(MyFORM, 1, 1)

Gvinpin  Offline  Сообщение №1808 написано: 8 июля 2015, 12:50


Уася


Цитата Brough

Может это из-за модов

тут Вы правы - из за мода, того который ту броню что на скрине добавляет ... я б её вообще поставить не решился ибо метод которым она сделана находится за рамками понимания  :D
скринофакт
по умолчанию все три модели со скрина находятся в "одном флаконе" эт я их для наглядности развёл - движку игры при каждой загрузке многочисленных игровых ячеек всё это "безобразие" считывать приходиться + текстурные карты каждой модели с вычитанием альфа каналов которыми сокрыты "ненужные" части блоков ... как то так

Самый скромный и героический герой Скайрима!!!
SereGray  Offline  Сообщение №1809 написано: 11 июля 2015, 14:06



15
Не подскажете скрип на то чтобы после определённого диалога срабатывал определённый АИ пакет

Multigone  Offline  Сообщение №1810 написано: 11 июля 2015, 16:32



831
SereGray, в диалоге в окне End написать одно из двух:

1)

MyREFA.ForceRefTo(akSpeaker)
akSpeaker.EvaluatePackage()
    ; где MyREFA - твой Property алиас с нужным пакетом и флагом Optional.

2)

MyGLOB.SetValue(1.0)
akSpeaker.EvaluatePackage()
    ; где MyGLOB - твоя Property глобальная с начальным значением 0.0. Выдай пакет нужному НПС заранее, в его условиях напиши (S) (GetGlobalValue) (Имя глобальной, которой ты заполнил Property MyGLOB) (==) (1.0) (AND).

Не забудь добавить Property для скрипта и заполнить его. Вот способ, как это сделать (написан для вкладки квеста, для диалога похожий, но не точно такой же).

Иsкатель  Offline  Сообщение №1811 написано: 14 июля 2015, 10:05



71
Как сделать чтобы когда наступает ночь рядом с гг появлялся npc(желательно чтобы  появлялся с каким-нибудь магическим эффектом)?

Multigone  Offline  Сообщение №1812 написано: 14 июля 2015, 11:48 | Отредактировано: Multigone - 27 апреля 2020, 17:00



831
b]Иsкатель[/b],

Создать/передвинуть объект: PlaceActorAtMe, MoveTo.
Определить текущее время в игровых днях: GetCurrentGameTime.
Наложить заклинание на цель: Cast.

Могу написать готовый вариант. Но лучше разобраться самостоятельно.

Dsion  Offline  Сообщение №1813 написано: 14 июля 2015, 12:08



Да и задача не очень ясна. NPC должен ходить за ГГ всю ночь? Или один раз появиться ровно в 23.00 и стоять на одном месте до утра? Или один раз появиться, поговорить с ГГ и снова пропасть?

Aksyonov  Offline  Сообщение №1814 написано: 19 июля 2015, 05:58



937
Здравствуйте помогите пожалуйста понять как в квесте прописать что бы персонаж говорил фразы когда мы (давакин) подходим в определенный триггер, так как это реализовано в лагере бандитов, где то я их видел а локацию уже не найду, вот что бы подошли рядом в триггер возле персонажа он поворачивался к нам и говорил - эй ты тебе чего тут надо ! - и так далее подходишь ещё ближе в другой уже триггер он говори - не подходи больно будет ! - а в третий уже атакует, и ещё почему при записи звука для диалогов не генерируется у меня lip файлы какого формата должен быть wav файл что бы lip сгенерировался правильно и губы у персонажей шевелились в такт ? не знаю возможно ответ на мои два вопроса уже где то был дан, , буду рад если скажите мне сами как решить мои задачи либо если вы сошлетесь на уже существующий комментарий, всем спасибо.

Rain_Show705  Offline  Сообщение №1815 написано: 19 июля 2015, 08:48



85
Цитата Aksyonov

Здравствуйте помогите пожалуйста понять как в квесте прописать что бы персонаж говорил фразы когда мы (давакин) подходим в определенный триггер, так как это реализовано в лагере бандитов, где то я их видел а локацию уже не найду, вот что бы подошли рядом в триггер возле персонажа он поворачивался к нам и говорил - эй ты тебе чего тут надо ! - и так далее подходишь ещё ближе в другой уже триггер он говори - не подходи больно будет ! - а в третий уже атакует, и ещё почему при записи звука для диалогов не генерируется у меня lip файлы какого формата должен быть wav файл что бы lip сгенерировался правильно и губы у персонажей шевелились в такт ? не знаю возможно ответ на мои два вопроса уже где то был дан, , буду рад если скажите мне сами как решить мои задачи либо если вы сошлетесь на уже существующий комментарий, всем спасибо.


Есть два способа реализации. Можно через смену стадии в триггере реализовать это, а можно через сцены. Первый вариант самый простой. Тут просто создаем три стадии, которые будут меняться при заходе в разные триггеры (Желательно ставить дефолтные триггеры на смену стадии OnEnter). Создаешь в Misc свои фразы и даешь им условие GetStage. 

Второй вариант слегка сложнее. Вроде как Кальян снимал ролик по сценам, в котором используется ForceGreet


Насчет Липов. Подойдет любой WAV. Попробуйте сгенерировть липы через Gameplay->Facial Animation

"Шекспир когда-то написал, что жизнь — это всего лишь сон. Именно так я и проживаю свою. От одного сна до другого, ненавидя всякое обновление реальности."
(Удар молнии)
Aksyonov  Offline  Сообщение №1816 написано: 19 июля 2015, 09:20 | Отредактировано: Aksyonov - 19 июля 2015, 15:46



937
Цитата Rain_Show705

Насчет Липов. Подойдет любой WAV. Попробуйте сгенерировть липы через Gameplay->Facial Animation


Спасибо очень быстро ответили +++ будем пробовать  ok

Проблема с Lip файлами решена ! быть может кому то будет полезно поэтому напишу в чем заключалась проблема у меня, в общем lip файл даже при записи в диалоги creation kit не создавался Lip файл выдавая ошибку fonixdata.cdf (в не официальном Creation kit) в общем нужно было скачать специальный фикс что бы проблема ушла, вот кому нужно воспользуйтесь - фикс creation kit для lip файлов, содержимое архива скиньте в папку data игры скайрим с заменой, потом в creation kit действуем следующим образом - записываем звук свой голос нажимаем по кнопке Generate Lip и все пройдет успешно - в последствии можно будет заменить записанные звуки на другие а губы персонажа будут шевелиться относительно первой записи сделанной в ск для этого нужно оставить lip файл и заменить wav созданный ранее на свой.

DarkVetal  Сообщение №1817 написано: 19 июля 2015, 09:21 | Отредактировано: DarkVetal - 19 июля 2015, 13:59

Есть скрипт который включает\выключает предметы по времени. Но проблема в том, что для срабатывания скрипта ГГ должен быть в той же игровой ячейке\локации что и предмет со скриптом. Можно ли распространить радиус действия\срабатывания скрипта на весь Скайрим?


Multigone  Offline  Сообщение №1818 написано: 19 июля 2015, 13:47



831
DarkVetal, я так понял, предмет для включения не является объектом с этим скриптом. Тогда можно использовать квест.

 

DarkVetal  Сообщение №1819 написано: 19 июля 2015, 13:55 | Отредактировано: DarkVetal - 19 июля 2015, 14:01

Multigone, да, я забыл уточнить: скрипт вешается на любой статик, в проперти задается маркер и выбирается переменная GameHour. А к маркеру крепится через Enable Parent нужный предмет. А твой скрипт куда довешивать, в свой скрипт добавить или отдельно как то? Да, и мой скрипт срабатывает со сбоями, может вобще не включить\выключить предмет в нужное время. Есть ли способ форсировать событие?

Multigone  Offline  Сообщение №1820 написано: 19 июля 2015, 14:24 | Отредактировано: Multigone - 19 июля 2015, 14:40



831
DarkVetal, вешается на любой работающий квест. Конечно, лучше создать свой собственный (т.е. не использовать ванильный) и запустить его принудительно. Это сделать можно так:



Скрипт автономен и конфликтует с твоим. Он должен работать стабильно, но лучше проверить в игре.

PS: Время старта и финиша задается в часах (0.0 - 23.(9)); старт может быть больше или меньше финиша. По дефолту там стоит старт в 0.0 ч., финиш в 1.0 ч.

Aksyonov  Offline  Сообщение №1821 написано: 20 июля 2015, 12:09 | Отредактировано: Aksyonov - 20 июля 2015, 12:16



937
Здравствуйте у меня опять вопрос как в квесте убрать отображение диалогов прописать что бы диалог не появлялся при определенной стадии... пишем GetOwningQuest() .SetStage(90) и что бы все диалоги если стадия квеста дошла до 90 у персонажа пропадали какую команду нужно применять ? <= < > => ? правильно ли понимаю пишем диалог GetStage с < 10 это показывать диалоги всегда до стадии 10 и меньше, а потом в скрипте диалог можно прописать GetOwningQuest() .SetStage(11) и диалог первый с <10 появляться не будет верно ?

и ещё скажите пожалуйста как скриптом добавить запуск стадии нового квеста - с одного на другой - сказали человеку в диалоге все я нашел твой меч и он тебе первый квест завершен второй начался как это делается командой в диалоге скриптовой ? верно ? если да пожалуйста напишите что за скрипт запускающий второй квест в первом так как завершающий первый и запускающий второй, и в заключении мне ещё нужен скрипт который можно было бы применить в диалоге во вкладке end который произойдет после произнесения фразы, нужно добавить способность игроку навсегда как это сделать скриптом ? приведите пример кто умеет писать скрипты буду благодарен, спасибо.

Multigone  Offline  Сообщение №1822 написано: 20 июля 2015, 13:05



831
Aksyonov, я что-то понял:

1) Пусть квест состоит из стадий 70, 80, 90, завершающихся последовательно. Нужно, чтобы 90 Topic Info не отображался. Используем условие:
(S) (GetStage) (MyQUST) (<) (80) (AND) ; GetStage возвращает наивысший номер завершенных стадий. Чтобы диалог отображался, последняя завершенная стадия должна быть 70, а текущая 80.

2) MyQUST.Start() ; Чтобы запустить к.-л. квест с начальной стадии, или...
    MyQUST.SetStage(Х) ; Чтобы переключить текущую стадию к.-л. квеста. В обоих случаях MyQUST является Property, которое нужно указать.

3) Game.GetPlayer().AddSpell(MySPEL) ; Добавить игроку Ability или научить его Spell. MySPEL является Property, которое нужно указать.

Aksyonov  Offline  Сообщение №1823 написано: 21 июля 2015, 02:26 | Отредактировано: Aksyonov - 21 июля 2015, 10:50



937
Multigone, спасибо большое )) теперь буду продолжать делать свой первый квест  good

Добавлено (21 Июля 2015, 05:26)
---------------------------------------------
Всем привет снова скажите пожалуйста а где нибудь есть описание всех al пакетов - ? что они делают там к примеру, мне вот
нужно сейчас заставить персонажа всегда сидеть на скомейке а потом встать при присвоении стадии квеста 60 + как это сделать ?

Возник ещё вопрос а где в квестах нужно писать описание квеста - вот к примеру добавления задач понятно а в самом дневнике что бы дополнительное описание
отображалось ? как в других квестах ? там - задача найти кошку - и описание: я повстречал бабушку она попросила найти мне её кошку ? - где это вписывается ?

Rain_Show705  Offline  Сообщение №1824 написано: 21 июля 2015, 11:02



85
Цитата Aksyonov

Всем привет снова скажите пожалуйста а где нибудь есть описание всех al пакетов - ? что они делают там к примеру, мне вот нужно сейчас заставить персонажа всегда сидеть на скомейке а потом встать при присвоении стадии квеста 60 + как это сделать ?

Возник ещё вопрос а где в квестах нужно писать описание квеста - вот к примеру добавления задач понятно а в самом дневнике что бы дополнительное описание
отображалось ? как в других квестах ? там - задача найти кошку - и описание: я повстречал бабушку она попросила найти мне её кошку ? - где это вписывается ?



1) http://tiarum.com/wiki/Skyrim_CK:Package_Templates
2) Чтобы заставить персонажа сидеть на скамейке просто дайте ему пакет sit target и там укажите вашу скамейку.
3) Описание квеста вписывается в стадиях.

P.S есть достаточно хорошая серия уроков по созданию квестов тык . Перед созданием квеста настоятельно рекомендую почитать.

"Шекспир когда-то написал, что жизнь — это всего лишь сон. Именно так я и проживаю свою. От одного сна до другого, ненавидя всякое обновление реальности."
(Удар молнии)
Multigone  Offline  Сообщение №1825 написано: 21 июля 2015, 11:19 | Отредактировано: Multigone - 27 апреля 2020, 16:51



831
Aksyonov,

1) Packages.

Aksyonov  Offline  Сообщение №1826 написано: 21 июля 2015, 12:26 | Отредактировано: Aksyonov - 21 июля 2015, 17:12



937
Цитата Rain_Show705

Описание квеста вписывается в стадиях.


Да я уже с этим знаком спасибо за ответы по поводу пакетов очень поможет, а по поводу описание квеста почему вписав в поля LOG entry при добавлении квеста описания то не появляется, есть только активная цель 'я должен найти мартышку' а текст из поля  LOG entry - не отображается в игре и не показывается что - мартышка была найдена там то там и что с ней нужно быть осторожней (ну это так пример) внизу скрин как я понял поле LOG entry должно появляться в качестве описание вверху заголовка квеста - а почему его нет ? уроки про квесты изучу но сейчас хотелось бы узнать баг ли это ? что не отображается LOG entry в игре хотя должно ? какие могут быть ошибки и в чем заключаться проблема?



Multigone, вот у меня все эти поля заполнены из формы LOG entry должен отображаться текст в игрена сколько я понимаю, но его нет, почему?

Так я проверил описание квестов и пересохранил мод загрузив другое сохранение - диалог квеста вообще перестал появляться до того пока я не сохранил
игру с подключенным модом и не загрузил сохранение тогда персонаж заговорил и описание появилось ! в нужном месте, вопрос можно ли как нибудь
обойти баг с этими пересохранениями почему так получается ? я вроде что то на форуме читал об этом но не помню уже где.

Rain_Show705  Offline  Сообщение №1827 написано: 21 июля 2015, 15:27



85
Цитата Aksyonov

Да я уже с этим знаком спасибо за ответы по поводу пакетов очень поможет, а по поводу описание квеста почему вписав в поля LOG entry при добавлении квеста описания то не появляется, есть только активная цель 'я должен найти мартышку' а текст из поля  LOG entry - не отображается в игре и не показывается что - мартышка была найдена там то там и что с ней нужно быть осторожней (ну это так пример) внизу скрин как я понял поле LOG entry должно появляться в качестве описание вверху заголовка квеста - а почему его нет ? уроки про квесты изучу но сейчас хотелось бы узнать баг ли это ? что не отображается LOG entry в игре хотя должно ? какие могут быть ошибки и в чем заключаться проблема?


У самого такое было. Запусти квест на новом сохранении. Если не поможет - переделывай весь квест.

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



831
Цитата Aksyonov

Так я проверил описание квестов и пересохранил мод загрузив другое сохранение - диалог квеста вообще перестал появляться до того пока я не сохранилигру с подключенным модом и не загрузил сохранение тогда персонаж заговорил и описание появилось ! в нужном месте, вопрос можно ли как нибудь
обойти баг с этими пересохранениями почему так получается ? я вроде что то на форуме читал об этом но не помню уже где.

До загрузки сохранения квест запускается не полностью - алиасы заполняются и выполняют свои функции, а диалоги (и, возможно, стадии квеста?)- нет. Поэтому нужно запускать квест скриптом:



Aksyonov  Offline  Сообщение №1829 написано: 22 июля 2015, 07:42



937
Multigone, вот вот именно это я и находил вроде где то на форуме, а каким образом его применить ? в самом квесте убрать галочку запустить ? Start ? а где подключать скрипт ? как его использовать ?

Multigone  Offline  Сообщение №1830 написано: 22 июля 2015, 08:35



831
Aksyonov,  просто скомпилировать и добавить в квест, в последнюю вкладку Scripts. Настройки на первой вкладке (Priority, Start game Enabled, Run Once) можно оставить по умолчанию.

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





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