Zum Hauptinhalt springen

Mod-Dateiänderungen

Der Tab Dateiänderungen ist, wo du definierst, was deine Mod auf Zielservern ändert.

Für jede Dateiänderung festlegen:

  • Zielpfad
  • Änderungstyp
  • Inhalt/Skript-Payload

Unterstützte Änderungstypen umfassen Ersetzen, Zusammenführen von Varianten und Löschen.

Du kannst außerdem:

  • Dateiänderungen neu anordnen (nach oben/unten verschieben)
  • die generierte Differenz vor der Veröffentlichung ansehen

Vorsicht bei der Vorschau:

  • Die Vorschau ist dateifokussiert und verwendet die erste ausgewählte Karte sowie Standardwerte, daher kann die endgültige Serverausgabe abweichen.

Die Reihenfolge der Ausführung ist wichtig. Halte Dateiänderungen absichtlich geordnet.

Dynamische Variablen

Jede Dateiänderung besitzt einen Schalter Dynamische Variablen. Wenn aktiviert, werden der Dateiinhalt (und der Dateipfad) als Latte-Template verarbeitet, bevor sie auf den Server geschrieben werden. So lässt sich eine Mod konfigurierbar und wiederverwendbar gestalten.

Deaktiviere Dynamische Variablen für große statische Dateien (z.B. Objekt-Platzierungsdateien), die keine Template-Syntax verwenden — die Verarbeitung sehr großer Dateien durch die Template-Engine kann Probleme verursachen.

Verfügbare Variablen

Die folgenden Variablen stehen immer zur Verfügung, wenn Dynamische Variablen aktiviert sind:

VariableWert
{$installation_id}Eindeutige numerische ID dieser spezifischen Installationsinstanz
{$manager_url}Shop-URL des Zielservers (z.B. https://example.dzbot.de)

Zusätzlich wird jedes Konfigurationsfeld, das du im Tab Konfiguration definierst, als Variable unter seinem Bezeichner verfügbar. Wenn deine Mod ein Konfigurationsfeld mit dem Bezeichner spawn_location hat, ist es in allen Dateiinhalten und Pfaden als {$spawn_location} verfügbar.

Template-Syntax

Die Template-Engine unterstützt eine sandbox-beschränkte Teilmenge der Latte-Template-Sprache. Vollständige Sprachdokumentation findest du in den offiziellen Latte-Docs.

Variablenausgabe

{$variable}
{$variable|filter}
{= ausdruck}

Filter

Filter transformieren den Wert einer Variable direkt. Mit | anhängen:

{$name|upper}           → Großbuchstaben
{$name|lower} → Kleinbuchstaben
{$name|capitalize} → Ersten Buchstaben groß
{$name|trim} → Leerzeichen entfernen
{$name|replace: 'a', 'b'}
{$name|truncate: 20}
{$items|implode: ','} → Array zu String zusammenfügen
{$csv|explode: ','} → String zu Array aufteilen

Weitere verfügbare Filter: firstUpper, length, reverse, slice, sort, join, split, date, number, round, ceil, floor, clamp, padLeft, padRight, substr, stripTags, repeat, webalize.

Bedingungen

{if $bedingung}
...
{elseif $andere}
...
{else}
...
{/if}

Schleifen

{foreach $items as $item}
{$item}
{/foreach}

{for $i = 0; $i < 10; $i++}
{$i}
{/for}

{while $bedingung}
...
{/while}

Variablenzuweisung

{var $label = 'Hallo'}
{default $limit = 100}

{var} setzt die Variable immer. {default} setzt sie nur, wenn sie noch nicht definiert ist.

Weitere Konstrukte

{* Dies ist ein Kommentar und erscheint nicht in der Ausgabe *}

{= 2 + 2} → gibt 4 aus
{spaceless}...{/spaceless} → entfernt Leerzeichen zwischen Tags
{try}...{/try} → fängt Rendering-Fehler im Block still ab
{l} {r} → literale { und } Zeichen

Erlaubte PHP-Funktionen

Zwei PHP-Funktionen sind in Ausdrücken verfügbar:

  • explode(separator, string) — String in ein Array aufteilen
  • implode(glue, array) — Array zu einem String zusammenfügen

Eingebaute Latte-Funktionen

clamp(wert, min, max), divisibleby(wert, durch), even(zahl), odd(zahl), first(array), last(array), slice(array, start, länge)

Variable Pfade

Wenn Dynamische Variablen aktiviert sind, wird auch der Dateipfad als Template verarbeitet. Alle Variablen, die im Dateiinhalt verfügbar sind, funktionieren auch im Pfadfeld.

Dies ist besonders nützlich, wenn dieselbe Mod mehrfach auf einem Server installiert werden soll — ohne eindeutige Pfade würde jede Installation dieselbe Datei überschreiben. Mit {$installation_id} im Pfad erhält jede Installation ihre eigene Datei:

custom/meine-custom-datei-{$installation_id}.json

Jede Installation erhält eine eindeutig benannte Datei, sodass mehrere Instanzen auf demselben Server ohne Konflikte nebeneinander existieren können.

Editor-Intelligenz

Der Dateiinhalt-Editor ist eine vollständige Latte-fähige IDE. Wenn Dynamische Variablen aktiviert sind, stellt der Editor mehrere Hilfsfunktionen bereit:

Autovervollständigung

  • Tippe {$, um eine Liste aller Variablen im aktuellen Gültigkeitsbereich zu erhalten – einschließlich Variablen aus umgebenden {foreach}- und {for}-Blöcken sowie {var}- / {default}-Deklarationen oberhalb des Cursors.
  • Tippe . nach einer Variablen, um Eigenschaftsvorschläge für Objekt-Variablen zu erhalten (z. B. bietet ein Koordinatenfeld nach {$spawn_location. die Optionen .x, .z, .y, .radius).
  • Tippe | innerhalb eines Tags, um eine Liste unterstützter Filter zu erhalten.
  • Tippe {, um eine Liste von Latte-Tag-Snippets zu erhalten.

Hover-Dokumentation

Wenn du den Cursor über eine $Variable, $variable.eigenschaft, |filter oder ein {tag} bewegst, wird ein Tooltip mit Typ, Beschreibung oder Verwendungshinweis angezeigt.

Inline-Diagnose

Der Editor validiert Template-Ausdrücke kontinuierlich und unterstreicht Probleme:

  • Undefinierte Variablennamen werden als Warnungen markiert.
  • Eigenschaftszugriff auf einen Nicht-Objekt-Typ (z. B. {$name.x}, wenn $name ein String ist) wird markiert.
  • Unbekannte Filternamen werden markiert.

Faltung

Zusammengehörige Tag-Paare ({if}/{/if}, {foreach}/{/foreach}, {for}/{/for}, {while}/{/while}, {switch}/{/switch}, {capture}/{/capture}, {try}/{/try}, {spaceless}/{/spaceless}) können im Editor-Rand eingeklappt werden.

Gültigkeitsbereichs-Bewusstsein

Variablen, die innerhalb eines {foreach}-Blocks eingeführt werden (das Schleifen-Element und das eingebaute {$iterator}), werden nur innerhalb dieses Blocks vorgeschlagen. {$iterator} stellt first, last, counter, counter0, odd, even, total und parent (für verschachtelte Schleifen) bereit. Mit {var} oder {default} deklarierte Variablen sind ab ihrer Deklarationszeile abwärts verfügbar.