Модератор форума: 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? Пиши не в ЛС, а в эту тему.
Arin  Offline  Сообщение №721 написано: 14 февраля 2014, 13:10 | Отредактировано: Arin - 14 февраля 2014, 13:14



570
Цитата Artem13

Arin, а посмотри Вилкаса. Там, ведь, при поступлении к Соратникам, по сути, как раз тренировочный поединок.

Это первое место, куда я посмотрела. Но скрипта так и не нашла. Поверьте, если бы я что-то нарыла в самом СК, я бы сюда не обращалась. Заранее скажу, что через пакет UseWeapon сделать не получится, нпс не воспринимает свои действия как атаку и возмущается, что игрок бьет его в ответ.

Наука всегда оказывается не права. Она не в состоянии решить ни одного вопроса, не поставив при этом десятка новых.
Джордж Бернард Шоу
Myprism  Offline  Сообщение №722 написано: 14 февраля 2014, 14:18


Физик


Artem13Arin
У Вилкаса скрипт, наверное, стоит не на нём самом, а у его алиаса в квесте.

Arin  Offline  Сообщение №723 написано: 14 февраля 2014, 14:40



570
Цитата Myprism

У Вилкаса скрипт, наверное, стоит не на нём самом, а у его алиаса в квесте.

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

Наука всегда оказывается не права. Она не в состоянии решить ни одного вопроса, не поставив при этом десятка новых.
Джордж Бернард Шоу
Myprism  Offline  Сообщение №724 написано: 14 февраля 2014, 16:03


Физик


Arin
Я думаю, что вот в этом квесте C00VilkasTrainingQuest вы найдёте ответы на свои вопросы... Или будете ждать того, кто вам его разберёт, но это буду не я, извините.

Иероним  Offline  Сообщение №725 написано: 14 февраля 2014, 21:02



770
Где бы найти скрипт который забирал все вещи у ГГ. Словом очищал весь инвентарь. Что-то похожее было в миссии Шеогората когда ГГ телепортировался и у него забирался весь шмот, только вот я никак не могу найти где подобное спрятано. Важно еще то что этот шмот как и в самой миссии должен возвращаться.

AleksTirex  Offline  Сообщение №726 написано: 15 февраля 2014, 01:41


Архимаг


371
Цитата Arin

Не могли бы вы помочь со скриптом? Мне нужен скрипт, при котором между игроком и нпс начинается поединок, при этом  - или нпс не наносить никакого урона (и магией тоже, или магия блокируется).  - или стоит со щитом и просто блокирует удары.  Мне этот скрипт нужен для создания тренера, который учит не только с помощью окно, но и проводит настоящие тренировочные поединки.



akFaction - любая фракция с Ally сама на себя.
Перк - EntryPoint - Mod Attac Damage -  *0.0, т.е. наносимый урон неписем никакой.
 
Старт "дружбы":

akActor.IgnoreFriendlyHits()
akActor.AddPerk(akPerk)
akActor.AddToFaction(akFaction)
Game.GetPlayer().AddToFaction(akFaction)
akActor.GetActorBase().SetInvulnerable()  ; актёр теперь неуязвимый, ему не нанести урон
 
Теперь непися можно лупить как угодно, он не ответит.

Далее пакет или сцена-пакет: НПС атакует UseWeapon (желательно правильно поставить все галочки), или НПС стоит лицом к ГГ и оборняется (пакет Travel, галочки Weapon Draw + Ignore Combat). Запуск сцены akScena.Start().
 
Стоп "дружбы", вернуть на как было:

akActor.IgnoreFriendlyHits(false)
akActor.RemovePerk(akPerk)
akActor.RemoveFromFaction(akFaction)
Game.GetPlayer().RemoveFromFaction(akFaction)
akActor.GetActorBase().SetInvulnerable(false) 
 
Можно давать перк ГГ, тогда Modif Incoming Damage * 0.01, т.е. входящий урон для ГГ уменьшится в 100 раз.

DarkVetal  Сообщение №727 написано: 15 февраля 2014, 08:23

Иероним, если не нашол нужного по миссии шегората, загляни в миссию про поездку в талморское посольство, там вещи забираются из инвентаря и переносятся в сундук в далёкой локации. Может это тебе поможет.

Иероним  Offline  Сообщение №728 написано: 22 февраля 2014, 09:29



770
Вешаю на триггер DefaultPlaySoundAtLinkSCRIPT и в нужном месте воспроизводится нужный звук, но повесив его на активатор, тот же рычаг, ничего не происходит. Может другой скрипт нужен?

LordVadim  Offline  Сообщение №729 написано: 23 февраля 2014, 06:22 | Отредактировано: LordVadim - 23 февраля 2014, 06:31



139
Цитата Иероним

Вешаю на триггер DefaultPlaySoundAtLinkSCRIPT и в нужном месте воспроизводится нужный звук, но повесив его на активатор, тот же рычаг, ничего не происходит. Может другой скрипт нужен?


Сделай из  DefaultPlaySoundAtLinkSCRIPT новый скрипт, заменив onTriggerEnter(ObjectReference triggerRef) на OnActivate(ObjectReference  triggerRef) и все будет работать.
Да, если активатором планируешь пользоваться несколько раз, надо из скрипта убрать self.disable().

MemoriaVetusta  Offline  Сообщение №730 написано: 23 февраля 2014, 12:02



173
Всем привет! Подскажите пример написания скрипта, отслеживающего смерть актера (врага). Для чего нужно: есть заклинание, которое нужно применить при смерти врага, убитого с одетым на игроке (или др. актере) зачарованным предметом одежды.

Как должно работать: указанный скрипт добавляется предмету одежды (пусть это будет маска Анубиса из одноименного комплекта). Когда игрок с надетой маской убивает врага, должно срабатывать некое заклинание (пусть лечение игрока, Fire And Forget).

К сожалению, через Match Condition нельзя отследить смерть врага (как я не пытался, не удается). Такая вот дилемма.

unsure

Nothing is...
slastik  Offline  Сообщение №731 написано: 2 марта 2014, 16:10


Жаждущий


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

Event OnActivate(ObjectReference akActionRef)
     RegisterForSingleUpdateGameTime(AddTime01)
     RegisterForSingleUpdateGameTime(AddTime02)
     RegisterForSingleUpdateGameTime(AddTime03)
     RegisterForSingleUpdateGameTime(AddTime04)
EndEvent


Только чтобы это были четыре разных события, а не одно и то же событие через четыре разных промежутка времени.

- Что это за горы стоят?
- А, это орки бегут!
LordVadim  Offline  Сообщение №732 написано: 2 марта 2014, 22:37



139
Цитата slastik

Только чтобы это были четыре разных события, а не одно и то же событие через четыре разных промежутка времени.

Самый простой способ - повесить на активатор четыре скрипта.

slastik  Offline  Сообщение №733 написано: 3 марта 2014, 08:23


Жаждущий


209
Цитата LordVadim

Самый простой способ - повесить на активатор четыре скрипта.


На данный момент в плагине уже 132 скрипта :)
Я пытаюсь всеми способами уменьшить их количество...

- Что это за горы стоят?
- А, это орки бегут!
LordVadim  Offline  Сообщение №734 написано: 3 марта 2014, 18:09 | Отредактировано: LordVadim - 3 марта 2014, 18:12



139
Цитата slastik

На данный момент в плагине уже 132 скрипта Я пытаюсь всеми способами уменьшить их количество...


Тогда так: Допустим, что твои события должны произойти через: 1) - 1 сек. 2) - 3 сек. 3) - 5 сек. 4) - 10 сек.

Int iTime

Event OnActivate(ObjectReference akActionRef)
    iTime = 0
    RegisterForUpdate(1)
EndEvent

Event OnUpdate()
    iTime +=1
    if iTime == 1
        ;- выполняются действия 1 события
    ElseIf iTime == 3
        ;- выполняются действия 2 события
    ElseIf iTime == 5
        ;- выполняются действия 3 события
    ElseIf iTime == 10
        ;- выполняются действия 4 события
        UnRegisterForUpdate()
    EndIf
EndEvent

slastik  Offline  Сообщение №735 написано: 3 марта 2014, 18:31


Жаждущий


209
Попробуем. Спасибо :)

- Что это за горы стоят?
- А, это орки бегут!
сергей007788  Offline  Сообщение №736 написано: 6 марта 2014, 07:51



76


 

 

 

 






  

 

 Подскажите пожалуйста, что написать чтобы на месте вопросов высветилось имя NPK крипт
 

debug.Notification(?????"Ваш напарник тяжело ранен и покинул вас")

 

 

 скрипт висит на Аллиасе.
 

 


MartinLuter  Offline  Сообщение №737 написано: 9 марта 2014, 08:03 | Отредактировано: MartinLuter - 9 марта 2014, 08:16



2
У меня вопрос. Есть ли возможность изменить угол обзора(поле зрения) через скрипт? Просто через консоль можно, а через скрипт не нахожу. Если есть возможность, ответьте в лс.

@perture  Offline  Сообщение №738 написано: 9 марта 2014, 09:01


$cience innov@tor


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

"Не спорьте с идиотами! Вы опуститесь до их уровня, а там они вас задавят своим опытом!" ©
MartinLuter  Offline  Сообщение №739 написано: 9 марта 2014, 15:20



2
А знаете как определить через скрипт что сейчас игрок в режиме от первого лица?

toozikoos  Offline  Сообщение №740 написано: 13 марта 2014, 02:26



21
MartinLuter
game.getPlayer().getAnimationVariableInt("i1stPerson")

Иероним  Offline  Сообщение №741 написано: 16 марта 2014, 16:50



770
Хочу узнать с помощью каких скриптов заставить двигаться статичный предмет. Например чтобы каменный блок двигался из точки А в точку Б.

DarkVetal  Сообщение №742 написано: 16 марта 2014, 17:22 | Отредактировано: DarkVetal - 16 марта 2014, 17:23

Иероним, в предыдущих постах AleksTirex и LordVadim мне рассказывали как сделать движущийся лифт. Что делать с моделью Алекс сказал, скрипты ЛордВадима работают, но если лень копатся, могу переслать скрипт и сделать модель нужную, инструкция по установке имеется, единственное что скрипт или модель для лифта предусматривает привязку ГГ к модели (чтоб ГГ не прыгал во время езды) мне Алекс над этим поколдовал, но может и расколдовать привязку ГГ (если дело в скрипте), но ГГ привязывается к модели только если стоит впритык, если дальше пары метров, то все окей. Я себе таким способом сделал сдвижные панели на стену, с кнопочным управлением.

Иероним  Offline  Сообщение №743 написано: 16 марта 2014, 17:41



770
DarkVetal, да мне бы так чтобы привязки к ГГ не было вообще. В идеале я хочу при активации тригера получить движение объекта по заданным координатам ну или типа того. Я вообще сомневался в возможности взаимодействовать со статикой поэтому это тёмный лес для меня.

Иероним  Offline  Сообщение №744 написано: 16 марта 2014, 18:10



770
DarkVetal, ну выглядит неплохо. Насчёт коллизии, то для моей задумки она в принципе не нужна. Интересны такие моменты как скорость поднимающихся панелей и их оси по которым они двигаются.

DarkVetal  Сообщение №745 написано: 16 марта 2014, 18:15

Иероним, скорость указана в скрипте (у меня 200) а оси - движение между двумя маркерами

Иероним  Offline  Сообщение №746 написано: 16 марта 2014, 18:51



770
DarkVetal, хотелось бы взглянуть на сам скрипт .)

DarkVetal  Сообщение №747 написано: 16 марта 2014, 18:59 | Отредактировано: DarkVetal - 16 марта 2014, 19:00

Иероним,

LordVadim  Offline  Сообщение №748 написано: 16 марта 2014, 21:05



139
Цитата DarkVetal

Единственный минус - пропала коллизия панелей.

Добавь в СК на месте панелей плоскости коллизии.
В скрипты добавь ссылку на плоскость ObjectReference Property prCollision Auto
При поднятии панели у соответствующей плоскости делай prCollision.Disable(), при опускании prCollision.Enable().

Иероним  Offline  Сообщение №749 написано: 17 марта 2014, 14:40



770
DarkVetal, спасибо за скрипт! Посмотрел, поигрался с цифрами и осями, и получилось то что мне нужно.  ok

DarkVetal  Сообщение №750 написано: 17 марта 2014, 15:40 | Отредактировано: DarkVetal - 17 марта 2014, 15:40

LordVadim, я сделал так: лучи тумана подсвеченные синим + коллизия - типа защитное поле, все вместе отключается кнопкой. Как будет время, попробую твой способ, придется скопировать и переделать для этого основные скрипты.
ObjectReference Property prCollision Auto - это в скрипт панели вставить? В какую лучше строку скрипта вставить, чтоб не поломать скрипт? И потом как назначить нужную панель, через Properties или LinkedRef?
prCollision.Disable()
prCollision.Enable()
 - это в скрипт ручек добавить надо, в какую лучше строку скрипта вставить, чтоб не поломать скрипт? И потом как назначить нужную панель, через Properties или LinkedRef?
Я нуб в скриптах, поэтому и уточняю  unsure

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





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