选择正确的标识符#

函数 第一个论点 结果
GetComponentData(component, ...) 现有组件手柄在UI中 要求的关键每一个值
GetMacroData(macro, ...) string: 宏模板名称 要求的关键每一个值
GetWareData(wareID, ...) string: 货物身份 要求的关键每一个值

这些属于X4 UILua,而不是标准Lua或MD. 标志C,宏名称和货物身份证是不可交换的. 接收的键取决于功能和游戏版本. 案件问题: groupName, 没有 groupname. 其他源卡列出了全部的关键集.

呼叫参考卡: GetComponentData, GetMacroData, GetWareData.

商品查询的例子#

在运行 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. 其他这些是Lua语言服务器的定义,而不是可执行的模块文件. 继续 类型, 标识符Lua和C 和 UI/MD.