1
0
Fork 0
forked from Simnation/Main
Main/resources/[tools]/thommie-nightvision/cl_main.lua

207 lines
8.1 KiB
Lua
Raw Normal View History

2025-06-29 23:58:18 +02:00
local QBCore = exports[Config.CoreName]:GetCoreObject()
2025-06-30 00:40:05 +02:00
local nvMode = 0
local thermalMode = 0
2025-06-29 23:58:18 +02:00
2025-06-30 00:25:08 +02:00
-- Funktion zum Prüfen des Charaktergeschlechts
local function IsPedMale(ped)
return GetEntityModel(ped) == `mp_m_freemode_01`
end
2025-06-30 00:51:12 +02:00
-- 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
2025-06-30 00:40:05 +02:00
-- Funktion zum Deaktivieren aller Sichtmodi
local function DisableAllVisionModes()
SetNightvision(false)
SetSeethrough(false)
nvMode = 0
thermalMode = 0
end
2025-06-30 21:37:12 +02:00
-- Nachtsicht-Befehl
RegisterCommand('toggleNV', function()
2025-06-30 01:04:56 +02:00
local ped = PlayerPedId()
2025-06-30 21:37:12 +02:00
if QBCore.Functions.HasItem(Config.NVItem) then
local gender = IsPedMale(ped) and "male" or "female"
local glasses = Config.Glasses[gender]
2025-06-30 01:27:35 +02:00
2025-06-30 21:37:12 +02:00
-- 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
2025-06-30 01:04:56 +02:00
end
end
2025-06-30 21:37:12 +02:00
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)
2025-06-30 21:31:12 +02:00
end
2025-06-30 21:37:12 +02:00
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
2025-06-30 21:31:12 +02:00
else
2025-06-30 21:37:12 +02:00
-- Wenn die Brille runtergeklappt ist, klappe sie hoch
if IsWearingGlasses(ped, glasses.nvDown) then
SetGlasses(ped, glasses.up)
2025-06-30 21:31:12 +02:00
end
2025-06-30 21:37:12 +02:00
QBCore.Functions.Notify('Nachtsicht deaktiviert!')
SetNightvision(false)
nvMode = 0
2025-06-30 21:31:12 +02:00
end
else
2025-06-30 21:37:12 +02:00
QBCore.Functions.Notify('Du trägst keine Nachtsichtbrille!', 'error')
2025-06-30 21:31:12 +02:00
end
2025-06-30 21:37:12 +02:00
else
QBCore.Functions.Notify('Du hast kein Nachtsichtgerät!', 'error')
end
2025-06-30 00:40:05 +02:00
end)
-- Wärmebild-Befehl
RegisterCommand('toggleThermal', function()
2025-06-30 21:31:12 +02:00
local ped = PlayerPedId()
2025-06-30 21:37:12 +02:00
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)
2025-06-30 21:31:12 +02:00
end
2025-06-30 21:37:12 +02:00
QBCore.Functions.Notify('Wärmebild aktiviert!')
SetSeethrough(true)
thermalMode = 1
2025-06-30 21:31:12 +02:00
else
2025-06-30 21:37:12 +02:00
-- Wenn die Brille runtergeklappt ist, klappe sie hoch
if IsWearingGlasses(ped, glasses.thermalDown) then
SetGlasses(ped, glasses.up)
2025-06-30 21:31:12 +02:00
end
2025-06-30 21:37:12 +02:00
QBCore.Functions.Notify('Wärmebild deaktiviert!')
SetSeethrough(false)
thermalMode = 0
2025-06-30 21:31:12 +02:00
end
else
2025-06-30 21:37:12 +02:00
QBCore.Functions.Notify('Du trägst keine Wärmebildbrille!', 'error')
2025-06-30 21:31:12 +02:00
end
2025-06-30 21:37:12 +02:00
else
QBCore.Functions.Notify('Du hast kein Wärmebildgerät!', 'error')
end
2025-06-30 01:04:56 +02:00
end)
2025-06-30 00:40:05 +02:00
-- Tastenbelegungen registrieren
RegisterKeyMapping('toggleNV', 'Nachtsicht umschalten', 'keyboard', Config.NVKey)
RegisterKeyMapping('toggleThermal', 'Wärmebild umschalten', 'keyboard', Config.ThermalKey)
2025-06-29 23:58:18 +02:00
2025-06-30 00:40:05 +02:00
-- Event zum Umschalten der Brille
RegisterNetEvent('nightvision:toggleGlasses', function(mode)
2025-06-30 21:31:12 +02:00
local ped = PlayerPedId()
local gender = IsPedMale(ped) and "male" or "female"
2025-06-30 21:37:12 +02:00
local glasses = Config.Glasses[gender]
-- Alle Sichtmodi deaktivieren
DisableAllVisionModes()
2025-06-30 21:31:12 +02:00
if mode == 'nightvision' then
2025-06-30 21:37:12 +02:00
-- 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
2025-06-30 21:31:12 +02:00
elseif mode == 'thermal' then
2025-06-30 21:37:12 +02:00
-- 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
2025-06-30 21:31:12 +02:00
end
2025-06-29 23:58:18 +02:00
end)
2025-06-30 00:25:08 +02:00
-- Behalte den alten Event-Namen für Kompatibilität
RegisterNetEvent('nightvision:toggleHelmet', function()
2025-06-30 00:40:05 +02:00
TriggerEvent('nightvision:toggleGlasses', 'nightvision')
2025-06-30 00:25:08 +02:00
end)