Wenn eine native Schicht benötigt wird#

Normale XML-Änderungen und UI-Fenster benötigen normalerweise keine. Verwenden Sie FFI oder eine benutzerdefinierte DLL, wenn verfügbar MD und Lua UI können die Aufgabe nicht ausdrücken. Integrierte Lua-Funktionen, FFI-Exporte und benutzerdefinierte Lua C-Module sind unterschiedliche Schnittstellen mit unterschiedlichen Verträgen.

Erklärung des#

Das folgende Beispiel zeigt Erklärungen, die mit dem entsprechenden Spielaufbau verwendet werden. cdef die Ausfuhrverfügbarkeit nicht nachgewiesen hat. pcall macht keine falsche Signatur sicher. Verifizieren Sie Typen, rufen Sie Konvention und Unterstützung in Ihrer eigenen X4-Version.

LUA
local ffi = require("ffi")
if ffi.cdef then
    pcall(ffi.cdef, [[
        bool IsGamePaused(void);
        bool IsStartmenu(void);
    ]])
end

Bestandteile von Dritten#

X4Native ist eine separate Bibliothek mit eigenem Loader und einem eigenen ABI, nicht eine erforderliche Abhängigkeit für jeden Lua Mod. Erklären und überprüfen Sie es nur bei der Verwendung. UI geschützten Modus auch Auswirkungen Lademechanismen; Entschärfung ist nicht der erste Schritt für einen gewöhnlichen Datenpatch.

Werttypen#

Einen Zeiger, uint64_t und Lua-Nummer sind nicht austauschbar. Lesen ID-Präzision vor der Serialisierung oder Überkreuzung von Sprachen. Direkte Speicher-Offsets hängen noch stärker vom Aufbau ab. Stellen Sie sichere Rücklese- und Objektidentität vor dem Testen einer Mutation fest.