escrow_ignore in fxmanifest: config.lua und Locale-Dateien offen halten

Für Skriptverkäufer: Wie escrow_ignore config.lua und Locale-Dateien lesbar hält, welche Dateien offen bleiben, wie man ins Cfx.re-Portal hochlädt und den verschlüsselten Build testet.

Du verkaufst Skripte, und Käufer müssen eine Konfiguration, eine Sprachdatei oder eine Framework-Brücke ändern, ohne deinen Kerncode zu berühren. Das Asset-Escrow von Cfx.re verschlüsselt Lua standardmäßig, daher müssen die Dateien, die Käufer bearbeiten müssen, als offen gekennzeichnet werden. Das ist das, was escrow_ignore macht, und dieser Leitfaden behandelt seine Verwendung und das Testen des Ergebnisses.

Was Escrow verschlüsselt

Wenn du eine Ressource in das Escrow-System hochlädst, werden deine Client- und Server-Lua-Skripte verschlüsselt. Käufer führen sie aus, können sie aber nicht lesen. Dateien, die kein Lua-Code sind, wie NUI-Seiten, Bilder, Audio, Modelle und stream/-Assets, werden so ausgeliefert, wie sie sind.

Alles, das ein Käufer konfigurieren muss, muss lesbar bleiben. Wenn du config.lua verschlüsselst, kann niemand deine Preise oder Schlüssel ändern. Also bittest du das Escrow, es zu überspringen.

Die escrow_ignore-Syntax

In fxmanifest.lua:

lua
fx_version 'cerulean'
game 'gta5'

shared_script 'config.lua'
client_script 'client/main.lua'
server_script 'server/main.lua'

escrow_ignore {
    'config.lua',
    'locales/*.lua',
    'bridge/*.lua',
}

Pfade sind relativ zum Ressourcenordner, und * funktioniert als Platzhalter, daher hält locales/*.lua jede Lua-Datei in locales/ offen. Du kannst auch einzelne Dateien auflisten.

Was bleibt lesbar

Sei bewusst, was du öffnest. Gute Kandidaten:

  • config.lua: Preise, Jobs, Artikelnamen, Tastaturkürzel, Feature-Umschalter.
  • Locale-Dateien: damit Käufer übersetzen können. Siehe translatable scripts.
  • Framework-Bridge-Dateien: kleine Adapter für ESX, QBCore und QBox, damit Käufer ihr eigenes Framework oder Inventar verbinden können.
  • Client-seitige Hooks für andere Skripte, z. B. eine Datei, die eine Benachrichtigung oder eine Polizeiwelle auslöst.

Halte alles geschlossen, das der Kern des Produkts ist: Logik, Validierung, alles, das Geld oder Gegenstände entscheidet. Denke daran, dass offene Dateien auch zum Kopieren offen sind: Ein Käufer kann deine Konfiguration oder Brücke in eine andere Ressource einfügen, also lege nicht wertvolle Logik in sie.

Tipp: Jede offene Datei ist eine Supportbelastung. Ein Käufer, der sie schlecht bearbeitet, wird dir davon schreiben, also halte offene Dateien klein und gut kommentiert.

Im Cfx.re-Portal hochladen

Das Escrow funktioniert über dein Cfx.re-Konto:

  1. Bereite den Ressourcenordner mit einem gültigen fxmanifest.lua vor (nicht ein altes __resource.lua; siehe fxmanifest vs resource.lua).
  2. Öffne im Cfx.re-Portal den Asset-Bereich und lade die Ressource als Escrow-Asset hoch. Das Portal verschlüsselt die Dateien, die sich nicht in escrow_ignore befinden, und hält den Rest lesbar.
  3. Verknüpfe das Asset mit deinem Store, damit ein Kauf dem Käufer Zugriff gibt. Siehe selling FiveM scripts für die Store-Seite.

Die Menüs des Portals ändern sich von Zeit zu Zeit, also folge der aktuellen Cfx.re-Dokumentation für die genauen Upload-Schritte und Limits.

Teste den verschlüsselten Build

Versende nie etwas, das du nur in deinem Entwicklungsordner getestet hast. Nach dem Upload:

  1. Lade die verschlüsselte Version vom Portal zurück, so wie ein Käufer sie erhalten würde.
  2. Lege sie auf einen sauberen Test-Server mit deinem eigenen Lizenzschlüssel, der mit dem Konto verknüpft ist, das das Asset besitzt.
  3. Starte es und gehe durch den Ablauf: Offene Dateien werden geladen, Config-Änderungen werden angewendet, sowohl Client- als auch Server-Events werden ausgelöst.
  4. Ändere einen Wert in config.lua und starte neu, um zu bestätigen, dass die offene Datei wirklich aufgegriffen wird.
  5. Teste auf einem zweiten Framework, wenn du mehr als einen unterstützt.

Wenn die Ressource nicht mit einer Berechtigungsmeldung startet, verwendet der Test-Server nicht den Schlüssel eines Kontos, das das Asset besitzt. Escrow lack entitlement listet die Ursachen auf.

Abhängigkeiten von offenen Dateien

Wenn einige Dateien offen und der Rest verschlüsselt sind, teilen sie sich immer noch eine Ressource und müssen zusammenarbeiten:

  • Offene Dateien können die Globals und Funktionen verwenden, die sie deklarieren, wie normal. Behalte eine config.lua, die nur eine Config-Tabelle definiert, und der verschlüsselte Code liest Config.
  • Die Ladereihenfolge ist die Manifest-Reihenfolge. Eine Config muss vor dem Code kommen, der sie liest, also liste sie zuerst als shared_script auf, wie oben.
  • Verwende Exports für die Kommunikation zwischen deinem Code und der eigenen Ressource eines Käufers, anstatt dich auf gemeinsame Globals zu verlassen. Exports sind stabil und dokumentiert; siehe exports in Lua.
  • Deklariere Abhängigkeiten (dependency 'ox_lib') im Manifest, damit eine fehlende Bibliothek einen klaren Fehler gibt, anstatt nil.

Öffne keine Datei, die nur zusammen mit einer verschlüsselten Datei funktioniert, die du in derselben Version auch geändert hast. Käufer, die die offene bearbeitet haben, müssen von Hand zusammenführen.

Häufige Probleme

  • Eine neue Datei wurde hinzugefügt, ist aber immer noch verschlüsselt: Sie wurde nicht von escrow_ignore abgeglichen. Überprüfe den Pfad und den Platzhalter.
  • Käufer sagen, die Config ist unlesbar: Die Datei wurde beim Upload verschlüsselt. Repariere das Manifest und lade erneut hoch.
  • Funktioniert für dich, nicht für den Käufer: Du hast die offene Entwicklungskopie getestet; teste den heruntergeladenen Escrow-Build.

Checkliste

Symptom Lösung
Käufer können config.lua nicht bearbeiten Füge es zu escrow_ignore { } hinzu und lade erneut hoch
Neue Locale-Datei noch immer verschlüsselt Verwende einen Platzhalter, z. B. locales/*.lua
Verschlüsselter Build verhält sich anders Teste die heruntergeladene Version, nicht die Dev-Kopie
Config-Werte werden nicht gelesen Liste die Config als shared_script vor dem Code auf
Berechtigungsfehler beim Testen Verwende den Schlüssel des Kontos, das das Asset besitzt
Wertvolle Logik ist offengelegt Verschiebe sie aus offenen Dateien in den verschlüsselten Kern

Kurze Antworten

Was macht escrow_ignore?

Es listet Dateien in deinem fxmanifest.lua auf, die der Cfx.re-Asset-Escrow unverschlüsselt hinterlassen muss, damit Käufer sie lesen und bearbeiten können. Typische Beispiele sind config.lua und Locale-Dateien.

Können Käufer eine escrow_ignored-Datei bearbeiten?

Ja, sie wird als Klartext ausgeliefert, genau wie du sie hochgeladen hast. Alles, was du offenlässt, kann auch von jedem kopiert und von jedem, der das Skript kauft, geändert werden.

Muss ich die verschlüsselte Version testen?

Ja. Die Verschlüsselung kann das Verhalten ändern, z. B. wenn offene und verschlüsselte Dateien sich gegenseitig aufrufen. Führe den Build aus, den du vom Portal zurückgeladen hast, nicht nur deine Entwicklungskopie.

Scripts ohne dieses Problem

Tebex TemplateEin Premium-Theme ohne Code für deinen Tebex-Shop, komplett im Tebex-Panel anpassbar.Script ansehen →Item Creator V2Erstelle nutzbare Items mit Animationen, Props, Effekten und mehr — ganz ohne Code.Script ansehen →Shop CreatorBau einen Shop in unter einer Minute — Besitzer, Angestellte, Tresore und Überfälle inklusive.Script ansehen →

Weiterlesen