206 lines
		
	
	
	
		
			8.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			206 lines
		
	
	
	
		
			8.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local QBCore = exports[Config.CoreName]:GetCoreObject()
 | |
| local nvMode = 0
 | |
| local thermalMode = 0
 | |
| 
 | |
| -- 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 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
 | |
| 
 | |
| -- Nachtsicht-Befehl
 | |
| RegisterCommand('toggleNV', function()
 | |
|     local ped = PlayerPedId()
 | |
|     
 | |
|     if QBCore.Functions.HasItem(Config.NVItem) then
 | |
|         local gender = IsPedMale(ped) and "male" or "female"
 | |
|         local glasses = Config.Glasses[gender]
 | |
|         
 | |
|         -- Prüfen, ob der Spieler eine der Brillen trägt
 | |
|         local canToggle = not Config.CheckHelmet
 | |
|         if Config.CheckHelmet then
 | |
|             if IsWearingGlasses(ped, glasses.up) or IsWearingGlasses(ped, glasses.nvDown) then
 | |
|                 canToggle = true
 | |
|             end
 | |
|         end
 | |
| 
 | |
|         if canToggle then
 | |
|             -- Deaktiviere zuerst Wärmebild, falls aktiv
 | |
|             if thermalMode > 0 then
 | |
|                 SetSeethrough(false)
 | |
|                 thermalMode = 0
 | |
|                 -- Wenn die Wärmebildbrille getragen wird, klappe sie hoch
 | |
|                 if IsWearingGlasses(ped, glasses.thermalDown) then
 | |
|                     SetGlasses(ped, glasses.up)
 | |
|                 end
 | |
|             end
 | |
|             
 | |
|             -- Nachtsicht-Modus umschalten
 | |
|             if nvMode == 0 then
 | |
|                 -- Wenn die Brille hochgeklappt ist, klappe sie runter
 | |
|                 if IsWearingGlasses(ped, glasses.up) then
 | |
|                     SetGlasses(ped, glasses.nvDown)
 | |
|                 end
 | |
|                 QBCore.Functions.Notify('Nachtsicht aktiviert!')
 | |
|                 SetNightvision(true)
 | |
|                 nvMode = 1
 | |
|             else
 | |
|                 -- Wenn die Brille runtergeklappt ist, klappe sie hoch
 | |
|                 if IsWearingGlasses(ped, glasses.nvDown) then
 | |
|                     SetGlasses(ped, glasses.up)
 | |
|                 end
 | |
|                 QBCore.Functions.Notify('Nachtsicht deaktiviert!')
 | |
|                 SetNightvision(false)
 | |
|                 nvMode = 0
 | |
|             end
 | |
|         else
 | |
|             QBCore.Functions.Notify('Du trägst keine Nachtsichtbrille!', 'error')
 | |
|         end
 | |
|     else
 | |
|         QBCore.Functions.Notify('Du hast kein Nachtsichtgerät!', 'error')
 | |
|     end
 | |
| end)
 | |
| 
 | |
| -- Wärmebild-Befehl
 | |
| RegisterCommand('toggleThermal', function()
 | |
|     local ped = PlayerPedId()
 | |
|     
 | |
|     if QBCore.Functions.HasItem(Config.ThermalItem) then
 | |
|         local gender = IsPedMale(ped) and "male" or "female"
 | |
|         local glasses = Config.Glasses[gender]
 | |
|         
 | |
|         -- Prüfen, ob der Spieler eine der Brillen trägt
 | |
|         local canToggle = not Config.CheckHelmet
 | |
|         if Config.CheckHelmet then
 | |
|             if IsWearingGlasses(ped, glasses.up) or IsWearingGlasses(ped, glasses.thermalDown) then
 | |
|                 canToggle = true
 | |
|             end
 | |
|         end
 | |
| 
 | |
|         if canToggle then
 | |
|             -- Deaktiviere zuerst Nachtsicht, falls aktiv
 | |
|             if nvMode > 0 then
 | |
|                 SetNightvision(false)
 | |
|                 nvMode = 0
 | |
|                 -- Wenn die Nachtsichtbrille getragen wird, klappe sie hoch
 | |
|                 if IsWearingGlasses(ped, glasses.nvDown) then
 | |
|                     SetGlasses(ped, glasses.up)
 | |
|                 end
 | |
|             end
 | |
|             
 | |
|             -- Wärmebild-Modus umschalten
 | |
|             if thermalMode == 0 then
 | |
|                 -- Wenn die Brille hochgeklappt ist, klappe sie runter
 | |
|                 if IsWearingGlasses(ped, glasses.up) then
 | |
|                     SetGlasses(ped, glasses.thermalDown)
 | |
|                 end
 | |
|                 QBCore.Functions.Notify('Wärmebild aktiviert!')
 | |
|                 SetSeethrough(true)
 | |
|                 thermalMode = 1
 | |
|             else
 | |
|                 -- Wenn die Brille runtergeklappt ist, klappe sie hoch
 | |
|                 if IsWearingGlasses(ped, glasses.thermalDown) then
 | |
|                     SetGlasses(ped, glasses.up)
 | |
|                 end
 | |
|                 QBCore.Functions.Notify('Wärmebild deaktiviert!')
 | |
|                 SetSeethrough(false)
 | |
|                 thermalMode = 0
 | |
|             end
 | |
|         else
 | |
|             QBCore.Functions.Notify('Du trägst keine Wärmebildbrille!', 'error')
 | |
|         end
 | |
|     else
 | |
|         QBCore.Functions.Notify('Du hast kein Wärmebildgerät!', 'error')
 | |
|     end
 | |
| end)
 | |
| 
 | |
| -- Tastenbelegungen registrieren
 | |
| RegisterKeyMapping('toggleNV', 'Nachtsicht umschalten', 'keyboard', Config.NVKey)
 | |
| RegisterKeyMapping('toggleThermal', 'Wärmebild umschalten', 'keyboard', Config.ThermalKey)
 | |
| 
 | |
| -- Event zum Umschalten der Brille
 | |
| RegisterNetEvent('nightvision:toggleGlasses', function(mode)
 | |
|     local ped = PlayerPedId()
 | |
|     local gender = IsPedMale(ped) and "male" or "female"
 | |
|     local glasses = Config.Glasses[gender]
 | |
|     
 | |
|     -- Alle Sichtmodi deaktivieren
 | |
|     DisableAllVisionModes()
 | |
|     
 | |
|     if mode == 'nightvision' then
 | |
|         -- Wenn keine der konfigurierten Brillen getragen wird, setze hochgeklappte Version auf
 | |
|         if not (IsWearingGlasses(ped, glasses.up) or 
 | |
|                 IsWearingGlasses(ped, glasses.nvDown) or 
 | |
|                 IsWearingGlasses(ped, glasses.thermalDown)) then
 | |
|             SetGlasses(ped, glasses.up)
 | |
|             QBCore.Functions.Notify('Nachtsichtbrille aufgesetzt!')
 | |
|         -- Wenn hochgeklappte Brille getragen wird, klappe sie runter und aktiviere Nachtsicht
 | |
|         elseif IsWearingGlasses(ped, glasses.up) then
 | |
|             SetGlasses(ped, glasses.nvDown)
 | |
|             QBCore.Functions.Notify('Nachtsicht aktiviert!')
 | |
|             SetNightvision(true)
 | |
|             nvMode = 1
 | |
|         -- Wenn runtergeklappte Nachtsichtbrille getragen wird, klappe sie hoch und deaktiviere Nachtsicht
 | |
|         elseif IsWearingGlasses(ped, glasses.nvDown) then
 | |
|             SetGlasses(ped, glasses.up)
 | |
|             QBCore.Functions.Notify('Nachtsicht deaktiviert!')
 | |
|             nvMode = 0
 | |
|         -- Wenn Wärmebildbrille getragen wird, wechsle zu Nachtsichtbrille
 | |
|         elseif IsWearingGlasses(ped, glasses.thermalDown) then
 | |
|             SetGlasses(ped, glasses.nvDown)
 | |
|             QBCore.Functions.Notify('Nachtsicht aktiviert!')
 | |
|             SetNightvision(true)
 | |
|             nvMode = 1
 | |
|         end
 | |
|     elseif mode == 'thermal' then
 | |
|         -- Wenn keine der konfigurierten Brillen getragen wird, setze hochgeklappte Version auf
 | |
|         if not (IsWearingGlasses(ped, glasses.up) or 
 | |
|                 IsWearingGlasses(ped, glasses.nvDown) or 
 | |
|                 IsWearingGlasses(ped, glasses.thermalDown)) then
 | |
|             SetGlasses(ped, glasses.up)
 | |
|             QBCore.Functions.Notify('Wärmebildbrille aufgesetzt!')
 | |
|         -- Wenn hochgeklappte Brille getragen wird, klappe sie runter und aktiviere Wärmebild
 | |
|         elseif IsWearingGlasses(ped, glasses.up) then
 | |
|             SetGlasses(ped, glasses.thermalDown)
 | |
|             QBCore.Functions.Notify('Wärmebild aktiviert!')
 | |
|             SetSeethrough(true)
 | |
|             thermalMode = 1
 | |
|         -- Wenn runtergeklappte Wärmebildbrille getragen wird, klappe sie hoch und deaktiviere Wärmebild
 | |
|         elseif IsWearingGlasses(ped, glasses.thermalDown) then
 | |
|             SetGlasses(ped, glasses.up)
 | |
|             QBCore.Functions.Notify('Wärmebild deaktiviert!')
 | |
|             thermalMode = 0
 | |
|         -- Wenn Nachtsichtbrille getragen wird, wechsle zu Wärmebildbrille
 | |
|         elseif IsWearingGlasses(ped, glasses.nvDown) then
 | |
|             SetGlasses(ped, glasses.thermalDown)
 | |
|             QBCore.Functions.Notify('Wärmebild aktiviert!')
 | |
|             SetSeethrough(true)
 | |
|             thermalMode = 1
 | |
|         end
 | |
|     end
 | |
| end)
 | |
| 
 | |
| -- Behalte den alten Event-Namen für Kompatibilität
 | |
| RegisterNetEvent('nightvision:toggleHelmet', function()
 | |
|     TriggerEvent('nightvision:toggleGlasses', 'nightvision')
 | |
| end)
 | 
