• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней. • Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней. • При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС. • При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "+" полезного сообщения.
Сообщения, не относящиеся к вопросам по скриптам Papyrus, ответам на них или уточнениям, являются оффтопом и могут быть удалены.
Красное солнце Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
Изменение репутации для пользователя NoSilence
NoSilenceOffline
Сообщение №1981
написано: 20 февраля 2016, 16:41
| Отредактировано: NoSilence - 20 февраля 2016, 16:45
andrelo1, ага, про help и строку уже понял. Про == 1 я без понятия. Лично я бы просто написал if(akCaster.IsEquipped(asd)), а остальное на совести компилятора.
В смысле, значение свойства установить? Это там где скрипты добавляешь предмету?
NoSilence, ну молодец, что впихнул. А если у кого-то давнгард окажется под порядковым номером не 2? Ну можно было бы использовать GetFormFromFile, но в данном случае это лажа лажовая. Просто проперти заполнять научись.
Ну а изменять наверно все равно когда, когда удобно, тогда и меняешь.
Вот тут и загвоздка. Надо дополнять уровневые списки оутфитов и самих персонажей. Скажем. есть уровневый персонаж, при инициализации его он экипируется, а мне эту экипировку надо дополнить. Вроде, как надо отслеживать инициализацию персонажа. Но нет такого события у актёра.
Изменение репутации для пользователя evTau
evTauOffline
Сообщение №1985
написано: 20 февраля 2016, 18:09
| Отредактировано: evTau - 20 февраля 2016, 18:21
В Скайриме есть такая удобная штука, как уровневые списки (левельные списки). Через них обычно персонажи снабжаются шмотками. Всё бы хорошо, но если мод меняет такой список, то он становится несовместим с другими модами, которые меняют тот же список. Т.е. списки не суммируются (объединяются), а используется либо один, либо другой. Возникает естественное желание модифицировать нужные уровневые списки через скрипт. Благо есть соответствующая команда:
Зачем так усложнять себе жизнь... ведь проще сделать отдельный esp с уровневыми листами прикрутить к ниму баш теги и все... Wrye Bash спокойно создаст bashed patch с учетом ваших изменений. Обычно люди так и делают если дофига изменений в уровневых листах.
Myprism, по идее надо делать так как evTau говорит, т.е. сливать уровневые списки в один. А скриптами отловить момент инициализации списка и вклинится в него не получится. Правда изменение списков через esp тоже будет работать только на новой игре/новых персонажах, старые так и останутся в старом оутфите.
Myprism, как я знаю, NPC сначала голыми загружаются. А потом происходит надевание вещей и срабатывает ивент OnLoad(). Если есть возможность повесить на NPC скрипт, то в OnLoad() можно донадевать нужное...
Изменение репутации для пользователя evTau
evTauOffline
Сообщение №1988
написано: 20 февраля 2016, 19:13
| Отредактировано: evTau - 20 февраля 2016, 19:27
Myprism, как я знаю, NPC сначала голыми загружаются. А потом происходит надевание вещей и срабатывает ивент OnLoad(). Если есть возможность повесить на NPC скрипт, то в OnLoad() можно донадевать нужное...
Тут все проще человеку просто нужна возможность совмещенеия его уровневых листов с текущими что бы не было конфликтов.
PS: Я может чего то не понял... но если рассуждать с той точки зрения как я понял суть проблемы, вы только все усложняете. Что бы тупо слить все изменения уровневых списков в 1 единый такие танцы с бубном... уже давно все придумано.
evTau, andrelo1, работа через Врай Баш не годится. Мод должен быть самостоятельным и не требовать больше ничего. В крайнем случае SKSE. Буду думать.
Это не зависимость... это необходимость. Но если хочется гемороя то можно разобрать Complete Crafting Overhaul в нем точно есть скрипт обновления уровневых списков. Или Wet and Cold в нем тоже есть такой скрипт.
Изменение репутации для пользователя andrelo1
andrelo1Offline
Сообщение №1991
написано: 20 февраля 2016, 19:48
| Отредактировано: andrelo1 - 20 февраля 2016, 19:50
С продавцами проще, потому что ассортимент у них генерируется в тот момент когда ты спрашиваешь, что у них есть на продажу.
Продавцы берут вещи из текущих лвл листов... как это поможет если эти лвл листы нужно изменить. Myprism хочет изменить их содежание без постороних инструментов. То есть есть лвл лист в нем допустим только железная броня, а он туда хочет добавить кожаную и имперскую броню без всяких башед патчей. У продавцов уже предустановленый лвл лист и то что в нем они из него и берут, а нам нужны новые записи которых в них нет. Продавцы не изобретают велосипед все фиксировано. Единствено что влияет на появление предметов это уровень игрока и шанс появления предметов из этих лвл листов.
evTau, совершенно верно. Сейчас я добавляю туда татуировки и нижнее бельё. Есть и задача изменения уровневых списков персонажей. Т.е. левельных персонажей.
Изменение репутации для пользователя evTau
evTauOffline
Сообщение №1994
написано: 20 февраля 2016, 21:05
| Отредактировано: evTau - 20 февраля 2016, 21:19
evTau, совершенно верно. Сейчас я добавляю туда татуировки и нижнее бельё. Есть и задача изменения уровневых списков персонажей. Т.е. левельных персонажей.
Реализация через скрпиты точно есть, но мне кажется тут без skse не обошлось... И тут встает вопрос что лучше привязать к моду SKSE или создание bashed patch. 2 вариант куда проще и требует минимум усилий и от разработчика мода и от тех кто им пользуется, такова реальность либо так либо так. Вы ведь делаете мод для чистого скайрима и вам пофиг на постороние модификации (вы не должны подстраиватся под других, пусть другие подстраиваются под вас), если у вас есть любимчики которые вносят изменения в лвл листы вы можете делать для них патчи совместимости, а для всего остального пусть делают башед патч это не ваш геморой. Да и гемороем я бы это не назвал, это займет минуту времени. Вы посмотрите практически каждый 2 мод изменяющий глобально лвл листы требует, даже нет не требует, а рекомендует создание башед патча.
PS: Татухи у вас в моде по моему дофига весят, понятно что для качества и все такое, но если их массово раздавать нпс это плохо может кончится.
evTau, Большое спасибо! Я просто не пользовался Башем, а надо его изучить. Насчёт татуировок. Они (их текстуры) у меня имеют тот же размер, что и текстуры тел. В видеопамять подгружаются только те текстуры. которые нужны для рисования в данный момент. Причём, движок игры даже отслеживает, что игрок видит, а что нет. Так что, нагрузка на видеопамять даже не удваивается, так как, татуировки у меня имеют не все персонажи, а на персонажах в ванильной броне, она ещё и не показывается.
Изменение репутации для пользователя evTau
evTauOffline
Сообщение №1997
написано: 21 февраля 2016, 11:58
| Отредактировано: evTau - 21 февраля 2016, 12:01
Ищю пример скрипта который при первой встрече с НПС которого игрок еще не видел добавлял бы этим НПС предмет в инвентарь 1 раз и после этого забывал бы про этих НПС (не добавлял предмет 2 раз). НПС абсолютно все и мирные жители и бандиты и тд человекоподобные. Что то по типу мода где все НПС имеют имя незнакомец пока с ними не поговориш.
Суть такая хочу поставить реплейсер тела нагишом, но сделать скрипт который при первой встрече закидывал бы им в инвентарь труселя мужикам свои женщинам свои. На FNV есть такой мод, но я не видел его порта на Skyrim.
Надевать белье в момент активации не подойдет? Если игрок убьет кого-то одетого, а потом активирует, чтоб снять одежду, белье появится. Но если разденет каким-то другим способом (без активации), тогда не будет. Ну или можно сделать ауру вокруг игрока с большим радиусом. Я так и делал.
Надевать белье в момент активации не подойдет? Если игрок убьет кого-то одетого, а потом активирует, чтоб снять одежду, белье появится. Но если разденет каким-то другим способом (без активации), тогда не будет.
Нашёл изящный способ объединения уровневых списков. Обошёлся без скриптов, но опишу его здесь, так как именно здесь этот вопрос обсуждался. Надо не изменять имеющийся список, а создавать новый - список прокладку. Именно его подставлять где надо в игру. А уже в него в качестве составляющей части включить ванильный список. Другой составной частью моего нового списка составляют мои добавленные шмотки. Любой мод мог менять родной список и все изменения войдут в мой. Таким образом происходит объединение моих изменений с изменениями внесёнными ранее установленными модами.
Myprism, правда этот способ не будет работать для оутфитов, в которых не используются уровневые списки, или если другой мод удаляет уровневые списки из оутфитов, а также этим методом не получится разрешить конфликт более чем для двух модов.
Изменение репутации для пользователя evTau
evTauOffline
Сообщение №2003
написано: 22 февраля 2016, 19:40
| Отредактировано: evTau - 22 февраля 2016, 19:47
Myprism, правда этот способ не будет работать для оутфитов, в которых не используются уровневые списки, или если другой мод удаляет уровневые списки из оутфитов, а также этим методом не получится разрешить конфликт более чем для двух модов.
Мб у него новые оутфиты где он использует лвллисты и ему нужно было чтобы его новый сливался с ванильным без конфликтов и мог использовать вещи из других модов. Хотя нет слишком просто.
andrelo-1, 1. Да, проблему для Оутфитов я не решил. Решил только для уровневых списков. Проверил для уровневых списков персонажей. Я добавил фалмеров-женщин, а потом обнаружил, что Даунгард меняет те же списки добавляя туда своих продвинутых персонажей. Привязывать мод только из-за этого к Даунгарду мне не хотелось. Вот я и решил задачу таким образом. Проверил. Бегают у меня там и дамочки мои и фалмеры в даунгардовской одёжке. 2. У меня нет задачи связать несколько модов. Это головная боль пользователя, но не моя. Ко мне будут предъявлять претензии только если мой мод что-то у пользователя нарушит. Вот пользователь там у себя что-то настроил (скажем врай башем) или не настроил и выбросил, что не сумел настроить. У него всё работает. Мой мод не должен это нарушить. Значит, мне нужно обеспечить совместимость только с тем, что игрок там у себя создал. А у него там изменённые уровневые списки. Их вложенность и устройство меня не волнует. Кстати, преложенный мною способ может использоваться и для последовательной связи нескольких модов. Уровневые списки превращаются в матрёшку.
Изменение репутации для пользователя Myprism
MyprismOffline
Сообщение №2005
написано: 23 февраля 2016, 00:48
| Отредактировано: Myprism - 23 февраля 2016, 05:46
А теперь у меня вопрос именно по скриптам. Давно и успешно использую систему высокого каблука HDT High Heels. Она работает так. В папке Plagins SKSE кладётся специальная ДЛЛька. На сапоги вешается скриптом заклинание высокого каблука:
SPELL Property hdtHighHeelSpell Auto int Property SexFlag = 1 Auto; // 0 for male only, 1 for female only, 2 for both bool Property isUnequipped = false Auto hidden;
Всё это прекрасно работает на главном герое и на его спутницах. Но отказалось работать на уровневых персонажах. Т.е. одни и те же сапоги на уникальных - всё отлично, на не уникальных - не работают. В чём может быть дело? Возможно проблема в LeveledActorBase? Как исправить?
Изменение репутации для пользователя evTau
evTauOffline
Сообщение №2006
написано: 23 февраля 2016, 07:36
| Отредактировано: evTau - 23 февраля 2016, 07:44
evTau, 1. Такая обувь встречается в игре редко. Должна, по крайней мере. По тундре на каблуках не походишь. 2. В поле зрения всегда мало персонажей. Игра ведь рассчитана на возможность её запуска на консоли. Исключение - батальные сцены, а там высоких каблуков нет.
Изменение репутации для пользователя evTau
evTauOffline
Сообщение №2008
написано: 23 февраля 2016, 10:15
| Отредактировано: evTau - 23 февраля 2016, 10:17
Вообще я много тем встречал на зарубежных сайтах где пытались сделать что хотите вы. Не у кого так и не вышло. По крайней мере в тех темах которые я видел. По хорошему самому автору написать можно и спросить у него. Он вроде на нексусе появляется переодически.
Изменение репутации для пользователя andrelo-1
andrelo-1Offline
Сообщение №2009
написано: 23 февраля 2016, 11:49
| Отредактировано: andrelo-1 - 23 февраля 2016, 11:53
Myprism, вообще да, проблема может быть как раз akActor.GetBaseObject(), потому что для уровневых нпц эта функция, на сколько я помню, возвращает None. Надо использовать GetLeveledActorBase(), она работает для любых нпц. Кстати, уже есть система Equippable Transforms, которая позволяет реализовать High Heels без скриптов. Про нее можно на странице RaceMenu почитать.
andrelo-1, спасибо большое! GetLeveledActorBase() решило мою проблему. С RaceMenu буду разбираться позже, а пока у меня есть всё, что нужно, чтобы выложить первую версию нового мода.
Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)