Модератор форума: 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  Сообщение №1471 написано: 28 февраля 2015, 11:42



Если кто-то регулярно занимается скриптами, я бы советовал сесть и просмотреть все функции на всех объектах:
http://www.creationkit.com/Category:Script_Objects

Для актора актуальны Actor Script, ObjectReference Script и Form Script.

lolososo  Offline  Сообщение №1472 написано: 28 февраля 2015, 11:52 | Отредактировано: lolososo - 28 февраля 2015, 11:53



36
Цитата Holtof55

Еще один момент, как запустить проверку, есть ли на нпс(актере) действующий магический эффект(эффект определенный, а не абы какой)


Код
if (Game.GetPlayer().HasMagicEffect(RockjointEffect))    
      Debug.notification("The player has rockjoint")
endIf

Holtof55  Offline  Сообщение №1473 написано: 28 февраля 2015, 12:05 | Отредактировано: Holtof55 - 28 февраля 2015, 12:18



49
Цитата Dsion

Если кто-то регулярно занимается скриптами, я бы советовал сесть и просмотреть все функции на всех объектах:http://www.creationkit.com/Category:Script_Objects

Для актора актуальны Actor Script, ObjectReference Script и Form Script.

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

Добавлено (28 Февраля 2015, 15:05)
---------------------------------------------
lolososo, Спасибо, но это на игроке, а на нпс как написать?

Код
if (ActiveActor().HasMagicEffect(RockjointEffect))
Debug.notification("The player has rockjoint")
myTrack.Remove()
endIf


так можно писать?

lolososo  Offline  Сообщение №1474 написано: 28 февраля 2015, 12:12 | Отредактировано: lolososo - 28 февраля 2015, 12:13



36
Цитата Holtof55

lolososo, Спасибо, но это на игроке, а на нпс как написать?


Код
if (MyNPC.HasMagicEffect(RockjointEffect))      
        Debug.notification("The NPC has rockjoint")   
endIf

Actor Property MyNPC Auto

Dsion  Offline  Сообщение №1475 написано: 28 февраля 2015, 12:16



А причем тут ты... Это сообщение было адресовано абсолютно абстрактному посетителю форума, который предпочтет не использовать других как гугл.
Думаешь, lolososo просто так знал этот скрипт, который тебе показал? Нет. Он открыл раздел "Actor Script" на creationkit.com, произвел по странице поиск по слову "Magic", потом открыл справку по функции HasMagicEffect. Он убедился, что это то, о чем ты спрашиваешь, и скопировал оттуда для тебя пример.
Лично я не в теме, почему кто-то не мог сделать этого сам... Но это, опять же, об абстрактном форумчанине.

Holtof55  Offline  Сообщение №1476 написано: 28 февраля 2015, 12:29



49
lolososo, Спасибо еще раз но есть большое НО, мне тогда в проперти надо вписать всех нпс из ванили и всех нпс из подключенных модов с уникальным именем
дело в том, что это не какой-то конкретный нпс, а любой...но, со своей фракцией, в которую он попадает после ударов плетки рабовладельца и соответствующего диалога.

Добавлено (28 Февраля 2015, 15:29)
---------------------------------------------

Цитата Dsion

А причем тут ты... Это сообщение было адресовано абсолютно абстрактному посетителю форума, который предпочтет не использовать других как гугл.Думаешь, lolososo просто так знал этот скрипт, который тебе показал? Нет. Он открыл раздел "Actor Script" на creationkit.com, произвел по странице поиск по слову "Magic", потом открыл справку по функции HasMagicEffect. Он убедился, что это то, о чем ты спрашиваешь, и скопировал оттуда для тебя пример.
Лично я не в теме, почему кто-то не мог сделать этого сам... Но это, опять же, об абстрактном форумчанине.

Чтобы пользоваться справочником надо понимать что ты ишешь, для чего и как минимум знать язык, нет два - английский и папирус или любой другой язык программирования, я не знаю кроме русского никакого и предлагаю закончить на этом :)

lolososo  Offline  Сообщение №1477 написано: 28 февраля 2015, 12:56 | Отредактировано: lolososo - 28 февраля 2015, 12:58



36
Цитата Holtof55

дело в том, что это не какой-то конкретный нпс, а любой...но, со своей фракцией, в которую он попадает после ударов плетки рабовладельца и соответствующего диалога.

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

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

Dsion  Offline  Сообщение №1478 написано: 28 февраля 2015, 13:00



Проперти на скриптах можно менять в любой момент из любых других скриптов.
Можно сделать, чтоб после диалога NPC запихивался в проперти любого другого скрипта.
А если нужно на нем ивенты отслеживать, то нужно в алиас запихивать.

Holtof55  Offline  Сообщение №1479 написано: 28 февраля 2015, 19:13 | Отредактировано: Holtof55 - 28 февраля 2015, 19:22



49
lolososo, Я делаю мод 18+ и просто не знаю как к этому относятся на сайте....
В частности не получается скрыть\показать объект до определенной стадии квеста...Альяс сделал птицу на AllovDissabe  поставил, флейта так и в аляетсяв мире, но она стадии перключает и является квестовым предметом, мне ее нужно скрыть до 150 стадии
Команда вида:
Код
FluteSvena.enable()
не проходит, папирус не понимает что такое enable жаль нельзя скрин прям в сообщение вставить

lolososo  Offline  Сообщение №1480 написано: 1 марта 2015, 14:28



36
Holtof55
Цитата Holtof55

FluteSvena.enable()


Попробуй так


Код
FluteSvena.GetRef().enable()

Holtof55  Offline  Сообщение №1481 написано: 1 марта 2015, 17:00 | Отредактировано: Holtof55 - 1 марта 2015, 17:01



49
lolososo, Я пишу в квестовом скрипте в стадии квеста
Код
Alias_aaFluteSvena.GetRef().Enable()

не работает, флейта как валялась, так и валяется

или надо вводить новую проперти на объект?

Dsion  Offline  Сообщение №1482 написано: 1 марта 2015, 17:19



А чего бы ей не продолжать валяться после команды "включить"?

Добавлено (01 Марта 2015, 20:19)
---------------------------------------------
Если объект создается алиасом (Create Reference To Object), то можно поставить галочку "Initially Disabled", если нужно скрыть его до какой-то стадии. Если объект создается в какой-то Cell, то у него в настройках тоже есть такая галочка. А потом уже включать.


Holtof55  Offline  Сообщение №1483 написано: 1 марта 2015, 23:05



49
Цитата Dsion

А чего бы ей не продолжать валяться после команды "включить"?Добавлено (01 Марта 2015, 20:19)
---------------------------------------------
Если объект создается алиасом (Create Reference To Object), то можно поставить галочку "Initially Disabled", если нужно скрыть его до какой-то стадии. Если объект создается в какой-то Cell, то у него в настройках тоже есть такая галочка. А потом уже включать.


Ок, попробую спасибо

AleDerXan  Offline  Сообщение №1484 написано: 7 марта 2015, 13:12



2
Люди. Можете помочь. Есть ли вариант повторить в скриптах эффект сброса скорости персонажа? Чтобы, например скрипт раз в 10-20 секунд проверял "speedMult", и если он не равен 100, делал его равным ста?( аналогично консольной команде, player.setav speedmult 100) Или быстрое сохранение-загрузка)
Со скриптами связался только вчера.
Потому прошу , тех кто разбирается,  прямо в комменте написать его полностью. И возможно, ссылку, на нормальную инструкцию того, как его заcyнyть в игру. (или если такой уже есть, дать на него ссылку)

anton  Offline  Сообщение №1485 написано: 7 марта 2015, 13:42



362
Кто нибудь знает как скриптом заставить ГГ взять оружие в Левую руку ?

В свойствах оружия пробовал выставить "только для левой руки", но это ничего не даёт.
И ещё, в левую руку оружие не берётся, даже если в правой оружие уже есть.

Мой Блог
Dsion  Offline  Сообщение №1486 написано: 7 марта 2015, 14:04 | Отредактировано: Dsion - 7 марта 2015, 14:06



anton, в SKSE есть функция EquipItemEx, которой задается слот. Но как-то с SKSE не очень круто...

@perture  Offline  Сообщение №1487 написано: 7 марта 2015, 14:07


$cience innov@tor


anton, в скелете есть кость WEAPON, и оружие аттачится к ней. С ванильным скелетом в левую руку оружие вряд ли возьмется.

"Не спорьте с идиотами! Вы опуститесь до их уровня, а там они вас задавят своим опытом!" ©
anton  Offline  Сообщение №1488 написано: 7 марта 2015, 14:14



362
Dsion, точно, спасибо, проверил - работает. А по другому похоже никак...

Добавлено (07 Марта 2015, 17:14)
---------------------------------------------
@perture, но ведь через инвентарь оно работает.


Мой Блог
@perture  Offline  Сообщение №1489 написано: 7 марта 2015, 14:28 | Отредактировано: @perture - 7 марта 2015, 14:29


$cience innov@tor


Да, чет я тупанул. :D Думал там привязка такая же, как к костям экипировки.

"Не спорьте с идиотами! Вы опуститесь до их уровня, а там они вас задавят своим опытом!" ©
Holtof55  Offline  Сообщение №1490 написано: 7 марта 2015, 21:14



49
Есть такой вопрос, как правильно добавлять игроку или нпс, квестовый альяс? Как просто предмет, я знаю, а как как Альяс, дело втом, что он должен быть помечен как квестовый обект, и не пропасть из инвентаря, альяс я сделал, галку поставил, осталось узнать "поле" где и главное что вписать, спасибо

anton  Offline  Сообщение №1491 написано: 8 марта 2015, 21:10



362
Тоже по "алиасам" спрошу :)

Можно ли как то заполнить РеференсАлиас предметом инвентаря, когда ГГ оденет этот предмет ?

Я вот как сделал чтобы получить желаемый референс: 
- создал квест, в нём создал алиас на ГГ и алиас на нужный предмет, который появляется в инвентаре ГГ при активации квеста (через пункт Create reference to Object в качестве цели указав алиас ГГ). 

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

Мой Блог
Dsion  Offline  Сообщение №1492 написано: 8 марта 2015, 21:45



Я тоже не в теме, как такое провернуть. У предметов в инвентарях и контейнерах просто нету своих RefId.
Если бы были, можно было бы делать вот так:

Код
Scriptname SionBowScript extends ObjectReference

ReferenceAlias Property MyAlias Auto

Event OnEquipped(Actor akActor)
     Debug.MessageBox(Self)
     MyAlias.ForceRefTo(Self)
     Utility.Wait(1.0)
     Debug.MessageBox(MyAlias.GetRef())
EndEvent

Но не работает.

А зачем отправлять в алиас экипированный предмет? Мне кажется, без этого можно обойтись...

anton  Offline  Сообщение №1493 написано: 8 марта 2015, 22:14



362
Dsion, это я пытаюсь сделать свой предмет в инвентаре временно квестовым, пока он надет, чтобы его нельзя было потерять при попадании в тюрьму, когда все вещи отбирают.
Мой вариант работает, предмет не теряется, но только дубль в инвентаре создаёт, который потом приходится удалять. Но это мелочи, просто думал, что как то правильнее сделать можно.

Мой Блог
p1cador  Offline  Сообщение №1494 написано: 14 марта 2015, 19:46



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

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

AleDerXan  Offline  Сообщение №1495 написано: 16 марта 2015, 03:20



2
Кхм... Трогать перки это плохо. Да, можно потерять навыки, отойти от дел и так далее. Но мастрество даже пропить нельзя. Если научился ездить на велосипеде, то никогда не разучишься.  Так, что это нормально, что перки остаются.

strchi  Offline  Сообщение №1496 написано: 22 марта 2015, 16:44



194
smile2 Не совсем шарю в этом деле, но как сделать частичное отражение магии? (например НПС мочит ГГ магией, после создания магического плаща такого- НСП получает повреждение от своей же магии (процент зависит от прокачки колдовства)

SoraSt  Offline  Сообщение №1497 написано: 25 марта 2015, 07:54



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

VALKNUT  Offline  Сообщение №1498 написано: 25 марта 2015, 07:58 | Отредактировано: VALKNUT - 25 марта 2015, 08:04



SoraSt, добавьте в скрипт проверку его срабатывания. Чтоб было понимание, срабатывает вообще скрипт, когда некто входит в триггер.

Scriptname aaChest extends ObjectReference
ObjectReference Property akContainer Auto
Event OnTriggerEnter(ObjectReference akActionRef)
;Game.GetPlayer().RemoveAllItems(akContainer)
Debug.MessageBox("Скрипт сработал")
EndEvent

Кто к нам с чем и за чем, тот от того и того... ʘ_ʘ
<a class="link" href="http://modgames.net/load/0-0-200451-0-17" rel="nofollow" target="_blank"> border="0" alt=""/</a>
SoraSt  Offline  Сообщение №1499 написано: 25 марта 2015, 08:20



21
VALKNUT, скрипт не срабатывает.

VALKNUT  Offline  Сообщение №1500 написано: 25 марта 2015, 08:25



SoraSt, скрипт висит на самом триггере?

Event OnTriggerEnter(ObjectReference akActionRef)
Debug.MessageBox("Скрипт сработал")
EndEvent

Гляньте здесь - http://www.creationkit.com/OnTriggerEnter_-_ObjectReference

Кто к нам с чем и за чем, тот от того и того... ʘ_ʘ
<a class="link" href="http://modgames.net/load/0-0-200451-0-17" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)
Поиск:





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