--- title: GetComponentData, GetMacroData und GetWareData summary: Wählen Sie das Abfrageziel, lesen Sie mehrere Eigenschaften und behalten Sie die Lua-Ergebnispositionen. 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"] --- ## Wählen Sie die richtige Kennung | Funktion | Erstes Argument | Ergebnis | | --- | --- | --- | | `GetComponentData(component, ...)` | Bestehende Komponentengriff in UI | Ein Wert pro angeforderten Schlüssel | | `GetMacroData(macro, ...)` | `string`: Name der Makrovorlage | Ein Wert pro angeforderten Schlüssel | | `GetWareData(wareID, ...)` | `string`: Warenkennung | Ein Wert pro angeforderten Schlüssel | Diese gehören zu X4 UI Lua, nicht Standard Lua oder MD. Ein C-Zeiger, Makroname und Waren-ID sind nicht austauschbar. Akzeptierte Schlüssel hängen von der Funktion und Spielversion ab. Fallwesen: Waren haben `groupName`, nicht `groupname`. Quellkarten listen die vollständigen Schlüsselsätze auf. Rufnummer: [GetComponentData](wiki:api-lua-getcomponentdata-466ba6e8), [GetMacroData](wiki:api-lua-getmacrodata-53e483cc), [GetWareData](wiki:api-lua-getwaredata-e67f517f). ## Ein Beispiel für die Warenabfrage In einem laufenden X4-Addon-Kontext: ```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 ``` **Wirkung:** das erste Ergebnis geht in `wareName`, die zweite in `volume`. Bei den erwarteten Typen enthält eine Diagnosezeile den lokalisierten Namen und das abgerufene Volumen. Exakte Werte hängen von Spieldaten und Mods ab; es wird kein fester Name oder eine feste Nummer versprochen. Der allgemeine Vertrag ist `any, ...` weil der Schlüssel den Typ bestimmt. Diese Abfrage erwartet `string` und `number`; andere Schlüssel brauchen nicht diese Typen. Ein unbekannter Schlüssel kann ergeben `nil` in seiner Position und einer Triebwerksdiagnose. ## Mehrere Werte sind keine Tabelle Unabhängige einfache Lua Beispiel, ohne das Spiel: ```lua local function sample() return "Demo", nil, 4 end local title, missing, amount = sample() local first = sample() ``` **Werte:** `title == "Demo"`, `missing == nil`, `amount == 4`, `first == "Demo"`. Mehrere Variablen bewahren Positionen. Eine Variable erhält das erste Ergebnis. `{...}` Liste mit einem Zwischenprodukt `nil` als dichter Array für `ipairs`. ## Fortsetzung in der Praxis Für Komponenten, legen Sie zunächst eine gültige UI Handle Quelle und Lebensdauer. Makros brauchen keine Live-Instanz, sondern benötigen einen gültigen Template-Namen. Überprüfen Sie Schlüssel und Versionen, dann Typen vor der Arithmetik oder Formatierung. Diese Beispiele wurden nicht im Spiel ausgeführt; die Quelle Autoren Forschung wird nicht als unser Test dargestellt. Unterstützung des Editors: [X4-LuaLSAddon](https://github.com/chemodun/X4-LuaLSAddon). Dies sind Lua Language Server Definitionen, nicht ausführbare Mod-Dateien. [Typen](wiki:types), [Lua und C-Kennungen](wiki:ids-and-precision) und [UI/MD](wiki:md-lua-bridge).