werr Опубликовано 10 декабря, 2017 Опубликовано 10 декабря, 2017 09.12.2017 21:22:41, mr Jygalag сказал(-а): Вопрос - я не могу брать значение/тип призываемого существа, а затем передавать это значение в заклинание? Т.е я использую какое-нибудь заклинание изгнания, а тип изгнанного существа передаётся в призыва (изгоняю какого-нибудь дремора, а затем этого же дремора специальным заклинанием призываю; далее изгоняю огненного атронаха - и в место дремора вызываю уже огненного атронаха). И ещё - кто разъяснит, как работает этот скрипт (не в плане, что делает в результате своего действия, а именно как он работает)? Вот он:Actor CloneTarget Actor TargetEff Event onEffectStart(Actor Target, Actor Caster) TargetEff = Target ObjectReference Clone = TargetEff.PlaceAtMe(TargetEff.GetActorBase(), 1, false, true) CloneTarget = Clone as Actor CloneTarget.Enable() CloneTarget.StartCombat(CloneTarget) RegisterForSingleUpdate(5) EndEvent Event onUpdate() TargetEff.PushActorAway(CloneTarget, 10) CloneTarget.Kill() Utility.Wait(3) CloneTarget.Disable() CloneTarget.Delete() EndEvent Ну почему нет? Есть 2 способа: как я это делаю и более оптимальный с точки зрения ресурсов системы. Первый способ состоит в том, что ты создаешь квест с пустым элиасом типа ForcedReference (должен быть Optional и Allow Reserved). При касте изгнания (что бы это не значило, я хз в магии скайрима), ты проверяешь, что квест не запущен, а если запущен, то завершаешь его. Как только изгоняется твой нпс (target заклинания), ты запускаешь квест и подхватываешь этот таргет в элиас квеста. Затем в скрипт-фрагменте призыва вытягиваешь ActorBase из того элиаса и спаунишь копию актера. Второй способ, более правильный с точки зрения программирования, состоит в том, что ты в своем скрипте призыва кастуешь скрипт изгнания на какой-нибудь скрипт-обьнкт (проперти твое) и проверяешь, что тот действительно скастовался, т.е. тот скрипт подхвачен из этого скрипта призыва. Затем просто можешь обратиться к изгнанию напрямую и запросить его проперти актера, которого и нужно спаунить в призыве. Как-то так. А скрипт, что ты привел, — это детский лепет, он работает только сам с собой, с другими скриптами он не общается. Update. Черт. CastAs() и GetPropertyValue(), как и класс script object похоже, добавили только в фоллауте. Тогда второй красивый вариант отпадает. Через квест. Все через квест. A Random Dude's Story
Azazellz Опубликовано 10 декабря, 2017 Опубликовано 10 декабря, 2017 Можно и без квестов обойтись - записывать "изгоняемых" в формлист с одной записью, например. А потом из этого формлиста их брать как цель для призыва.
mr Jyggalag Опубликовано 10 декабря, 2017 Опубликовано 10 декабря, 2017 (изменено) 10.12.2017 11:37:15, werr сказал(-а): Как-то так. А скрипт, что ты привел, он работает только сам с собой, с другими скриптами он не общается.Я разобрался вроде... Правильно понимаю, что его (сам скрипт) надо вешать на магический эффект? Изменено 10 декабря, 2017 пользователем mr Jygalag
Azazellz Опубликовано 10 декабря, 2017 Опубликовано 10 декабря, 2017 10.12.2017 13:34:22, mr Jygalag сказал(-а):Правильно понимаю, что его (сам скрипт) надо вешать на магический эффект? Правильно понимаешь.
werr Опубликовано 10 декабря, 2017 Опубликовано 10 декабря, 2017 Вариант с формлистом тоже хорош. В общем-то, поскольку, как мы выяснили, напрямую запросить скрипт нельзя, тебе нужно просто хранить указатель на актера где-то, пока он либо не появится, либо не перестанет быть актуальным. А в какой валюте это делать - вопрос предпочтений. Единственное что, если берешься работать с Formlist, следи за индексами. Чтоб не было такого, что ты все время раздуваешь лист (его объем конечен) и путаешь, к какому элементу массива тебе обращаться. В общем, везде можно ошибиться, смотри внимательно. 1 A Random Dude's Story
=D= Опубликовано 13 декабря, 2017 Опубликовано 13 декабря, 2017 Появился такой вопрос: как вызвать пользовательскую функцию из другого скрипта? Пример: есть скрипт "А", с функцией "fun". Как вызвать fun в скрипте "В"?
Azazellz Опубликовано 13 декабря, 2017 Опубликовано 13 декабря, 2017 13.12.2017 07:12:23, =D= сказал(-а):Появился такой вопрос:https://www.creationkit.com/index.php?title=Function_Reference 1
=D= Опубликовано 13 декабря, 2017 Опубликовано 13 декабря, 2017 13.12.2017 08:35:18, Azazellz сказал(-а): Cпасибо, снова меня выручили
Azazellz Опубликовано 13 декабря, 2017 Опубликовано 13 декабря, 2017 13.12.2017 13:23:31, =D= сказал(-а):Cпасибо, снова меня выручили Добавь в закладки CK-вики, там много полезного по скриптам =)
=D= Опубликовано 17 декабря, 2017 Опубликовано 17 декабря, 2017 (изменено) Здравствуйте. И у меня пара странных вопросов: 1. Что выполняется быстрее (либо оказывает наименьшую нагрузку на скриптовый движок): цикл, перебирающий массив из N - элементов, или же N конструкции elseif, следующих друг за другом? 2. Практический у всех игровых предметов есть ключевые слова. Допустим, мне нужно проверить два ключевых слова: "ArmorMaterialSteel" и "WeapMaterialSteel" - можно ли использовать маску чтобы вместо двух ключей написать один, типа "*Steel "? Изменено 17 декабря, 2017 пользователем =D=
Azazellz Опубликовано 17 декабря, 2017 Опубликовано 17 декабря, 2017 1. Чего не знаю, того не знаю. Знаю только, что game.getplayer выполняется медленнее, чем игрок, заданный через Property или напрямую в скрипте =) 2. Сомневаюсь. 1
=D= Опубликовано 21 декабря, 2017 Опубликовано 21 декабря, 2017 Здравствуйте! И у меня снова вопрос: Есть ли в папирусе команда завершающая работу скрипта/функции? Что нибудь, на подобие break() или, хотя бы, goto()? К примеру: Выполняется функция доходит, до условия, если условие истинно - сразу же завершает работу функции, если ложно - продолжает дальше свою работу.
Azazellz Опубликовано 21 декабря, 2017 Опубликовано 21 декабря, 2017 21.12.2017 11:37:28, =D= сказал(-а): Здравствуйте! И у меня снова вопрос: Есть ли в папирусе команда завершающая работу скрипта/функции? Что нибудь, на подобие break() или, хотя бы, goto()? К примеру: Выполняется функция доходит, до условия, если условие истинно - сразу же завершает работу функции, если ложно - продолжает дальше свою работу. return 1
lolxeycoc Опубликовано 5 января, 2018 Опубликовано 5 января, 2018 Когда я хочу создать новый скрипт пишет это, papyrus errors Unknown user flag Hidden No output generated for aateleport , compliation falied!
werr Опубликовано 5 января, 2018 Опубликовано 5 января, 2018 05.01.2018 10:14:56, lolxeycoc сказал(-а): Когда я хочу создать новый скрипт пишет это, papyrus errors Unknown user flag Hidden No output generated for aateleport , compliation falied! Да, все так. А в чем вопрос? зы. Не очень понятно, что ты собрался прятать и зачем? Код в студию. A Random Dude's Story
Azazellz Опубликовано 5 января, 2018 Опубликовано 5 января, 2018 Ну значит убери этот Hidden флаг, где он у тебя стоит, и все.
WULDJOTNah Опубликовано 10 января, 2018 Опубликовано 10 января, 2018 Можно ли скриптово отследить момент, когда нашему гг развязывают руки в начале игры?
Azazellz Опубликовано 10 января, 2018 Опубликовано 10 января, 2018 (изменено) Вообще как-то можно. Через смену состояния анимации или еще как. На самый крайний случай в стартовом квесте должна быть квестовая стадия отдельная для этого прописана - можно к ней "привязаться". Изменено 10 января, 2018 пользователем Azazellz
Oxbow Опубликовано 23 февраля, 2018 Опубликовано 23 февраля, 2018 05.01.2018 10:14:56, lolxeycoc сказал(-а): Когда я хочу создать новый скрипт пишет это, papyrus errors Unknown user flag Hidden No output generated for aateleport , compliation falied! Та же проблема. Все обыскал, нигде не нашел этот "Hidden". Может я как-то не правильно что-то установил: Skyrim и Creation Kit из Steam, скрипт прописал по видео-туториалу gkalian (создание квеста часть 2).
YourBunnyWrote Опубликовано 23 февраля, 2018 Опубликовано 23 февраля, 2018 Код покажи. Всё провисло и болтается.
Oxbow Опубликовано 23 февраля, 2018 Опубликовано 23 февраля, 2018 23.02.2018 08:22:39, YourBunnyWrote сказал(-а): Код покажи. Код на изменение стадии квеста в диалоге: GetOwningQuest().SetObjectiveDisplayed(10) GetOwningQuest().SetStage(10) Ошибка: Starting 1 compile threads for 1 files... Compiling "TIF__01000D6D"... <unknown>(0,0): Unable to find flags file: TESV_Papyrus_Flags.flg C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\TIF__01000D6D.psc(3,0): Unknown user flag Hidden No output generated for TIF__01000D6D, compilation failed. Batch compile of 1 files finished. 0 succeeded, 1 failed. Failed on TIF__01000D6D
werr Опубликовано 23 февраля, 2018 Опубликовано 23 февраля, 2018 23.02.2018 09:39:05, Oxbow сказал(-а): Ну так компилятору нужен файл TESV_Papyrus_Flags.flg для работы. Он лежит в архиве с исходниками скриптов. 1 A Random Dude's Story
Oxbow Опубликовано 23 февраля, 2018 Опубликовано 23 февраля, 2018 23.02.2018 10:43:17, werr сказал(-а): Ну так компилятору нужен файл TESV_Papyrus_Flags.flg для работы. Он лежит в архиве с исходниками скриптов. С ума сойти, как просто. Мне даже стыдно. Спасибо.
Oxbow Опубликовано 24 февраля, 2018 Опубликовано 24 февраля, 2018 (изменено) Добрый день. При попытке компиляции скрипта запуска сцены в диалоге: AAAQuestOxbow01Scene.Start() Выдает ошибку: Спойлер Starting 1 compile threads for 1 files... Compiling "TIF__01004E9B"... C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\AAAQuestOxbow01Scene.psc(3,15): cannot name a variable or property the same as a known type or script C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\TIF__01004E9B.psc(9,21): Start is not a function or does not exist C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\TIF__01004E9B.psc(9,21): cannot call the member function Start alone or on a type, must call it on a variable No output generated for TIF__01004E9B, compilation failed. Batch compile of 1 files finished. 0 succeeded, 1 failed. Failed on TIF__01004E9B Сцену делал по этому туториалу: Спойлер http://tes-game.ru/publ/creatorkit/sozdanie_scen/8-1-0-264 Изменено 24 февраля, 2018 пользователем Oxbow
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти