# Config

```lua
Config = {}

-- ====================================
-- ALLGEMEINE EINSTELLUNGEN
-- ====================================

-- Sperrdauer in Tagen nach Kündigung
Config.LockDuration = 7 -- Standard: 7 Tage

-- Framework (ESX wird aktuell unterstützt)
Config.Framework = 'ESX'

-- ESX Export (new oder old)
-- 'new' = export 'es_extended':getSharedObject()
-- 'old' = TriggerEvent('esx:getSharedObject')
Config.ESXVersion = 'new'

-- Zeitformat für Anzeige
Config.TimeFormat = '%d.%m.%Y %H:%M:%S' -- DD.MM.YYYY HH:MM:SS

-- Debug Modus (zeigt zusätzliche Informationen in der Konsole)
Config.Debug = false

-- ====================================
-- BERECHTIGUNGEN
-- ====================================

-- Welche Admin-Gruppen können die Sperre entfernen?
Config.AdminGroups = {
    'admin',
    'superadmin',
    'mod'
}

-- ====================================
-- JOBS KONFIGURATION
-- ====================================

-- Hauptjobs (Diese Jobs sind während der Sperre NICHT verfügbar)
Config.MainJobs = {
    'police',
    'ambulance',
    'mechanic',
    'taxi',
    'lawyer',
    'realestateagent',
    'cardealer',
    'banker',
    'government',
    'sheriff',
    'fib',
    'doj'
}

-- Nebenjobs (Diese Jobs sind während der Sperre WEITERHIN verfügbar)
Config.SideJobs = {
    'unemployed',
    'delivery',
    'fisher',
    'miner',
    'lumberjack',
    'fueler',
    'tailor',
    'slaughterer',
    'reporter'
}

-- Sollen Spieler in Nebenjobs automatisch versetzt werden, wenn sie von einem Hauptjob gefeuert werden?
Config.AutoAssignSideJob = true

-- Welcher Job soll automatisch zugewiesen werden? (Muss in SideJobs enthalten sein)
Config.DefaultSideJob = 'unemployed'
Config.DefaultSideJobGrade = 0

-- ====================================
-- INTEGRATIONEN
-- ====================================

-- Jobs Creator Integration
Config.EnableJobsCreatorIntegration = true

-- CS MultiJob Integration
Config.EnableCSMultiJobIntegration = true

-- ====================================
-- BENACHRICHTIGUNGEN
-- ====================================

-- Benachrichtigungstyp
-- 'esx' = ESX Standard Notifications
-- 'mythic_notify' = Mythic Notify
-- 'okokNotify' = okok Notify
-- 'custom' = Eigenes System (muss in server/main.lua angepasst werden)
Config.NotifyType = 'esx'

-- Benachrichtigungstexte
Config.Notifications = {
    -- Spieler Benachrichtigungen
    ['lock_active'] = 'Du wurdest von einem Hauptjob gefeuert! Fraktionssperre aktiv für %s Tage.',
    ['lock_check_active'] = 'Du hast noch eine aktive Fraktionssperre bis zum %s.',
    ['lock_check_none'] = 'Du hast keine aktive Fraktionssperre.',
    ['cannot_join_locked'] = 'Du kannst diesem Hauptjob nicht beitreten! Fraktionssperre aktiv bis: %s',
    ['sidejob_assigned'] = 'Du wurdest automatisch zum Nebenjob %s zugewiesen.',
    
    -- Admin Benachrichtigungen
    ['lock_removed_admin'] = 'Du hast die Fraktionssperre von %s entfernt.',
    ['lock_removed_target'] = 'Ein Admin hat deine Fraktionssperre entfernt.',
    ['no_lock_found'] = 'Spieler %s hat keine aktive Fraktionssperre.',
    ['player_not_found'] = 'Spieler nicht gefunden.',
    ['no_permission'] = 'Du hast keine Berechtigung für diesen Befehl.',
    ['invalid_usage'] = 'Verwendung: /removefraksperre [Spieler ID]',
    
    -- System Benachrichtigungen
    ['lock_created'] = '[FRAKSPERRE] Sperre erstellt für Spieler %s (Identifier: %s) - Job: %s - Dauer: %s Tage',
    ['lock_removed'] = '[FRAKSPERRE] Sperre entfernt für Spieler %s (Identifier: %s)',
    ['lock_expired'] = '[FRAKSPERRE] Sperre abgelaufen für Identifier: %s',
}

-- ====================================
-- ERWEITERTE OPTIONEN
-- ====================================

-- Soll der Spieler eine Discord-Benachrichtigung erhalten? (Webhook erforderlich)
Config.EnableDiscordLogs = false

-- Discord Webhook URL (wenn EnableDiscordLogs = true)
Config.DiscordWebhook = 'YOUR_WEBHOOK_URL_HERE'

-- Discord Embed Farbe
Config.DiscordColor = 15158332 -- Rot

-- Soll die Sperre auch nach Server-Restart bestehen bleiben? (Verwendet Datenbank)
Config.PersistentLocks = true

-- Prüfe beim Server-Start auf abgelaufene Sperren und entferne sie automatisch
Config.CleanExpiredLocksOnStart = true

-- Intervall (in Minuten) zur automatischen Prüfung auf abgelaufene Sperren
Config.CheckExpiredInterval = 60 -- Alle 60 Minuten

-- Sollen Spieler eine Warnung erhalten, wenn ihre Sperre bald abläuft?
Config.WarnBeforeExpiry = true
Config.WarnDaysBeforeExpiry = 1 -- Warnung 1 Tag vor Ablauf

-- ====================================
-- UI EINSTELLUNGEN (OPTIONAL)
-- ====================================

-- Soll ein UI-Menü für die Sperre angezeigt werden? (Erfordert HTML/CSS/JS)
Config.EnableUI = false

-- UI Position
Config.UIPosition = 'top-right' -- 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'center'

-- ====================================
-- DATENBANK EINSTELLUNGEN
-- ====================================

-- Tabellenname in der Datenbank
Config.DatabaseTable = 'faction_locks'

-- Sollen alte Einträge nach X Tagen automatisch gelöscht werden?
Config.AutoDeleteOldEntries = true
Config.DeleteEntriesAfterDays = 30 -- Lösche Einträge nach 30 Tagen

-- ====================================
-- WHITELIST (OPTIONAL)
-- ====================================

-- Spieler-Identifier, die von der Fraktionssperre ausgenommen sind
Config.WhitelistedIdentifiers = {
    -- 'license:abc123',
    -- 'steam:110000123456789'
}

-- Sollen Admins von der Sperre ausgenommen sein?
Config.ExemptAdmins = false

-- ====================================
-- EXPORT FUNKTIONEN
-- ====================================

-- Diese Funktionen stehen für andere Scripts zur Verfügung:
--
-- SERVER SIDE:
-- exports['wavecore_fraksperre']:AddFactionLock(identifier, jobName, days)
-- exports['wavecore_fraksperre']:RemoveFactionLock(identifier)
-- exports['wavecore_fraksperre']:HasActiveLock(identifier)
-- exports['wavecore_fraksperre']:GetLockInfo(identifier)
-- exports['wavecore_fraksperre']:IsMainJob(jobName)
-- exports['wavecore_fraksperre']:IsSideJob(jobName)
--
-- CLIENT SIDE:
-- exports['wavecore_fraksperre']:CheckMyLock() -- Gibt Lock-Info des aktuellen Spielers zurück
-- exports['wavecore_fraksperre']:GetRemainingLockTime() -- Gibt verbleibende Zeit in Sekunden zurück


```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.wavecore.dev/wavecore/fraksperre/config.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
