feat(runtime): register mission objects with clan distributors
Docs Deploy / Build and Deploy MkDocs (push) Successful in 35s
Docs Deploy / Build and Deploy MkDocs (push) Successful in 35s
This commit is contained in:
5 files changed
+318
-18
No files matched your search
@@ -215,6 +215,26 @@ MissionObjectDraft {
|
||||
`fparkan-world` не подтверждено. Смещения, условия версий и контрольные суммы исследованных
|
||||
сборок приведены в [справочнике TMA](../reference/tma.md).
|
||||
|
||||
Это слово влияет не только на сценарий. Успешно загруженный пакет клана
|
||||
публикует его `SuperAI` в таблице `GetSuperAI`; World3D передаёт первый DWORD
|
||||
дескриптора создания через Behavior, где он выбирает тот же номер таблицы.
|
||||
Поэтому при создании полного мира можно отнести объект к конкретному клановому
|
||||
диспетчеру, если его номер лежит в диапазоне `0..63` и сценарий этого клана
|
||||
загружен. Rust хранит такую связь отдельно от владельца объекта:
|
||||
|
||||
```text
|
||||
TMA raw_after_resource = 1
|
||||
-> GetSuperAI[1] доступен после загрузки script bundle клана 1
|
||||
-> запись объекта относится к distributor клана 1
|
||||
```
|
||||
|
||||
Для объектов с Unit DAT используется старший бит DWORD по смещению `+4` от
|
||||
начала DAT как общий признак, по которому оригинальный World3D создаёт
|
||||
registration key для Behavior. Это второе 32-битное слово заголовка. Из него
|
||||
нельзя вывести сторону или тип владельца. В AutoDemo это связывает поля TMA,
|
||||
class word из Unit DAT и выбранный клановый AI, не меняя `OwnerId` и хеш
|
||||
игрового состояния.
|
||||
|
||||
Свойства хранятся как ordered property bag:
|
||||
|
||||
```text
|
||||
|
||||
Reference in new issue
Block a user