1
0
Fork 0
forked from Simnation/Main
This commit is contained in:
Nordi98 2025-06-30 21:37:12 +02:00
parent ea9cc8ea1d
commit f2061ae0f4
3 changed files with 140 additions and 232 deletions

View file

@ -1,7 +1,6 @@
local QBCore = exports[Config.CoreName]:GetCoreObject() local QBCore = exports[Config.CoreName]:GetCoreObject()
local nvMode = 0 local nvMode = 0
local thermalMode = 0 local thermalMode = 0
local flashlightActive = false
-- Funktion zum Prüfen des Charaktergeschlechts -- Funktion zum Prüfen des Charaktergeschlechts
local function IsPedMale(ped) local function IsPedMale(ped)
@ -16,17 +15,6 @@ local function IsWearingGlasses(ped, glassesConfig)
return currentDrawable == glassesConfig.drawable and currentTexture == glassesConfig.texture return currentDrawable == glassesConfig.drawable and currentTexture == glassesConfig.texture
end 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 -- Funktion zum Setzen einer Brille aus der Konfiguration
local function SetGlasses(ped, glassesConfig) local function SetGlasses(ped, glassesConfig)
SetPedPropIndex(ped, 1, glassesConfig.drawable, glassesConfig.texture, true) SetPedPropIndex(ped, 1, glassesConfig.drawable, glassesConfig.texture, true)
@ -40,213 +28,175 @@ local function DisableAllVisionModes()
thermalMode = 0 thermalMode = 0
end 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 -- Nachtsicht-Befehl
RegisterCommand('toggleNV', function() RegisterCommand('toggleNV', function()
local ped = PlayerPedId() local ped = PlayerPedId()
local gender = IsPedMale(ped) and "male" or "female"
-- Check if player has the item if QBCore.Functions.HasItem(Config.NVItem) then
QBCore.Functions.TriggerCallback('QBCore:HasItem', function(hasItem) local gender = IsPedMale(ped) and "male" or "female"
if hasItem then local glasses = Config.Glasses[gender]
-- Check if player is wearing the correct glasses if enabled
if Config.CheckHelmet then
local glassesConfig = Config.Glasses[gender]
if nvMode == 0 then -- Prüfen, ob der Spieler eine der Brillen trägt
-- Enable nightvision local canToggle = not Config.CheckHelmet
if IsWearingGlasses(ped, glassesConfig.up) then if Config.CheckHelmet then
SetGlasses(ped, glassesConfig.nvDown) if IsWearingGlasses(ped, glasses.up) or IsWearingGlasses(ped, glasses.nvDown) then
SetNightvision(true) canToggle = true
nvMode = 1 end
TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'nightvision', 0.25) end
QBCore.Functions.Notify('Nachtsicht aktiviert')
else if canToggle then
QBCore.Functions.Notify('Du trägst nicht die richtige Brille!', 'error') -- Deaktiviere zuerst Wärmebild, falls aktiv
end if thermalMode > 0 then
else SetSeethrough(false)
-- Disable nightvision thermalMode = 0
SetGlasses(ped, glassesConfig.up) -- Wenn die Wärmebildbrille getragen wird, klappe sie hoch
SetNightvision(false) if IsWearingGlasses(ped, glasses.thermalDown) then
nvMode = 0 SetGlasses(ped, glasses.up)
TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'nightvision', 0.25)
QBCore.Functions.Notify('Nachtsicht deaktiviert')
end
else
-- No helmet check, just toggle nightvision
if nvMode == 0 then
SetNightvision(true)
nvMode = 1
TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'nightvision', 0.25)
QBCore.Functions.Notify('Nachtsicht aktiviert')
else
SetNightvision(false)
nvMode = 0
TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'nightvision', 0.25)
QBCore.Functions.Notify('Nachtsicht deaktiviert')
end end
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 else
QBCore.Functions.Notify('Du hast kein Nachtsichtgerät!', 'error') QBCore.Functions.Notify('Du trägst keine Nachtsichtbrille!', 'error')
end end
end, Config.NVItem) else
QBCore.Functions.Notify('Du hast kein Nachtsichtgerät!', 'error')
end
end) end)
-- Wärmebild-Befehl -- Wärmebild-Befehl
RegisterCommand('toggleThermal', function() RegisterCommand('toggleThermal', function()
local ped = PlayerPedId() local ped = PlayerPedId()
local gender = IsPedMale(ped) and "male" or "female"
-- Check if player has the item if QBCore.Functions.HasItem(Config.ThermalItem) then
QBCore.Functions.TriggerCallback('QBCore:HasItem', function(hasItem) local gender = IsPedMale(ped) and "male" or "female"
if hasItem then local glasses = Config.Glasses[gender]
-- Check if player is wearing the correct glasses if enabled
if Config.CheckHelmet then
local glassesConfig = Config.Glasses[gender]
if thermalMode == 0 then -- Prüfen, ob der Spieler eine der Brillen trägt
-- Enable thermal vision local canToggle = not Config.CheckHelmet
if IsWearingGlasses(ped, glassesConfig.up) then if Config.CheckHelmet then
SetGlasses(ped, glassesConfig.thermalDown) if IsWearingGlasses(ped, glasses.up) or IsWearingGlasses(ped, glasses.thermalDown) then
SetSeethrough(true) canToggle = true
thermalMode = 1 end
TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'nightvision', 0.25) end
QBCore.Functions.Notify('Wärmebild aktiviert')
else if canToggle then
QBCore.Functions.Notify('Du trägst nicht die richtige Brille!', 'error') -- Deaktiviere zuerst Nachtsicht, falls aktiv
end if nvMode > 0 then
else SetNightvision(false)
-- Disable thermal vision nvMode = 0
SetGlasses(ped, glassesConfig.up) -- Wenn die Nachtsichtbrille getragen wird, klappe sie hoch
SetSeethrough(false) if IsWearingGlasses(ped, glasses.nvDown) then
thermalMode = 0 SetGlasses(ped, glasses.up)
TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'nightvision', 0.25)
QBCore.Functions.Notify('Wärmebild deaktiviert')
end
else
-- No helmet check, just toggle thermal vision
if thermalMode == 0 then
SetSeethrough(true)
thermalMode = 1
TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'nightvision', 0.25)
QBCore.Functions.Notify('Wärmebild aktiviert')
else
SetSeethrough(false)
thermalMode = 0
TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'nightvision', 0.25)
QBCore.Functions.Notify('Wärmebild deaktiviert')
end end
end end
else
QBCore.Functions.Notify('Du hast kein Wärmebildgerät!', 'error')
end
end, Config.ThermalItem)
end)
-- Helm-Lampe-Befehl -- Wärmebild-Modus umschalten
RegisterCommand('toggleHelmetLight', function() if thermalMode == 0 then
ToggleHelmetFlashlight() -- 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) end)
-- Tastenbelegungen registrieren -- Tastenbelegungen registrieren
RegisterKeyMapping('toggleNV', 'Nachtsicht umschalten', 'keyboard', Config.NVKey) RegisterKeyMapping('toggleNV', 'Nachtsicht umschalten', 'keyboard', Config.NVKey)
RegisterKeyMapping('toggleThermal', 'Wärmebild umschalten', 'keyboard', Config.ThermalKey) RegisterKeyMapping('toggleThermal', 'Wärmebild umschalten', 'keyboard', Config.ThermalKey)
RegisterKeyMapping('toggleHelmetLight', 'Helm-Lampe umschalten', 'keyboard', Config.FlashlightKey)
-- Event zum Umschalten der Brille -- Event zum Umschalten der Brille
RegisterNetEvent('nightvision:toggleGlasses', function(mode) RegisterNetEvent('nightvision:toggleGlasses', function(mode)
local ped = PlayerPedId() local ped = PlayerPedId()
local gender = IsPedMale(ped) and "male" or "female" local gender = IsPedMale(ped) and "male" or "female"
local glassesConfig = Config.Glasses[gender] local glasses = Config.Glasses[gender]
-- Alle Sichtmodi deaktivieren
DisableAllVisionModes()
if mode == 'nightvision' then if mode == 'nightvision' then
-- Check if player has the item -- Wenn keine der konfigurierten Brillen getragen wird, setze hochgeklappte Version auf
QBCore.Functions.TriggerCallback('QBCore:HasItem', function(hasItem) if not (IsWearingGlasses(ped, glasses.up) or
if hasItem then IsWearingGlasses(ped, glasses.nvDown) or
if nvMode == 0 then IsWearingGlasses(ped, glasses.thermalDown)) then
-- Enable nightvision SetGlasses(ped, glasses.up)
SetGlasses(ped, glassesConfig.nvDown) QBCore.Functions.Notify('Nachtsichtbrille aufgesetzt!')
SetNightvision(true) -- Wenn hochgeklappte Brille getragen wird, klappe sie runter und aktiviere Nachtsicht
nvMode = 1 elseif IsWearingGlasses(ped, glasses.up) then
TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'nightvision', 0.25) SetGlasses(ped, glasses.nvDown)
QBCore.Functions.Notify('Nachtsicht aktiviert') QBCore.Functions.Notify('Nachtsicht aktiviert!')
else SetNightvision(true)
-- Disable nightvision nvMode = 1
SetGlasses(ped, glassesConfig.up) -- Wenn runtergeklappte Nachtsichtbrille getragen wird, klappe sie hoch und deaktiviere Nachtsicht
SetNightvision(false) elseif IsWearingGlasses(ped, glasses.nvDown) then
nvMode = 0 SetGlasses(ped, glasses.up)
TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'nightvision', 0.25) QBCore.Functions.Notify('Nachtsicht deaktiviert!')
QBCore.Functions.Notify('Nachtsicht deaktiviert') nvMode = 0
end -- Wenn Wärmebildbrille getragen wird, wechsle zu Nachtsichtbrille
else elseif IsWearingGlasses(ped, glasses.thermalDown) then
QBCore.Functions.Notify('Du hast kein Nachtsichtgerät!', 'error') SetGlasses(ped, glasses.nvDown)
end QBCore.Functions.Notify('Nachtsicht aktiviert!')
end, Config.NVItem) SetNightvision(true)
nvMode = 1
end
elseif mode == 'thermal' then elseif mode == 'thermal' then
-- Check if player has the item -- Wenn keine der konfigurierten Brillen getragen wird, setze hochgeklappte Version auf
QBCore.Functions.TriggerCallback('QBCore:HasItem', function(hasItem) if not (IsWearingGlasses(ped, glasses.up) or
if hasItem then IsWearingGlasses(ped, glasses.nvDown) or
if thermalMode == 0 then IsWearingGlasses(ped, glasses.thermalDown)) then
-- Enable thermal vision SetGlasses(ped, glasses.up)
SetGlasses(ped, glassesConfig.thermalDown) QBCore.Functions.Notify('Wärmebildbrille aufgesetzt!')
SetSeethrough(true) -- Wenn hochgeklappte Brille getragen wird, klappe sie runter und aktiviere Wärmebild
thermalMode = 1 elseif IsWearingGlasses(ped, glasses.up) then
TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'nightvision', 0.25) SetGlasses(ped, glasses.thermalDown)
QBCore.Functions.Notify('Wärmebild aktiviert') QBCore.Functions.Notify('Wärmebild aktiviert!')
else SetSeethrough(true)
-- Disable thermal vision thermalMode = 1
SetGlasses(ped, glassesConfig.up) -- Wenn runtergeklappte Wärmebildbrille getragen wird, klappe sie hoch und deaktiviere Wärmebild
SetSeethrough(false) elseif IsWearingGlasses(ped, glasses.thermalDown) then
thermalMode = 0 SetGlasses(ped, glasses.up)
TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'nightvision', 0.25) QBCore.Functions.Notify('Wärmebild deaktiviert!')
QBCore.Functions.Notify('Wärmebild deaktiviert') thermalMode = 0
end -- Wenn Nachtsichtbrille getragen wird, wechsle zu Wärmebildbrille
else elseif IsWearingGlasses(ped, glasses.nvDown) then
QBCore.Functions.Notify('Du hast kein Wärmebildgerät!', 'error') SetGlasses(ped, glasses.thermalDown)
end QBCore.Functions.Notify('Wärmebild aktiviert!')
end, Config.ThermalItem) SetSeethrough(true)
thermalMode = 1
end
end end
end) end)
@ -254,17 +204,3 @@ end)
RegisterNetEvent('nightvision:toggleHelmet', function() RegisterNetEvent('nightvision:toggleHelmet', function()
TriggerEvent('nightvision:toggleGlasses', 'nightvision') TriggerEvent('nightvision:toggleGlasses', 'nightvision')
end) 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)

View file

@ -6,7 +6,6 @@ Config.ThermalItem = 'thermalvision' -- Item needed to use thermal vision
Config.CheckHelmet = true -- Check if player has the appropriate glasses Config.CheckHelmet = true -- Check if player has the appropriate glasses
Config.NVKey = 'N' -- Key for nightvision Config.NVKey = 'N' -- Key for nightvision
Config.ThermalKey = 'M' -- Key for thermal vision Config.ThermalKey = 'M' -- Key for thermal vision
Config.FlashlightKey = 'L' -- Key for helmet flashlight
-- Glasses configuration with drawables and textures -- Glasses configuration with drawables and textures
Config.Glasses = { Config.Glasses = {
@ -40,23 +39,3 @@ Config.Glasses = {
} }
} }
-- Flashlight configuration
Config.Flashlight = {
color = {r = 255, g = 255, b = 255}, -- Farbe des Lichts (weiß)
range = 15.0, -- Reichweite des Lichts (reduziert für realistischeren Effekt)
intensity = 10.0, -- Intensität des Lichts
offset = {x = 0.0, y = 0.3, z = 0.0} -- Position des Lichts relativ zum Kopf
}
-- Helm-Konfiguration für die Lampe
Config.FlashlightHelmet = {
male = {
drawable = 117, -- ID des Helms mit Lampe (männlich)
texture = 0 -- Textur des Helms mit Lampe (männlich)
},
female = {
drawable = 283, -- ID des Helms mit Lampe (weiblich)
texture = 1 -- Textur des Helms mit Lampe (weiblich)
}
}

View file

@ -3,13 +3,6 @@ local QBCore = exports[Config.CoreName]:GetCoreObject()
QBCore.Functions.CreateUseableItem(Config.NVItem, function(source, item) QBCore.Functions.CreateUseableItem(Config.NVItem, function(source, item)
local Player = QBCore.Functions.GetPlayer(source) local Player = QBCore.Functions.GetPlayer(source)
if Player.Functions.GetItemByName(item.name) then if Player.Functions.GetItemByName(item.name) then
TriggerClientEvent('nightvision:toggleGlasses', source, 'nightvision') TriggerClientEvent('nightvision:toggleHelmet', source)
end
end)
QBCore.Functions.CreateUseableItem(Config.ThermalItem, function(source, item)
local Player = QBCore.Functions.GetPlayer(source)
if Player.Functions.GetItemByName(item.name) then
TriggerClientEvent('nightvision:toggleGlasses', source, 'thermal')
end end
end) end)