Выберите правильный идентификатор#

Функция Первый аргумент Результат
GetComponentData(component, ...) Handle существующего компонента в UI Одно значение на каждый ключ
GetMacroData(macro, ...) string: имя macro-шаблона Одно значение на каждый ключ
GetWareData(wareID, ...) string: ID товара Одно значение на каждый ключ

Это функции UI Lua X4, не стандартной Lua и не MD. Указатель C, имя macro и ware ID не взаимозаменяемы. Набор допустимых ключей зависит от функции и версии игры. Регистр значим: у товара встречается groupName, а не groupname. Полный перечень ключей есть в карточках первоисточника.

Карточки вызовов: GetComponentData, GetMacroData, GetWareData.

Пример чтения товара#

В работающем addon-контексте X4:

LUA
local wareName, volume = GetWareData("energycells", "name", "volume")
if type(wareName) == "string" and type(volume) == "number" then
    DebugError("[WIKI] ware=" .. wareName .. "; volume=" .. tostring(volume))
end

Что произойдёт: первый результат попадёт в wareName, второй в volume. При указанных типах появится диагностическая строка с локализованным названием и прочитанным объёмом. Точные значения зависят от данных игры и модов; фиксированное название или число здесь не обещается.

Общий контракт - any, ..., потому что тип определяется ключом. Для приведённого запроса ожидаются string и number; это не превращает результаты любого другого ключа в те же типы. Неизвестный ключ может дать nil в своей позиции и сообщение движка.

Несколько значений не являются таблицей#

Самостоятельный пример чистой Lua, без игры:

LUA
local function sample()
    return "Demo", nil, 4
end
local title, missing, amount = sample()
local first = sample()

Значения: title == "Demo", missing == nil, amount == 4, first == "Demo". Несколько переменных сохраняют позиции. Одна переменная принимает первый результат. Список в {...} с промежуточным nil не следует перебирать через ipairs как плотный массив.

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

Для компонента сначала установите источник корректного UI handle и его срок жизни. Для macro не нужен живой экземпляр, но нужно действительное имя шаблона. Сверяйте ключи и версию, проверяйте тип перед арифметикой или форматированием. Наши примеры не запускались в игре; результаты исследований автора не выдаются за нашу проверку.

Подсказки редактора: X4-LuaLSAddon. Это определения для Lua Language Server; их не нужно подключать как исполняемые файлы мода. Далее: типы, граница Lua и C ID, UI и MD.