×
Меню
Индекс

NiStringExtraData примечания

 
Для КФ файлов, СтрингЭкстра используется немного свободнее.
Здесь, StringExtraData содержит имена объектов  которым был назначен КейФреймКонтроллер.
Это используется в качестве командной строки, связывающий контроллер с целевым объектом.
Кол-во названий фактически не ограничено. Т.е. принимаются любые названия объектов, поскольку используются локально для создания анимации существа, или предмета.
Т.е. как объект был назван в 3д МАХе, такое значение стринга и будет.
На скриншоте, StringExtra связывает Bip01 L Finger01 с первым КейФреймКонтроллером в списке.
Таким образом, КФ файл контролирует анимации в НИФ и Хниф файлах.
 
Примечание.
Обращайте внимание!
Если объект идет со свойствами NC NCO или NCC - то в игре не будет работать детектирование коллизий!
Т.е. скриптовые команды GetStandingActor(РС) , HurtCollingActor(РС) и пр. использующие детектирование коллизий как тригер - срабатывать не будут.
 
Примечание для создания Маркеров.
ОЧЕНЬ ВАЖНО! Чтобы имена шейпов объекта имели префикс "Tri"!
Если префикса нет - то в игре ничего работать не будет.
niTriShape -> Tri EditorMarker правильно.
niTriShape -> EditorMarker не правильно.
 
Примечание.
Новейшие исследования показали возможность и перспективность использования CollisionSwitch объекта, вместо добавления экстрадаты NC (NCC NCO).
Т.е. во многих случаях, можно использовать конвертацию типа ноды вместо добавления StringExtraData.
Однако, МАХ не умеет создавать такой тип ноды.
 
Примечание.
NiStringExtraData работает только если прописана в свойствах корневой ноды на весь файл.
Однако есть исключения:
"key per frame" - применяется на кость Bip01 у существ. Что сообщает - не определено.
"sgoKeep" - применяется на любую ноду которой требуется сообщить эти свойства.
 
Примечание.
ТесЭксортер создает префикс "TRI" автоматически (для всех шейпов в любых объекта), но если свойства добавляются в Нифскопе для моделей созданных другими модулями, префикс  "TRI"  необходимо задать вручную.
Т.к. ФФЕ экспортер и Нифтулз не добавляют этот префикс к шейпам при экспорте модели из МАХа.
 
Примечание.
Bytes Remaining, как кажется, не играет никакой роли.
По описанию, это кол-во байт на жестком диске, сколько резервируется под запись этого стринга.
Важна запись только в "String Data".
 
Примечание.
ЭкстрадаДата: NC, NCC, NCO, MRK, RCN не работают во вложенных объектах.
Только глобально, из корня файла на все его содержимое.
 
Примечание.
В нифскопе, можно совмещать несколько экстрадат.
Следующая прописывается в строку Next Extra Data.
Таким образом можно получить отображение маркера в файле существа, или иного объекта.
 
Примечание.
Однако, следует соблюдать последовательность.
Например:
1. MRK
2. RCN
если обратное, коллизии будут работать не правильно.
По крайней мере был отмечен такой момент с некоторыми моделями.
 
Примечание.
MRK в ванильных маркерах совмещается с NC.
1. MRK
2. NCO.
Но можно создавать маркеры и без этого флага.
Что бывает удобно при создании невидимых стен, или иных объектов, которые не должны быть видимы в игре, но хорошо заметны в редакторе.
 
Примечание.
SgoKeep может работать локально, на тот объект которому она добавлена.
 
Примечание.
NiStringExtraData, активно используется в MWSE 2.0 для... скриптинга внутри моделей, так и для указания особых свойств моделям!
Т.к. LUA позволяет получать данные из этого раздела.
Т.е. МВСЕ использует список произвольных команд, в этом разделе, для получения тех, или иных результатов в игре!
 
Примечание.
Greatness7
@Hrnchamd so this problem keeps coming up in various projects.
NiStringExtraData being nuked when reference is spawned. It seems like the engine is only capable of preserving the final extra data in the list.
I think it's a bug when inserting TES3ObjectExtraData, it is perhaps setting the extraData.next value to the last item in the original linked list rather than the first.
becomes this after spawned as a reference
It ends causing markers to be visible in game (if MRK gets discarded) or causing NC to stop working in other cases,
depending on the order they are specified. And if it's a lua mod using its own string data those get nuked too.
Hrnchamd
It's intentionally only taking the first NiStringExtraData and killing its next pointer
Greatness7
why ??
NullCascade
Does it only kill extra NiStringExtraData or all extra data?
Hrnchamd
Because the setup function terminates checking the next extradatas after the first MRK / NCC
Only RCN is skipped over
 

 Выдержка из оригинальной справки. (NDL Gamebryo 1.1)
 
This class supports the attaching of extra data to any NiObject-based object.
The class has run-time type information and streaming capabilities.
Every NiExtraData item has a unique name, to enable fast retrieval.
 
NiStringsExtraData, for an array of arbitrary size of string values for a user-defined purpose.
Extra data in the form of an array of arbitrary size of text strings that can be attached to a NiObject
 
Extra data in the form of text that can be attached to an NiObject.
The NiObjectNET class provides the ability to attach application-specific extra data to an NiObject object. 
In Gamebryo, extra data capabilities have been greatly enhanced to support a wide diversity of custom attributes and user-defined data, with fast retrieval times.