Zum Hauptinhalt springen

Scheduler

Der Scheduler hilft dir dabei, wiederkehrende Admin-Aufgaben auf deinem Server zu automatisieren.

Anstatt Änderungen täglich oder wöchentlich manuell durchzuführen, kannst du Aufgaben einmal erstellen und dzbot erledigt sie zur richtigen Zeit.

Was du automatisieren kannst

Der Scheduler unterstützt derzeit drei Kategorien:

Server-Aufgaben

  • Server-Neustart: Plane einen Neustart zu einer bestimmten Zeit.
  • Fahrzeug-Wipe: Bereite einen Fahrzeug-Wipe-Zyklus vor.
  • Servereinstellungen ändern: Wende ausgewählte Einstellungsänderungen automatisch an.

Mods-Aufgaben

  • Mods installieren/deinstallieren: Mod-Konfigurationen ein- oder ausschalten.
  • Mod-Konfiguration ändern: Ausgewählte Konfigurationsfelder einer Mod-Einrichtung aktualisieren.

Aktionen-Aufgaben

  • Aktion aktivieren/deaktivieren: Eine Aktion ein- oder ausschalten.
  • Aktionskonfiguration ändern: Ausgewählte Konfigurationswerte einer Aktion aktualisieren.
  • Benutzerdefinierte Aktion: Schreibe ein Lua-Skript, das direkt nach dem von dir festgelegten Zeitplan ausgeführt wird.

Benutzerdefinierte Aktion

Benutzerdefinierte Aktions-Aufgaben ermöglichen es dir, beliebigen Lua-Code zu schreiben, der nach einem Zeitplan ausgeführt wird – ohne an ein bestimmtes Log-Ereignis gebunden zu sein. Das Skript hat Zugriff auf alle Aktionsfunktionen (discord, server, player, faction, math), erhält jedoch keine data- oder config-Globals, da kein Ereigniskontext und kein Konfigurationsschema vorhanden ist.

Dies ist nützlich für wiederkehrende Wartungsarbeiten, zum Beispiel:

  • Tägliche oder wöchentliche Belohnungen an alle Spieler einer Gruppe auszahlen
  • Geplante Ankündigungen in einen Discord-Kanal senden
  • Guthabenänderungen basierend auf Fraktionszugehörigkeit oder Aktivität anwenden
-- Beispiel: Wöchentliches Gehalt für alle aktiven Fraktionsmitglieder
local members = player.list({ in_faction = true, last_online_after = "-7d" });

for _, p in ipairs(members) do
player.change_balance(p.username, 500, "Wöchentliches Fraktionsgehalt");
end

Verwende print() im Skript, um Debug-Ausgaben in das Aufgabenprotokoll zu schreiben.

Ausführungsmodi und Zeitplanoptionen

Jede Aufgabe kann in einem von zwei Ausführungsmodi erstellt werden:

  • Einmal ausführen: Wird einmalig zum genau gewählten Datum/Zeit ausgeführt.
  • Wiederkehrend: Läuft weiter in einem wiederholenden Zeitplan.

Wiederkehrende Zeitpläne unterstützen:

  • Stündlich
  • Täglich (ein- oder mehrmals pro Tag)
  • Wöchentlich (ausgewählte Wochentage, optionales Intervall in Wochen)
  • Monatlich nach Kalendertag
  • Monatlich nach Wochentag (z. B. erster Montag oder letzter Freitag)

Du kannst auch ein optionales Startdatum festlegen, um zu verzögern, wann ein wiederkehrender Zeitplan aktiv wird.

Verhalten des Schedulers

  • Aufgaben können pausiert werden. Pausierte Aufgaben werden übersprungen, bis sie fortgesetzt werden.
  • Jetzt ausführen reiht eine Aufgabe sofort ein und hebt die Pause auf.
  • Wiederkehrende Aufgaben werden nach erfolgreicher Ausführung automatisch auf den nächsten Ablauf verschoben.
  • Einmalaufgaben enden nach einmaliger Ausführung.
  • Du kannst eine Aufgabe duplizieren, um die gleiche Einrichtung schnell erneut zu verwenden.
  • Jede Aufgabe hat eine Verlaufshistorie, damit du überprüfen kannst, was passiert ist.

Statusanzeige

  • Ausstehend: Wartet auf Ausführung.
  • Wird ausgeführt: Wird gerade bearbeitet.
  • Erfolgreich: Wurde erfolgreich abgeschlossen.
  • Fehlgeschlagen: Wurde mit einem Fehler beendet.
  • Abgebrochen: Wurde gestoppt, da kein gültiger nächster Zeitplan berechnet werden konnte.
  • Pausiert: Vom Admin manuell pausiert.

Zeitzonenhandhabung

Der Scheduler verwendet die Serverzeitzone aus den Einstellungen.

Falls Ausführungszeiten falsch erscheinen, überprüfe zuerst die Serverzeitzone und verifiziere anschließend die geplante Zeit der Aufgabe.

Discord-Benachrichtigungen

Jede Aufgabe kann nach der Ausführung eine Nachricht an Discord senden.

Um dies zu nutzen:

  1. Stelle sicher, dass dein Discord-Bot auf dem Server installiert ist.
  2. Aktiviere Discord-Benachrichtigung in der Aufgabe.
  3. Wähle einen Discord-Textkanal aus.
  4. Füge eine Benachrichtigungsnachricht hinzu.

Optional: Aktiviere Nur bei Erfolg benachrichtigen, wenn die Nachricht nur gesendet werden soll, wenn die Aufgabe erfolgreich war.

Empfohlener Workflow für Admins

  1. Beginne mit einer klar definierten, einfachen Aufgabe (z. B. wöchentlicher Neustart).
  2. Speichere sie als pausiert und überprüfe Zeitplan/Zeitzone.
  3. Nutze Jetzt ausführen, um das Verhalten einmalig zu testen.
  4. Überprüfe die Logs und passe gegebenenfalls an.
  5. Hebe die Pause auf, wenn du bereit für die vollständige Automatisierung bist.

Gute betriebliche Praktiken

  • Halte Aufgabendeskriptionen klar, damit dein Team Zweck und Auswirkungen versteht.
  • Teste riskante Aufgaben (Mod-Änderungen, Aktionskonfigurationsänderungen) einmal manuell, bevor sie wiederkehrend werden.
  • Verwende Duplizieren bei der Erstellung von Varianten, um Setup-Fehler zu vermeiden.
  • Überprüfe fehlgeschlagene Aufgaben regelmäßig, damit die Automatisierung zuverlässig bleibt.

Betriebskontrollen

Falls eine Aufgabe nicht ausgeführt wird, überprüfe:

  • ob die Aufgabe nicht pausiert ist
  • ob der Zeitplan/die Zeit gültig ist
  • ob die Serverzeitzone korrekt in den Servereinstellungen konfiguriert ist

Falls Discord-Benachrichtigungen fehlen, überprüfe:

  • Bot-Installation und Discord-Verbindung auf dem Server
  • Kanal und Nachricht, die in der Aufgabe gesetzt sind
  • Verhalten bei Nur bei Erfolg benachrichtigen (fehlgeschlagene Ausführungen benachrichtigen nicht)

Verwandte Dokumentation