Pimple03 Опубликовано 19 августа, 2021 Опубликовано 19 августа, 2021 19.08.2021 18:27:41, Капитан Немо сказал(-а):Действительно, зачем такие сложности. Создайте новую фракцию, пропишите этой фракции нужное вам отношение к фракции игрока, а затем включите в эту фракцию того NPS, которому хотите установить отношение. Задача была несколько иной. Например у NPC отношение к игроку 70 пунктов. Игрок ударил NPC, затем помирился с ним зажав блок + использовать. Отношение NPC уменьшилось до 50 пунктов. Позже, когда игрок переместился к клону того самого NPC, отношение клона к игроку так же изменилось до 50 пунктов.
Капитан Немо Опубликовано 19 августа, 2021 Опубликовано 19 августа, 2021 19.08.2021 19:23:43, Pimple03 сказал(-а): Задача была несколько иной. Например у NPC отношение к игроку 70 пунктов. Игрок ударил NPC, затем помирился с ним зажав блок + использовать. Отношение NPC уменьшилось до 50 пунктов. Позже, когда игрок переместился к клону того самого NPC, отношение клона к игроку так же изменилось до 50 пунктов. Сори. Невнимательно прочитал. Тогда действительно, только скриптом.
Takirell Опубликовано 19 августа, 2021 Опубликовано 19 августа, 2021 19.08.2021 17:52:47, Pimple03 сказал(-а): Как задать значение отношения (Disposition) NPC к игроку? У меня возникла необходимость перенести показатель Disposition от NPC к его клону. Но как оказалось команды SetDisposition (аналога SetActorValue) не существует. С помощью GetDisposition я могу сохранить текущий показатель (Disposition) в виде вещественной переменной. Но вот как присвоить это значение клону? Есть только ModDisposition, но она изменяет значение на конкретно указанную величину. А что мешает воспользоваться банальной математикой? Зачем целых 3 переменных то? Short sDisp Let sDisp := NPCRef.GetDisposition PlayerRef*-1 (получаем полный уровень расположения и умножаем на "-1", чтобы получить отрицательное значение) NPCRef.ModDisposition PlayerRef sDisp (таким образом делаем расположение к игроку в 0 единиц) NPCRef.ModDisposition 200 (улучшаем отношение к нам на 200 единиц или на любое другое число). 100 единиц - не предел, расположение может быть и 500 и 1000, я лично тестировал это как-то раз. Просто отображается всегда, как 100. Для постоянного поддержания конкретного уровня расположения, в своем [CCE] я использовал следующий блок: Short sDispLvL if (NPCRef.GetDisposition PlayerRef < 100) Let sDispLvL := 100 - NPCRef.GetDisposition PlayerRef if (sDispLvL > 0) NPCRef.ModDisposition PlayerRef sDispLvL Return Endif Endif Этот модуль позволял делать так, что все компаньоны, зарегистрированные в системе, постоянно хорошо относились к игроку, даже когда тот начинал их атаковать. Кстати, стоит еще знать такой момент - когда игрок расчехляет свою валыну, отношение всех актеров к ГГ, в довольно большом радиусе, ухудшается на 10 единиц. Причем не важно, НПС это будет или кричер. И не играет роли - видят они игрока или нет, это работает на уровне движка, игнорируя поле зрения, дистанцию, препятствия и уровень обнаружения. 2 Ничто не истинно, все потрачено
Pimple03 Опубликовано 20 августа, 2021 Опубликовано 20 августа, 2021 19.08.2021 20:58:22, Takirell сказал(-а):А что мешает воспользоваться банальной математикой? Может гуманитарный склад ума... Я в решении своей задачи додумался только до простого вычитания, а так чтоб умножать на минус... Может поэтому некоторые мои скрипты размером с простыню))) Спасибо за ответ! 2
piramis Опубликовано 26 августа, 2021 Опубликовано 26 августа, 2021 Вопрос к тем, кто занимался озвучкой, как сделать новые звуки для новой расы- возгласы при ударе и силовой атаке. Подставляю звуки дремор и скелетов, переименовывая в обычные generic_hit и generic_powerattack и ничего не звучит, раса остается немой. Хотя в самой игре дремора нормально звучат и файлы их озвучки (lip и mp3) вроде бы кардинально не отличаются от файлов для других рас. И в моде M.O.E.-Lichcraft наш персонаж вполне себе использует озвучку от скелета.
Bianor Опубликовано 27 августа, 2021 Опубликовано 27 августа, 2021 26.08.2021 23:30:24, piramis сказал(-а):Подставляю звуки дремор и скелетов Озвучку придётся цеплять через меню диалогов. Простым подставлением или переименованием файлов не обойдёшься, игра их не увидит и не поймёт. А закидывать озвучку через диалоги - это весьма, чрезвычайно головняковый процесс, который, как мне пока кажется, получается только случайно )
Takirell Опубликовано 27 августа, 2021 Опубликовано 27 августа, 2021 26.08.2021 23:30:24, piramis сказал(-а): Вопрос к тем, кто занимался озвучкой, как сделать новые звуки для новой расы- возгласы при ударе и силовой атаке. Подставляю звуки дремор и скелетов, переименовывая в обычные generic_hit и generic_powerattack и ничего не звучит, раса остается немой. Хотя в самой игре дремора нормально звучат и файлы их озвучки (lip и mp3) вроде бы кардинально не отличаются от файлов для других рас. И в моде M.O.E.-Lichcraft наш персонаж вполне себе использует озвучку от скелета. Это все специальные топики, которые находятся в квестах с ID "Generic". Там есть вкладки "Combat", "Misc" и так далее. Я уже не помню просто, можно посмотреть, как в оригинале сделано и создать на основе "ванили" свой собственный квест для конкретной расы (рас), залив туда диалоги. У самого руки никак не дойдут до этой темы. Ничто не истинно, все потрачено
piramis Опубликовано 27 августа, 2021 Опубликовано 27 августа, 2021 Вообщем махнул рукой и использовал для своей цели озвучку от модерской расы ксеноморфа, все отлично звучит и работает даже без lip-файлов. Так что определенно какая-то проблема там в этих mp3 есть, которая не дает использовать их напрямую, и видимо дело не в названии файла. Даже залез посмотреть их свойства, ничего там такого особенного не видно, но не воспроизводятся.
Pimple03 Опубликовано 27 августа, 2021 Опубликовано 27 августа, 2021 Как вставить имя игрока в виде текста в какой-нибудь документ или книгу? Или в TES4 такой возможности попросту нет?
Laion Опубликовано 28 августа, 2021 Опубликовано 28 августа, 2021 27.08.2021 18:15:58, Pimple03 сказал(-а): Как вставить имя игрока в виде текста в какой-нибудь документ или книгу? Или в TES4 такой возможности попросту нет? а в начале игры, император вроде спрашивал твое имя и потом повторил его. Было такое где-то в игре же...
Pimple03 Опубликовано 28 августа, 2021 Опубликовано 28 августа, 2021 28.08.2021 03:32:59, Laion сказал(-а):а в начале игры, император вроде спрашивал твое имя и потом повторил его. Император спрашивал знак рождения, а потом комментировал сделанный выбор. Имя игрока вроде как вообще нигде не фигурирует за всю игру. В том же Морровинде имя игрока можно было указать в тексте набрав %PCName, но в TES4 такое не прокатывает.
Takirell Опубликовано 28 августа, 2021 Опубликовано 28 августа, 2021 27.08.2021 18:15:58, Pimple03 сказал(-а): Как вставить имя игрока в виде текста в какой-нибудь документ или книгу? Или в TES4 такой возможности попросту нет? Есть такой мод, FormID Finder. Так вот там, вроде бы, используется скриптовое заполнение пустой записки через String_Var'ы. Стоит смотреть в ту сторону. 1 Ничто не истинно, все потрачено
piramis Опубликовано 7 сентября, 2021 Опубликовано 7 сентября, 2021 (изменено) Маленькое такое по поведению мобов- сделал новых личей, с новыми моделями, вроде все хорошо, но почему-то носят посохи за спиной, а не в руке. Все остальные анимации аналогичны дефолтным личам. А скажем, новый вариант привидения с косой вполне нормально носит ее в руке. Странной неожиданностью оказалось, что личи (существа, относящиеся к фракции личей) ненавидят друг друга, два лича, помещенные в тестовой локации начинают атаковать друг друга,а к находящимся рядом существам из фракции нежити относятся вполне нейтрально. В параметрах фракции указано, что личи ненавидят некромантов, видимо как конкурентов, и вампиров, а вот агрессия к своим собратьям выглядит весьма неочевидна, и где это указано даже неясно. Тем более, что фракция личей даже не является злой, если бы в нее входили не только существа, а НПСы, то за скрытное нападение можно было бы даже заработать штраф. Изменено 7 сентября, 2021 пользователем piramis
Takirell Опубликовано 7 сентября, 2021 Опубликовано 7 сентября, 2021 07.09.2021 15:07:50, piramis сказал(-а): Маленькое такое по поведению мобов- сделал новых личей, с новыми моделями, вроде все хорошо, но почему-то носят посохи за спиной, а не в руке. Все остальные анимации аналогичны дефолтным личам. А скажем, новый вариант привидения с косой вполне нормально носит ее в руке. Странной неожиданностью оказалось, что личи (существа, относящиеся к фракции личей) ненавидят друг друга, два лича, помещенные в тестовой локации начинают атаковать друг друга,а к находящимся рядом существам из фракции нежити относятся вполне нейтрально. В параметрах фракции указано, что личи ненавидят некромантов, видимо как конкурентов, и вампиров, а вот агрессия к своим собратьям выглядит весьма неочевидна, и где это указано даже неясно. Тем более, что фракция личей даже не является злой, если бы в нее входили не только существа, а НПСы, то за скрытное нападение можно было бы даже заработать штраф. Фракция дает только модификатор расположения на указанное кол-во единиц. Если агрессия актера больше, чем уровень его расположения к другому НПС смежной фракции, то первый НПС будет атаковать второго. Я, как правило, когда создаю новую фракцию, то для сопартийцев всегда ставлю расположение в 200 единиц, а у самих НПС - агрессию 100. Ибо даже если кто-то кого-то зацепит в бою (пусть и не раз), то актеры не начнут друг друга валить. Стоит еще помнить, что фракции пишутся в сейвы и чтобы их обновить, нужно загружаться на более раннее сохранение, где актеры еще не были заспавнены в мире. У меня лично была такая проблема и приходилось вовсе отключать плагин для обновления этих параметров. Не берусь утверждать, что так будет везде и у всех, но такую странность стоит учитывать. Никакого штрафа не будет, если был атакован априори агрессивный актер. На счет оружия у личей - ничего не могу сказать, как-то не встречался с таким дефектом. 1 Ничто не истинно, все потрачено
piramis Опубликовано 19 сентября, 2021 Опубликовано 19 сентября, 2021 (изменено) 21.03.2021 23:47:05, piramis сказал(-а):где в NIF файлах привязка/отвязка частей тела к расовой текстуре ? Сам нашел, за это отвечает подпись skin в свойствах текстуры. Чтобы изменить на привязку к любой другой обычной текстуре, нужно написать что угодно другое, например default. Изменено 19 сентября, 2021 пользователем piramis
EdMSL Опубликовано 16 октября, 2021 Опубликовано 16 октября, 2021 Есть ли возможность получить ссылку на дочерний объект? Есть функция получения ссылки на родителя (GetParentRef), а вот подобного для дочернего найти не могу.
Takirell Опубликовано 16 октября, 2021 Опубликовано 16 октября, 2021 16.10.2021 06:29:27, Ed101 сказал(-а): Есть ли возможность получить ссылку на дочерний объект? Есть функция получения ссылки на родителя (GetParentRef), а вот подобного для дочернего найти не могу. Поможет связка OBSE-функций "GetNumChildRefs" и "GetNthChildRef". Если дочерний объект один, то получит реф можно по типу: Ref rChild Let rChild := ObjectRef.GetNthChildRef 0 Где "0" - индекс первого такого объекта. Все дочерние объекты можно извлечь с помощью цикла while-loop. 1 Ничто не истинно, все потрачено
EdMSL Опубликовано 16 октября, 2021 Опубликовано 16 октября, 2021 16.10.2021 07:11:14, Takirell сказал(-а): Поможет связка OBSE-функций "GetNumChildRefs" и "GetNthChildRef". Если дочерний объект один, то получит реф можно по типу: Ref rChild Let rChild := ObjectRef.GetNthChildRef 0 Где "0" - индекс первого такого объекта. Все дочерние объекты можно извлечь с помощью цикла while-loop. Спасибо. Правда, я и сам уже нашел эту функцию. Странно, что в базовой игре такого важного функционала не завезли.
EdMSL Опубликовано 16 октября, 2021 Опубликовано 16 октября, 2021 Как вывести в консоль значение переменной? Я видел, что в консоль можно добавлять какие-либо сообщения. И, я так понимаю, другого способа дебажить код нет в игре?
Takirell Опубликовано 16 октября, 2021 Опубликовано 16 октября, 2021 16.10.2021 07:53:34, Ed101 сказал(-а): Как вывести в консоль значение переменной? Я видел, что в консоль можно добавлять какие-либо сообщения. И, я так понимаю, другого способа дебажить код нет в игре? Ну да, нет другого способа. Выводить значения переменных можно примерно вот так: PrintToConsole "Значение величины - %g" sValue Где "%g" - числовое значение, "%n" - имя объекта, "%i" - его RefID. В документации к OBSE есть еще несколько подобных кодировок для передачи величин в текстовые значения. Ну, а "sValue" - переменная, в конкретном случае типа Short или Float. 1 Ничто не истинно, все потрачено
EdMSL Опубликовано 16 октября, 2021 Опубликовано 16 октября, 2021 (изменено) Есть подсвечник и объект Light. Light является дочерним объектом для подсвечника (во вкладке Enable Parent указан объект подсвечника). На подсвечнике скрипт ref current ref children begin OnActivate set current to this; set children to current.GetNthChildRef 0; if ( IsActionRef Player ) if children.GetDisabled children.Enable current.AddFlames else current.Disable current.RemoveFlames endif endif end При активации гаснут свечи, но объект Light не отключается. Получается, я не могу таким образом управлять дочерними объектами, т.е. нельзя отключить дочерний объект, не отключив родителя? Изменено 16 октября, 2021 пользователем Ed101
Takirell Опубликовано 16 октября, 2021 Опубликовано 16 октября, 2021 16.10.2021 15:04:16, Ed101 сказал(-а):т.е. нельзя отключить дочерний объект, не отключив родителя? Все верно. Это - механика и тут ничего не сделаешь. Ничто не истинно, все потрачено
EdMSL Опубликовано 17 октября, 2021 Опубликовано 17 октября, 2021 (изменено) Есть какой-то способ хранить состояния копий объектов (рефов)? Я уже заметил, что если в скрипте, допустим, есть onLoad и onActivate, и если, допустим, в onLoad присвоить переменной short значение (5 например), то в onActive будет 0, дефолтное значение, т.е. значение переменной не хранится в копии объекта. Изменено 17 октября, 2021 пользователем Ed101
Takirell Опубликовано 17 октября, 2021 Опубликовано 17 октября, 2021 17.10.2021 06:40:02, Ed101 сказал(-а): Есть какой-то способ хранить состояния копий объектов (рефов)? Я уже заметил, что если в скрипте, допустим, есть onLoad и onActivate, и если, допустим, в onLoad присвоить переменной short значение (5 например), то в onActive будет 0, дефолтное значение, т.е. значение переменной не хранится в копии объекта. Ну, начнем с того, что на каждой копии базового объекта, скрипт выполняется отдельно. Естественно, что и значения переменных там тоже будут разные. Покажи свой скрипт. Ничто не истинно, все потрачено
EdMSL Опубликовано 17 октября, 2021 Опубликовано 17 октября, 2021 (изменено) 17.10.2021 07:48:27, Takirell сказал(-а):Покажи свой скрипт. short a begin OnLoad set a to 5; end begin OnActivate print $a; end Вот пример. Создаю новый объект-подсвечник. Вешаю скрипт на него, размещаю в ячейке. Активирую, и в консоли будет 0, а не 5. Вообще что я пытаюсь сделать. Есть подсвечники со светом. И для каждого подсвечника сделан отдельный скрипт на вкл.\откл. света. Я хотел сделать один универсальный. Но в итоге, свет нельзя отключить без родителя-подсвечника, состояния переменных объектов не сохраняются или я не понимаю чего-то. Изменено 17 октября, 2021 пользователем Ed101
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти