• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней. • Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней. • При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС. • При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "+" полезного сообщения.
Сообщения, не относящиеся к вопросам по скриптам Papyrus, ответам на них или уточнениям, являются оффтопом и могут быть удалены.
Красное солнце Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
Effect Archetype - это тип эффекта, и если тип Script, то сам скрипт не обязан там присутствовать. (это как пивная бутылка - хоть она и пивная, а пива в ней может и не быть )
**************
"Нет не думаю что можно скрипт к другому месту прикрутить" - в теории - можно прикрутить. Например, к перку прикрутить, который используется в маг.эффекте в качестве "добавки" (Perk to Apply). На практике я использую позицию Assotiation Item, в него добавляю другие эффекты, в которых есть свои скрипты, и они работают как бы на этом маг.эффекте.
Изменение репутации для пользователя PaukSama
PaukSamaOffline
Сообщение №272
написано: 30 мая 2013, 06:41
| Отредактировано: PaukSama - 30 мая 2013, 06:41
вот тут не лишним будет сказать что лучше всего сделать две анимации, два playidle. Первый должен иметь свойство IdleForceDefaultState, мало ли чего делает гг пред тем как проигрывает анимацию, лучше так сделать чтобы сбросить анимки все.
Отними у меня апельсин - и я тебя убью Съешь мой апельсин - и я тебя убью Подари мне апельсин - и... я тебя убью Мне не нужен никто, лишь мой апельсин А тот кто не пойман - не ассасин!
PaukSama, для простой анимации - да, но sansuli нужна анимация фурнитуры (сон на кровати). В данной анимации есть условия - наличие кровати (!). Анимация не запустится. Но если добавить свою такую анимацию без условий, то актёр будет "спать" в том месте, где стоял, т.к. PlayIdle запускает голимую анимацию без привязки к объекту (любому).
Поэтому для нормальной анимации, где актёр будет ложится именно на кровать надо запускать "использование объекта". Для этого надо отобрать у игрока управление, кинуть команду Game.SetPlayerAIDriven() и запустить на ГГ пакет сна с привязкой к любой кровати, прокрутить время и т.д. По окончании пакета, когда ГГ встанет - Game.SetPlayerAIDriven(false), вернуть управление и т.д.
Изменение репутации для пользователя sansuli
sansuliOffline
Сообщение №274
написано: 30 мая 2013, 08:56
| Отредактировано: sansuli - 30 мая 2013, 08:57
вот тут не лишним будет сказать что лучше всего сделать две анимации, два playidle. Первый должен иметь свойство IdleForceDefaultState, мало ли чего делает гг пред тем как проигрывает анимацию, лучше так сделать чтобы сбросить анимки все.
Ну на счет этого я придумал вот что, я просто укажу условия чтобы ГГ не был в бою, снике и пт, и если бежал поставлю wait() после того как отключу управление. Но все равно спасибо за подсказку))
Красное солнце Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
sansuli, а ведь еще анимации могут быть разные. Например я эксперементировал - брал анимку выпивание из пивной кружки - она работает одноразово, то есть проигрывается и все. А вот когда я поставил анимацию шатающейся походки типа пьяный то ее как раз нужно прерывать скриптом, сама по себе она не останавливается. Так что в этом случае всетаки придется использовать второе playidle сброс анимации. Ну я думаю ты и так все это знаешь просто вспомнилось что анимации по дефолту тоже разные.
Отними у меня апельсин - и я тебя убью Съешь мой апельсин - и я тебя убью Подари мне апельсин - и... я тебя убью Мне не нужен никто, лишь мой апельсин А тот кто не пойман - не ассасин!
Всем доброго времени суток. Делаю модик, есть такая большая просьба, так как со скриптами еще совсем не разбирался, осваиваю пока Creation Kit. В доме лежит прикрученная книга. Нужно, чтобы после использования ГГ крика Безжалостная Сила книгу можно было взять в руки. Если кто поможет, заранее огромное спасибо.
Вместо того, чтобы брать слово, я хотел бы, чтобы оно само окутало меня и унесло как можно дальше, за любое возможное начало. (Поль-Мишель Фуко)
Ребята, а можно скрипт работающий на объекте, бочке например, прикрепить к перку чтобы не впихивать скрипт во все бочки(разобрался уже как оно с маг эффектом связывается )?
Изменение репутации для пользователя m0nk0
m0nk0Offline
Сообщение №279
написано: 31 мая 2013, 13:13
| Отредактировано: m0nk0 - 31 мая 2013, 19:48
toozikoos, спасибо, буду пробовать. "в плагине заполнить свойство meFusRoDa магэффектом "Безжалостнай Силы" - вот это поподробнее, пожалуйста, ибо СK по сравнению с инструментами, которыми я ранее пользовался (преимущественно блокнот и декомпиляторы), поражает с одной стороны обилием возможностей, с другой их неупорядоченным нагромождением....
Вместо того, чтобы брать слово, я хотел бы, чтобы оно само окутало меня и унесло как можно дальше, за любое возможное начало. (Поль-Мишель Фуко)
m0nk0, посмотри видеоуроки, в частности "Выключатель света".
Я их в первую очередь начал смотреть. Увы, автор (при всем уважении к проделанной работе) часто слабо себе представляет о чем идет речь. И ПОЧЕМУ надо делать именно так а не иначе...
Вместо того, чтобы брать слово, я хотел бы, чтобы оно само окутало меня и унесло как можно дальше, за любое возможное начало. (Поль-Мишель Фуко)
Ребятаа, вот у меня есть скрипт который впихнут в объект, мжно ли его переписать так чтобы его прикрутить к заклинанию/перку(чтобы оно работало со всеми объектами такого же типа, а не впихивать скрипт в каждый объект)?
mxac, да это можно, изменить тип скрипта ObjectReference на ActiveMagicEffect, затем события соответствующие этому типу...мда короче показывай скрипт, надо точно знать.
Отними у меня апельсин - и я тебя убью Съешь мой апельсин - и я тебя убью Подари мне апельсин - и... я тебя убью Мне не нужен никто, лишь мой апельсин А тот кто не пойман - не ассасин!
Изменение репутации для пользователя mxac
mxacOffline
Сообщение №284
написано: 6 июня 2013, 13:59
| Отредактировано: mxac - 6 июня 2013, 14:24
Создал перк с записью Entry Point - Activate - Add Actovate Choice , и хочу чтобы выполнялся мой скрипт, что нужно вписать в Papyrus Fragment , если скрипт такой:
Scriptname MyScript extends ObjectReference Perk Property MyPerk Auto Event OnActivate(ObjectReference akActionRef) if (Game.GetPlayer().HasPerk(MyPerk) == false) Game.GetPlayer().AddPerk(MyPerk) endif EndEvent
Кстати скрипт правильно хоть написан? Он должен при выборе моего варианта активации учить перк если он не выучен...
И ещё помогите переписать скрипт так чтобы он был прикреплён не к контейнерам и дверям, а к магическому эффекту или перку(если это возможно), чтобы не впихивать его в каждый контейнер и дверь, а только в маг.эффект/перк...
;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment ;NEXT FRAGMENT INDEX 13 Scriptname myHelperAutoOpenPerkScript Extends Perk Hidden ;BEGIN FRAGMENT Fragment_2 Function Fragment_2(ObjectReference akTargetRef, Actor akActor) ;BEGIN CODE akActor.removeItem(Lockpick, 1) akTargetRef.lock(false) akTargetRef.activate(akActor) ;END CODE EndFunction ;END FRAGMENT ;END FRAGMENT CODE - Do not edit anything between this and the begin comment
MiscObject Property Lockpick Auto
в перке проверяется что есть отмычки и что это дверь/сундук и что заперто
Изменение репутации для пользователя kicrup
kicrupOffline
Сообщение №286
написано: 14 июня 2013, 08:25
| Отредактировано: kicrup - 14 июня 2013, 08:26
у меня просьба, напишите пожалуйста скрипт для двери, который бы срабатывал при входе и закрывал дверь через секунду, на ключ. И еще скрипт на оружие, чтобы при ударе по двери, дверь открывалась. Буду благодарен. Заранее спасибо
1. При открытии разных копий контейнера должен открываться один и тот же инвентарь одного определенного контейнера. То есть где бы мы ни находились, если есть копия данного контейнера - то вещи взять-положить в один и тот же контейнер. Это нужно для создания нескольких копий одной локации, чтобы не было разницы в разных копиях локации при открытии одинаковых контейнеров.
2. При активации активатора должно всплывать меню (мессажбокс) из нескольких пунктов, при выборе каждого пункта дизейблятся все объекты из определенной группы (например, несколько дверей), кроме одного, который энейблится. Для каждого пункта - энейблится соответствующий только ему объект. Подозреваю, что во втором случае должен быть не один скрипт, а несколько результирующих скриптов мессажбокса.
3. При открытии двери сначала проигрывается видео, а потом только дверь перемещает игрока в локацию связанной с ней двери. То есть чтобы дверь работала как обычно, но с добавлением видео перед перемещением.
VisualEffect Property DragonAbsorbEffect Auto VisualEffect Property DragonAbsorbManEffect Auto Idle Property BracedPainIdle Auto EffectShader Property GreybeardPowerAbsorbFXS Auto EffectShader Property GreybeardPlayerPowerAbsorbFXS Auto
AleksTirex, проверил на NPC и все норм сработало, но на драконов все равно не действует. В чем проблема?
Добавлено (10.07.2013, 18:00) --------------------------------------------- Я скрипт изменил(изменил не из-за того, что не действует на драконов(я не знаю в чем причина), а просто "модернизировал"):
VisualEffect Property FXGreybeardAbsorbEffect Auto Idle Property BracedPainIdle Auto EffectShader Property GreybeardPowerAbsorbFXS Auto EffectShader Property GreybeardPlayerPowerAbsorbFXS Auto Sound property NPCDragonDeathSequenceWind auto Sound property NPCDragonDeathSequenceExplosion auto
Обнаружил еще один баг, а именно, если под крик попадут две или более цели, то они все тоже оживают. А мне нужно чтобы оживала только одна цель. Как это сделать?
Как сделать, чтобы цель после воздействия на нее крика сражалась за ГГ?
Изменение репутации для пользователя AleksTirex
AleksTirexOffline
Сообщение №291
написано: 10 июля 2013, 18:08
| Отредактировано: AleksTirex - 10 июля 2013, 18:10
На драконе не должно стоять галочки "Starts Dead", иначе его никогда не оживить. Дракона надо "убивать" при старте или загрузке, тогда он сможет ожить.
AleksTirex, я проверял на обычных драконах, которые "летают" по Скайриму.
AleksTirex, я проверял на обычных драконах, которые "летают" по Скайриму.
Обычные драконы тоже должны оживляться. Почему у тебя они не оживляются, я не знаю. Возможно потому, что на них не должны действовать стандартные крики. Ты в своём маг.эффекте у этого крика удали кейворд MagicShout, тогда крик должен будет заработать и на драконе.
Добавлено (11.07.2013, 18:54) --------------------------------------------- Всё правильно, драконы не будут реагировать на крики/заклинания, ведь при смерти им даётся статус Ghost, поэтому маг.эффект не действует.
Надо при старте крика проверять наличие в округе дохлых драконов и снимать Ghost (akActor.SetGhost(false)). Или наглым и грубым способом редактировать дефолтный скрипт MQKillDragonScript, что крайне не желательно.
Иsкатель, но ведь у тебя будут свои драконы, а с ними и так будет всё работать. Ты ведь не собираешься оживлять дохлых скайримских драконов, ведь это удел исключительно Алдуина.
Добавлено (11.07.2013, 19:00) --------------------------------------------- Для пробы, можешь в консоли тыркнуть по дохлому дракону и вбить SetGhost 0, тогда он станет оживать.
Создание точной копии актёра или ГГ, с той же бронёй и оружием, что и у оригинала:
<http://tiarum.com/wiki/Skyrim_CK:%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BE%D0%BF%D0%B8%D0%B8_%D0%B0%D0%BA% D1%82%D0%B5%D1%80%D0%B0> Копируйте адрес и вставляйте в адресную строку. Спасибо хозяевам сайта за их заботу о левых порталах, куда ведут любые ссылки, или за их прямые руки.
Можно проверить экипировано ли оружие или магия, какое оружие экипировано(меч, лук, топор, кинжал и т.д.), в каком кол-ве экипированно(2 меча или 2 топора и т.д.) или какая магия(тоже в 2 руках или нет)?
И если оружие не экипировано, то экипировать какое либо имеющиеся у игрока оружие или магию?
Вот тебе несколько команд, а дальше сам их сортируй и составляй нужный скрипт:
int iNumR = Game.GetPlayer().GetEquippedItemType(1) ; что экипировано на правой руке int iNumL = Game.GetPlayer().GetEquippedItemType(0) ; что экипировано на левой руке 0: Nothing (Hand to hand) 1: One-handed sword 2: One-handed dagger 3: One-handed axe 4: One-handed mace 5: Two-handed sword 6: Two-handed axe/mace 7: Bow 8: Staff 9: Magic spell 10: Shield 11: Torch 12: Crossbow ******************************************* Spell akSpell = Game.GetPlayer().GetEquippedSpell(1) ; какое заклинание в правой руке Spell akSpell = Game.GetPlayer().GetEquippedSpell(0) ; какое заклинание в левой руке Shout akShout = Game.GetPlayer().GetEquippedShout() ; какой крик экипирован ******************************************* Weapon akWeaponR = Game.GetPlayer().GetEquippedWeapon() ; оружие в правой руке Weapon akWeaponL = Game.GetPlayer().GetEquippedWeapon(true) ; оружие в левой руке ******************************************* if akWeaponR == None ; оружия в правой руке нет ; elseif akWeaponR.IsDagger() ; это кинжал ; elseif akWeaponR.IsBow() ; это лук ; elseif akWeaponR.IsSword() ; это меч ; ... ; endif ****************************************** Game.GetPlayer().EquipShout(akShout) ; экипировать крик Game.GetPlayer().EquipSpell(akSpell, 1) ; экипировать заклинание на правую руку Game.GetPlayer().EquipSpell(akSpell, 0) ; экипировать заклинание на левую руку Game.GetPlayer().EquipSpell(akSpell, 2) ; экипировать заклинание на кнопку "Z" (голос) Game.GetPlayer().EquipItemEx(akWeapon) ; экипировать оружие по дефолту Game.GetPlayer().EquipItemEx(akWeapon, 1) ; экипировать оружие в правую руку Game.GetPlayer().EquipItemEx(akWeapon, 2) ; экипировать оружие в левую руку ******************************************* Function CheckWeaponActor() ; проверка наличия оружия в инвентаре и магии у ГГ Actor akActor = Game.GetPlayer() int iFormIndex = akActor.GetNumItems() While iFormIndex > 0 iFormIndex -= 1 Form kForm = akActor.GetNthForm(iFormIndex) if kForm.GetType() == 41 ; Weapon if Game.GetPlayer().GetEquippedItemType(1) && Game.GetPlayer().GetEquippedItemType(0) ; если хоть что-то экипировано iFormIndex = 0 elseif Game.GetPlayer().GetEquippedItemType(1) == 0 ; akActor.EquipItemEx(kForm, 1, true) elseif Game.GetPlayer().GetEquippedItemType(0) == 0 ; akActor.EquipItemEx(kForm, 2, true) endif endif EndWhile ;-------; Spell int iSpellIndex = akActor.GetSpellCount() While iSpellIndex > 0 iSpellIndex -= 1 Spell akSpell = akActor.GetNthSpell(iSpellIndex) ; это заклинание есть у ГГ if ; akSpell. - ппроверяем что за заклинание, если "правильное", то можно экипипровать ; EquipSpell endif EndWhile endFunction ****************************************** При проверке оружия у ГГ в инвентаре можно его проверить (меч, лук и т.д.) и если он вас устраивает, то можно экипировать. Так же надо определиться, что для ГГ лучше - магия или оружие, и от этого экипировать или то или другое.
Уважаемые, никто не подскажет скрипт для воды (активатора), который при погружении в нее добавляет эффект? А то поисковик не хочет как-либо помогать, а единственный скрипт, который я нашла в СК, послал меня лесом и отказался открываться...
Наука всегда оказывается не права. Она не в состоянии решить ни одного вопроса, не поставив при этом десятка новых. Джордж Бернард Шоу
Я заметил что есть возможность создавать свои события и функции. В общем свои библиотеки. Вопрос в том где прописать область и способ действия этих событий и функций.
Изменение репутации для пользователя AleksTirex
AleksTirexOffline
Сообщение №298
написано: 12 июля 2013, 13:54
| Отредактировано: AleksTirex - 12 июля 2013, 13:39
Уважаемые, никто не подскажет скрипт для воды (активатора), который при погружении в нее добавляет эффект? А то поисковик не хочет как-либо помогать, а единственный скрипт, который я нашла в СК, послал меня лесом и отказался открываться...
Event OnTriggerEnter(ObjectReference akActionRef) ; akActionRef.AAA() ; добавляем эффект EndEvent
Event OnTriggerLeave(ObjectReference akActionRef) ; akActionRef.BBB() ; удаляем эффект EndEvent
AAA() и BBB() зависят от вида эффекта.
Изменение репутации для пользователя Raser0919
Raser0919Offline
Сообщение №299
написано: 12 июля 2013, 14:35
| Отредактировано: Raser0919 - 12 июля 2013, 14:38
То есть скоро эта возможность появится? И кстати как добавлять новые формы. Просто в properties можно создать объект типа form но на выбор предлагаются всего лишь две какие то непонятные формы.
Изменение репутации для пользователя AleksTirex
AleksTirexOffline
Сообщение №300
написано: 12 июля 2013, 16:00
| Отредактировано: AleksTirex - 12 июля 2013, 16:09
То есть скоро эта возможность появится? И кстати как добавлять новые формы. Просто в properties можно создать объект типа form но на выбор предлагаются всего лишь две какие то непонятные формы.
Как скоро появится - зависит от разрабов SKSE , возможно, у них уже есть такой механизм, но... пока нет никаких сведений об этом (или они хитрят, или забыли нас оповестить об этом). Теми командами, что есть в их скриптах, создать полноценные события невозможно.
Добавить именно формы никак, надо обязательно инициализировать эти объекты (Armor, Weapon и т.д.). Но эти свойства всегда можно преобразовать в форму: akArmor as Form
Но вот смысл в добавлении именно форм? Обычно, приходится проводить обратное преобразование - форма в объект. К тому же, все функции/команды работающие с формой, могут работать и с объектом из этой формы.