--- title: GetComponentData, GetMacroData y GetWareData summary: Elija el objetivo de la consulta, lea varias propiedades y preserve las posiciones de resultados de Lua. section: ui kind: guide status: reference updated: 2026-10-27 tags: ["X4","modding","lua","data","queries"] sources: ["https://chemodun.github.io/x4/modding-support/ui-modding/lua-globals/","https://www.lua.org/manual/5.1/manual.html","https://github.com/chemodun/X4-LuaLSAddon"] --- ## Elija el identificador correcto | Función | Primer argumento | Resultado | | --- | --- | --- | | `GetComponentData(component, ...)` | Manija de componentes existente en la UI | Un valor por clave solicitada | | `GetMacroData(macro, ...)` | `string`: nombre de la plantilla macro | Un valor por clave solicitada | | `GetWareData(wareID, ...)` | `string`: ID del programa | Un valor por clave solicitada | Estos pertenecen a X4 UI Lua, no estándar Lua o MD. Un puntero C, nombre de macro y ID de software no son intercambiables. Las claves aceptadas dependen de la función y la versión del juego. `groupName`, no `groupname`. Las tarjetas de origen listan los conjuntos de claves completos. Tarjetas de referencia de llamadas: [GetComponentData](wiki:api-lua-getcomponentdata-466ba6e8), [GetMacroData](wiki:api-lua-getmacrodata-53e483cc), [GetWareData](wiki:api-lua-getwaredata-e67f517f). ## Un ejemplo de consulta de software En un contexto de addon X4 en ejecución: ```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 ``` **Efecto:** el primer resultado entra en `wareName`, el segundo en `volume`. Con los tipos esperados, una línea de diagnóstico contiene el nombre localizado y el volumen recuperado. Los valores exactos dependen de los datos y mods del juego; no se promete ningún nombre o número fijo. El contrato general es `any, ...` porque la clave determina el tipo. Esta consulta espera `string` y `number`; otras claves no necesitan tener esos tipos. Una clave desconocida puede dar `nil` en su posición y un diagnóstico del motor. ## Los múltiples valores no son una tabla Ejemplo Lua independiente sin el juego: ```lua local function sample() return "Demo", nil, 4 end local title, missing, amount = sample() local first = sample() ``` **Valores:** `title == "Demo"`, `missing == nil`, `amount == 4`, `first == "Demo"`. Múltiples variables conservan posiciones. Una variable recibe el primer resultado. No trate un `{...}` lista que contiene un `nil` como una matriz densa para `ipairs`. ## Continuar en la práctica Para los componentes, establezca una fuente de manejo de UI válida y la vida útil primero. Las macros no necesitan instancia en vivo, pero sí necesitan un nombre de plantilla válido. Compruebe las claves y versiones, luego los tipos antes de la aritmética o el formato. Estos ejemplos no se ejecutaron en el juego; la investigación del autor de la fuente no se presenta como nuestra prueba. Asistencia al editor: [X4-LuaLSAddon](https://github.com/chemodun/X4-LuaLSAddon). Estas son las definiciones de Lua Language Server, no archivos mod ejecutables. [tipos](wiki:types), [Identificadores Lua y C](wiki:ids-and-precision) y [UI/MD](wiki:md-lua-bridge).