Модератор форума: 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  Сообщение №1681 написано: 19 июня 2015, 14:06



А когда огненный шторм наносит урон только врагам - это, типа, продуманно и лорно? :)

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

nepewka  Offline  Сообщение №1682 написано: 19 июня 2015, 14:28 | Отредактировано: nepewka - 19 июня 2015, 14:42



255
нашел я книгу, помоему это она, линкануть не могу к сожалению, тупейший движок у вики свитков. Поищите в гугле: Skyrim чёрная книга ветры перемен

Добавлено (19 Июня 2015, 17:28)
---------------------------------------------
Сама книга никаких перков/спеллов не вешает. Значит ищем ответ в скриптах.
Скрипты:

1. Скрипт самой черной книги. (общий для всех черных книг)

Bool Property DisableLooking=false Auto Conditional
{ when locking controls, should we disable the camera? default = FALSE }

bool Property bPlayerHasRead = false Auto Conditional Hidden
{ set to true after player has read it once - when false, ignore "can read" restrictions }

Event OnRead()
;   debug.trace(self + "OnRead ")
if (DLC2BooksActive.GetValueInt() == 1) ; for Shane's debugging during layout
; pass along myReference rather than self - ReadBook always wants the book's real reference
;   debug.trace(self + " reading - pass along myReference=" + myReference)
GetLinkedRef(DLC2LinkBlackBookEnabled).Disable()
DLC2BookDungeonController.ReadBook(myReference as DLC2BlackBookScript, self)
endif
endEvent

Event OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer)
; when enters player's inventory, swap aliases so that it has full name again
if akNewContainer == Game.GetPlayer()
; debug.trace(self + " OnContainerChanged")
DLC2BookDungeonController.TakeBook(myReference as DLC2BlackBookScript)
endif
endEvent

function SetDungeonMarker(ObjectReference newMarker)
; debug.trace(self + " resetting DungeonMarker to " + newMarker)
DungeonMarker = newMarker
; debug.trace(self + " DungeonMarker=" + DungeonMarker)
endFunction

DLC2BookDungeonControllerScript Property DLC2BookDungeonController  Auto

ObjectReference Property DungeonMarker Auto
{ marker to send player to }

Location Property DungeonLocation Auto
{ dungeon location - REQUIRED - dungeon needs to be all in a single location }

Quest Property myQuest  Auto
{(optional) quest to set stage on when read}

Int Property myQuestStage  Auto
{optional quest stage to set when read}

ObjectReference Property myReference  Auto
{points to reference of this book - necessary because
most reference data becomes inaccessible from an inventory object
}

==================================================

2. Квест именно нашей чёрной книги:

;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment
;NEXT FRAGMENT INDEX 3
Scriptname DLC2_QF_DLC2BlackBook04Quest_0203216E Extends Quest Hidden

;BEGIN ALIAS PROPERTY BookTarget
;ALIAS PROPERTY TYPE ReferenceAlias
ReferenceAlias Property Alias_BookTarget Auto
;END ALIAS PROPERTY

;BEGIN FRAGMENT Fragment_0
Function Fragment_0()
;BEGIN CODE
SetObjectiveDisplayed(10)
;END CODE
EndFunction
;END FRAGMENT

;BEGIN FRAGMENT Fragment_2
Function Fragment_2()
;BEGIN CODE
DLC2BookDungeonController.IncrementBookFinished()
SetObjectiveCompleted(10)
Stop()
;END CODE
EndFunction
;END FRAGMENT

;END FRAGMENT CODE - Do not edit anything between this and the begin comment

DLC2BookDungeonControllerScript Property DLC2BookDungeonController  Auto

=======================================================

Сам перк: не пойму только где он вешается на игрока. Хотя неважно, повесить можно вручную в ките.

DLC2BlackBookCompanionsSafePerk, посмотрите как работает.
Там урон не проходит из за CurrentFollowerFaction
то есть по суммонам проходить будет.
Решение? Поставит кейворд суммонский?


В теме про эту книгу пишут, что работает она так себе..
http://ru.elderscrolls.wikia.com/wiki/%D0%A2%D0%B5%D0%BC%D0%B0:263949

Multigone  Offline  Сообщение №1683 написано: 19 июня 2015, 15:25 | Отредактировано: Multigone - 19 июня 2015, 15:26



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

nepewka  Offline  Сообщение №1684 написано: 19 июня 2015, 15:39



255
а можно какой нибудь кейворд повесить на призываемого атронаха и там в условиях прописать, типа по этому кейворду не дамажить.. Или не все так просто?

Multigone  Offline  Сообщение №1685 написано: 19 июня 2015, 15:49



832
Я же тебе предложил свой вариант. Попробуй его. Если не получится... я не знаю, считаются ли призванные сущ-ва teammate (надо проверять).

nepewka  Offline  Сообщение №1686 написано: 19 июня 2015, 17:26



255
Multigone, попробовать вариант с перком или скриптом?

Multigone  Offline  Сообщение №1687 написано: 19 июня 2015, 17:44



832
nepewka, с перком. Со скриптом тоже должно работать, если тебя не смущает 0.1 секундный иммунитет к магии.

nepewka  Offline  Сообщение №1688 написано: 19 июня 2015, 19:08



255
Multigone, способ кейворд+перк рабочий вприципе, но есть 2 вопроса.

1) Mod Spell Magnitude = 0.0 - это работает для спеллов, а работает ли для энчантов ? они же вроде как тоже через MGEF работают, следовательно должно работать и для них, ведь так?

2) как решить проблему с агро, даже когда 0 урона все равно флаг hostile и рано или поздно непись агриться. Впринципе, как ты говоришь в общем бою даже если случайно заденешь с 0 уроном то непись не обидиться, ведь так? Если да, то это даже не проблема.

Multigone  Offline  Сообщение №1689 написано: 19 июня 2015, 20:56 | Отредактировано: Multigone - 19 июня 2015, 20:57



832
nepewka,

1)
Mod Spell Duration - Affects the duration of spells, potions, ingredients, enchantments, etcetera (anything with an "Effect List" in the Creation Kit).
Mod Spell Magnitude - Affects the magnitude of spells and spell-like effects (see above).
Ссылка.

2) Уверен в этом, т.к. наблюдал в игре.

nepewka  Offline  Сообщение №1690 написано: 19 июня 2015, 21:12



255
круто, Mod Spell Magnitude реально работает на все MGEF.  :)

Вейт, а ты же до этого создавал каких то атронахов берсеркеров или нет?

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



832
nepewka, ну, переделал одного огненного волка, что дают в каком-то кургане. Можно сказать, что-то делал.

nepewka  Offline  Сообщение №1692 написано: 20 июня 2015, 08:51 | Отредактировано: nepewka - 20 июня 2015, 08:53



255
Multigone, помнишь мы с тобой спорили на тему, что 2 или 3 суммона лучше одного игрока?
Ты все время говорил, что это не так.
Так вот, что думаешь когда в роли суммона выступает какой нибудь Карстааг или Эбонитовый воин ?

Кстати, зачем на этом скрине в перке для игрока ты указал GetFactionRelation ? Если одного HasKeyword вполне достаточно, чтобы игрок не наносил урона неписям с этим кейвордом. Или ты указал это, чтобы игрок не наносил урона самому себе со своих аое спеллов (что кстати тоже нужно), но не проще тогда было бы указать GetIsId PlayerRef ?
http://jpegshare.net/b9/3b/b93b602d5acb7f12ecf8dfde1b8b27dc.jpg.html

Multigone  Offline  Сообщение №1693 написано: 20 июня 2015, 10:47 | Отредактировано: Multigone - 20 июня 2015, 10:59



832
nepewka,

1) Накрутить цифры параметров НПС - не мой путь.

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

3) Игрок и так не наносит себе урона от собственных заклинаний с воздействием на площадь. Проверь, кинь себе под ноги фаербол. Исключение: когда снаряд порождает взрыв, который порождает другой взрыв. В этом случае последний взрыв будет действовать на всех подряд (ему указывается Enchantment с поражающим маг. эффектом FF - Contact).

Multigone  Offline  Сообщение №1694 написано: 20 июня 2015, 10:57



832
nepewka, в перк игрока во вкладку Target еще можно добавить условие "только в битве" (см. указанный тобой перк из Драгонборна).

nepewka  Offline  Сообщение №1695 написано: 20 июня 2015, 10:59 | Отредактировано: nepewka - 20 июня 2015, 11:01



255
Цитата Multigone

1) Накрутить цифры параметров НПС - не мой путь. 2) Вообще-то, они должны игнорировать урон только тогда, когда являются союзниками игроку. Ты же не хочешь получить неуязвимых магией атронахов, если специально их атакуешь вне боя?

3) Игрок и так не наносит себе урона от собственных заклинаний с воздействием на площадь. Проверь, кинь себе под ноги фаербол. Исключение: когда снаряд порождает взрыв, который порождает другой взрыв. В этом случае последний взрыв будет действовать на всех без исключения (ему указывается Enchantment с поражающим маг. эффектом FF - Contact).



1) хмм, так то заклинание вызова Карстаага можно получить в ванильной игре выполнив квест. Это не накрутка )

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

3) Ты как в воду глядел) Про снаряд порождающий другой взрыв. И урон получаемый игроком от собственного же заклинания, которое взрывом вызывает Enchantment с MGEF FF-Contact.
как избежать этого урона ?

GetIsId PlayerRef в Condition'сах поможет же, ведь так??

Multigone  Offline  Сообщение №1696 написано: 20 июня 2015, 11:12 | Отредактировано: Multigone - 20 июня 2015, 11:14



832
nepewka,

2) Если ты атакуешь своего уникального атронаха оружием вне боя, он станет врагом, очевидно же. Почему нет?

3) Никак, наоборот, надо все ванильные заклинания переделать, чтобы они не разбирали свой-чужой. Мне, как и Dsion'у, не нравится подобный избирательный подход к их работе.
Ну а если все-таки это необходимо, то тут несколько вариантов проверок (в конечном маг. эффекте референс источника заклинания мы определить не можем):
- имеет ли цель экипированное заклинание с нужным кейвордом (минус - может выполняться не только для заклинателя)
- является ли цель конкретным актером (минус - заклинание можно выдавать только этому актеру).

nepewka  Offline  Сообщение №1697 написано: 20 июня 2015, 11:32 | Отредактировано: nepewka - 20 июня 2015, 11:41



255
Цитата Multigone

2) Если ты атакуешь своего уникального атронаха оружием вне боя, он станет врагом, очевидно же. Почему нет? 3) Никак, наоборот, надо все ванильные заклинания переделать, чтобы они не разбирали свой-чужой. Мне, как и Dsion'у, не нравится подобный избирательный подход к работе заклинаний.
Ну а если все-таки это необходимо, то тут несколько вариантов проверок (в конечном маг. эффекте референс источника заклинания мы определить не можем):
- имеет ли цель экипированное заклинание с нужным кейвордом (минус - может выполняться не только на заклинателя)
- является ли цель конкретным актером (минус - заклинание можно выдавать только этому актеру).


2) Зачем мне его атаковать вне боя, если он служит мне верой и правдой?
Цель была в том, чтобы мой аое урон от заклинаний и урон от Взрывов с Enchantment FF-Contact не наносил повреждений мне, моим атронахам и мини атронахам моих атронахов.

3) И какой вариант предлагаешь для защиты от урона Explosion>Enchantment>FF-Contact MGEF ??

Для примера:

- Заклинание Фаерболл вызывает Взрыв1 (тут все в порядке, защищает обычный кейворд)
- Взрыв1 вызывает Enchant - EnchFrostDamage1
- EnchFrostDamage1 вызывает Взрыв 2, Взрыв2 в свою очередь вызывает EnchFrostDamage2

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

Multigone  Offline  Сообщение №1698 написано: 20 июня 2015, 11:46



832
nepewka

2) Не знаю. Но я бы предусмотрел все варианты.

3) Любой из предложенных. Или делай по кейвордам, это будет наилучшим решением в твоем случае.
    Кстати, я речь вел о другом - снаряд порождает взрыв, который порождает другой взрыв через Placed Object (выпадающий список в Explosion). Второй взрыв атакует зачарованием FF - Contact.

nepewka  Offline  Сообщение №1699 написано: 20 июня 2015, 11:53



255
Цитата Multigone

Кстати, я речь вел о другом - снаряд порождает взрыв, который порождает другой взрыв через Placed Object (выпадающий список в Explosion). Второй взрыв атакует зачарованием FF - Contact.



Ну так я тебе про то же и пишу.

В MGEF Фаерболла скрипт:

explosion property exp01 auto

event oneffectstart (actor Target, actor Caster)

Target.PlaceAtMe(exp01, 1)

endevent

взрыв exp01 вызывает энчант, энчант скриптом вызывает другой взрыв, взрыв опять энчант. --- так вот, я тебя не понял сейчас. Чтобы защититься от такой конструкции, что нужно ? Perk > Keyword не поможет, насколько я тебя понял.
Нужно на спелл вешать Condition, чтобы самый первый эффект не запустился и дальнейшая цепочка не заработала. Так ?

Multigone  Offline  Сообщение №1700 написано: 20 июня 2015, 12:30



832
nepewka, тогда переделай перки:





nepewka  Offline  Сообщение №1701 написано: 20 июня 2015, 12:45 | Отредактировано: nepewka - 20 июня 2015, 12:43



255
Multigone, спасибо, теперь помимо актеров придется создать кейворды для спеллов?

Добавлено (20 Июня 2015, 15:45)
---------------------------------------------
Multigone, кстати как кейворд через алиас повесить на игрока? Можешь указать путь?


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



832
nepewka


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



832
nepewka



nepewka  Offline  Сообщение №1704 написано: 20 июня 2015, 16:43



255
Цитата Multigone

explosion property exp01 auto
event oneffectstart (actor Target, actor Caster) ; событие не сработает, если снаряд не попадет в актера (или в некоторые др. объекты, если задан архетип Scripts)
    Target.PlaceAtMe(exp01, 1)
endevent

 

не совсем понял, к чему ты это? 

Тут как бы все эффекты разделяются на две группы. (Щас обьясню почему я предпочитаю спеллы с аое, пусть и небольшим, как например Fireball)
1) группа MGEF FireDamageFFAimed - эффект, использующийся при заклинании firebolt, inicirate (имеет другой эффект, но впринципе схожий) . Area effect - 0. Вот здесь твои слова будут верны. Событие не сработает, если не попадаем снарядом.
не люблю данные заклинания, так как ими очень легко промахнуться. +Плюс такие MGEF даже не используют explosion как таковой, его у них нет ввиду area эффекта 0, он просто им не нужен. Следовательно говорить о Explosion > Enchant касаемо этих MGEF бесмысленно

2) группа MGEF FireDamageFFAimedArea - эффект, использующийся при заклинании Fireball. 
Area effect (стандартный) - 15. Мой любимый MGEF.
Вот здесь твои слова уже верны не будут. Событие срабатывает если шар взрывается в аое 15 футов, то есть можно даже в землю стрелять, чтобы эффект сработал. (на дальние расстояние так даже выгодней делать, чтобы не промахнуть по цели - лучше целить землю рядом с ним, эффект сработает)

Речь с самого начала шла именно о таких MGEF, здесь никаких проблем с несработкой события не бывает.

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



832
nepewka, ну, тебе виднее. Я к тому, что если эффект не наложится на цель (неважно, от попадания снаряда или от действия на площадь), событие не сработает, взрыва не будет. Плюс, если в зоне действия находятся 10 целей, то будет создано 10 взрывов, каждый из которых затронет остальных, и суммарный полученный урон одной такой целью будет равен произведению кол-ва целей на урон взрыва.

nepewka  Offline  Сообщение №1706 написано: 20 июня 2015, 19:11 | Отредактировано: nepewka - 20 июня 2015, 19:15



255
Multigone, братан, щас как раз вернулся домой и провожу тесты.

конфликты задолбали.. При создании обьекта всегда лучше создать новую форму?

Multigone  Offline  Сообщение №1707 написано: 20 июня 2015, 19:24



832
nepewka, вот только в Incoming не передается инфа о источнике заклинания, поэтому он не такой полезный. Т.е. его, в основном, можно использовать для регулирования урона от подходящих групп заклинаний, или в зависимости от состояния носителя перка.
В Mod Spell Magnitude также учитывается пригодность цели и ее состояние. Так что разница существенная.

Multigone  Offline  Сообщение №1708 написано: 20 июня 2015, 19:25 | Отредактировано: Multigone - 20 июня 2015, 19:28



832
nepewka, естественно. Т.е. лучше всего взять похожее, переименовать, допилить.

nepewka  Offline  Сообщение №1709 написано: 20 июня 2015, 19:34 | Отредактировано: nepewka - 20 июня 2015, 19:34



255
Цитата Multigone

nepewka, естественно. Т.е. лучше всего взять похожее, переименовать, допилить.


не могу избавиться от конфликтов даже при переименовании...

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

блять, как же бесят эти конфликты....

есть какой нибудь гайд на вики по этому?

Multigone  Offline  Сообщение №1710 написано: 20 июня 2015, 19:54



832
nepewka, наблюдение - после того, как прицепил к MGEF скрипт и настоил Property, не стоит ничего менять в связанном с ним SPEL (или Ability, ENCH и т.д.). Поменял SPEL - заново указал скрипт и Property. У меня из-за этого бывали проблемы, хоть это и звучит, как шаманство.

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





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