Здесь задавать вопросы по плагиностроению для Обливиона.
Тема по Обливиону. Тема по Морровинду тут.
Вопросы по плагиностроению
#3261
Отправлено
Сила - способность улыбаться © Белльмере-сан "One Piece"<img src="http://www.kolobok.u...zer/pirate.gif" border="0" class="linked-sig-image" />
#3262
Отправлено
Как вставить имя игрока в виде текста в какой-нибудь документ или книгу? Или в TES4 такой возможности попросту нет?
Есть такой мод, FormID Finder. Так вот там, вроде бы, используется скриптовое заполнение пустой записки через String_Var'ы. Стоит смотреть в ту сторону.
- Pimple03 это нравится
#3263
Отправлено
Маленькое такое по поведению мобов- сделал новых личей, с новыми моделями, вроде все хорошо, но почему-то носят посохи за спиной, а не в руке. Все остальные анимации аналогичны дефолтным личам. А скажем, новый вариант привидения с косой вполне нормально носит ее в руке.
Странной неожиданностью оказалось, что личи (существа, относящиеся к фракции личей) ненавидят друг друга, два лича, помещенные в тестовой локации начинают атаковать друг друга,а к находящимся рядом существам из фракции нежити относятся вполне нейтрально. В параметрах фракции указано, что личи ненавидят некромантов, видимо как конкурентов, и вампиров, а вот агрессия к своим собратьям выглядит весьма неочевидна, и где это указано даже неясно. Тем более, что фракция личей даже не является злой, если бы в нее входили не только существа, а НПСы, то за скрытное нападение можно было бы даже заработать штраф.
Сообщение отредактировал piramis: 07 сентября 2021 - 16:24
#3264
Отправлено
Маленькое такое по поведению мобов- сделал новых личей, с новыми моделями, вроде все хорошо, но почему-то носят посохи за спиной, а не в руке. Все остальные анимации аналогичны дефолтным личам. А скажем, новый вариант привидения с косой вполне нормально носит ее в руке.
Странной неожиданностью оказалось, что личи (существа, относящиеся к фракции личей) ненавидят друг друга, два лича, помещенные в тестовой локации начинают атаковать друг друга,а к находящимся рядом существам из фракции нежити относятся вполне нейтрально. В параметрах фракции указано, что личи ненавидят некромантов, видимо как конкурентов, и вампиров, а вот агрессия к своим собратьям выглядит весьма неочевидна, и где это указано даже неясно. Тем более, что фракция личей даже не является злой, если бы в нее входили не только существа, а НПСы, то за скрытное нападение можно было бы даже заработать штраф.
Фракция дает только модификатор расположения на указанное кол-во единиц. Если агрессия актера больше, чем уровень его расположения к другому НПС смежной фракции, то первый НПС будет атаковать второго.
Я, как правило, когда создаю новую фракцию, то для сопартийцев всегда ставлю расположение в 200 единиц, а у самих НПС - агрессию 100. Ибо даже если кто-то кого-то зацепит в бою (пусть и не раз), то актеры не начнут друг друга валить.
Стоит еще помнить, что фракции пишутся в сейвы и чтобы их обновить, нужно загружаться на более раннее сохранение, где актеры еще не были заспавнены в мире. У меня лично была такая проблема и приходилось вовсе отключать плагин для обновления этих параметров. Не берусь утверждать, что так будет везде и у всех, но такую странность стоит учитывать.
Никакого штрафа не будет, если был атакован априори агрессивный актер.
На счет оружия у личей - ничего не могу сказать, как-то не встречался с таким дефектом.
- piramis это нравится
#3265
Отправлено
где в NIF файлах привязка/отвязка частей тела к расовой текстуре ?
Сам нашел, за это отвечает подпись skin в свойствах текстуры. Чтобы изменить на привязку к любой другой обычной текстуре, нужно написать что угодно другое, например default.
Сообщение отредактировал piramis: 19 сентября 2021 - 21:55
#3267
Отправлено
Есть ли возможность получить ссылку на дочерний объект? Есть функция получения ссылки на родителя (GetParentRef), а вот подобного для дочернего найти не могу.
Поможет связка OBSE-функций "GetNumChildRefs" и "GetNthChildRef". Если дочерний объект один, то получит реф можно по типу:
Ref rChild Let rChild := ObjectRef.GetNthChildRef 0
Где "0" - индекс первого такого объекта. Все дочерние объекты можно извлечь с помощью цикла while-loop.
- EdMSL это нравится
#3268
Отправлено
Поможет связка OBSE-функций "GetNumChildRefs" и "GetNthChildRef". Если дочерний объект один, то получит реф можно по типу:
Ref rChild Let rChild := ObjectRef.GetNthChildRef 0Где "0" - индекс первого такого объекта. Все дочерние объекты можно извлечь с помощью цикла while-loop.
Спасибо. Правда, я и сам уже нашел эту функцию. Странно, что в базовой игре такого важного функционала не завезли.
#3270
Отправлено
Как вывести в консоль значение переменной? Я видел, что в консоль можно добавлять какие-либо сообщения.
И, я так понимаю, другого способа дебажить код нет в игре?
Ну да, нет другого способа.
Выводить значения переменных можно примерно вот так:
PrintToConsole "Значение величины - %g" sValue
Где "%g" - числовое значение, "%n" - имя объекта, "%i" - его RefID. В документации к OBSE есть еще несколько подобных кодировок для передачи величин в текстовые значения. Ну, а "sValue" - переменная, в конкретном случае типа Short или Float.
- EdMSL это нравится
#3271
Отправлено
Есть подсвечник и объект 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 не отключается. Получается, я не могу таким образом управлять дочерними объектами, т.е. нельзя отключить дочерний объект, не отключив родителя?
Сообщение отредактировал Ed101: 16 октября 2021 - 16:17
#3273
Отправлено
Есть какой-то способ хранить состояния копий объектов (рефов)? Я уже заметил, что если в скрипте, допустим, есть onLoad и onActivate, и если, допустим, в onLoad присвоить переменной short значение (5 например), то в onActive будет 0, дефолтное значение, т.е. значение переменной не хранится в копии объекта.
Сообщение отредактировал Ed101: 17 октября 2021 - 07:40
#3274
Отправлено
Есть какой-то способ хранить состояния копий объектов (рефов)? Я уже заметил, что если в скрипте, допустим, есть onLoad и onActivate, и если, допустим, в onLoad присвоить переменной short значение (5 например), то в onActive будет 0, дефолтное значение, т.е. значение переменной не хранится в копии объекта.
Ну, начнем с того, что на каждой копии базового объекта, скрипт выполняется отдельно. Естественно, что и значения переменных там тоже будут разные.
Покажи свой скрипт.
#3275
Отправлено
Покажи свой скрипт.
short a begin OnLoad set a to 5; end begin OnActivate print $a; end
Вот пример. Создаю новый объект-подсвечник. Вешаю скрипт на него, размещаю в ячейке. Активирую, и в консоли будет 0, а не 5.
Вообще что я пытаюсь сделать. Есть подсвечники со светом. И для каждого подсвечника сделан отдельный скрипт на вкл.\откл. света. Я хотел сделать один универсальный. Но в итоге, свет нельзя отключить без родителя-подсвечника, состояния переменных объектов не сохраняются или я не понимаю чего-то.
Сообщение отредактировал Ed101: 17 октября 2021 - 09:03
#3276
Отправлено
Вот пример. Создаю новый объект-подсвечник. Вешаю скрипт на него, размещаю в ячейке. Активирую, и в консоли будет 0, а не 5.
Задан неверный формат. Попробуй дебажить так: PrintToConsole "Значение - %g" a. Скорее всего, там все ок с назначением переменных, просто консоль не то значение выводится.
Сам по себе блок OnLoad срабатывает отлично в случае, если ты через PlaceAtMe размещаешь объект или же сам объект, на котором висит скрипт, впервые загружается в ячейке. Важно, чтобы тебя в ней не было на момент его появления там. Данный блок не всегда работает так, как хочется.
Как инициализатор, можно использовать условие-ограничитель типа:
Short sLoad Begin GameMode if (sLoad == 0) Let sLoad := 5 Return Endif End Begin OnActivate PrintToConsole "Значение - %g" sLoad End
#3277
Отправлено
Ed101, дружище, а мы с тобой по другому можем сделать) Раз нельзя отключить дочерний источник света без отключения родителя, его ведь всегда можно перенести за пределы ячейки с помощью SetPos и обновить его координаты через Update3D)
А есть еще один вариант - с помощью OBSE-функций управлять самим источником света, в нужный момент загоняя радиус свечения в 0, что должно полностью его отключить. Но тут есть несколько проблем, одна из которых - отсутствие сохранения внесенных изменений в сейв игры, как и возврат в исходное. Это еще +геморрой и лишний код.
#3278
Отправлено
Ed101, дружище, а мы с тобой по другому можем сделать) Раз нельзя отключить дочерний источник света без отключения родителя, его ведь всегда можно перенести за пределы ячейки с помощью SetPos и обновить его координаты через Update3D)
А есть еще один вариант - с помощью OBSE-функций управлять самим источником света, в нужный момент загоняя радиус свечения в 0, что должно полностью его отключить. Но тут есть несколько проблем, одна из которых - отсутствие сохранения внесенных изменений в сейв игры, как и возврат в исходное. Это еще +геморрой и лишний код.
Ты предлагаешь убирать его в -30000 по оси Z, например?
Кстати да, с сейвами беда. Я не знаю всех данных, что хранятся в сейве. Enabled/Disabled точно есть.
Сообщение отредактировал Ed101: 17 октября 2021 - 09:47
#3280
Отправлено
Кстати да, с сейвами беда. Я не знаю всех данных, что хранятся в сейве. Enabled/Disabled точно есть.
Практически все, что могут менять OBSE-функции (имена, пути к моделям\текстурам, какие-то параметры освещения\погоды\рас, шейдера и так далее) - все это не хранится в сейвах и требует возвращения значений на исходные. НО! Это не применимо к новым базовым объектам, созданных функцией CloneForm. Ну и CreateFullActorCopy. Иными словами, в редакторе и в плагинах нет объектов, созданных скриптом, они существуют только в сохранениях, как динамические объекты. Следовательно - игре просто неоткуда взять какие-то исходные параметры объекта из того же мастер-файла, т.к объекта в нем просто нет.
Но тут стоит понимать, что если установлен плагин EngineBugFixes, то все объекты, созданные функцией CloneForm будут удалены в случае, если они не задействованы (не находятся в мире\контейнере\инвентаре игрока\или не используются в данный момент где-либо).
#3281
Отправлено
Как вариант. И возвращать на исходные координаты, когда это необходимо. Проверить стоит, дело может выгореть)
Ну что, работает твой вариант. Сразу видно опытного скриптера) Мне в Unity так изощраться не приходилось.
ref current; ref children; begin onLoad set current to this; set children to current.GetNthChildRef 0; if (children.GetPos z <= -3000) current.RemoveFlames else current.AddFlames; endif children.Update3D; end begin OnActivate set current to this; set children to current.GetNthChildRef 0; if (children.GetPos z <= -3000) current.AddFlames; children.setPos z, -90; else current.RemoveFlames; children.setPos z, -30000; endif children.Update3D; end
Темы с аналогичным тегами как создать торговца, oblivion cs торговец, cs как создать торговца, oblivion, моделирование
Моддинг →
Моддинг Oblivion →
Какие файлы в моде отвечают за изменение лиц и заставку в меню игры Oblivion?Автор AlexisUmbra, 06 апр 2024 oblivion, tes 4, tes 4 oblivion и 5 еще... |
|
|||
The Elder Scrolls →
Oblivion →
Моды Oblivion →
Каковы правила загрузки модов на сайт?Автор AlexisUmbra, 04 мар 2024 моды, обливион, tes и 2 еще... |
|
|||
The Elder Scrolls →
Oblivion →
Моды Oblivion →
Где можно заказать сборку?Автор KiritoSwords, 03 апр 2023 сборка на заказ и 2 еще... |
|
|||
The Elder Scrolls →
Oblivion →
Обсуждение Oblivion →
Чемпион Сиродила между TES4 и TES5Автор PavelIks, 26 янв 2022 oblivion, tes и 1 еще... |
|
|||
The Elder Scrolls →
Oblivion →
Обсуждение Oblivion →
ШРИФТЫ ИЗ ИГРЫАвтор ALexid, 20 дек 2021 шрифт, oblivion |
|
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 скрытых