# Config

```lua
Config = {}

-- ============================================================================
-- GRUNDEINSTELLUNGEN
-- ============================================================================

-- Framework-Einstellungen
Config.Framework = "ESX" -- Mögliche Werte: "ESX", "QBCore"

-- Prefix-Einstellungen
Config.Prefix = true               -- true = Prefix wird genutzt, false = nur License
Config.PrefixValue = "char1:"      -- Standard Prefix

-- App-Konfiguration
Config.AppName = "Alarmos"
Config.AppDescription = "Alarmierungsapp für Rettungskräfte"
Config.AppDeveloper = "xDragon11x"
Config.AppIdentifier = "alarmos"
Config.AppSize = 75000 -- App-Größe in Bytes

-- Telefon-Integration
Config.PhoneResource = "lb-phone" -- Name der Telefon-Ressource
Config.DefaultApp = false -- Soll die App standardmäßig installiert sein?
Config.FixBlur = true -- Blur-Effekt reparieren

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

-- Erlaubte Jobs und deren Grade für Admin-Funktionen
Config.AllowedJobs = {
    ["police"] = {4, 5},      -- Polizei Grade 4-5
    ["ambulance"] = {3, 4, 5}, -- Rettungsdienst Grade 3-5
    ["fire"] = {2, 3, 4},     -- Feuerwehr Grade 2-4
}

-- Melder-Labels für bessere Darstellung
Config.MelderLabels = {
    ["melder_sb_rd"] = "Spitzenbedarf RD",
    ["melder_sb_wl"] = "Spitzenbedarf FW", 
    ["melderkh"] = "Krankenhaus Ärzte",
    ["melderkh2"] = "Krankenhaus Personal",
}

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

-- Datenbank-Spalten
Config.DatabaseColumns = {
    AlarmosColumn = "alarmos",           -- Spalte für Alarmos-Berechtigung
    MelderColumn = "alarmos_melder",     -- Spalte für Melder-Berechtigungen
    IdentifierColumn = "identifier"      -- Spalte für Spieler-Identifier
}

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

-- Standard-Benachrichtigungen
Config.Notifications = {
    -- Erfolg
    Success = {
        AccessGranted = "Alarmos-Zugang für %s erteilt (%s)",
        AccessRemoved = "Alarmos-Zugang für %s entfernt",
        MissionAccepted = "✅ Einsatz angenommen",
        MissionDeclined = "❌ Einsatz abgelehnt",
        WaypointSet = "GPS-Waypoint wurde gesetzt",
    },
    
    -- Fehler
    Error = {
        NoPermission = "Sie haben keine Berechtigung für diese Aktion!",
        PlayerNotFound = "Ziel-Spieler nicht gefunden!",
        DatabaseError = "Datenbank-Update fehlgeschlagen!",
        InvalidCoords = "Ungültige Koordinaten",
        NoActiveMission = "Kein aktiver Einsatz",
        LicenseCheckFailed = "Lizenzprüfung fehlgeschlagen",
        LoadEmergencyFailed = "Fehler beim Laden des aktuellen Einsatzes",
        LoadMissionsFailed = "Fehler beim Laden der angenommenen Einsätze",
    },
    
    -- Info
    Info = {
        NewEmergency = "🚨 Neuer Einsatz",
        AccessChanged = "Ihr Alarmos-Zugang wurde %s von %s (%s)",
        MissionAcceptedContent = "GPS-Waypoint wurde gesetzt",
        MissionDeclinedContent = "Sie haben den Einsatz abgelehnt",
    }
}

-- Benachrichtigungs-Zeiten (in Millisekunden)
Config.NotificationTimeouts = {
    Default = 5000,
    Short = 3000,
    Long = 8000,
    VeryLong = 10000,
    LicenseCheck = 1500,
    StatusUpdate = 2000,
    StatusUpdateLong = 3000,
}

-- ============================================================================
-- UI-EINSTELLUNGEN
-- ============================================================================

-- Status-Texte
Config.StatusTexts = {
    Ready = "Bereit",
    Alarm = "🚨 Alarm!",
    Accepted = "✅ Angenommen",
    Declined = "❌ Abgelehnt",
    Active = "Aktiv",
}

-- Leere Zustände
Config.EmptyStates = {
    NoMissions = {
        Icon = "📋",
        Title = "Keine angenommenen Einsätze",
        Subtitle = "Sie haben noch keine Einsätze angenommen"
    },
    LoadError = {
        Icon = "❌",
        Title = "Fehler beim Laden",
        Subtitle = "Einsätze konnten nicht geladen werden"
    }
}

-- ============================================================================
-- KOORDINATEN-VERARBEITUNG
-- ============================================================================

-- Koordinaten-Pattern für GPS-Waypoint
Config.CoordinatePattern = "([%-]?%d+%.?%d*) ([%-]?%d+%.?%d*) ([%-]?%d+%.?%d*)"

-- ============================================================================
-- TIMEOUT-EINSTELLUNGEN
-- ============================================================================

-- Lizenz-Check Timeout (in Ticks)
Config.LicenseCheckTimeout = 50

-- ============================================================================
-- EVENT-NAMEN
-- ============================================================================

-- Server-Events
Config.Events = {
    -- Lizenz-Check
    CheckLicense = "ffalarm:checkLicense",
    CheckLicenseResponse = "ffalarm:checkLicenseResponse",
    
    -- Notfall-Events
    NewEmergency = "ffalarm:newEmergency",
    EmergencyDispatch = "emergencydispatch:einsatz:alarmierung:freiwillig",
    
    -- Mission-Events
    AcceptMission = "alarmos:acceptMission",
    GetAcceptedMissions = "alarmos:getAcceptedMissions",
    AcceptedMissionsResponse = "alarmos:acceptedMissionsResponse",
    
    -- Admin-Events
    ManageAccess = "alarmos:manageAccess",
    GetMelderList = "alarmos:getMelderList",
    MelderListResponse = "alarmos:melderListResponse",
    CheckPlayerPermissions = "alarmos:checkPlayerPermissions",
    ShowNotification = "alarmos:showNotification",
    RecheckLicense = "alarmos:recheckLicense",
}

-- ============================================================================
-- DEBUG-EINSTELLUNGEN
-- ============================================================================

-- Debug-Modus (für Entwickler)
Config.Debug = false

-- Debug-Ausgaben
Config.DebugMessages = {
    LicenseCheck = "Lizenzprüfung fehlgeschlagen:",
    LoadEmergency = "Fehler beim Laden des aktuellen Einsatzes:",
    LoadMissions = "Fehler beim Laden der angenommenen Einsätze:",
    AcceptMission = "Fehler beim Annehmen des Einsatzes:",
    DeclineMission = "Fehler beim Ablehnen des Einsatzes:",
    NoMissionToAccept = "Kein Einsatz zum Annehmen vorhanden",
    NoMissionToDecline = "Kein Einsatz zum Ablehnen vorhanden",
    LicenseStatusChange = "Alarmos: Lizenz-Status geändert zu:",
}

-- ============================================================================
-- PERFORMANCE-EINSTELLUNGEN
-- ============================================================================

-- Wartezeiten (in Millisekunden)
Config.WaitTimes = {
    ResourceStart = 500,  -- Wartezeit beim Start der Telefon-Ressource
    LicenseCheck = 100,   -- Wartezeit zwischen Lizenz-Checks
}

-- ============================================================================
-- SICHERHEITSEINSTELLUNGEN
-- ============================================================================

-- Maximale Anzahl angenommenen Einsätze pro Spieler
Config.MaxAcceptedMissions = 100

-- Session-Timeout (in Sekunden)
Config.SessionTimeout = 3600 -- 1 Stunde

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

-- Verfügbare Exports
Config.Exports = {
    CheckPlayerAuthorization = true,
    GetPlayerIdentifier = true,
    CanManageAlarmos = true,
}

return Config

```


---

# 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/alarmos/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.
