• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней. • Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней. • При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС. • При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "+" полезного сообщения.
Сообщения, не относящиеся к вопросам по скриптам Papyrus, ответам на них или уточнениям, являются оффтопом и могут быть удалены.
Красное солнце Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
Изменение репутации для пользователя anton
antonOffline
Сообщение №451
написано: 30 октября 2013, 10:50
| Отредактировано: anton - 30 октября 2013, 10:52
Ничего у меня не получилось. Как я только не добавлял обьект в поиск, всё равно ничего не находится. Ни арт обьект, ни обьект самой одежды, ни через прямое указание на форму, ни через форм лист. В общем всё равно мне кажется в "Art Object" анимацию таким способом не изменить. У меня функция "PlayGamebryoAnimation()" работала только на "активаторах" или чём то относящемуся к типу "Object Reference". Так что пока заброшу эту идею, трёх анимаций управляемых ванильным BHV файлом и так будет достаточно...
У меня тут вопрос попроще образовался: Как можно заставить Актёра скриптом "ойкнуть" в заданное время, как будто его щипнули/ударили ? (звука типа "Ай" среди звуковых эффектов нету, может можно его как то виртуально ударить, чтобы воспроизвёлся стандартный звук НСП для такой ситуации...)
sansuli, Добавь в ссылки: Декомпилятор .Pex в .Psc - отлично декомпилирует скрипты .Pex, сохраняет формат Papyrus. Для изучения чужих скриптов без исходников - просто незаменим.
То есть, невозможно активировать манекен (не реагирует на курсор). Как это исправить?
Есть два варианта: 1. Дать имя своему манекену и его можно будет активировать. Но "вслепую", надписи не будет. Это не лучший вариант. 2. Сделать свой активатор вместо MannequinActivateTrig (например, aaaMannequinActivateTrig) и в скрипте назначить его вместо дефолтного. На него добавить скрипт и добавить файл модели. Тогда всё будет правильно работать.
----------------- В событии OnCellLoad()последовательность команд должна быть именно такой.
Код
ни обьект самой одежды
Так всё-таки одежда... Что и предполагалось. Тогда забудь про референсы.
Бить актёра - это не педагогично, да и неправильно. Нет гарантии, что вообще он "Айкнит", или именно "Ай", а не пошлёт подальше, подобные реплики рендомные из разных фраз. Для этих целей есть команда Say(), но... делать свой топик придётся, если не найдёшь дефолтного такого топика.
Да эта команда хоть что то бы произнесла. Выбирал на угад несколько ванильных топиков, но ГГ молчит как рыба. Наверное сделаю проще, через "саунд маркер". Запишу свою Wav-ку и буду её запускать...
Просто хотелось ещё менять анимацию лезвий, когда ГГ переходит в "боевой" режим ... но раз нельзя, то нельзя.
Почему нельзя, можно. Сделай ещё один маг.эффект на этом спелле с условиями боя, на него повесь новый арт-объект, точнее такой же, но уже с другой анимацией. И во время боя и нет, маг.эффекты сами будут меняться, и естественно, будут меняться арт-объекты (один с простой анимацией, другой с боевой).
Код
Да эта команда хоть что то бы произнесла. Выбирал на угад несколько ванильных топиков, но ГГ молчит как рыба.
А про тип голоса в топиках забыл? И про остальные условия в топиках тоже забыл, да и вообще тот квест мог быть не запущен.
Изменение репутации для пользователя LordVadim
LordVadimOffline
Сообщение №456
написано: 30 октября 2013, 16:20
| Отредактировано: LordVadim - 30 октября 2013, 19:21
1. Дать имя своему манекену и его можно будет активировать. Но "вслепую", надписи не будет. Это не лучший вариант.
Первый вариант не подойдет, так как манекен начинает вести себя как NPC - разговаривать, менять анимацию, позы... меня это не устраивает. А второй вариант попробую.
Алекс, СПАСИБО!!! Второй вариант сработал, только не получается переместить манекен. Выполняю:
Манекен и активатор перемещаются в новую позицию, затем активатор остается в новой позиции, а манекен возвращается в точку, где был создан. Как это поправить? И еще вопрос: как получить координаты точки куда указывает курсор?
Изменение репутации для пользователя AleksTirex
AleksTirexOffline
Сообщение №457
написано: 30 октября 2013, 19:38
| Отредактировано: AleksTirex - 30 октября 2013, 19:50
Манекен и активатор перемещаются в новую позицию, затем активатор остается в новой позиции, а манекен возвращается в точку, где был создан. Как это поправить?
А ты в скрипте манекена заменил все команды MoveTo(GetLinkedRef()) на MoveTo(st_MarkerHeading)?
******************
С курсором не знаю, ни разу не задавался таким вопросом. Если придумаю как - скажу.
Изменение репутации для пользователя LordVadim
LordVadimOffline
Сообщение №458
написано: 30 октября 2013, 20:00
| Отредактировано: LordVadim - 30 октября 2013, 20:07
А ты в скрипте манекена заменил все команды MoveTo(GetLinkedRef()) на MoveTo(st_MarkerHeading) ?
Заменил. Такое впечатление, что при создании манекена он привязывается еще к какому то маркеру. По курсору уточню: меня интересует положение курсора при выполнении заклинания, то есть в какой точке создавать манекен.
И во время боя и нет, маг.эффекты сами будут меняться,
Попробовал - не меняются Получается "маг-эффекты" срабатывают только если я одеваю предмет (который собственно и запускает "спелл" на выполнение) и при этом заданное условие уже выполняется. Например если я сидя надену предмет, то когти появятся. И не пропадут до тех пор, пока я предмет не сниму, вне зависимости встану я потом или нет.
ПС: уточню на всякий случай, мой "спелл" и "маг-эффекты" - это "способности" с длительностью выполнения в один день, поэтому я их выключаю вручную по событию снятия предмета. Если так не сделать (я имею в виду не задать время для способности), то "маг-эффект" моментально заканчивается и арт-обьекты пропадают (собственно даже и не видно чтобы что то появлялось).
Можно попробовать сделать промежуточный "спелл", который будет мониторить каждую секунду состояние ГГ (или НПС) и при совпадении условий вызывать нужный "маг-эффект", а потом также его и выключать...
Получается "маг-эффекты" срабатывают только если я одеваю предмет (который собственно и запускает "спелл" на выполнение) и при этом заданное условие [u]уже выполняется. Например если я сидя надену предмет, то когти появятся. И не пропадут до тех пор, пока я предмет не сниму, вне зависимости встану я потом или нет.
Не, ты меня не понял, надо выставить условия в самих эффектах, а не в скрипте. Если на эффект повесить условие IsInCombat == 1, то сам спелл при надевании предмета запустится, но маг.эффект не будет действовать вне боя. Движок всё это время думает, что спелл и эффект действуют, а в реале ничего не действует, если условия на эффекте не выполняются. У тебя условие выполняется для запуска спелла, но не для отработки эффекта.
А вот теперь повесь на свой эффект условие Subject GetSitting > 0, и сам увидишь, что когти уберутся сразу, как ты встанешь. При этом, они сразу вновь появятся, когда ты опять сядешь.
Добавлено (31 Октября 2013, 01:11) --------------------------------------------- LordVadim, тогда весь скрипт показывай.
Так я так и делал... именно на "маг-эффект" внутри окошка свойств каждого "маг-эффекта" ... и эффект включается только при изначальном совпадении условия и один раз и на всегда.
Может надо на "маг-эффект", но внутри окошка свойств "спела", запускающего их... завтра проверю.
Может надо на "маг-эффект", но внутри окошка свойств "спела", запускающего их
Именно.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
anton, если "на пальцах" объяснить, то условия на самом маг.эффекте являются как бы определение параметров цели, на которую будет применён этот эффект, т.е. срабатывать ему или нет. Условия в спелле на маг.эффекте - это как бы "общие" и условия самого заклинателя, т.е. применять ли этот эффект вообще. От этих условий зависит "наложить эффект или снять, если он наложен", а вот условия на самом эффекте - это сработает ли он на целе или нет (а если сработал, то и дальше будет работать).
***********************
Код
По курсору уточню: меня интересует положение курсора при выполнении заклинания, то есть в какой точке создавать манекен.
Так ты хочешь создавать манекена через заклинание? Тогда это ещё проще:
1. Делаешь свой спелл и маг.эффект призыва своего актёра (например маленького невидимого краба, или питомца). 2. Дальность призыва по желанию. Время призыва 1 секунда. 3. Делаешь свою способность со скриптом и даёшь её этому актёру. Скрипт:
ActorBase Property akManakenBase Auto Static Property XMarkerHeading Auto
Event OnEffectStart(Actor Target, Actor Caster) ObjectReference akMarker = Target.PlaceAtMe(XMarkerHeading) Target.Disable() Utility.Wait(0.25) float fAngle = akMarker.GetAngleZ() + akMarker.GetHeadingAngle(Game.GetPlayer()) akMarker.SetAngle(0.0, 0.0, fAngle) Actor akNewManaken = akMarker.PlaceActorAtMe(akManakenBase) akMarker.DisableNoWait() akMarker.Delete() (akNewManaken as MannequinActivatorSCRIPT).OnCellLoad() EndEvent
akManakenBase - базовый манекен MannequinActivatorSCRIPT - скрипт, который на этом базовом манекене (у тебя он свой)
Такое количество команд надо для точного позиционирования манекена в точке курсора. (команды и их последовательность не меняй)
Ничего в скрипте манекена изменять не надо. Все необходимые маркеры создадутся сами в скрипте манекена.
********* Вот только подумай над вариантом "отмены/удаления" манекенов, ведь игрок может их нафигачить, что пройти будет нельзя.
А у меня ещё вопросы возникли: - по событию isInCombat или GetCombatState когти вылазят только если ударить кого то, а хотелось бы чтобы вылазили при принятии ГГ боевой стойки. Какую ещё переменную можно попробовать ? - как проверить, что перк, назначенный скриптом, работает ? Я назначаю FistsOfSteel и DeftMovement, но они нигде не отображаются... По идее должен увеличится урон при рукопашном бое, но если с мечом игра урон показывает, то без оружия пишет просто "0" и всё. В списке активных способностей ГГ тоже пусто.
Так и сделал, разница вроде есть. Перки усилил, так что теперь и стражника в рукопашку можно попробовать налупить !
Можете меня поздравить ! Теперь мод полностью готов, и именно так как мне и хотелось ! Реализована и интерактивная анимация предмета одежды, и добавлена анимация для ГГ при надевании, и озвучены события, связанные с предметом (в том числе и "Ай" для ГГ), спецэффекты присутствуют, перки - на месте. Ляпота !... Осталось только играть и получать удовольствие !
AleksTirex, тебе, как всегда, огромное спасибо за помощь и вагон печенек впридачу ! что бы я без тебя делал !
Нужен скрипт, делающий вот что: 1. В общем и целом фасттревел отключен намертво. 2. При активации активатора, на который навешен скрипт, открывается карта и фасттревел становится возможным, но только для нескольких указанных локаций (а точнее, маркеров карты), в остальные попасть по прежнему невозможно. 2а. Фасттревел в указанные локации будет возможен даже в том случае, если они не посещены - то есть самая первая активация данного активатора не только делает их видимыми на карте, но и доступными для фасттревела. 2б. Открытие карты обычным способом не позволяет фасттревел, в том чисел и в данные локации. 3. Путешествовать таким образом можно только один раз в сутки - при повторной активации будет мессажбокс типа "Энергия телепорта израсходована, подождите до завтра".
Изменение репутации для пользователя LordVadim
LordVadimOffline
Сообщение №471
написано: 1 ноября 2013, 19:42
| Отредактировано: LordVadim - 1 ноября 2013, 19:43
Не срабатывает. Target = Player() и манекен создается не в точке курсора, а рядом с игроком. ( Magic Effect - на цель ) Координаты точки создания заклинания надо получить как то по другому.
Нет друзья, так не пойдёт, писать такие слишком уж подробные инструкции "вдруг" как-то расхотелось - вы не читаете, что вам пишут! Так зачем я тогда всё это пишу?
Код
(команды и их последовательность не меняй)
Читал? И где ты видел там Target = Player() ?
Способность у призванного актёра, вот и манекен создаётся у этого призванного актёра (который сразу же удаляется). Откуда взялся там ГГ? Если сам что-то меняешь или добавляешь, то как минимум, надо об этом писать, телепатией тут никто не обладает.
Если сделать всё от и до, как там написано, то всё будет прекрасно работать.
Изменение репутации для пользователя LordVadim
LordVadimOffline
Сообщение №473
написано: 2 ноября 2013, 04:34
| Отредактировано: LordVadim - 2 ноября 2013, 05:50
Алекс, не сердись. Извини, что непонятно написал. В твоем коде, я ничего не менял - не работает.
Event OnEffectStart(Actor Target, Actor Caster)
Target = Player() я имел ввиду, что при входе в скрипт переменная Target имеет значение равное ID игрока. То есть в нее, почему то, записана ссылка на игрока, а не на создаваемое существо. Caster тоже имеет значение равное ID игрока.
Народ, помогите плиз ! Нужен маркер/триггер со скриптом, проходя через который все живые существа мгновенно умирают, вне зависимости от того, насколько они прокачены и сколько у них жизней, даже если это двемерские роботы.
То есть в нее, почему то, записана ссылка на игрока, а не на создаваемое существо.
Код
1. Делаешь свой спелл и [b]маг.эффект призыва своего [u]актёра (например маленького невидимого краба, или питомца). 2. Дальность призыва по желанию. Время призыва 1 секунда. 3. Делаешь свою [b]способность [u]со скриптом и даёшь её [u]этому актёру.
И даёшь её этому призываемому актёру. Способность висит на актёре, а не на ГГ. Скрипт на способности, а не на заклинании призыва. Два спелла - призыв актёра и способность на актёре, на способности скрипт.
Код
триггер со скриптом, проходя через который все живые существа мгновенно умирают,
Event OnTriggerEnter(ObjectReference akActionRef) if akActionRef != Game.GetPlayer() (akActionRef as Actor).Kill() endif EndEvent
Если надо и ГГ убивать, то тогда условия можно убрать.
И даёшь её этому призываемому актёру. Способность висит на актёре, а не на ГГ. Скрипт на способности, а не на заклинании призыва. Два спелла - призыв актёра и способность на актёре, на способности скрипт.
Алекс, Спасибо! Буду разбираться.
С перемещением манекена разобрался. в AI пакете присоединенном к манекену в скрипте была прописана функция MoveToMyEditorLocation(), поэтому манекен у меня и возвращался в точку создания после любого перемещения.
В разделе "Активаторы" создаёшь свой активатор. В нём в окне Scripts жмёшь Add и делаешь новый скрипт, в нём пишешь тот код и Ctrl+S (что выше написан). ОК. Тыркаешь на место установки триггера, потом нажимаешь Create Trigger (кубик с буквой Т), в выскочившем окне выбираешь свой созданный активатор. ОК. У тебя по размеру ??? создастся бокс. Стрелочками растягиваешь свой триггер-бокс на нужные размеры (для выключения этого режима "2" или "W" на клавиатуре).
ObjectReference Property akContainer Auto ; назначается свой сундук в любой локации
Game.GetPlayer().RemoveAllItems(akContainer) ; переместить все вещи ГГ в сундук akContainer.RemoveAllItems(Game.GetPlayer()) ; переместить все вещи из сундука к ГГ
Вставил сей фрагмент и всёравно зависает. По плану скрипта, при смерти ГГ у него исчезает всё золото и все шмотки. Пока не брал камень барензии скрипт работал на ура. Т.е. ресался в храме вайтрана голым и нищим. Теперь если ремове.все_шмотки, то ресаюсь в храме голым и висю... ничего не откликается.
Не подскажешь, как только одну шмотку выкинуть к примеру, или выкинуть всё кроме одной шмотки (камня барензии например)?
Человек - смертный Бог!
Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)