# Словарь данных

Неофициальные данные сообщества, v0.2.2. Массивы JSON и строки CSV имеют одинаковые столбцы и отсортированы по kind и defName. UTF-8 без BOM. JSON сохраняет массивы и логические значения; ячейки списков CSV содержат JSON, логические значения — true/false. Пустые скалярные значения означают отсутствие данных, а не ноль.

## defName

Внутренний код определения. Вместе с kind задаёт основную идентичность; используйте для поиска.

## kind

Тип предмета в реестре, например ship или module.

## name_en

Английское идентифицирующее название; пусто, если не найдено.

## name_ru

Русское идентифицирующее название; пусто, если не найдено.

## label_en

Английское название с различающими технологическим уровнем, рангом и вариантом; исходный код для безымянных предметов.

## label_ru

Русское отображаемое название для различения вариантов; исходный код для безымянных предметов.

## name_status

Степень достоверности: exact (прямой ключ), own_field (собственное поле определения), prefixed (известный префикс ключа), category (общий подтип), derived (составлено нами), none (не найдено). category и derived не являются точными названиями предметов.

## short_desc_en

Английское описание с нормализованными пробелами, не более 200 символов Unicode, либо пустое. Сначала собственное краткое описание, затем собственное описание, затем описание категории. Длинные варианты пропускаются. Художественный текст исключён.

## short_desc_ru

Русское описание выбирается независимо с тем же пределом и порядком запасных вариантов.

## desc_status

Те же статусы, что у name_status. Если источники языков различаются, выбирается более общий статус: category, derived, prefixed, own_field, exact. none означает, что оба описания пусты. Происхождение по языкам сохраняется в локальной сборке.

## desc_has_placeholders

Логическое значение: хотя бы одно описание содержит необработанную подстановку $value$. Значения не подставляются.

## race

Исходный статический код расы, например ai.Race.EMPIRE; пусто, если недоступен.

## rank

Статический числовой ранг или пустое значение; не выводится из технологического уровня.

## tier

Статический числовой технологический уровень или пустое значение; не преобразуется в ранг.

## storeItemId

Собственный ID определения или пустое значение. НЕ уникален: ищите по kind и defName. Выражения и унаследованные ID оставляются пустыми.

## storeId

Идентификатор XML магазина или пустое значение; отдельная система нумерации от storeItemId.

## atlasId

Идентификатор атласа или пустое значение; отдельная система от ID магазина и экземпляров учётной записи.

## storeItemId_shared

Логическое значение: другая строка полного реестра использует тот же непустой storeItemId; включает общие значения по умолчанию и ноль.

## account_scope

account, npc_or_internal или unknown. Основные файлы items содержат только account. unknown — область не установлена. Классификация как предмета учётной записи не доказывает возможность выдачи.

## defined_in

Стандартный относительный путь установки и физическая строка: star conflict\data\gamedata\def\ex\ship.lua:26711. Ищите внутри своей установки Steam.

## db_fields

Пути полей базы данных, где предмет наблюдался в образце, например cosmosim_<WinUser>.accounts.vessels[].defName. Это лишь подтверждение; возможные места хранения предметов по типам перечислены в data/db_by_kind.csv. Числовые индексы вложений образца заменены на <>.

## flags

Список диагностических кодов реестра, например no_name или xml_only; сохраняется независимо от уточнённых названий.

## race_en

Английское название расы или группы из игровых таблиц текстов (race_<CODE>), например Empire; пусто при отсутствии кода расы.

## race_ru

Русское название расы или группы из игровых таблиц текстов, например Империя.

## Каталог полей базы данных

Поля: database (стандартное имя базы данных), collection, field_path (вложенный путь), id_type (пространство идентификаторов ссылки), example_kind (наблюдавшиеся типы предметов через точку с запятой; пусто, если не определены), seen_in_sample (true/false). Образец базы данных подтверждает эти структуры; места возможного хранения по типам перечислены в data/db_by_kind.csv. iid и vid — ссылки на экземпляры внутри учётной записи, а не ID магазина. Непрозрачные упакованные слова атласа не расшифрованы. Ненаблюдавшиеся поля autogenItems — возможные варианты, а не установленная схема элементов.

## Стандартные пути

Игровые ссылки заданы относительно вашей установки star conflict. Тексты клиента находятся внутри star conflict\data\strings.pak: strings/english/string.txt и strings/russian/string.txt. Данные локального сервера — в %LOCALAPPDATA%\Targem\StarConflict\. База локального сервера — cosmosim_<WinUser>; оператор может настроить другое имя.

## Охват

Названия предметов учётной записи и различающие варианты названия сохраняют проверенные статусы. Необязательные файлы всех предметов включают внутренние / NPC и неустановленные записи; названия вне учётных записей сохраняют происхождение из исходного реестра: прямые ключи — exact, поля подтипов — category, другие собственные поля — own_field. Эти отображаемые названия при отсутствии текста используют код и не имеют уточнений вариантов учётных записей. Отсутствие в образце не доказывает невозможность. Художественный текст и ресурсы игры не включены.

## Фактические значения в этой выгрузке

Типы учётных записей: `account_aura`, `craft_part`, `custom_element`, `module`, `munition`, `other`, `resource`, `ship`, `weapon`.

Типы всех определений: `account_aura`, `autogen`, `avatar`, `bundle`, `craft_part`, `custom_element`, `module`, `munition`, `other`, `resource`, `ship`, `title`, `weapon`.

Признаки: `ambiguous_defName_across_kinds`, `cant_be_bought`, `no_name`, `no_store_entry`, `unresolved_storeItemId_expression`, `xml_only`.

Статусы названий и описаний: `exact`, `own_field`, `prefixed`, `category`, `derived`, `none`.

## Практическое чтение полей

См. [Использование поиска](using-the-search.md): пример Nebula GS и значения
всех шести статусов названия. Текстовый ключ — код для поиска названия в
языковой таблице игры. Собственное поле определения — хранимое у предмета
значение, указывающее на ключ. Известный префикс ключа — фиксированная часть,
добавляемая перед кодом для поиска названия. Общий подтип — группа родственных
предметов с общим названием; оно помечается `category`. Пространство ID —
отдельная система нумерации: `storeId`, `storeItemId`, `atlasId`, `iid` и `vid`
не взаимозаменяемы.

`<WinUser>` — заполнитель имени пользователя Windows локального сервера,
а не буквальный текст в имени базы данных. Оператор может настроить другое имя.
`[]` означает каждый элемент списка. `<>` — наблюдавшийся числовой слот;
используйте слот собственной записи. Физическая строка — реальная строка
штатного файла, включая комментарии и пустые строки.

`iid` ссылается на экземпляр предмета внутри учётной записи, а `vid` — на
экземпляр корабля. Не копируйте в эти поля ID каталога. Упакованные слова атласа
содержат ещё не расшифрованные закодированные значения: не читайте их как
обычные ID предметов. Ненаблюдавшиеся поля `autogenItems` — лишь возможные
места хранения, а не подтверждённое описание их элементов или инструкция по правке.

Область учётной записи — классификация, а не доказательство работоспособности
или безопасности выдачи предмета. Места возможного хранения по типам
перечислены в `data/db_by_kind.csv` (ниже); столбец `db_fields` только
подтверждает наблюдение предмета в образце базы данных. Безымянный предмет
ищите по `defName`. Для общего `storeItemId` включите все определения
и изучите каждую совпавшую строку; никогда не выбирайте первую автоматически.
Тип и defName вместе определяют строку.

Описание может отсутствовать, если подходящего текста нет, он длиннее
200 символов или является художественным текстом (включая совпадения с ним).
Обрезки нет. `$value$` — значение, заполняемое игрой из определения;
выгрузка его не вычисляет. Например, `$projectile_speed_mul$%` —
не числовая характеристика в этом наборе данных.

## Значения диагностических признаков

| Признак | Значение для оператора |
|---|---|
| `ambiguous_defName_across_kinds` | Код встречается в нескольких типах; сохраняйте тип вместе с ним. |
| `cant_be_bought` | Штатное определение запрещает покупку; это не доказывает безопасность выдачи. |
| `no_name` | Исходный реестр не содержал названия; последующий поиск мог его найти. |
| `no_store_entry` | Соответствующая запись магазина не найдена; не предполагайте доступность в магазине. |
| `unresolved_storeItemId_expression` | ID — выражение, не вычисленное статическим средством чтения. |
| `xml_only` | Запись найдена только в XML, а не в определении Lua. |

## Файлы поиска

Страница поиска использует компактные строки-массивы в `site/data/items.js`
(учётные записи) и `items_all.js` (необязательный полный набор). Фиксированный
порядок: kind, defName, name_en, name_ru, label_en, label_ru, name_status,
storeItemId, storeId, atlasId, account_scope. Скрипты сведений по типам
содержат остальные столбцы; ключ — defName внутри типа. Загружаемый по запросу
каталог общих ID содержит пары kind и defName из всех определений, чтобы
предупреждения включали внутренние записи без загрузки полного поискового
индекса. Файлы воспроизводят загружаемые данные с теми же 24 столбцами. Скрипты путей по типам (`site/data/locations-<kind>.js`)
и таблица базы данных (`site/data/db.js`) загружаются по запросу.

## Пути в файлах (`data/locations.csv`)

Одна строка на каждое место появления предмета в штатных файлах: `kind`,
`defName`, `group`, `location` (стандартный путь установки и физическая строка),
`role` (словесное пояснение), `referrer` (ссылающийся предмет или таблица, если есть).

| group | Значение для редактирования |
|---|---|
| `edit_here` | Исходное определение предмета и собственные поля в `data\gamedata` — изменять здесь. |
| `generated` | Копия в `cloud\data`, записываемая `prepare_shared`; ручная правка будет потеряна при следующей подготовке серверных данных. |
| `server_rules` | Редактируемый вручную серверный файл в `cloud\data`, например `store_rules.xml`. |
| `inert` | Файл, не читаемый ни одной службой (`defmod_rules*.xml`); правка не действует. |
| `used_by` | Другой предмет или таблица со ссылкой на предмет: `role` поясняет роль, например «требуется как корабль для», «установлен по умолчанию на», «в пресете модулей», «выпадает из таблицы добычи», «результат чертежа», «содержится в наборе», «базовое определение для», «компонент изготовления для». |

Перед удалением или переименованием предмета проверьте его строки `used_by`:
каждая ссылается на прежнее имя.

## Пути в базе данных по типам (`data/db_by_kind.csv`)

Где могут храниться предметы каждого типа в игровой базе данных
(`cosmosim_<WinUser>`): `kind`, `database`, `collection`, `field_path`,
`value_written` (записываемое значение: defName, числовой ID или ID экземпляра),
`evidence` (S — наблюдалось в образце базы данных, D — документированная схема,
B — имя поля в серверной программе, M — тип почтового вложения,
L — наблюдалось после выдачи на тестовом сервере), `mail` (как отправить
по почте, если возможно). В конце добавлены `value_written_ru` и `mail_ru` —
русские версии этих пояснений; при пустом русском тексте сайт использует
английский. Имена полей и коды почтовых типов не переводятся.
Строки с пометкой «не проверено» — наводки, а не подтверждённые форматы.
Базы истории боёв и статистики (`games_*`, `stats_*`, журналы, таблицы лидеров)
в этой версии не охвачены.

Три неочевидных особенности: установленный модуль хранится на корабле по `iid`,
а не по имени (`vessels[].equipped[]`); боеприпас использует поле `def`,
а не `defName`; ресурсы изготовления хранятся как ключи `craftResources`,
а количество — как значение.
