• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней. • Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней. • При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС. • При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "+" полезного сообщения.
Сообщения, не относящиеся к вопросам по скриптам Papyrus, ответам на них или уточнениям, являются оффтопом и могут быть удалены.
Красное солнце Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
Можно выполнить поиск по фразе из диалога. На ней, если ты правильно предположил, висит скриптик. Скорее всего, одна строчка. Но можно отследить, куда она ведет и что выполняется дальше.
Изменение репутации для пользователя Brough
BroughOffline
Сообщение №1804
написано: 3 июля 2015, 19:43
| Отредактировано: Brough - 3 июля 2015, 19:45
; 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
тут Вы правы - из за мода, того который ту броню что на скрине добавляет ... я б её вообще поставить не решился ибо метод которым она сделана находится за рамками понимания скринофакт
по умолчанию все три модели со скрина находятся в "одном флаконе" эт я их для наглядности развёл - движку игры при каждой загрузке многочисленных игровых ячеек всё это "безобразие" считывать приходиться + текстурные карты каждой модели с вычитанием альфа каналов которыми сокрыты "ненужные" части блоков ... как то так
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 для скрипта и заполнить его. Вот способ, как это сделать (написан для вкладки квеста, для диалога похожий, но не точно такой же).
Да и задача не очень ясна. NPC должен ходить за ГГ всю ночь? Или один раз появиться ровно в 23.00 и стоять на одном месте до утра? Или один раз появиться, поговорить с ГГ и снова пропасть?
Здравствуйте помогите пожалуйста понять как в квесте прописать что бы персонаж говорил фразы когда мы (давакин) подходим в определенный триггер, так как это реализовано в лагере бандитов, где то я их видел а локацию уже не найду, вот что бы подошли рядом в триггер возле персонажа он поворачивался к нам и говорил - эй ты тебе чего тут надо ! - и так далее подходишь ещё ближе в другой уже триггер он говори - не подходи больно будет ! - а в третий уже атакует, и ещё почему при записи звука для диалогов не генерируется у меня lip файлы какого формата должен быть wav файл что бы lip сгенерировался правильно и губы у персонажей шевелились в такт ? не знаю возможно ответ на мои два вопроса уже где то был дан, , буду рад если скажите мне сами как решить мои задачи либо если вы сошлетесь на уже существующий комментарий, всем спасибо.
Здравствуйте помогите пожалуйста понять как в квесте прописать что бы персонаж говорил фразы когда мы (давакин) подходим в определенный триггер, так как это реализовано в лагере бандитов, где то я их видел а локацию уже не найду, вот что бы подошли рядом в триггер возле персонажа он поворачивался к нам и говорил - эй ты тебе чего тут надо ! - и так далее подходишь ещё ближе в другой уже триггер он говори - не подходи больно будет ! - а в третий уже атакует, и ещё почему при записи звука для диалогов не генерируется у меня lip файлы какого формата должен быть wav файл что бы lip сгенерировался правильно и губы у персонажей шевелились в такт ? не знаю возможно ответ на мои два вопроса уже где то был дан, , буду рад если скажите мне сами как решить мои задачи либо если вы сошлетесь на уже существующий комментарий, всем спасибо.
Есть два способа реализации. Можно через смену стадии в триггере реализовать это, а можно через сцены. Первый вариант самый простой. Тут просто создаем три стадии, которые будут меняться при заходе в разные триггеры (Желательно ставить дефолтные триггеры на смену стадии OnEnter). Создаешь в Misc свои фразы и даешь им условие GetStage.
Второй вариант слегка сложнее. Вроде как Кальян снимал ролик по сценам, в котором используется ForceGreet
Насчет Липов. Подойдет любой WAV. Попробуйте сгенерировть липы через Gameplay->Facial Animation
"Шекспир когда-то написал, что жизнь — это всего лишь сон. Именно так я и проживаю свою. От одного сна до другого, ненавидя всякое обновление реальности." (Удар молнии)
Изменение репутации для пользователя Aksyonov
AksyonovOffline
Сообщение №1816
написано: 19 июля 2015, 09:20
| Отредактировано: Aksyonov - 19 июля 2015, 15:46
Насчет Липов. Подойдет любой WAV. Попробуйте сгенерировть липы через Gameplay->Facial Animation
Спасибо очень быстро ответили +++ будем пробовать
Проблема с Lip файлами решена ! быть может кому то будет полезно поэтому напишу в чем заключалась проблема у меня, в общем lip файл даже при записи в диалоги creation kit не создавался Lip файл выдавая ошибку fonixdata.cdf (в не официальном Creation kit) в общем нужно было скачать специальный фикс что бы проблема ушла, вот кому нужно воспользуйтесь - фикс creation kit для lip файлов, содержимое архива скиньте в папку data игры скайрим с заменой, потом в creation kit действуем следующим образом - записываем звук свой голос нажимаем по кнопке Generate Lip и все пройдет успешно - в последствии можно будет заменить записанные звуки на другие а губы персонажа будут шевелиться относительно первой записи сделанной в ск для этого нужно оставить lip файл и заменить wav созданный ранее на свой.
Изменение репутации для пользователя DarkVetal
DarkVetal
Сообщение №1817
написано: 19 июля 2015, 09:21
| Отредактировано: DarkVetal - 19 июля 2015, 13:59
Есть скрипт который включает\выключает предметы по времени. Но проблема в том, что для срабатывания скрипта ГГ должен быть в той же игровой ячейке\локации что и предмет со скриптом. Можно ли распространить радиус действия\срабатывания скрипта на весь Скайрим?
DarkVetal, я так понял, предмет для включения не является объектом с этим скриптом. Тогда можно использовать квест.
Scriptname _TESTTEST5 extends Quest
ObjectReference Property MyREFR Auto GlobalVariable Property GameHour Auto Float Property fS Auto ; Старт. Float Property fE = 1.0 Auto ; Финиш.
EVENT OnInit() OnUpdateGameTime() ENDEVENT
EVENT OnUpdateGameTime() Float fT = GameHour.Value IF (fT >= fS && fT < fE && fS < fE) || ((fT >= fS || fT < fE) && fS > fE) fT = fE - fT MyREFR.Enable() ELSE fT = fS - fT MyREFR.Disable() ENDIF IF fT < 0.0 fT += 24.0 ENDIF RegisterForSingleUpdateGameTime(fT) ENDEVENT
Изменение репутации для пользователя DarkVetal
DarkVetal
Сообщение №1819
написано: 19 июля 2015, 13:55
| Отредактировано: DarkVetal - 19 июля 2015, 14:01
Multigone, да, я забыл уточнить: скрипт вешается на любой статик, в проперти задается маркер и выбирается переменная GameHour. А к маркеру крепится через Enable Parent нужный предмет. А твой скрипт куда довешивать, в свой скрипт добавить или отдельно как то? Да, и мой скрипт срабатывает со сбоями, может вобще не включить\выключить предмет в нужное время. Есть ли способ форсировать событие?
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №1820
написано: 19 июля 2015, 14:24
| Отредактировано: Multigone - 19 июля 2015, 14:40
DarkVetal, вешается на любой работающий квест. Конечно, лучше создать свой собственный (т.е. не использовать ванильный) и запустить его принудительно. Это сделать можно так:
EVENT OnInit() IF !IsRunning() && !IsCompleted() ; Можно объединить с предыдущим, написав это выше. Start() ENDIF ENDEVENT
Скрипт автономен и конфликтует с твоим. Он должен работать стабильно, но лучше проверить в игре.
PS: Время старта и финиша задается в часах (0.0 - 23.(9)); старт может быть больше или меньше финиша. По дефолту там стоит старт в 0.0 ч., финиш в 1.0 ч.
Изменение репутации для пользователя Aksyonov
AksyonovOffline
Сообщение №1821
написано: 20 июля 2015, 12:09
| Отредактировано: Aksyonov - 20 июля 2015, 12:16
Здравствуйте у меня опять вопрос как в квесте убрать отображение диалогов прописать что бы диалог не появлялся при определенной стадии... пишем GetOwningQuest() .SetStage(90) и что бы все диалоги если стадия квеста дошла до 90 у персонажа пропадали какую команду нужно применять ? <= < > => ? правильно ли понимаю пишем диалог GetStage с < 10 это показывать диалоги всегда до стадии 10 и меньше, а потом в скрипте диалог можно прописать GetOwningQuest() .SetStage(11) и диалог первый с <10 появляться не будет верно ?
и ещё скажите пожалуйста как скриптом добавить запуск стадии нового квеста - с одного на другой - сказали человеку в диалоге все я нашел твой меч и он тебе первый квест завершен второй начался как это делается командой в диалоге скриптовой ? верно ? если да пожалуйста напишите что за скрипт запускающий второй квест в первом так как завершающий первый и запускающий второй, и в заключении мне ещё нужен скрипт который можно было бы применить в диалоге во вкладке end который произойдет после произнесения фразы, нужно добавить способность игроку навсегда как это сделать скриптом ? приведите пример кто умеет писать скрипты буду благодарен, спасибо.
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
AksyonovOffline
Сообщение №1823
написано: 21 июля 2015, 02:26
| Отредактировано: Aksyonov - 21 июля 2015, 10:50
Multigone, спасибо большое )) теперь буду продолжать делать свой первый квест
Добавлено (21 Июля 2015, 05:26) --------------------------------------------- Всем привет снова скажите пожалуйста а где нибудь есть описание всех al пакетов - ? что они делают там к примеру, мне вот нужно сейчас заставить персонажа всегда сидеть на скомейке а потом встать при присвоении стадии квеста 60 + как это сделать ?
Возник ещё вопрос а где в квестах нужно писать описание квеста - вот к примеру добавления задач понятно а в самом дневнике что бы дополнительное описание отображалось ? как в других квестах ? там - задача найти кошку - и описание: я повстречал бабушку она попросила найти мне её кошку ? - где это вписывается ?
Всем привет снова скажите пожалуйста а где нибудь есть описание всех al пакетов - ? что они делают там к примеру, мне вот нужно сейчас заставить персонажа всегда сидеть на скомейке а потом встать при присвоении стадии квеста 60 + как это сделать ?
Возник ещё вопрос а где в квестах нужно писать описание квеста - вот к примеру добавления задач понятно а в самом дневнике что бы дополнительное описание отображалось ? как в других квестах ? там - задача найти кошку - и описание: я повстречал бабушку она попросила найти мне её кошку ? - где это вписывается ?
1) http://tiarum.com/wiki/Skyrim_CK:Package_Templates 2) Чтобы заставить персонажа сидеть на скамейке просто дайте ему пакет sit target и там укажите вашу скамейку. 3) Описание квеста вписывается в стадиях.
P.S есть достаточно хорошая серия уроков по созданию квестов тык . Перед созданием квеста настоятельно рекомендую почитать.
"Шекспир когда-то написал, что жизнь — это всего лишь сон. Именно так я и проживаю свою. От одного сна до другого, ненавидя всякое обновление реальности." (Удар молнии)
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №1825
написано: 21 июля 2015, 11:19
| Отредактировано: Multigone - 27 апреля 2020, 16:51
Да я уже с этим знаком спасибо за ответы по поводу пакетов очень поможет, а по поводу описание квеста почему вписав в поля LOG entry при добавлении квеста описания то не появляется, есть только активная цель 'я должен найти мартышку' а текст из поля LOG entry - не отображается в игре и не показывается что - мартышка была найдена там то там и что с ней нужно быть осторожней (ну это так пример) внизу скрин как я понял поле LOG entry должно появляться в качестве описание вверху заголовка квеста - а почему его нет ? уроки про квесты изучу но сейчас хотелось бы узнать баг ли это ? что не отображается LOG entry в игре хотя должно ? какие могут быть ошибки и в чем заключаться проблема?
Multigone, вот у меня все эти поля заполнены из формы LOG entry должен отображаться текст в игрена сколько я понимаю, но его нет, почему?
Так я проверил описание квестов и пересохранил мод загрузив другое сохранение - диалог квеста вообще перестал появляться до того пока я не сохранил игру с подключенным модом и не загрузил сохранение тогда персонаж заговорил и описание появилось ! в нужном месте, вопрос можно ли как нибудь обойти баг с этими пересохранениями почему так получается ? я вроде что то на форуме читал об этом но не помню уже где.
Да я уже с этим знаком спасибо за ответы по поводу пакетов очень поможет, а по поводу описание квеста почему вписав в поля LOG entry при добавлении квеста описания то не появляется, есть только активная цель 'я должен найти мартышку' а текст из поля LOG entry - не отображается в игре и не показывается что - мартышка была найдена там то там и что с ней нужно быть осторожней (ну это так пример) внизу скрин как я понял поле LOG entry должно появляться в качестве описание вверху заголовка квеста - а почему его нет ? уроки про квесты изучу но сейчас хотелось бы узнать баг ли это ? что не отображается LOG entry в игре хотя должно ? какие могут быть ошибки и в чем заключаться проблема?
У самого такое было. Запусти квест на новом сохранении. Если не поможет - переделывай весь квест.
"Шекспир когда-то написал, что жизнь — это всего лишь сон. Именно так я и проживаю свою. От одного сна до другого, ненавидя всякое обновление реальности." (Удар молнии)
Так я проверил описание квестов и пересохранил мод загрузив другое сохранение - диалог квеста вообще перестал появляться до того пока я не сохранилигру с подключенным модом и не загрузил сохранение тогда персонаж заговорил и описание появилось ! в нужном месте, вопрос можно ли как нибудь обойти баг с этими пересохранениями почему так получается ? я вроде что то на форуме читал об этом но не помню уже где.
До загрузки сохранения квест запускается не полностью - алиасы заполняются и выполняют свои функции, а диалоги (и, возможно, стадии квеста?)- нет. Поэтому нужно запускать квест скриптом:
EVENT OnInit() IF !IsRunning() && !IsCompleted() Start() ENDIF ENDEVENT
Multigone, вот вот именно это я и находил вроде где то на форуме, а каким образом его применить ? в самом квесте убрать галочку запустить ? Start ? а где подключать скрипт ? как его использовать ?
Aksyonov, просто скомпилировать и добавить в квест, в последнюю вкладку Scripts. Настройки на первой вкладке (Priority, Start game Enabled, Run Once) можно оставить по умолчанию.
Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)