local QBCore = exports[Config.CoreName]:GetCoreObject() local nvMode = 0 local thermalMode = 0 local flashlightActive = false -- Funktion zum Prüfen des Charaktergeschlechts local function IsPedMale(ped) return GetEntityModel(ped) == `mp_m_freemode_01` end -- Funktion zum Vergleichen der aktuellen Brille mit einer Konfigurationsbrille local function IsWearingGlasses(ped, glassesConfig) local currentDrawable = GetPedPropIndex(ped, 1) local currentTexture = GetPedPropTextureIndex(ped, 1) return currentDrawable == glassesConfig.drawable and currentTexture == glassesConfig.texture end -- Funktion zum Prüfen, ob der Spieler den richtigen Helm trägt local function IsWearingFlashlightHelmet(ped) local gender = IsPedMale(ped) and "male" or "female" local helmetConfig = Config.FlashlightHelmet[gender] local currentDrawable = GetPedPropIndex(ped, 0) -- 0 ist der Index für Helme local currentTexture = GetPedPropTextureIndex(ped, 0) return currentDrawable == helmetConfig.drawable and currentTexture == helmetConfig.texture end -- Funktion zum Setzen einer Brille aus der Konfiguration local function SetGlasses(ped, glassesConfig) SetPedPropIndex(ped, 1, glassesConfig.drawable, glassesConfig.texture, true) end -- Funktion zum Deaktivieren aller Sichtmodi local function DisableAllVisionModes() SetNightvision(false) SetSeethrough(false) nvMode = 0 thermalMode = 0 end -- Funktion zum Aktivieren der Helm-Lampe (GTA-Style) local function ToggleHelmetFlashlight() local ped = PlayerPedId() -- Prüfen, ob der Spieler den richtigen Helm trägt if not IsWearingFlashlightHelmet(ped) then QBCore.Functions.Notify('Du trägst keinen Helm mit Lampe!', 'error') return end -- Taschenlampe umschalten mit nativer GTA-Funktion if flashlightActive then SetFlashLightKeepOnWhileMoving(false) TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'flashlight', 0.4) flashlightActive = false QBCore.Functions.Notify('Helm-Lampe ausgeschaltet!') else SetFlashLightKeepOnWhileMoving(true) TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'flashlight', 0.4) flashlightActive = true QBCore.Functions.Notify('Helm-Lampe eingeschaltet!') end end -- Thread zur Überprüfung, ob der Helm noch getragen wird Citizen.CreateThread(function() while true do Citizen.Wait(1000) -- Überprüfe jede Sekunde if flashlightActive then local ped = PlayerPedId() -- Prüfen, ob der Spieler noch den richtigen Helm trägt if not IsWearingFlashlightHelmet(ped) then -- Deaktiviere die Lampe, wenn der Helm abgenommen wurde SetFlashLightKeepOnWhileMoving(false) flashlightActive = false QBCore.Functions.Notify('Helm-Lampe ausgeschaltet, da der Helm abgenommen wurde!', 'error') end end end end) -- Nachtsicht-Befehl RegisterCommand('toggleNV', function() -- [Rest des Codes bleibt unverändert] end) -- Wärmebild-Befehl RegisterCommand('toggleThermal', function() -- [Rest des Codes bleibt unverändert] end) -- Helm-Lampe-Befehl RegisterCommand('toggleHelmetLight', function() ToggleHelmetFlashlight() end) -- Tastenbelegungen registrieren RegisterKeyMapping('toggleNV', 'Nachtsicht umschalten', 'keyboard', Config.NVKey) RegisterKeyMapping('toggleThermal', 'Wärmebild umschalten', 'keyboard', Config.ThermalKey) RegisterKeyMapping('toggleHelmetLight', 'Helm-Lampe umschalten', 'keyboard', Config.FlashlightKey) -- Event zum Umschalten der Brille RegisterNetEvent('nightvision:toggleGlasses', function(mode) -- [Rest des Codes bleibt unverändert] end) -- Behalte den alten Event-Namen für Kompatibilität RegisterNetEvent('nightvision:toggleHelmet', function() TriggerEvent('nightvision:toggleGlasses', 'nightvision') end) -- Cleanup beim Ressource-Stop AddEventHandler('onResourceStop', function(resourceName) if (GetCurrentResourceName() ~= resourceName) then return end -- Deaktiviere alle Effekte DisableAllVisionModes() -- Deaktiviere die Taschenlampe if flashlightActive then SetFlashLightKeepOnWhileMoving(false) flashlightActive = false end end)