--- title: GetComponentData, GetMacroData 其他 GetWareData summary: 选择查询目标,阅读几个属性并保存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"] --- ## 选择正确的标识符 | 函数 | 第一个论点 | 结果 | | --- | --- | --- | | `GetComponentData(component, ...)` | 现有组件手柄在UI中 | 要求的关键每一个值 | | `GetMacroData(macro, ...)` | `string`: 宏模板名称 | 要求的关键每一个值 | | `GetWareData(wareID, ...)` | `string`: 货物身份 | 要求的关键每一个值 | 这些属于X4 UILua,而不是标准Lua或MD. 标志C,宏名称和货物身份证是不可交换的. 接收的键取决于功能和游戏版本. 案件问题: `groupName`, 没有 `groupname`. 其他源卡列出了全部的关键集. 呼叫参考卡: [GetComponentData](wiki:api-lua-getcomponentdata-466ba6e8), [GetMacroData](wiki:api-lua-getmacrodata-53e483cc), [GetWareData](wiki:api-lua-getwaredata-e67f517f). ## 商品查询的例子 在运行 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处理源和使用寿命. 宏不需要实例,但需要有效的模板名称. 检查键和版本,然后在算数或格式化之前输入. 这些例子并非实用,作者的研究并不是我们的测试. 编辑协助: [X4-LuaLSAddon](https://github.com/chemodun/X4-LuaLSAddon). 其他这些是Lua语言服务器的定义,而不是可执行的模块文件. 继续 [类型](wiki:types), [标识符Lua和C](wiki:ids-and-precision) 和 [UI/MD](wiki:md-lua-bridge).