Перейти к содержимому


Фотография

Вопросы по скриптам

papyrus help скрипты вопросы

  • Авторизуйтесь для ответа в теме

#341 Ссылка на это сообщение Potatoider

Potatoider
  • Знаменитый оратор


  • 4 348 сообщений
  •    

Отправлено

Тема для вопросов по скриптингу.

Функции папируса:

На английском

На русском (не все, но базис)



 




  • Авторизуйтесь для ответа в теме
Сообщений в теме: 804

#342 Ссылка на это сообщение werr

werr
  • больной на всю голову

  • 1 733 сообщений
  •    

Отправлено

Два маленьких вопроса:
1) как сделать так, чтобы экран на некоторое время затемнялся? Пока искал в интернете, нашёл, что это делают либо через .ApplyCrossFade(), либо через Game.FadeOutGame(). Как понимаю, лучше ведь использовать второе, да?
2) если я телепортирую игрока/NPC с помощью скрипта .MoveTo(), а игрок/NPC совершал какую-нибудь анимацию (например, сидел "по-турецки"), то он продолжит совершать эту же анимацию после телепортации? Иными словами, мне не надо заново игрока/NPC принуждать выполнять подобную "бесконечную" анимацию?

1. Лучше использовать первое. Создай себе в моде ISM в виде простого черного экрана и вперед, через ApplyCrossFade(). Можешь взять уже существующий из квеста Гильдии Воров, TG05BlackFrame что-то там... Кажется так называется (года 3 не открывал CK скайрима). В отличии от FadeOutGame(), Image Space Modifier, запученный через ApplyCrossFade(), не пропадает с экрана. То есть твой черный фрейм будет держаться на экране, пока ты не уберешь его командой ImageSpaceModifier.RemoveCrossFade(float ftime). Не пропадет даже при телепортации игрока в другую ячейку. В то время как первая команда использовалась разрабами лишь единожды во вступительной части игры и не сохранит тебе затемнение экрана.

 

2. При вызове команды MoveTo(), если точка назначения находится дальше 800 a.u. от старта, игра перезагружает игровой мир/ячейку. Иными словами, чтобы сохранить воспроизведение игроком или НПС какого-то пакета, либо анимации, их надо запустить еще раз скриптом. Что весьма гладко проходит, если дать НПС новый пакет в новой ячейке, и игрока заставить делать что-нибудь, не убирая черный кадр ISM с экрана. Таким образом, при загрузки новой локации, 3D модель НПС прогрузится заново и к моменту, когда ты телепортируешь в локацию игрока, он уже будет выполнять свой пакет (ну либо же заспаунится в мебели). Затем надо приказать игроку выполнять сценку/пакет, ну и после пары секунд можно сдирать покровы черного экрана и возвращать управление игроку.



#343 Ссылка на это сообщение mr Jyggalag

mr Jyggalag
  • Ветеран

  • 609 сообщений
  •    

Отправлено

1. Лучше использовать первое. Создай себе в моде ISM в виде простого черного экрана и вперед, через ApplyCrossFade(). Можешь взять уже существующий из квеста Гильдии Воров, TG05BlackFrame что-то там... Кажется так называется (года 3 не открывал CK скайрима). В отличии от FadeOutGame(), Image Space Modifier, запученный через ApplyCrossFade(), не пропадает с экрана. То есть твой черный фрейм будет держаться на экране, пока ты не уберешь его командой ImageSpaceModifier.RemoveCrossFade(float ftime). Не пропадет даже при телепортации игрока в другую ячейку. В то время как первая команда использовалась разрабами лишь единожды во вступительной части игры и не сохранит тебе затемнение экрана.

Сделал через просто Apply(), а не ApplyCrossFade(), задействовав в качестве ISM "ванильные" FadeToBlackImod и FadeToBlackHoldImod, использовавшиеся в транспортной системе Скайрима (через них и сделано это самое затемнение экрана, когда игрок садиться в повозку). Осталось понять, как точно так же "высветлять" экран.
Благодарю за помощь

Сообщение отредактировал mr Jyggalag: 12 мая 2018 - 20:56


#344 Ссылка на это сообщение mr Jyggalag

mr Jyggalag
  • Ветеран

  • 609 сообщений
  •    

Отправлено

Пытаюсь "привязать" свою функцию к стадии квеста: прикрепляю к квесту сам скрипт (он успешно компилируется), назначаю в стадии квеста в kmyquest свой скрипт, пишу фрагмент кода kmyquest.TPMenu() и тут мне выдаёт уже ошибку:
Вот лог:

Какого чёрта компилятор он ругается, если до этого всё скомпилировалось успешно?

Код скрипта

Сообщение отредактировал mr Jyggalag: 12 мая 2018 - 22:22


#345 Ссылка на это сообщение werr

werr
  • больной на всю голову

  • 1 733 сообщений
  •    

Отправлено

Осталось понять, как точно так же "высветлять" экран.Благодарю за помощь


ImageSpaceModifier.RemoveCrossFade(float ftime)



#346 Ссылка на это сообщение werr

werr
  • больной на всю голову

  • 1 733 сообщений
  •    

Отправлено

Пытаюсь "привязать" свою функцию к стадии квеста: прикрепляю к квесту сам скрипт (он успешно компилируется), назначаю в стадии квеста в kmyquest свой скрипт, пишу фрагмент кода kmyquest.TPMenu() и тут мне выдаёт уже ошибку:

Вот лог:

Какого чёрта компилятор он ругается, если до этого всё скомпилировалось успешно?
Код скрипта
Scriptname BonfireTeleportationMenu Conditional

Сделай:
Scriptname BonfireTeleportationMenu extends Quest Conditional

Скомпилируй. И флаг Conditional, вроде как, можно убрать. (Хотя в Скуйриме этот момент немного отличается, не вспомню сейчас точно, лень искать).

#347 Ссылка на это сообщение mr Jyggalag

mr Jyggalag
  • Ветеран

  • 609 сообщений
  •    

Отправлено

Появилась новая партия вопросов:
1) в чём заключается разница между вызовом собственной анимации (созданной через назначение определенного Anim Event) и анимации, исконно существующей? Попробовал сделать вызвать существующую анимацию (IdleSitCrossLegged) и ничего не произошло, вызвал свою анимацию (в ней было указана IdleSitCrossLegged как Anim Event) - всё заработало.
 
2) UPD - решил вопрос

Вопрос:

Всего-лишь надо было добавить в нужное место пару .Remove()  :) 


Сообщение отредактировал mr Jyggalag: 15 мая 2018 - 16:57


#348 Ссылка на это сообщение mr Jyggalag

mr Jyggalag
  • Ветеран

  • 609 сообщений
  •    

Отправлено

Вопрос - функция .Show() может вызывать Месседжи только с числовыми значениями, да? Мне никак ведь не "всунуть" в Месседж строковое значение?



#349 Ссылка на это сообщение Dova0512

Dova0512
  • Новенький
  • 13 сообщений

Отправлено

Добрый день, уважаемые модмейкеры. Я новичок в модостроительстве и только недавно открыл для себя скрипты. Проблема у меня следующая. Хочу создать себе противника-Довакина, чтоб и крики использовал и чтобы душа дракона была, которую ГГ сможет поглотить после победы над противником. Только вот незадача - не знаю как сделать чтобы поглащалась душа противника.может кто-то подсказать как быть?



#350 Ссылка на это сообщение Azazellz

Azazellz
  • Тактик
  • 1 876 сообщений
  •    

Отправлено

Добрый день, уважаемые модмейкеры. Я новичок в модостроительстве и только недавно открыл для себя скрипты. Проблема у меня следующая. Хочу создать себе противника-Довакина, чтоб и крики использовал и чтобы душа дракона была, которую ГГ сможет поглотить после победы над противником. Только вот незадача - не знаю как сделать чтобы поглащалась душа противника.может кто-то подсказать как быть?

Копать надо в то, как сделаны драконы.

Смотреть скрипты, с ними связанные. Квесты.

Есть целая куча способов, как запустить это самое "поглощение души" - начиная со скрипта, который будет прикреплен индивидуально к каждому дракону, и заканчивая квестами (которые могут стартовать через StoryManager, с ивента на убийство, в котором дракон прописан, например).


Сообщение отредактировал Azazellz: 04 июня 2018 - 18:15


#351 Ссылка на это сообщение Karandra

Karandra
  • Знаменитый оратор



  • 3 685 сообщений
  •    

Отправлено

С Мираком из Dragonborn происходит именно это. Может стоит посмотреть какие скрипты на него повешены?


pre_1454504183__logo.png Kortex Mod Manager: Discord | GitHub | Web-site

#352 Ссылка на это сообщение Azazellz

Azazellz
  • Тактик
  • 1 876 сообщений
  •    

Отправлено

Эх.. Ну Мирака то зачем мучать? Все ж проще - не поленился, заглянул, как там оно все устроено.

Открываем дракона - к нему прилеплен dragonactorscript. В этом скрипте закодированы драконы как тип. А заодно там же и ссылки на другие скрипты, которые отвечают за весь прочий функционал.

В DragonDeathScript закодирована проверка на дистанцию, с которой игрок может поглотить душу дракона (чтоб от помершего на другом конце скайрима дракона души не прилетали).

И там же ссылка на скрипт, который поглощение делает.

Собственно, само поглощение описано в MQKillDragonScript. С комментариями на английском.



#353 Ссылка на это сообщение Dova0512

Dova0512
  • Новенький
  • 13 сообщений

Отправлено

С Мираком из Dragonborn происходит именно это. Может стоит посмотреть какие скрипты на него повешены?

Вот-вот-вот. Я тоже так подумал, но не знаю как посмотреть этот скрипт. Открываю DLC2Miraak и там в окне Papyrus Scripts вообще никакого скрипта нет.



#354 Ссылка на это сообщение Dova0512

Dova0512
  • Новенький
  • 13 сообщений

Отправлено

Эх.. Ну Мирака то зачем мучать? Все ж проще - не поленился, заглянул, как там оно все устроено.

Открываем дракона - к нему прилеплен dragonactorscript. В этом скрипте закодированы драконы как тип. А заодно там же и ссылки на другие скрипты, которые отвечают за весь прочий функционал.

В DragonDeathScript закодирована проверка на дистанцию, с которой игрок может поглотить душу дракона (чтоб от помершего на другом конце скайрима дракона души не прилетали).

И там же ссылка на скрипт, который поглощение делает.

Собственно, само поглощение описано в MQKillDragonScript. С комментариями на английском.

А я мать моя китайский генерал!А я уже неделю мудохаюсь и не мог понять как же сделать этот трюк!Фууухх!Так я правильно понимаю, можно ведь добавить этот скрипт НПС?



#355 Ссылка на это сообщение Azazellz

Azazellz
  • Тактик
  • 1 876 сообщений
  •    

Отправлено

А я мать моя китайский генерал!А я уже неделю мудохаюсь и не мог понять как же сделать этот трюк!Фууухх!Так я правильно понимаю, можно ведь добавить этот скрипт НПС?

Напрямую? Нет. Сам по себе он ничего не делает - в нем только функции.

Все работает потому, что функция в этом скрипте вызывается из другого скрипта (тот самый DragonDeathScript), который вызывается ивентом из dragonactorscript.

Разбирайся =)


Сообщение отредактировал Azazellz: 04 июня 2018 - 18:52


#356 Ссылка на это сообщение Dova0512

Dova0512
  • Новенький
  • 13 сообщений

Отправлено

Напрямую? Нет. Сам по себе он ничего не делает - в нем только функции.

Все работает потому, что функция в этом скрипте вызывается из другого скрипта (тот самый DragonDeathScript), который вызывается ивентом из dragonactorscript.

Разбирайся =)

Спасибо, значит сделаю на их примере такие же скрипты=)



#357 Ссылка на это сообщение Dova0512

Dova0512
  • Новенький
  • 13 сообщений

Отправлено

Спасибо, значит сделаю на их примере такие же скрипты=)

Эммм...может не туда обращаюсь, но у меня Creation Kit вылетает каждый раз когда я нажимаю Add script. Никто с этим не сталкивался?



#358 Ссылка на это сообщение Azazellz

Azazellz
  • Тактик
  • 1 876 сообщений
  •    

Отправлено

Эммм...может не туда обращаюсь, но у меня Creation Kit вылетает каждый раз когда я нажимаю Add script. Никто с этим не сталкивался?

Смотря куда добавляешь.

Если в квест - сначала надо его создать (ОК нажать). Иначе СК вылетит.



#359 Ссылка на это сообщение Dova0512

Dova0512
  • Новенький
  • 13 сообщений

Отправлено

Смотря куда добавляешь.

Если в квест - сначала надо его создать (ОК нажать). Иначе СК вылетит.

Не-не....Я пытаюсь добавить скрипт созданному НПС. 



#360 Ссылка на это сообщение Azazellz

Azazellz
  • Тактик
  • 1 876 сообщений
  •    

Отправлено

Ну тут уж ничего сказать не могу. Гугли.



#361 Ссылка на это сообщение werr

werr
  • больной на всю голову

  • 1 733 сообщений
  •    

Отправлено

Эммм...может не туда обращаюсь, но у меня Creation Kit вылетает каждый раз когда я нажимаю Add script. Никто с этим не сталкивался?


Потому что нужно исходники скриптов распаковать. Scripts.rar содержит их все, включая все скрипты из длс.





Темы с аналогичным тегами papyrus, help, скрипты, вопросы

Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых