Выберите правильный идентификатор#
| Функция | Первый аргумент | Результат |
|---|---|---|
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:
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, без игры:
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.