diff --git a/resources/[Developer]/[Max]/Duck_new_wartung/fxmanifest.lua b/resources/[Developer]/[Max]/Duck_new_wartung/fxmanifest.lua index 8f46131b6..c0fba6120 100644 --- a/resources/[Developer]/[Max]/Duck_new_wartung/fxmanifest.lua +++ b/resources/[Developer]/[Max]/Duck_new_wartung/fxmanifest.lua @@ -2,7 +2,11 @@ fx_version 'cerulean' game 'gta5' author 'Duck' -description 'Duck Wartungsscript' +description 'Duck Wartung' -server_script 'server.lua' shared_script 'config.lua' +server_script 'server.lua' + +dependencies { + 'qb-core' -- Notwendig für Berechtigungen +} diff --git a/resources/[Developer]/[Max]/Duck_new_wartung/server.lua b/resources/[Developer]/[Max]/Duck_new_wartung/server.lua index 91e2eba24..91fcc0361 100644 --- a/resources/[Developer]/[Max]/Duck_new_wartung/server.lua +++ b/resources/[Developer]/[Max]/Duck_new_wartung/server.lua @@ -1,47 +1,61 @@ +-- Initialisiere QBCore (kompatibel mit allen QB-Versionen) local QBCore = nil - CreateThread(function() - while QBCore == nil do - TriggerEvent('QBCore:GetObject', function(obj) QBCore = obj end) - Wait(200) - end -end) - -local function DiscordNachricht() - if Config.DiscordWebhook == "" then return end - - PerformHttpRequest(Config.DiscordWebhook, function() end, 'POST', json.encode({ - content = Config.WartungsNachricht - }), { ['Content-Type'] = 'application/json' }) -end - -RegisterCommand('wartung', function(source) - while not QBCore do + QBCore = exports['qb-core']:GetCoreObject() -- Funktioniert mit QB v2/v4 + if not QBCore then + TriggerEvent('QBCore:GetObject', function(obj) QBCore = obj end) -- Fallback für ältere QB-Versionen + end Wait(100) end + print("[Wartung] QBCore erfolgreich initialisiert!") -- Debug +end) +-- Discord-Webhook-Funktion +local function DiscordNachricht() + if Config.DiscordWebhook == "" or Config.DiscordWebhook == "HIER_WEBHOOK_EINFÜGEN" then + print("^1ERROR: Kein Discord-Webhook in config.lua gesetzt!^7") + return + end + + PerformHttpRequest(Config.DiscordWebhook, function(err, text, headers) + if err == 200 then + print("^2Discord-Nachricht erfolgreich gesendet!^7") + else + print("^1Fehler beim Senden an Discord (Code "..err.."):^7", text) + end + end, 'POST', json.encode({content = Config.WartungsNachricht}), { ['Content-Type'] = 'application/json' }) +end + +-- Hauptbefehl +RegisterCommand('wartung', function(source) local src = source + if not QBCore then + print("^1ERROR: QBCore nicht initialisiert!^7") + TriggerClientEvent('QBCore:Notify', src, "Systemfehler: QBCore nicht bereit.", "error") + return + end + local Player = QBCore.Functions.GetPlayer(src) - if not Player then - print(("^1Error: Player not found (source: %s)^7"):format(src)) + print("^1ERROR: Spieler-ID "..src.." nicht gefunden!^7") return end - + + -- Berechtigungsprüfung if not QBCore.Functions.HasPermission(src, Config.ErlaubteRolle) then - TriggerClientEvent('QBCore:Notify', src, 'Keine Berechtigung!', 'error') + TriggerClientEvent('QBCore:Notify', src, "Keine Berechtigung!", "error") + print("^3WARNUNG: "..GetPlayerName(src).." versuchte, Wartung zu starten!^7") return end - - - for k, v in pairs(QBCore.Functions.GetPlayers()) do - TriggerClientEvent('QBCore:Notify', v, 'Wartungsarbeiten beginnen!', 'error') + + -- Benachrichtige alle Spieler + for _, playerId in pairs(QBCore.Functions.GetPlayers()) do + TriggerClientEvent('QBCore:Notify', playerId, "Wartungsarbeiten beginnen!", "error", 10000) end - - + + -- Discord & Logging DiscordNachricht() - - TriggerClientEvent('QBCore:Notify', src, 'Wartung angekündigt!', 'success') - print(("^5[Wartung]^7 Wartung wurde von %s gestartet"):format(GetPlayerName(src))) + TriggerClientEvent('QBCore:Notify', src, "Wartung gestartet!", "success") + print("^5[Wartung]^7 Gestartet von "..GetPlayerName(src).." (ID: "..src..")") end, false)