• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней. • Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней. • При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС. • При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "+" полезного сообщения.
Сообщения, не относящиеся к вопросам по скриптам Papyrus, ответам на них или уточнениям, являются оффтопом и могут быть удалены.
Красное солнце Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
Изменение репутации для пользователя MemoriaVetusta
Вопросик есть: "Idle Marker" работает на ГГ ? (а то я его кинул в СК на землю, загрузился в свою локацию и встал на то место, где лежит этот маркер, но ГГ не стал исполнять заданную маркером анимацию)
И ещё, где можно почитать про карту высот, используемую при полётах ? (хочется разобраться как сделать летающего рядом с ГГ НПС или животное ...)
anton, "Idle Marker" на ГГ не работает, если не отобрать управление и не дать АИ (выполнять пакеты). ГГ по дефолту что-либо активирует только "мышкой".
"карта высот", а зачем? Она никак не поможет заставить летать актёров. Но есть вариант: делаешь дракона, а он может летать, и назначаешь ему свой скин (ты в Максе умеешь работать, поэтому сможешь сделать такое). Можно даже в процессе игры менять скины, тем самым можно "подменять" любого актёра на своего дракошу с заменой скина, типа это сам тот актёр полетел. Конечно, можно скриптами заставить "летать/левитировать", но это совсем не то.
nepewka, можно: OnItemAdded, и далее проверка итема и добавление/применение на ГГ аналогов зачарования. Но это 100% чит (!), т.к. можно будет применить все зачарования из инвентаря, хоть сотню, хоть тысячу. Тогда проще TGM...
Изменение репутации для пользователя nepewka
nepewkaOffline
Сообщение №941
написано: 12 апреля 2014, 16:52
| Отредактировано: nepewka - 12 апреля 2014, 16:58
AleksTirex, мне не для игры, а так для рабочего интереса
OnItemAdded это что? Эвент в скрипте, как я понимаю
Если эвент в скрипте, то что в нем нужно написать, чтобы зачарование заработало именно при добавлении итема?
Добавлено (12 Апреля 2014, 20:38) --------------------------------------------- add:
насчет читерности, можно будет MGEF зачарования добавить кейворд, при котором итемы с подобным эффектом будут диспелиться Чтобы избежать стака эффектов
Добавлено (12 Апреля 2014, 20:52) --------------------------------------------- add:
Создаю квест с автостартом, референс игрока
xxx extends ReferenceAlias
OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer)
....??
А дальше что, как заставить зачарование работать при получении итема?
AleksTirex, я попробовал сменить расу ГГ на "дракона". Но при этом дракон смог только ходить по земле (притом только вперёд/назад). Заставить его полетать у меня не получилось.
Я изучил скрипты мода "Flyable Dragon Races 3_0_2 BURNING SKIES Full Version". В нём как раз используется подмена расы, но полёт реализован всё равно через скрипты. Все анимации запускаются вручную, в зависимости от нажатой кнопки. А движение происходит с помощью TranslateTo() к заданному маркеру, или подставляется под ноги фэйковая плоскость.
Выходит простой подменой расы не получить возможности полетать ... ?
anton, чтобы дракон мог летать, у него в пакете должна быть процедура Orbit, вот эта процедура и заставляет лететь дракона. (это типа Travel/Sandbox, но только для полёта)
Конечно, управлять "куда и как" должен лететь дракон нельзя, как в Sandbox нельзя указать "как и куда" должен двигаться/ходить НПС. Но можно динамически менять TargetLocation - центр полёта, тем самым как бы направляя дракона (через алиас, а его всегда можно сменит/изменить).
Добавлено (13 Апреля 2014, 16:04) --------------------------------------------- ***************************
У меня просьба ко всем - есть у кого сохранки: перед освобождением дракона в Драконьем пределе, и перед квестом соратников, где надо идти в Древний каирн и там соратник превращается в оборотня.
Сойдут любые расы и задействованные моды. Если у кго есть такие сохранки - сбросьте мне, пожалуйста.
В Древний каирн ведёт Фракас за обломком секиры, там ГГ попадает за решётку и видит сцену, как Фракас превращается в оборотня и всех "Серебрянноруких" кусает. Вот мне надо сохранка до этого похода, чтобы проверить правильно ли мой компаньон работает в этом квесте, ведь там квест соратников подменяет компаньона на Фракаса (хоть мой компаньон и не использует дефолтный квест компаньонов, то терпеть не может конкурентов, типа ревнует).
********* ГГ тоже может пользоваться пакетами, поэтому можно сделать как с НПС, так и с ГГ.
Изменение репутации для пользователя anton
antonOffline
Сообщение №946
написано: 13 апреля 2014, 14:39
| Отредактировано: anton - 13 апреля 2014, 15:33
AleksTirex, кажется я нашёл то, что нужно: <CLICK> (эти сейвы всё таки сохранились в архивах, на дугом винте )
Цитата AleksTirex
ГГ тоже может пользоваться пакетами
с пакетами ни разу не игрался, даже не знаю чего начинать спрашивать , пойду разбираться что там и как...
.....................
* Итак, выходит чтобы запустить пакет надо его добавить НПС (или ГГ): Если НПС изначально известен, то можно это сделать в СК для актёра в закладке "AI packages". Если неизвестен или это ГГ, то как ? (ни в "Actor" ни в "Package" нету таких функций)
* Далее, надо запустить пакет в заданное время: Делаем скрипт на вещь, при одевании которой раса ГГ меняется на Дракона. Далее делаем проверку на нажатие нужной кнопки, если нажата, то включаем пакет "Orbit". Как мы его включаем ? (ни в "Actor" ни в "Package" нету таких функций) Просто запустить "SetPlayerAIDriven()" и пакет начнёт выполнятся ?
Просто запустить "SetPlayerAIDriven()" и пакет начнёт выполнятся ?
Не совсем. После этой команды назначаешь ГГ в свой алиас своего квеста (который к этому времени уже запущен) - AliasPlayer.ForceRefTo(Game.GetPlayer)
В этом алиасе есть окно для пакетов, в него в СК добавляешь свой пакет. Когда на алиас назначится НПС/ГГ, то заработает этот пакет на этом НПС/ГГ. Сам же пакет делаешь собственностью этого квеста, тогда в параметре "цель" можно будет использовать алиас из этого квеста. Этот алиас так же назначается такой же командой, но только маркер, который и будет целью пакета (он создаётся у ГГ и дальше просто передвигается). Этот маркер можешь двигать как хочешь, и в теории (!) дракон должен следовать за этим маркером. Управлять положением маркера при отсутствии управления персонажем просто - OnKeyUp / OnKeyDown, и дальше ты сам знаешь как.
По окончании "одраконивания" просто очищаешь алиас AliasPlayer.Clear(), удаляешь этот маркер и очищаешь его алиас, возвращаешь ГГ в своё состояние SetPlayerAIDriven(false), и меняешь расу.
*********** Как себя поведёт процедура Orbit на изменение координат цели я не знаю, но все основные процедуры адекватно на это реагируют.
**************** **************** anton, спасибо за сейвы!!!
AleksTirex, попробовал, но всё что сделал дракон так это только развернулся вдоль оси У и потерял управление. (при отключении эффекта - управление возвращалось)
Может я чего то не понял ? Глянь пожалуйста мои настройки:
anton, если алиас назначаемый, то необходима галочка Optional, а также пустая позиция SpecificReference (но не уникальный актёр).
Я обычно создаю маркеры через PlaceAtMe(), потом назначаю его в алиас как и НПС/ГГ (см. выше).
Пакет правильно.
************** В скрипте: ГГ назначен правильно, маркер не очень, т.к. не понятно, зачем назначать movablestatic, да ещё и который находится чёрт знает где, здесь лучше использовать XMarker (создаёшь и назначаешь на алиас точно так же, как и с ГГ). Если movablestatic нужен для чего-то, то пусть будет (и имей в виду, что подвижный movablestatic не транслируется).
Добавлено (14 Апреля 2014, 00:15) --------------------------------------------- anton, и ещё, нельзя делать генерируемые/создаваемые алиасы, если они привязаны к назначаемым алиасам. Квест не запустится, ведь объект, у которого или в котором должен сгенерироваться новый объект/алиас не существует на момент старта квеста, и он из-за этого не может создаться, и алиас, соответственно, не может заполнится.
AleksTirex, исправил, но всё равно ничего не добился, кроме того, что управление вообще перестало возвращаться назад к ГГ (в качестве цели у меня в форм-листе именно Хмаркер и стоит)
Добавил вывод сообщений на экран о состоянии алиасов, пакета и квеста. То по ним получается, что всё работает. _Anton_QuestForFly.IsActive() = TRUE _Anton_QuestForFly.IsRunning() = TRUE _Anton_QuestForFly.GetStage() = 20 (так и надо) _Anton_ReferenceAlias_PlayerForFly.GetActorReference() != None _Anton_ReferenceAlias_MarkerToFly.GetReference() != None Player.GetCurrentPackage() = _Anton_PackageOrbit
Т.е. квест запускается, его состояния меняются, цели правильно выводятся на экран. Оба референса заполняются и на ГГ появляется заданный пакет. Но после SetPlayerAIDriven() ничего не происходит ( функция "Player.EvaluatePackage()" тоже не помогает) А после "SetPlayerAIDriven(False)" управление больше не возвращается к ГГ, и со временем включается дкфолтная камера, вращающаяся вокруг ГГ и это состояние не сбивается ни нажатием на кнопки ни движениями мышки.
Чего то явно не хватает, но чего - понятия не имею. Пакет ведь на ГГ, так почему он не работает ?
Добавлено (15 Апреля 2014, 00:17) --------------------------------------------- Провёл ещё один опыт. Сделал целью не ГГ а заданного НПС. НПС телепортировался к ГГ, ему менялась раса на дракона, после чего он взлетал и начинал курсировать вокруг заданной точки. Причём если двигать маркер в процессе полёта - ничего не меняется. Управлять таким образом не выходит. И когда НПС в полёте, нельзя взять над ним управление консольной командой "ТС". Камера хоть и цепляется к НПС-Дракону, но ни мышка ни кнопки на движение не влияют. А если выполнить "ТС" до взлёта, то НПС-Драконом можно ходить, но он уже не взлетит, пока не вернуть ему управление, выполнив эту же команду ещё раз. Вот такие дела
блин ,AleksTirex, почему ты мне раньше не линковал ссылки на вот такие посты
Сторонняя ссылка на другой! сайт вы чего? пишите в лс такое админы бум бум, народ всем привет кстати у меня тут вопрос где то слышал что одновременно компаньона и невесту в игре скайрим сделать нельзя так ли это ? если можно подскажите пожалуйста как!
Изменение репутации для пользователя MemoriaVetusta
AleksTirex, приветствую! Можно как то сделать, чтобы дистанционное заклинание срабатывало на НПС у которого установлено свойство Ghost? Или как то отслеживать его попадание в НПС?
Изменение репутации для пользователя сергей007788
сергей007788Offline
Сообщение №956
написано: 18 апреля 2014, 07:33
| Отредактировано: сергей007788 - 18 апреля 2014, 07:34
Подскажите пожалуйста, как регистрировать время, секунда или даже меньше, если это возможно? RegisterForSingleUpdateGameTime - получается только игровой час. Заранее благодарен.
Подскажите пожалуйста, как регистрировать время, секунда или даже меньше, если это возможно? RegisterForSingleUpdateGameTime - получается только игровой час. Заранее благодарен.
RegisterForSingleUpdateGameTime(0.00027) ;- Одна игровая секунда. RegisterForSingleUpdate(0.1) ;- Одна десятая реальной секунды.
Изменение репутации для пользователя AleksTirex
AleksTirexOffline
Сообщение №958
написано: 18 апреля 2014, 12:39
| Отредактировано: AleksTirex - 18 апреля 2014, 12:45
AleksTirex, приветствую! Можно как то сделать, чтобы дистанционное заклинание срабатывало на НПС у которого установлено свойство Ghost? Или как то отслеживать его попадание в НПС?
Можно использовать возвратный принцип заклинания.
Делается алиас ГГ в своём квесте (или по другому вешается скрипт на ГГ), на него вешается скрипт. Но сперва надо сделать свой Explosion. Он должен быть "невидимым", т.е. без визуализации, и с нужным радиусом дкйствия, чтобы радиус был не меньше предполагаемого срабатывания/расстояния от ГГ до цели, например 4000-9000. В своём маг.эффекте заклинания против призраков добавляется этот Explosion, делается площадь (Area) срабатывания. Или в Projecticle этого маг.эффекта (делается свой Projecticle) добавляется тот свой созданный Explosion. Подойдёт любой вариант.
Explosion Property myExplosion auto ; свой сделанный Explosion
Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) if akSource as Explosion == myExplosion ObjectReference closestExplosion = Game.FindClosestReferenceOfTypeFromRef(akSource, Game.GetPlayer(), 1500.0) if closestExplosion Actor akActor = Game.FindClosestActorFromRef(closestExplosion, 50.0) if akActor.IsGhost() ; akActor - ближайший актёр*призрак к месту попадания снаряда endif endif endif endEvent
********************************** 1500.0 - радиус обнаружения взрыва, т.е. максимальное расстояние от ГГ до цели, оно равно (<=) радиусу/размеру Explosion. 50.0 - радиус поиска ближайшего актёра от центра взрыва, настраивается по желанию. ***********************************
Принцип работы: при касте заклинания на цель Projecticle сработает/врежится в НПС, даже если тот Ghost, произойдёт взрыв и этот взрыв отработает на ГГ (событие OnHit()). Этим событием определим место взрыва, и найдём ближайшего актёра в точке взрыва. На поиск актёра не повлияют ни его состояние, ни какие другие факторы. Далее... уже то, что придумает автор что именно делать с этим найденным актёром.
Изменение репутации для пользователя nepewka
nepewkaOffline
Сообщение №959
написано: 18 апреля 2014, 13:57
| Отредактировано: nepewka - 18 апреля 2014, 14:01
AleksTirex, нашел способ как можно использовать эвент onSpellCast в activemagiceffect
Создаем формлист, добавляем туда необходимые спеллы, при касте которых собственно и сработает данный эвент Для этого создаем пассивную способность с Effect Archetype Script
FormList Property aaaFormlist Auto Spell Property Fireball Auto
Event onSpellCast(Form akSpell) if aaaFormlist.hasForm(akSpell) Utility.wait(1.0) Fireball.cast(getTargetActor(), None) endif EndEvent
; Но беспокоит меня если честно другое! А именно невозможность динамичного добавления перка таргет НПЦ. Даже и не знаю, есть ли какой то выход в ситуации или обход?
Вот думаю попробовать в магическом эффекте event onEffectStart
akActor.additem Anyitem
endevent
Где Anyitem - итем, к которому прицеплен другой скрипт
При касте заклинания на цель Projecticle сработает/врежится в НПС, даже если тот Ghost.
AleksTirex, Projecticle пролетает призрака насквозь и летит далее не срабатывая. Может надо какие то опции в Projecticle или в Explosion отметить? Если направить на землю возле ног НПС - срабатывает и OnHit() отрабатывается.
Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)