From a4033a5c2655ae6a8f3fd04d48da786de19623c6 Mon Sep 17 00:00:00 2001 From: Nordi98 Date: Mon, 30 Jun 2025 00:51:12 +0200 Subject: [PATCH] Update cl_main.lua --- .../[tools]/thommie-nightvision/cl_main.lua | 99 ++++++++++--------- 1 file changed, 55 insertions(+), 44 deletions(-) diff --git a/resources/[tools]/thommie-nightvision/cl_main.lua b/resources/[tools]/thommie-nightvision/cl_main.lua index fdddd1bcc..1cc9a5b69 100644 --- a/resources/[tools]/thommie-nightvision/cl_main.lua +++ b/resources/[tools]/thommie-nightvision/cl_main.lua @@ -7,6 +7,19 @@ 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) @@ -20,14 +33,13 @@ RegisterCommand('toggleNV', function() local ped = PlayerPedId() if QBCore.Functions.HasItem(Config.NVItem) then - local currentGlasses = GetPedPropIndex(ped, 1) 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 currentGlasses == Config.Glasses[gender].up or - currentGlasses == Config.Glasses[gender].nvDown then + if IsWearingGlasses(ped, glasses.up) or IsWearingGlasses(ped, glasses.nvDown) then canToggle = true end end @@ -37,25 +49,25 @@ RegisterCommand('toggleNV', function() if thermalMode > 0 then SetSeethrough(false) thermalMode = 0 - -- Wenn die Brille runtergeklappt ist, klappe sie hoch - if currentGlasses == Config.Glasses[gender].thermalDown then - SetPedPropIndex(ped, 1, Config.Glasses[gender].up, 0, true) + -- 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 currentGlasses == Config.Glasses[gender].up then - SetPedPropIndex(ped, 1, Config.Glasses[gender].nvDown, 0, true) + 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 currentGlasses == Config.Glasses[gender].nvDown then - SetPedPropIndex(ped, 1, Config.Glasses[gender].up, 0, true) + if IsWearingGlasses(ped, glasses.nvDown) then + SetGlasses(ped, glasses.up) end QBCore.Functions.Notify('Nachtsicht deaktiviert!') SetNightvision(false) @@ -74,14 +86,13 @@ RegisterCommand('toggleThermal', function() local ped = PlayerPedId() if QBCore.Functions.HasItem(Config.ThermalItem) then - local currentGlasses = GetPedPropIndex(ped, 1) 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 currentGlasses == Config.Glasses[gender].up or - currentGlasses == Config.Glasses[gender].thermalDown then + if IsWearingGlasses(ped, glasses.up) or IsWearingGlasses(ped, glasses.thermalDown) then canToggle = true end end @@ -91,25 +102,25 @@ RegisterCommand('toggleThermal', function() if nvMode > 0 then SetNightvision(false) nvMode = 0 - -- Wenn die Brille runtergeklappt ist, klappe sie hoch - if currentGlasses == Config.Glasses[gender].nvDown then - SetPedPropIndex(ped, 1, Config.Glasses[gender].up, 0, true) + -- 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 currentGlasses == Config.Glasses[gender].up then - SetPedPropIndex(ped, 1, Config.Glasses[gender].thermalDown, 0, true) + 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 currentGlasses == Config.Glasses[gender].thermalDown then - SetPedPropIndex(ped, 1, Config.Glasses[gender].up, 0, true) + if IsWearingGlasses(ped, glasses.thermalDown) then + SetGlasses(ped, glasses.up) end QBCore.Functions.Notify('Wärmebild deaktiviert!') SetSeethrough(false) @@ -130,58 +141,58 @@ RegisterKeyMapping('toggleThermal', 'Wärmebild umschalten', 'keyboard', Config. -- Event zum Umschalten der Brille RegisterNetEvent('nightvision:toggleGlasses', function(mode) local ped = PlayerPedId() - local currentGlasses = GetPedPropIndex(ped, 1) local gender = IsPedMale(ped) and "male" or "female" + local glasses = Config.Glasses[gender] -- Alle Sichtmodi deaktivieren DisableAllVisionModes() if mode == 'nightvision' then - -- Wenn keine Brille getragen wird, setze hochgeklappte Version auf - if currentGlasses ~= Config.Glasses[gender].up and - currentGlasses ~= Config.Glasses[gender].nvDown and - currentGlasses ~= Config.Glasses[gender].thermalDown then - SetPedPropIndex(ped, 1, Config.Glasses[gender].up, 0, true) + -- 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 currentGlasses == Config.Glasses[gender].up then - SetPedPropIndex(ped, 1, Config.Glasses[gender].nvDown, 0, true) + elseif IsWearingGlasses(ped, glasses.up) then + SetGlasses(ped, glasses.nvDown) QBCore.Functions.Notify('Nachtsicht aktiviert!') SetNightvision(true) nvMode = 1 - -- Wenn runtergeklappte Brille getragen wird, klappe sie hoch und deaktiviere Nachtsicht - elseif currentGlasses == Config.Glasses[gender].nvDown then - SetPedPropIndex(ped, 1, Config.Glasses[gender].up, 0, true) + -- 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 currentGlasses == Config.Glasses[gender].thermalDown then - SetPedPropIndex(ped, 1, Config.Glasses[gender].nvDown, 0, true) + 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 Brille getragen wird, setze hochgeklappte Version auf - if currentGlasses ~= Config.Glasses[gender].up and - currentGlasses ~= Config.Glasses[gender].nvDown and - currentGlasses ~= Config.Glasses[gender].thermalDown then - SetPedPropIndex(ped, 1, Config.Glasses[gender].up, 0, true) + -- 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 currentGlasses == Config.Glasses[gender].up then - SetPedPropIndex(ped, 1, Config.Glasses[gender].thermalDown, 0, true) + 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 currentGlasses == Config.Glasses[gender].thermalDown then - SetPedPropIndex(ped, 1, Config.Glasses[gender].up, 0, true) + 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 currentGlasses == Config.Glasses[gender].nvDown then - SetPedPropIndex(ped, 1, Config.Glasses[gender].thermalDown, 0, true) + elseif IsWearingGlasses(ped, glasses.nvDown) then + SetGlasses(ped, glasses.thermalDown) QBCore.Functions.Notify('Wärmebild aktiviert!') SetSeethrough(true) thermalMode = 1