• Страница 1 из 1
  • 1
Форум » Записи участника [PitrPokir]

Результаты поиска
PitrPokir  Offline  Сообщение №1 | Тема: Вопросы по Creation Kit SE написано: 7 января 2017, 02:48



26
На днях начал знакомство с CK и некоторые вещи слабо понимаю. Благо инфы немало, но иногда даже неясно в какую сторону искать.
Я бы хотел реализовать небольшое меню после нажатия кнопки действия на труп или применения заклинания. Например, как выбор поедание трупа или обыскать у каннибалов или питание у вампиров, только желательно в несколько вариантов действий, поболее двух. Это реально?
Хотел бы знать какие элементы использовать для этого, если реально.

PitrPokir  Offline  Сообщение №2 | Тема: Вопросы по Creation Kit SE написано: 8 января 2017, 18:18 | Отредактировано: PitrPokir - 10 января 2017, 13:55



26
snnut, спасибо за ссылки и информацию. Начал знакомство в СК64, потому что сам играю в SSE и неохота возвращаться на SLE. Не то что бы грандиозные планы, просто хочу несколько фич сделать. Буду надеяться, что этого СК хватит

PitrPokir  Offline  Сообщение №3 | Тема: Вопросы по скриптам Papyrus написано: 8 января 2017, 21:39 | Отредактировано: PitrPokir - 8 января 2017, 21:40



26
Господа, подскажите, почему в игре указанный предмет пропадает у Caster'a, а не у Target'a? Более того, предмет в обоих вариантах удаляется у игрока из инвентаря, а не у цели, на ком бы функция не работала.
Весь день ковыряюсь в этих строчках, ума не приложу в чем беда.


Код
Scriptname NecroReanimateNPCScript extends ActiveMagicEffect

MagicEffect Property NecroReanimateEffect  Auto
Ingredient Property IngrVampDust  Auto

Event OnEffectStart(Actor akTarget, Actor akCaster)
    akTarget.RemoveItem(IngrVampDust, 1, false)
EndEvent

PitrPokir  Offline  Сообщение №4 | Тема: Вопросы по скриптам Papyrus написано: 9 января 2017, 11:56 | Отредактировано: PitrPokir - 9 января 2017, 14:12



26
Kepper, у меня выбрано "при касании", так разве нельзя?

PitrPokir  Offline  Сообщение №5 | Тема: Вопросы по скриптам Papyrus написано: 10 января 2017, 00:20 | Отредактировано: PitrPokir - 10 января 2017, 00:22



26
Kepper, у меня в логах папируса почему-то одинаковый ID и у цели, и у кастера. В чем может быть проблема? Скрипт лежит в эффекте "Оживление трэлла". Я его дублировал, назвал по-своему и добавил этот скрипт. Спелл тоже почти не менял, разве что оставил только этот маг.эффект и длительность урезал, что бы не убивать раз за разом оживленный труп.
Игру и СК переустанавливал, плагин заново создавал, всё тоже самое.
P.S.Может дело в самом маг.эффекте? Трэлл же типа принадлежит игроку, может поэтому и ссылается на него. Но даже если так, я не знаю что с этим делать  :(
P.P.S. игра чистая, только официальные DLC

PitrPokir  Offline  Сообщение №6 | Тема: Вопросы по скриптам Papyrus написано: 10 января 2017, 12:34 | Отредактировано: PitrPokir - 10 января 2017, 12:35



26
Lexo, а сработает, если создать какой-то эффект на цель, типа захвата душ, который и удалит предметы с трупа, а после него что бы активировался скрипт оживления?

Подскажите, пожалуйста, как выглядит команда на добавление эффекта? Или AddSpell подойдет?

PitrPokir  Offline  Сообщение №7 | Тема: Вопросы по скриптам Papyrus написано: 12 января 2017, 13:44 | Отредактировано: PitrPokir - 10 января 2017, 17:40



26
Kepper, повесил на огненную стрелу. Мертвых фаербол просто швыряет, никаких эффектов. Ни удаление предмета, ни оживление, несмотря на скрипт.
На живых работает полностью. Сначала летит фаербол, потом при попадании вылетает спелл на оживление. Предметы тоже удаляются.

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

ЗАРАБОТАЛО!
Прошу прощение за дезинформацию в вышесказанном, это моя невнимательность. Вариант с двумя маг.эффектами в одном заклинании как раз рабочий. Один эффект - само оживление, другой же пуст, но на нем висит скрипт на удаление предмета (еще я там выбирал в Effect Archetype вариант Script, но я не уверен, что это имеет влияние в данном случае). Таким способом работает. Просто я не обратил внимание и не убрал кривой перк в условии, оно не давало эффекту запуститься.
Всем большое спасибо за помощь.

Добавлено (12 Января 2017, 16:44)
---------------------------------------------
Подскажите, пожалуйста, как в папирусе выглядит функция или команда, которая повышает лимит призванных существ?
В перках есть строчка "modify commanded actor limit", но доступные на выбор функции не дают достаточной гибкости. Как это вообще можно с помощью скрипта реализовать?


PitrPokir  Offline  Сообщение №8 | Тема: Вопросы по скриптам Papyrus написано: 13 января 2017, 00:02 | Отредактировано: PitrPokir - 13 января 2017, 00:15



26
Dsion, не совсем то, что мне надо, но способ учту, спасибо.

Lexo, я ввел дополнительную ветку в колдовство и несколько новых существ для призыва, некоторые перки повышают лимит этих суммонов, но дефолтных не трогают. Тем не менее, они все-равно имеют негативное влияние. Если превысить их лимит, то уничтожаются сразу все мои суммоны, что не может не огорчать и доставлять много неудобств в самой игре.
Если я плохо выразился, то приведу пример. Допустим, я оживил или призвал 5 скелетов из своего мода и 1 дефолтного огненного атронаха. Нежить связана ключевыми словами с новыми перками на повышение лимита, а атронах не тронут, его лимит дефолтный. Я призываю еще одного атронаха и почему-то при превышении лимита взамен уничтожается не атронах, не один скелет, а сразу все. Понятное дело, что 2 атронаха без перка "парные души" быть не может, но и ломать всех моих ребят за раз тоже как-то не вежливо.
Я хотел как-то сделать, что бы дефолтные существа при призыве записывались в какую-то отдельную переменную и заменяли друг друга, а не всех моих сразу. Ну или хотя бы по одному. Но пока не добился в этом успеха.
Еще думал на призыв существ с дефолтными ключевыми словами прицепить скрипт, который будет сам уничтожать уже призванного дефолтного суммона и тем самым освобождать место для нового до того, как игра решит устроить геноцид всей моей нежити. Но в силу своей неопытности пока только думаю как это реализовать.

PitrPokir  Offline  Сообщение №9 | Тема: Вопросы по скриптам Papyrus написано: 13 января 2017, 15:25



26
Dsion, а нельзя просто повесить скрипт на перк, который будет контролировать количество дефолтных суммонов? Т.е. код, который будет убивать/завершать эффект дефолтного суммона, если игрок призывает нового. Лимит при этом можно задать сразу всем и не будет конфликта, о котором я писал. Ну, это, конечно, в теории.
Я просто плохо знаю папирус и у меня на реализацию этого минимум день уйдет, поэтому не могу сразу все проверить.

PitrPokir  Offline  Сообщение №10 | Тема: Вопросы по скриптам Papyrus написано: 20 января 2017, 00:27



26
Господа, снова без вашей помощи не обойтись.
На прошлой странице я обращался за помощью по поводу скрипта, который должен оживлять мертвеца и при этом удалять у него указанный предмет. Как выяснилось, сам эффект оживления применяется только на себя, поэтому выбрать таргет не удавалось и скрипт работал неправильно. Далее я писал, что нашел решение в виде второго скриптового эффекта, но тут тоже осечка. Я не могу подобрать условия, что бы второй эффект работал именно как второй, т.е. только если первый сработал. Если указать в условиях проверку на наличие эффекта, то получается, что если уже такой эффект есть, не важно когда наложенный, то эффект на удаление предмета будет срабатываться независимо от первого, даже если кастовать в живого нпс или уже оживленного.
Вводил глобальную переменную, в которую прибавлялось +1, если эффект оживления сработал. Тогда во втором эффекте происходила проверка глобальной переменной и только тогда срабатывал, а после команды удаления предмета снова обнулял её. Но почему-то несмотря на то, что значение переменной увеличивалось, второй эффект на это не реагировал. И только со второго раза, когда переменная уже была единицей заранее, второй эффект работал. И так было каждый раз. Т.е. видимо проверка переменной начинается раньше, чем она достигает требований.
Как вообще можно добиться нужного результата? Прошу вашей помощи, т.к. своих идей уже нету. Спасибо за внимание.

PitrPokir  Offline  Сообщение №11 | Тема: Вопросы по скриптам Papyrus написано: 20 января 2017, 15:47 | Отредактировано: PitrPokir - 20 января 2017, 16:09



26
Dsion, вот 2 скрина и 2 кода их скриптов. Возможно, так будет проще избежать недопонимания в дальнейшем и не придется читать так много моих нубских объяснений)

Касательно вопросов:
1) Ты уверен, что второй эффект накладывается именно на труп? А первый - именно на игрока?
- Насчет первого уверен. Я проверял лог папируса, с трудом нашел нужную строчку из всего хлама, но там в Таргете и Кастере было ID игрока и предмет удаляется у него. А вот второй работает на оживленного мертвеца, как я понял. Ранее я делал отдельный спелл на удаление предметов и он на трупов не работал.
2) Если на первый эффект (реанимация) повесить условия типа "subject isdead", то на ком оно будут проверяться: на игроке или на цели?
- Думаю, что на цели, потому что есть условие проверки ингредиента и проверяет именно у цели.
3) Если на второй эффект повесить условия, на ком они будут проверяться?
- Проверяются на том, что указано.

PitrPokir  Offline  Сообщение №12 | Тема: Вопросы по скриптам Papyrus написано: 20 января 2017, 17:15 | Отредактировано: PitrPokir - 20 января 2017, 17:23



26
Dsion, скрины поправил, предложенную проверку сделал.
1. Да. Игрок и игрок.
2. ID трупа и ID таргета совпадают, так что осмелюсь предположить, что работает таки на труп. Да.
3. Да.
Сейчас проверю.

Добавлено (20 Января 2017, 20:15)
---------------------------------------------
Наконец-то, работает как надо! Может, конечно, если поизвращаться, то можно будет найти такое состояние цели, когда реанимация не сработает, а удаление предмета сработает, но я ничего не могу придумать :D
Спасибо большое за помощь, я почему-то недосмотрел все условия, начал какие-то глобальные переменные вводить, а ведь истина была близко. Еще сбило с толку то, что отдельное заклинание с удалением предмета не работало на трупы. До сих пор не могу понять почему, может архетип заклинания опять был неподходящий, то ли в условиях ошибся... ну да ладно. Еще раз спасибо.

PitrPokir  Offline  Сообщение №13 | Тема: Вопросы по скриптам Papyrus написано: 22 января 2017, 20:24



26
Как можно при клонировании актера выделить клона, что бы проводить над ним дальнейшие операции, а не над целью, которую клонировали? Хотелось бы наложить несколько эффектов на клона.
Использую функцию PlaceActorAtMe, альтернатив не встречал:

Код
Actor Property GhostActor Auto
ActorBase Property GhostActorBase  Auto  

Event OnEffectStart(Actor Target, Actor Caster)
       GhostActor = Target
       GhostActorBase = GhostActor.GetBaseObject() as ActorBase
       GhostActor.PlaceActorAtMe(GhostActorBase)
EndEvent

И реально ли сделать клон с такой же внешностью, экипировкой и параметрами, как и у цели? Если клонировать уникального НПС, то так и работает, а если какого-то бандита или драугра, то клон другой.

PitrPokir  Offline  Сообщение №14 | Тема: Вопросы по скриптам Papyrus написано: 29 января 2017, 18:54



26
Не могу разобраться, что я сделал не так? Цель за мной не следует, никого не атакует, даже если бьют ее. Ходят просто по своему маршруту с обнаженным оружием. 
Код
Event OnEffectStart(Actor Target, Actor Caster)
       Target.RemoveFromAllFactions() 
       Target.AddToFaction(NecroUndead) 
       NecroUndead.SetAlly(Player) 
       Target.SetPlayerTeammate() 
       Target.SetActorValue("Confidence", 4) 
       Target.SetActorValue("Assistance", 1) 
       Target.SetActorValue("Aggression", 2)
EndEvent

PitrPokir  Offline  Сообщение №15 | Тема: Вопросы по скриптам Papyrus написано: 29 января 2017, 20:07



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

П.С. с квестом как-то странно получается. У меня в планах, что бы у игрока была возможность делать несколько таких призраков и выходит, что к каждому будет квест начинаться? Или я не совсем понял. Но скриптики гляну, спасибо за наводку

PitrPokir  Offline  Сообщение №16 | Тема: Вопросы по скриптам Papyrus написано: 30 января 2017, 20:13



26
Dsion, да, верно. Я в описании воспринял "following" как "следование", а там имеется ввиду "следующее", лол.
А с алиасами и квестами вообще дел не имел. Можете вкратце написать как это реализуется?

PitrPokir  Offline  Сообщение №17 | Тема: Вопросы по скриптам Papyrus написано: 4 февраля 2017, 01:00 | Отредактировано: PitrPokir - 4 февраля 2017, 01:20



26
Dsion, скопировал и немного переделал квест на спутников, но я слабовато понимаю что делаю. Квест должен начинаться благодаря строчке с функцией Start в скрипте заклинания, а цель запихнуть в алиас при помощи ForceRefTo? Или хватит чего-то одного? И достаточно ли будет одного алиаса, если потребуется "подчинить" много целей поочередно? Так же есть вкладка Scripts и я не знаю, туда ли кидать скрипт "подчинения" или в сам алиас/-ы.
Хотелось бы знать как вообще выглядит это все. Начинается какой-то невидимый квест пока у меня в алиасах будет нпс/существо, а когда алиас/-ы опустеют, то квест завершиться?
Прошу прощение за навязчивость и глупые вопросы, но для меня эта тема довольно темна и я смутно понимаю как это работает в рамках квеста, а вопрос как-то решить надо :с

PitrPokir  Offline  Сообщение №18 | Тема: Вопросы по скриптам Papyrus написано: 5 февраля 2017, 01:54 | Отредактировано: PitrPokir - 5 февраля 2017, 02:05



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


Запускается это дело простым скриптом на заклинании:

Код
Scriptname NecroFollowAlias extends activemagiceffect  

ReferenceAlias Property NecroFollowerAlias  Auto  

Event OnEffectStart(Actor Target, Actor Caster)
       Target.RemoveFromAllFactions()
       NecroFollowerAlias.ForceRefTo(Target)
EndEvent


На алиасе висит пакет следования, абилка на внешность призрака и созданная фракция для нежити.
У созданной фракции в союзниках сама фракция и фракция игрока, там тоже от безысходности разрешил любые нарушения закона, но ничего не помогает.
Проверял на жителях Вайтрана, стражниках и драуграх в ветреном пике. Что интересно, потенциальные компаньоны и всякие существа остаются на моей стороне, даже во время боя будучи моими врагами можно их "околдовать", а жители и стражники лишь на мгновение прекращают бой, потом снова бить начинают.
Можно, конечно, просто забить на них и не иметь с ними дел, но тут могут быть неудобности, ведь в некоторых ситуациях заранее не знаешь кто к какому городу или деревушке относится и быть внезапно атакованным из-за убитой курицы как-то не круто :/
Буду очень признателен, если вы поделитесь какими-то мыслями на этот счет.

PitrPokir  Offline  Сообщение №19 | Тема: Вопросы по скриптам Papyrus написано: 5 февраля 2017, 15:00



26
Dsion, сработало  ^_^ 
Но сначала эффект почему-то заключался лишь в том, что они просто не вступали в бой. Потом пришлось сменить ивент, а то OnHit в данном случае не очень подходил, поменял на OnLoad и добавил в заклинание помещения цели в алиас 2 строчки с функциями Disable и Enable. И актеры вдруг начали мне еще и помогать в бою, удивительно. Наконец-то!
Вот только стражники, видимо, не люди. На них не действует Disable, как это вообще?

P.S. а какой вообще ивент лучше использовать? OnLoad срабатывает не сразу, надо как-то заставлять объект загружаться.

PitrPokir  Offline  Сообщение №20 | Тема: Вопросы по скриптам Papyrus написано: 6 февраля 2017, 18:24 | Отредактировано: PitrPokir - 6 февраля 2017, 18:30



26
Dsion, ну, задумка не совсем такая, это я пока тестирую. Так-то много еще чего надо сделать.

просто вызываешь эту функцию на своем квесте одним из двух способов на выбор:
Функцию вызвать не получилось, ошибки. В первом варианте пишет, что квест нельзя скастовать или что-то в этом роде. Во-втором сразу 3 и я их почти не запомнил. Не хотелось вас мучить дополнительными вопросами. Просто поместил этот код сразу в заклинание, пока все работает как надо. Мне, в принципе, пока такой вариант подходит.
Большое спасибо за помощь, не знаю даже сколько бы я еще потратил времени, что бы дойти до работоспособного варианта.

Единственное, что я до сих пор не могу понять, так это ошибку в таком банальном кусочке кода:
Код
Scriptname NecroGhostManaReservScript extends activemagiceffect  

SPELL Property ManaReserv  Auto
SPELL Property ManaR  Auto  
MagicEffect Property ManaRes  Auto  

Event OnEffectStart(Actor Target, Actor Caster)
       ManaReserv.Dispel()
EndEvent

NecroGhostManaReservScript.psc(8,18): Dispel is not a function or does not exist
Пробовал засовывать в ManaReserv маг.эффект, способность, заклинание. Все-равно такая ошибка. Ну емае(

PitrPokir  Offline  Сообщение №21 | Тема: Вопросы по скриптам Papyrus написано: 6 февраля 2017, 20:41



26
Dsion, ну, с использованием таких функций позже разберусь, если потребуется. Пока работает и ладно, буду двигаться дальше. А за ссылку спасибо  :) 
Про Dispel не совсем понял. Мой скрипт же наследует ActiveMagicEffect, про который вы написали, Dispel так же применялся непосредственно и на магический эффект, не только на заклинание, указанное в предоставленном коде. Что ему еще надо?

PitrPokir  Offline  Сообщение №22 | Тема: Вопросы по скриптам Papyrus написано: 7 февраля 2017, 16:40



26
Dsion, какое узкое применение у этого диспела, однако. Я уж обрадовался сколько пользы от него будет, а оно вот как...
Как же тогда убрать один эффект, по завершении другого, если время заранее неизвестно? DispelSpell же сразу все эффекты рубит

PitrPokir  Offline  Сообщение №23 | Тема: Вопросы по скриптам Papyrus написано: 7 февраля 2017, 19:07



26
Dsion, речь все о тех же призраках. При подчинении призрака игроку добавляется пустой эффект, который висит в активных эффектах и позволяет понять, что призрак еще на его стороне и сколько их вообще. И естественно, эффект должен спадать вместе с эффектом подчинения, а поскольку он длится 999 дней, то ориентироваться надо по смерти призрака. А когда это будет - неизвестно)

PitrPokir  Offline  Сообщение №24 | Тема: Вопросы по скриптам Papyrus написано: 8 февраля 2017, 14:15



26
Multigone, вот это танцы с бубнами :) 
Я даже не до конца понимаю что к чему. Но за код спасибо, попробую

Dsion, да нет, все так, как я сказал. Просто попытка сделать заклинание внешне похожим на дефолтные призыв и оживление. Что бы если у меня были оживленные трупы, то призраки были с ними наравне в списке эффектов и я мог сразу определить их наличие и количество. В общем косметический эффект, так сказать. Может в дальнейшем захочется как-то улучшить эффект, что бы он более ощутимую пользу или вред заклинателю приносил, но пока что так.
Но меня больше удивило то, что диспел не работал, ведь были на него планы. Т.е. он работает, но в описании как-то коряво объяснили его принцип

PitrPokir  Offline  Сообщение №25 | Тема: Вопросы по скриптам Papyrus написано: 8 февраля 2017, 21:42



26
kelamor, ивент OnMagicEffectApply вызывается каждый раз, когда на актера применяется любой эффект.

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

PitrPokir  Offline  Сообщение №26 | Тема: Вопросы по скриптам Papyrus написано: 12 февраля 2017, 23:46 | Отредактировано: PitrPokir - 12 февраля 2017, 23:55



26
Dsion, а если вешать скрипт на алиас с ивентом OnDeath, то как сделать, что бы конкретно данный алиас очищал себя? "SELF.GetReference().Clear()"? Прост у меня не менее 20ти алиасов, для каждого делать индивидуальный скрипт как-то жирно получается.
И не будет ли OnUpdate оказывать сильное влияние на производительность? Ну относительно сильное. Допустим, если засунуть в ивент цикл на проверку смерти и очищать.
Хотя первый вариант получше, если его можно реализовать.

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

Добавлено (13 Февраля 2017, 00:09)
---------------------------------------------
Проверил вариант с OnDeath, вроде исправно работает при помощи "SELF.Clear()".

Добавлено (13 Февраля 2017, 02:46)
---------------------------------------------
Что-то я немного застрял с заполнением алиаса. В чем может быть ошибка? (Оставил строчки имеющие отношение к циклу)

Код
Scriptname NecroFollowAlias extends activemagiceffect  

Alias[] Property AliasArray  Auto  
ReferenceAlias Property NecroFollowerAlias  Auto   

Bool Slave = false
Int Num
Alias aElement

Event OnEffectStart(Actor Target, Actor Caster)

       Num = AliasArray.Length
       While Num > 0
              Num -= 1
              aElement = AliasArray
              [Num]if (aElement.ForceRefIfEmpty(Ghost) == true)
                     Slave = true
                     Num = 0
              endif
       EndWhile

(25,15): ForceRefIfEmpty is not a function or does not exist
(25,38): cannot compare a none to a bool (cast missing or types unrelated)

P.S. Если переменную aElement объявить как ReferenceAlias или прописать её в свойствах, то ошибка:"type mismatch while assigning to a referencealias (cast missing or types unrelated)"

P.P.S. что странно, вне цикла на конкретном алиасе NecroFollowerAlias условие if работает как надо. Я так понял, дело в переменной aElement, но что именно с ней не так?

Форум » Записи участника [PitrPokir]
  • Страница 1 из 1
  • 1
Поиск:





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