schema.lua

Was das Menü von deinem Script wissen muss. Jeder Eintrag wird beim Anmelden geprüft.

Oberste Ebene

labelstring
Name des Scripts im Menü.
ordernumber
Reihenfolge in der Leiste, kleiner steht weiter oben.
abouttable
{ summary, details }, steht auf der Seite des Scripts und im ersten Schritt der Einrichtung.
sectionstable
Die Seiten, siehe unten.
fieldstable
Die Einstellungen, siehe unten.
placestable
Listen von Orten, siehe unten.
codetable
{ key, label } für Funktionen in der config.lua. Das Menü zeigt sie, bearbeitet werden sie in der Datei.
texttable
{ DE = { ... } }, dieselben Beschriftungen in einer anderen Sprache. Fehlendes bleibt Englisch.

Seiten

idstring
Die ID. Ein Recht wird auf sie vergeben, also nicht umbenennen.
labelstring
Name in der Leiste.
groupstring= 'settings'
settings, places, discord oder text. Jede Einstellungsseite ist eine eigene Zeile, die anderen drei sind je eine Zeile mit Reitern.
iconstring
csHome, csPin, csStack, csStar, csList, csPeople oder csGear.
summarystring
Eine Zeile auf der Karte der Seite.
introstring
Der Satz oben auf der Seite.
serverboolean
Jedes Feld der Seite bleibt auf dem Server.

Felder

keystring
Pfad in die Config, Cart.perItem ist Config.Cart.perItem.
sectionstring
Auf welcher Seite es steht.
typestring
Siehe Feldtypen.
applystring
live, reopen oder restart. Was die Zeile über das Wirksamwerden sagt.
label / hint / detailsstring
Name, eine Zeile Erklärung und der Teil hinter Mehr erfahren.
min / max / step / suffixnumber
Für Zahlen und Beträge. Auch auf dem Server erzwungen.
options / optionLabelstable
Für select und multi.
globalstring
Der Wert unter Für alle Scripts, dem dieses Feld folgt, solange hier nichts gesetzt ist.
setupnumber
Wird in der Einrichtung abgefragt, in dieser Reihenfolge und steht unter Die wichtigen Einstellungen.
moreboolean
Wartet in der Karte Mehr Einstellungen am Ende der Seite.
foldboolean | 'open'
Auf einer Überschrift: ihre Gruppe ist eine zugeklappte Karte.
sincestring
'2.0.0' markiert ein Feld als neu.
whenstring | table
Gedimmt, solange die Bedingung nicht erfüllt ist. Siehe unten.
serverboolean
Wird bearbeitet wie jedes andere, aber nicht an Spieler geschickt.

Feldtypen

typeWird zu
textTextfeld
number / moneyZahl, mit Bereich und Schritt
booleanSchalter
select / multieins aus einer Liste, oder mehrere
color / rgbaFarbe als Hex, oder mit Deckkraft
keyTaste, getippt als E oder Left Shift, gespeichert als Control-ID
coords / vec3Position mit Setzen im Spiel, oder drei Zahlen
listeine Liste von Werten, of sagt welcher Art
pairsText gegen Text, etwa Fahrzeugklasse gegen Garagentyp
groupein Block mit Schalter und Teilen darunter
rowseine Tabelle von Einträgen, bis drei Ebenen tief
typeauf einem Ort: welcher Typ die Vorlage ist
ruleswer etwas darf: Job, Gruppe, Ace, Export, State Bag, eine Person
notifywohin Meldungen gehen, vier Felder
secretbleibt auf dem Server, das Fenster sieht nur eine Maske
typemapwird angezeigt, aber nie geschrieben

Tabellen von Einträgen

schema.lua
{ key = 'categories', type = 'rows', label = 'Stock', singular = 'Category',
  fields = {
      { key = 'label', type = 'text', label = 'Name', required = true },
      { key = 'items', type = 'rows', label = 'Items', singular = 'Item',
        short = { 'name', 'price' },
        fields = {
            { key = 'name',  type = 'text',  label = 'Item', required = true },
            { key = 'price', type = 'money', label = 'Price', min = 0 },
        } },
  } }

short sagt, welche Spalten eine Zeile in Kurzform wie { 'bread', 4 } meint. map liest eine Tabelle wie { police = 2 } als zwei Spalten. Fehlt eins davon, liest das Menü deine Datei als leer. Zurückgeschrieben wird immer eine schlichte Liste, dein Script muss die alten Formen also weiter verstehen.

Abhängige Einstellungen

schema.lua
when = 'Carclear.enabled'                            -- set, and not false
when = { key = 'Features.repair.enabled', isnt = false }
when = { key = '...', any = { true, 'locked' } }
when = { key = '...', is = true }

Gedimmt statt versteckt: Eine verschwundene Zeile nimmt die Idee mit, was das Einschalten bringen würde und eine Seite, deren Länge sich beim Klicken ändert, rutscht unter dem Zeiger weg. Ein when auf einen Schlüssel, den das Schema nicht kennt, wird beim Anmelden abgelehnt.

Wer etwas darf

schema.lua
{ key = 'Features.repair.who', section = 'features', type = 'rules', apply = 'live',
  label = 'Who may repair',
  when = { key = 'Features.repair.enabled', is = 'locked' } }

Eine passende Zeile reicht. Gelesen wird serverseitig mit CsConfig.Allows.

Nur für den Server

Bedeutung
type = 'secret'nur der Server hat den Wert, nicht einmal das Menü. Ein eigenes Feld, nicht in einer Gruppe oder Tabelle.
server = trueam Feld: normal bearbeitet, aber nicht an Spieler geschickt
server = truean einer Seite: dasselbe für jedes Feld darauf

Seiten umbenennen

Ein Recht hängt an der ID einer Seite. Benennst du eine um, sag, wohin sie gegangen ist und die Rechte ziehen beim nächsten Start mit. Jeder Umzug steht im Log.

schema.lua
moved = { opening = 'basics', carclear = 'impound' },

Frage offen geblieben?

Schreib uns im Discord. Mit Konsolen-Auszug, Framework und Script-Version ist die erste Antwort meistens schon die Lösung.

Zum Support