Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

Почтеннейшие!
Не откажите в помощи желающему научиться!
Задался целью "отвязать" уровень стражников от уровня ГГ, выставить стражникам фиксированный уровень (скажем, 30 или 35).
Почитал учебники, открыл конструктор, выбрал в списке NPC стражника для экспериментов, убрал галочку "offset", установил уровень 30, сохранил (как мод).
Подключил, запустил игру, смотрю, что получилось. Уровень стражника - +10 к уровню ГГ.
Подумал, что, возможно, не тот стражник. Взял NPC с именем (Клод Марик). То же самое: открыл в конструкторе, снял "offset", сменил уровень, проверяю... +2 к уровню ГГ (как было изначально).
В общем, выяснилось, что любые изменения над NPC, у которых есть "offset", не срабатывают. Если "offset"-а нет - все нормально: тому же Рано спокойно удалось сменить уровень с 10 на 30.
В чем тут дело? Что-то не так делаю?
 

Опубликовано

@jpsmith, насколько я помню, уровень неписей ловит клин, если актер уже был размещен в мире и игрок посещал ячейку, где НПС обитает. Оно нормально не обновляется вот так сразу, нужно ждать респауна. У меня были похожие трудности с системой лвл-апа для Лилит, когда я отменил у нее рост вслед за игроком, а прописал свою систему прокачки. Тут может помочь функция SetLevel, но с ней нужно немного помудрить, дабы все верно установилось. Я давно уже этой темой не занимался, точно сказать не смогу.

Ничто не истинно, все потрачено

Опубликовано (изменено)
06.05.2022 10:26:22, Takirell сказал(-а):

@jpsmith, насколько я помню, уровень неписей ловит клин, если актер уже был размещен в мире и игрок посещал ячейку, где НПС обитает. Оно нормально не обновляется вот так сразу, нужно ждать респауна. У меня были похожие трудности с системой лвл-апа для Лилит, когда я отменил у нее рост вслед за игроком, а прописал свою систему прокачки. Тут может помочь функция SetLevel, но с ней нужно немного помудрить, дабы все верно установилось. Я давно уже этой темой не занимался, точно сказать не смогу.

Я уже пару дней экспериментирую с этим делом. Гугл до дыр зачитал (очень трудно сформулировать критерии поиска). Спрашивал умных людей (которых удалось найти).
Это я к тому, что размещение в мире, респаун и все прочее - проверено. Никакого эффекта!
Был совет "resurrect"-нуть того NPC, которому нужно изменить уровень. Делаю. Он остается таким, как прописан в oblivion.esm: с "offset"-ом от уровня ГГ.
Так что подозреваю, дело именно в "offset"-е. Потому что уровень NPC без "offset"-а меняется без всяких заморочек.

p.s. Решил попробовать, как сработает SetLevel. Отловил NPC (с "offset"-ом), применяю SetLevel 35. Был 16 уровень (+10 к 6 уровню ГГ), стал 41.
При том, что в описании функции вообще-то сказано, что применение ее с одним параметром устанавливает абсолютный уровень на величину параметра (SetLevel 10: устанавливает абсолютный уровень вызывающего актера на 10).

Изменено пользователем jpsmith
Опубликовано

@jpsmith, раз через конструктор не поддается, пробуйте менять сперва через консоль, используя SetLevel. У этой функции есть опция отмены Offset'а, она должна работать нормально. Походу, порядок загрузки тоже играет роль, раз игра все равно берет значения из мастер-файла, игнорируя внесенные Вами изменения. 

Ничто не истинно, все потрачено

Опубликовано (изменено)
06.05.2022 10:51:58, Takirell сказал(-а):

@jpsmith, раз через конструктор не поддается, пробуйте менять сперва через консоль, используя SetLevel. У этой функции есть опция отмены Offset'а, она должна работать нормально. Походу, порядок загрузки тоже играет роль, раз игра все равно берет значения из мастер-файла, игнорируя внесенные Вами изменения. 

Сдаться? Это точно невозможно сделать? Или просто я слишком мало знаю еще о том, как в конструкторе все работает? Не может быть так, что где-то надо галочку снять/поставить, чтобы все заработало нормально?
Функции мне, как я пока себе вижу, помогут мало.
Задача стоит так, что нужно "фирменным" стражникам (из oblivion.esm) сделать именно абсолютный уровень, "отвязать" от уровня ГГ. Как мне в этом функции помогут? Вылавливать их после спауна? Каждого в отдельности?
Навскидку казалось, что самое что ни на есть простое редактирование мастер-файла решит задачу.
Порядок тоже всячески испробован. Мод с редактированием стражника стоит последним в списке. Собственно, я даже убирал вообще все моды, которые были, оставляя только этот один.

Изменено пользователем jpsmith
Опубликовано

@jpsmith, ну, почему сразу сдаться?
В Обле не всегда простые задумки легко реализовать и зачастую бывают немыслимые сложности там, где их, по логике, быть и не должно вовсе.
Вашу задумку можно реализовать и через скрипты, причем тут есть несколько вариантов, которые нужно пробовать. Возможно даже не придется никак менять ванильных стражников, а просто создать сканер НПС через спелл, который будет кастоваться активатором над головой у игрока, в радиусе 2048 юнитов. Спелл будет иметь ряд условий на проверку актера и если они соответствуют заданным, можно менять уровень на статичный через SetLevel, убирая этой же функцией Offset. Внесенные изменения сохраняются с сейвах игры, так что все должно сработать. Причем, уровень можно будет ставить действительно рандомный в определенном интервале от 30 до 35, используя функцию Rand. Иными словами, выход есть, просто пробовать нужно.

Ничто не истинно, все потрачено

Опубликовано
06.05.2022 11:18:58, Takirell сказал(-а):

@jpsmith, ну, почему сразу сдаться?
В Обле не всегда простые задумки легко реализовать и зачастую бывают немыслимые сложности там, где их, по логике, быть и не должно вовсе.
Вашу задумку можно реализовать и через скрипты, причем тут есть несколько вариантов, которые нужно пробовать. Возможно даже не придется никак менять ванильных стражников, а просто создать сканер НПС через спелл, который будет кастоваться активатором над головой у игрока, в радиусе 2048 юнитов. Спелл будет иметь ряд условий на проверку актера и если они соответствуют заданным, можно менять уровень на статичный через SetLevel, убирая этой же функцией Offset. Внесенные изменения сохраняются с сейвах игры, так что все должно сработать. Причем, уровень можно будет ставить действительно рандомный в определенном интервале от 30 до 35, используя функцию Rand. Иными словами, выход есть, просто пробовать нужно.

Наверное, правильнее было бы написать, зачем мне изменение уровня стражника.
Есть мод, который вроде как убирает авто-левелинг. Из-за чего стражники, скажем, 13 (+10 к 3-му уровню ГГ) могут встретить сприганна, пуму или медведя (а то и двух). Каждый из которых этого стражника разматывает, не напрягаясь.
Автор мода, похоже, на него забил.
С одним приятелем думали, как бы нам обустроить Рос... Сиродил.
Идея номер раз: вместо одного стражника сделать патруль из двоих. Идея с треском провалилась, когда прикинули, чего это будет стоить.
Идея номер два: дать стражнику зелья лечения и научить их использовать, если количество НР сильно упало. Аналогично: надо раздать зелья, надо научить их использовать, надо наделать скриптов, чтобы проверяли, есть ли зелья, ибо - вылеты и краши... И - то же, что и выше: зелья-то надо положить в инвентарь "фирменных" стражников!
Идея номер три: то, о чем спрашиваю. Казалось самой простой: всего-то делов - поправить уровень! И - на тебе!

Опубликовано

@jpsmith, идея номер 4 - выдать им скриптовые абилки, которые повышают 2 параметра: AttackBonus и DefendBonus. Они нигде не задокументированы, но реально работают и имеют эффект.
В общем, лично я бы заморочился со сканнером.

Ничто не истинно, все потрачено

Опубликовано
06.05.2022 11:34:10, Takirell сказал(-а):

@jpsmith, идея номер 4 - выдать им скриптовые абилки, которые повышают 2 параметра: AttackBonus и DefendBonus. Они нигде не задокументированы, но реально работают и имеют эффект.
В общем, лично я бы заморочился со сканнером.

Хорошо, когда есть багаж знаний, с которым можно заморачиваться. Не мой случай (хотелось бы думать, что "пока").

Так вот, по теме: если начать новую игру, то изменения к "offset"-ным NPC применяются! Сделал Клоду Марику 30 уровень, сохранил как мод, начал новую игру - бинго! У Клода Марика 30 уровень!
Вопрос, стало быть, несколько трансформируется: можно ли как-то обойти это извращение (получить изменения в существующей игре)? Я уже больше 100 часов наиграл. Теперь все заново?
 

Опубликовано
06.05.2022 14:43:47, jpsmith сказал(-а):
Хорошо, когда есть багаж знаний

Я сейчас сам набросал себе тут скрипт, который бы менял уровень у стражников, но, по какой-то причине, после введения функции SetLevel, у меня игра вываливается на рабочий стол. В чем причина - я хз, посему проверить работоспособность не получится.

 

06.05.2022 14:43:47, jpsmith сказал(-а):
если начать новую игру, то изменения к "offset"-ным NPC применяются!

По идеи, раз стража респавнится, то изменения должны в любом случае вступить в силу. Правда ждать придется 30 игровых дней, находясь в интерьере где-нибудь далеко. С фракциями, кстати, такая же история. Если они были добавлены через редактор, то не применяются здесь и сейчас. Нужно либо вообще отключать мод, делать сейв и снова включать, либо фракцию прописывать скриптом.

Ничто не истинно, все потрачено

Опубликовано
06.05.2022 14:43:47, jpsmith сказал(-а):
Так вот, по теме: если начать новую игру, то изменения к "offset"-ным NPC применяются!

Хотел написать раньше но не получалось...
Так вот, по теме, есть такое понятие "Память сейва", - а это значит: какие бы изменения вы не производили, и какие бы приоритеты (в порядке загрузки модов) не задавали, то что прописано в сейве имеет наивысший приоритет.
Возможно и есть какое нибудь решение (типа подождать 30 дней, этот мод вам в помощь https://tesall.ru/files/modi-dlya-oblivion/prochee/10895-bistroe-ozhidanie чтобы быстро проверить), в частности как решить вашу проблему, я не знаю (не было повода), но в других случаях (связанных к примеру с размещением объектов) это удалось с помощью одноразовых скриптов.
пс. ведь не просто так в аннотации к некоторым модам указано "Обязательно начало новой игры".... (на это есть причины)
 

 

Опубликовано
06.05.2022 14:58:29, Takirell сказал(-а):

Я сейчас сам набросал себе тут скрипт, который бы менял уровень у стражников, но, по какой-то причине, после введения функции SetLevel, у меня игра вываливается на рабочий стол. В чем причина - я хз, посему проверить работоспособность не получится.

 

По идеи, раз стража респавнится, то изменения должны в любом случае вступить в силу. Правда ждать придется 30 игровых дней, находясь в интерьере где-нибудь далеко. С фракциями, кстати, такая же история. Если они были добавлены через редактор, то не применяются здесь и сейчас. Нужно либо вообще отключать мод, делать сейв и снова включать, либо фракцию прописывать скриптом.

По SetLevel-у: "меня терзают смутные сомненья": если применить SetLevel из консоли, уровень изменяется на "offset-ную величину, а не становится таким, как значение аргумента.
Что лично меня настораживает: что будет после повышения уровня ГГ? Не придется ли этот SetLevel делать каждый раз после этого повышения?

По респауну: аналогичные сомнения! Ressurect разве не должен помочь?
Как бы там ни было: трюк с 30 днями не помогает. Прождал я (в интерьере!) аж 33 дня. Уровень у стражника не изменился (+10 к уровню ГГ).

Опубликовано (изменено)
06.05.2022 15:31:21, allexa сказал(-а):

Так вот, по теме, есть такое понятие "Память сейва", - а это значит: какие бы изменения вы не производили, и какие бы приоритеты (в порядке загрузки модов) не задавали, то что прописано в сейве имеет наивысший приоритет.

Возможно и есть какое нибудь решение (типа подождать 30 дней, этот мод вам в помощь https://tesall.ru/files/modi-dlya-oblivion/prochee/10895-bistroe-ozhidanie чтобы быстро проверить), в частности как решить вашу проблему, я не знаю (не было повода), но в других случаях (связанных к примеру с размещением объектов) это удалось с помощью одноразовых скриптов.
пс. ведь не просто так в аннотации к некоторым модам указано "Обязательно начало новой игры".... (на это есть причины)
 

1. Ни разу не встречал моды, у которых было бы требование "Обязательно начало новой игры" (моды к Обливиону, конечно). Реально такие есть?!
2. "30 дней" уже попробовал. Никакой реакции. Не помогло.
3. Насчет "памяти сейва" - туманно как-то, нет? Не, я читал, что есть хитрые методики удаления некоторых модов (типа "сохрани -> выключи и удали мод - снова сохрани -> 7 раз ударь в барабан"), но - опять-таки - ни разу не случалось такого делать. Если содержимое сейва столь приоритетно, куча модов просто-напросто не смогут нормально работать, как мне кажется. Нет?
Надо ли понимать так, что при выходе ГГ из канализации игра ВСЕМ NPC прописала нужные статы/параметры? (И ладно бы "на выходе из канализации"! Она, похоже, всем всё прописывает, даже если сохраниться еще в камере до прихода Императора!).
И черт с ней, со всей этой теорией. Не может быть так, чтобы не было какого-то способа симулировать начало новой игры.

Изменено пользователем jpsmith
Опубликовано
06.05.2022 15:33:51, jpsmith сказал(-а):
По SetLevel-у

"SetLevel 30, 0" - вот так должно быть и нужно вводить. Флаг 0 обязателен, чтобы отключить Offset.

 

06.05.2022 15:33:51, jpsmith сказал(-а):
Как бы там ни было: трюк с 30 днями не помогает.

Тогда я иссяк, поскольку уже писал выше, что заморачивался скриптами больше и все мои НПС, которые я создавал с уровнями, изначально были уникальными и с отключенным Offset'ом.

Ничто не истинно, все потрачено

Опубликовано
06.05.2022 15:43:18, Takirell сказал(-а):

"SetLevel 30, 0" - вот так должно быть и нужно вводить. Флаг 0 обязателен, чтобы отключить Offset.

Всяко вводил. Почитал описание функции, так что вводил и просто число, и с 0 через запятую - работает одинаково. "Offset"!

Опубликовано
06.05.2022 15:45:50, jpsmith сказал(-а):

Всяко вводил. Почитал описание функции, так что вводил и просто число, и с 0 через запятую - работает одинаково. "Offset"!

Ну ок, тогда сначала попробуйте ввести SetPCLevelOffset 0, а затем уже просто SetLevel 30, 0.

Ничто не истинно, все потрачено

Опубликовано
06.05.2022 15:47:28, Takirell сказал(-а):

Ну ок, тогда сначала попробуйте ввести SetPCLevelOffset 0, а затем уже просто SetLevel 30, 0.

Хоть что-то! Если так вводить - срабатывает! Можно любой уровень выставить. Запишу себе в книжечку, может, пригодится когда-нибудь.

Опубликовано
06.05.2022 15:52:19, jpsmith сказал(-а):

Хоть что-то! Если так вводить - срабатывает! Можно любой уровень выставить. Запишу себе в книжечку, может, пригодится когда-нибудь.

Ага, т.е таким образом оно работает?
Сделайте сейв, выйдите из игры и снова зайдите. Потом проверьте уровень НПС.

Ничто не истинно, все потрачено

Опубликовано
06.05.2022 15:53:23, Takirell сказал(-а):

Ага, т.е таким образом оно работает?
Сделайте сейв, выйдите из игры и снова зайдите. Потом проверьте уровень НПС.

Таким образом работает. И - да: если сделать сейв, выйти и зайти заново, уровень сохраняется.
Скажу больше: если теперь изменить уровень у ГГ, то у этого моба он остается тем, который был введен командой.
Это что же получается?
Узнаю RefID-ы всех, кому хочу поменять уровень, делаю квест/скрипты - и готово?!

Опубликовано
06.05.2022 16:16:40, jpsmith сказал(-а):
Узнаю RefID-ы всех, кому хочу поменять уровень, делаю квест/скрипты - и готово?!

Ну, вообще, я уже сделал отдельный esp, в котором есть сканер, который чекает всех актеров в радиусе 2048 юнитов и если непись - стражник, меняет его уровень на любой в интервале с 30 по 35-й. Просто у меня SetLevel выбивает игру почему-то.
А так - да, по сути, это является решением Вашей проблемы.

Ничто не истинно, все потрачено

Опубликовано
06.05.2022 16:19:57, Takirell сказал(-а):

Ну, вообще, я уже сделал отдельный esp, в котором есть сканер, который чекает всех актеров в радиусе 2048 юнитов и если непись - стражник, меняет его уровень на любой в интервале с 30 по 35-й. Просто у меня SetLevel выбивает игру почему-то.
А так - да, по сути, это является решением Вашей проблемы.

:good:  Попробую понадеяться, что, возможно, дорасту когда-нибудь до того, чтобы самому такие "сканеры" делать.
Как бы там ни было - спасибо! Хоть что-то (вроде как) удалось!
Не желаете еще заморочку?
Насколько сложно реализовать в игре уязвимость/сопротивление определенному типу оружия?
Пример: скелет: должен иметь сопротивление колющему урону (стрелы) и уязвимость к дробящему.

Опубликовано
06.05.2022 16:25:45, jpsmith сказал(-а):
Как бы там ни было - спасибо! Хоть что-то (вроде как) удалось!

В общем, я родил данный плагин, можете разобрать его и проверить работу. Принцип очень прост, я его уже выше описывал. В спеллах найдите заклинание сканера и гляньте скрипт, все должно быть понятно.
Просто я не могу его толком проверить, почему-то игра вылетает при использовании команды SetLevel. Кстати, работает оно с OBSE, если что. Без него не будет.

NoLeveledGuards.7z

  • Нравится 1

Ничто не истинно, все потрачено

Опубликовано
06.05.2022 16:25:45, jpsmith сказал(-а):
Насколько сложно реализовать в игре уязвимость/сопротивление определенному типу оружия?

Не слишком сложно, но придется помуздыкаться. Поможет в этом Event-Handler типа "OnHealthDamage", который будет фиксировать урон до того, как тот будет применен на актера. Крутая штука, но в ней есть некоторые тонкости - придется подумать над условиями его срабатывания, к примеру: проверка на текущую анимацию атакующего, наличие оружие в руке и его тип. Ну, в целом, реализовать можно.

  • Нравится 1

Ничто не истинно, все потрачено

Опубликовано
07.05.2022 08:00:31, Takirell сказал(-а):

Не слишком сложно, но придется помуздыкаться. Поможет в этом Event-Handler типа "OnHealthDamage", который будет фиксировать урон до того, как тот будет применен на актера. Крутая штука, но в ней есть некоторые тонкости - придется подумать над условиями его срабатывания, к примеру: проверка на текущую анимацию атакующего, наличие оружие в руке и его тип. Ну, в целом, реализовать можно.

За плагин - еще больше спасибо! Просидел вчера много времени, отловил с десяток стражников, переписал им уровни... Комсомол подкрался, откуда не ждали!

Теперь один стражник нормально может замахать 5-6 пум (если их не больше 2, конечно), 2 или даже 3 сприганнов. НО! После этих 5 пум у него вся броня в труху. И здоровья, понятное дело, чуть.
И если со здоровьем можно что-то придумать даже с моим знаниями (была идея накинуть на них что-то типа регенерации ужасных зомби), то вот что делать с броней...
Снова придется читать Интернеты, много думать...

А со скелетами... В процессе чтения нашел презабавнейшую функцию: OnHitWith. Не знаю, как с дробящим, но со стрелами - милое дело: OnHitWith Arrow1Iron - урон "железной" стрелой.
Конечно, остаются еще всяческие стрелы с зачарованиями...
Так вот: получается, поймать, что по скелету попали стрелой - нефиг делать. Но вот как уменьшить величину урона? В процентах от того, который нанесен?
Придется разбираться, что за "OnHealthDamage" такое.

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...