Может я не в тему попаду, но относится ли формат .pex к скриптам и если да то чем открыть ?
Формат PEX - это скомпилированный скрипт. Чтобы получить исходник PSC нужно .pex файл декомпилировать. В архиве есть декомпилятор и инструкция по настройке: Инструкции по работе с ESP и BSA
Очевидно, что она будет там ходить так же, как ходяла бы на 10 см ниже и ничего у неё ни с костями, ни с анимацией не нарушится. А теперь убираем плиту, но не говорим девушке, что она ходит на 10 см выше обычного. Тогда она будет парить над полом так же без нарушения чего либо, но на высоте 10 см.
Не совсем так. Некоторые анимации кроме персонажа привязаны к навмешам, в результате в некоторых местах ваша девушка будет по щиколотку проваливаться в пол.
Изменение репутации для пользователя LordVadim
LordVadimOffline
Сообщение №34
| Тема: Вопросы по скриптам Papyrus
написано: 25 ноября 2013, 17:30
| Отредактировано: LordVadim - 25 ноября 2013, 17:33
Не работает. Алекс - прав. Управляющий символ вставить, наверное не получится. Хотя интересно - в тесте сообщений он спокойно отображается, а в названии кнопки нет. Где логика?
Заменю символы < > на {== ==} Похоже на стрелки?
Изменение репутации для пользователя LordVadim
LordVadimOffline
Сообщение №35
| Тема: Вопросы по скриптам Papyrus
написано: 27 ноября 2013, 13:06
| Отредактировано: LordVadim - 27 ноября 2013, 13:07
LordVadim, сесть/лечь - это "активировать" данную мебель актёром (эту команду ты знаешь - activate). Хотя, обычно для этого используют пакеты ActivateSpecialFurniture. **** У меня сейчас в голове "каша", поэтому не смогу точно сказать, будет ли НПС именно садиться при активации мебели, а с пакетом точно будет. По крайней мере, при активации мебели, если НПС сидит, то он точно встанет.
Просто активация не срабатывает ни с пакетом ни без. Добавил ActivateSpecialFurniture - НПС садится только если в СК назначить референс мебели в Public Package Data. Вопрос как этот референс менять скриптом?
AleksTirex, спасибо. С алиасами пока не сталкивался. Буду разбираться.
Добавлено (28 Ноября 2013, 01:21) --------------------------------------------- Разобрался. Работает. Но это не совсем то, что мне нужно. Такая схема работает для одного НПС, а мне нужно для произвольного количества. Есть ли возможность в скрипте делать копии квеста для каждого НПС наподобие PlaceAtMe.
О как! Менять ID базовых объектов... сильно, но увы, не получится, а равно добавлять и удалять сами пакеты. А зачем, если не секрет? Один пакет можно использовать на множество разных целей, просто меняется референс на алиасе, который является целью пакета. ****** референс - ссылка на объект, а ActivateSpecialFurniture - ID базового объекта, к тому же это Package Template, т.е. базовый объект для других базовых объектов. Пакеты, квесты, заклинания и подобное, по определению не могут иметь референса (в его истинном значении), т.к. не могут находиться в игровом мире.
Я неправильно выразил свою мысль. Я имел ввиду изменить значение переменной Target процедуры Activate из ActivateSpecialFurniture. Ведь если этой переменной можно назначить референс в СК, то по идее и через скрипт ее можно как то изменить. Вообще то, в нормальном объектно ориентированном языке, я бы получил дочерний объект используя в качестве родителя свой Quest и далее работал бы с ним. в Papyrus я такой возможности пока не нашел.
А вообще, расскажу подробнее суть проблемы, может есть иной подход к ее решению: Я все еще допиливаю манекены, так сказать снимаю стружку, оживляю и превращаю из манекена в модель. Написал и на ум почему то пришел папа Карло... Командой SetDoingFavor я передаю игроку управление моделью. С передвижением проблем нет. Под управлением игрока модель ходит, садится, ложится... всё нормально (вообще без каких либо AI пакетов). Но если с сидящей/лежащей моделью покинуть локацию и вновь войти - модель оказывается стоящей рядом с мебелью. Проблема: как заставить модель сидеть/лежать при загрузке локации. Использование ActivateSpecialFurniture проблему решает частично - при загрузке локации модель появляется стоящей, а потом идет и садится/ложится (а хочется, чтобы она загружалась уже сидящей/лежащей). Да, чуть не забыл: моделей может быть много... поэтому при смене референса на алиасе в пакете работает только текущая модель, а остальные нет.
Myprism, если мою задачу реализовывать посредством квеста возникает проблема - квест должен одновременно работать для произвольного количества НПС, а я не представляю как это сделать без создания дополнительных алиасов для каждого НПС и каждой фурнитуры. То есть придется заморачиваться с созданием в скрипте квеста динамически изменяющихся массивов с алиасами на актеров и фурнитуру. Сделать то можно, но возникает вопрос: неужели мою задачу нельзя решить как нибудь попроще?
Изменение репутации для пользователя LordVadim
LordVadimOffline
Сообщение №42
| Тема: Вопросы по скриптам Papyrus
написано: 28 ноября 2013, 09:16
| Отредактировано: LordVadim - 28 ноября 2013, 09:22
Так именно это я уже два раза тебе писал: Пакет делается собственностью твоего квеста, тогда в нём можно будет в качестве цели использовать алиас из твоего квеста. Вот этот алиас ты можешь менять/переназначать хоть каждую минуту и каждый раз целю этого пакета будет новый референс, который ты назначаешь на этот алиас. Это и есть менять Target в процедуре.
AleksTirex, да с квестом я уже понял концепцию. Я спрашивал нельзя ли это менять если пакет не к квесту привязан а к НПС?
Изменение репутации для пользователя LordVadim
LordVadimOffline
Сообщение №44
| Тема: Вопросы по скриптам Papyrus
написано: 28 ноября 2013, 12:52
| Отредактировано: LordVadim - 28 ноября 2013, 12:53
Это сработало, при загрузке модель сидит. А для разных моделей придется штук 30 алиасов запихать в квест и написать скрипт для управления/назначения/очистки. Похоже, что это единственное решение.
Изменение репутации для пользователя LordVadim
LordVadimOffline
Сообщение №45
| Тема: Вопросы по скриптам Papyrus
написано: 29 ноября 2013, 08:27
| Отредактировано: LordVadim - 29 ноября 2013, 08:29
Удобнее ли работать с информацией представленной таким образом или достаточно виделения жирным шрифтом и курсивом, как на исходной странице? Может у кого-то появятся идеи более удобных вариантов
Тут на всех не угодишь. Мнения субъективны. Мое мнение: В первом варианте не сразу видно имя функции, неудобно искать. Во втором варианте дублируется информация в четвертом столбце из первого и второго и выглядит не слишком читабельно. На мой взгляд удобнее было бы организовать информацию в три столбца: Возвращаемый тип / Имя функции (с синтаксисом) / Описание функции.
Добавляю в Magic Effect источник света, но при касте почему то игнорируется Flicker Effect. Если просто разместить источник света через СК в мир, он мерцает, а при касте нет. Я что то не правильно делаю или это особенность движка?
Да, это и есть Flicker-эффект. Там даже настраивается амплитуда эффекта.
В том то и дело, что все настраивается и на источниках света, установленных через СК, нормально работает. А вот в заклинаниях не работает. Тот же "Свет свечи" - не мерцает, мельтешит перед глазами летающий шарик, а сам свет светит ровно, без мерцания и никак не реагирует на параметры раздела Flicker Effect. Что бы это проверить достаточно подойти к стене и понаблюдать за светом.
Изменение репутации для пользователя LordVadim
LordVadimOffline
Сообщение №51
| Тема: Вопросы по скриптам Papyrus
написано: 5 декабря 2013, 20:32
| Отредактировано: LordVadim - 5 декабря 2013, 20:42
1. Не привязывается больше одного статика, а хотелось бы привязывать бесконечное количество - (на печке стоит казан (нерабочий), включаю газ, и вместе с ним, взамен нерабочего казана появляется рабочий, то есть с включением огня я могу готовить пищу, - то есть огонь и рабочий казан помечены галочкой InitiallyDisable, а нерабочий казан нет, при нажатии на кнопку все меняется наоборот) 2. Можно ли прикрутить к скрипту таймер автоматического отключения статики (нажимаю на слив унитаза, появляется модель воды, делает свое дело и секунды через 3-4 исчезает) 3. Можно ли вместо ручки сделать активацию по времени (кроме зажигания фонарей можно например сделать например блокировку ворот на ночь маркером коллизии, включение охранных систем, да и просто появление парочки дуболомов с мечами для охраны дома).
1. Привязывается. Алгоритм такой: связываешь по цепочке: Кнопка - Котел1 - Огонь - Кран - Котел2 - ... - Кнопка. Цепочку обязательно замкнуть. Далее в скрипте делаешь цикл:
2. Можно. Используй функцию RegisterForSingleUpdate( время ) - время задается в секундах. И через заданное время сработает событие:
Event OnUpdate()
Выполняешь необходимые операции...
endEvent
3. Можно. Используй функцию RegisterForUpdate( время ) событие OnUpdate() будет срабатывать с заданным интервалом. Пока не вызовешь функцию: UnregisterForUpdate()
Куда ее прикрутить, ведь это функция действия на время, а не выключателем. К нужному предмету? Как должен выглядеть полный скрипт? Две функции RegisterForUpdate(08.00) и OnUpdate(12) выдают ошибку. Я так понял первая включает предмет в заданное время, а вторая поддерживает указанное количество часов? Первая функция прописалась в скрипте без проблем, но не работает.
OnUpdate() - это событие, а не функция. В скобках ничего быть не должно - поэтому выдает ошибку. События называются событиями потому, что срабатывают в зависимости от наступления каких либо условий. В данном случае - по прошествии времени указанного функцией RegisterForUpdate(08.00) - если оставить как написано, то событие OnUpdate() будет вызываться каждые 8 секунд. Куда это вставлять - зависит от того, что необходимо сделать. Например если просто надо выключить котел1 через некоторое время - то проще сделать как писал AleksTirex, поставить в скрипте Wait(время) - и повторить цикл While.
Есть ли способ в обход редактора добавить скрипт в папку, а уже оттуда добавить готовый скрипт через редактор в нужный предмет?
Можно настроить Notepad++ на работу со скриптами Notepad++ Установка. Я вообще не представляю как можно нормально работать со скриптами в том убожестве, что встроено в СК.
а в родной редактор только вставляю готовый текст скрипта и компилирую.
А зачем? В Notepad++ ведь можно настроить и компиляцию. Я настроил F8 на сохранение и F9 на компиляцию - удобно, нажал две кнопки и все готово! В родной редактор СК вообще не заглядываю.
Изменение репутации для пользователя LordVadim
LordVadimOffline
Сообщение №55
| Тема: Вопросы по скриптам Papyrus
написано: 9 декабря 2013, 06:08
| Отредактировано: LordVadim - 9 декабря 2013, 06:09
А ты пути в ScriptCompile.bat менял? И еще, для компиляции с помощью Notepad++ скрипт должен располагаться в папке: ...\Skyrim\Data\Scripts\Source
.
Добавлено (09 Декабря 2013, 10:08) --------------------------------------------- Ко нибудь знает, где в игре настраивается параметр количества одновременно работающих источников света с тенью в одной локации? И можно ли его установить более 4?
Но, увы, всё это вместе не позволяет сквозь него ходить. Я вообще не уверен, что в игре такое возможно, ведь тогда модель должна проваливаться под пол.
Но ведь если для игрока применить консольную команду TCL он, фактически, становится призраком. А игрок - это тот же НПС, только управляемый. Значит, технически, такая возможность в игре есть. Или я что то путаю? Ghost, GhostAbility, SetAlpha() - не решают проблему. Только визуальный эффект.
Но это сложно, проще отказаться от идеи бесплотности призраков.
Похоже - единственно верный вариант. Тогда другой вопрос: На НПС проигрывается анимация, во время этой анимации положение тела меняется, но координаты получаемые функциями GetPosition... не меняются, можно ли как то получить координаты реального положения тела во время проигрывания анимации?
Изменение репутации для пользователя LordVadim
LordVadimOffline
Сообщение №60
| Тема: Вопросы по скриптам Papyrus
написано: 16 декабря 2013, 10:23
| Отредактировано: LordVadim - 16 декабря 2013, 10:24
Как из моего скрипта, висящего на XMarker узнать значение переменной из некоторого квеста? Подробнее так: мне нужно делать предметы видимыми при приобретении игроком дома. Я не хочу портить ванильный скрипт и вставлять свой код туда. Но там (HousePurchaseScript из квеста HousePurchase) есть переменная int Property WhiterunHouseVar Auto conditional, которой при покупке дома присваивают 1. Тогда я могу включать свой маркер при загрузке локации, если эта переменная равна 1. Но для этого мне надо получить к ней доступ в моём скрипте.
В своем скрипте объявляешь свойство Quest:
Quest PropertyHousePurchaseAuto
В СК назначаешь на него квест HousePurchase
Чтобы получить доступ к свойству WhiterunHouseVar в своем скрипте используешь конструкцию:
(HousePurchase as HousePurchaseScript).WhiterunHouseVar