forked from Simnation/Main
ed
This commit is contained in:
parent
ea9cc8ea1d
commit
f2061ae0f4
3 changed files with 140 additions and 232 deletions
|
@ -1,7 +1,6 @@
|
|||
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)
|
||||
|
@ -16,17 +15,6 @@ local function IsWearingGlasses(ped, glassesConfig)
|
|||
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)
|
||||
|
@ -40,213 +28,175 @@ local function DisableAllVisionModes()
|
|||
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()
|
||||
local ped = PlayerPedId()
|
||||
local gender = IsPedMale(ped) and "male" or "female"
|
||||
|
||||
-- Check if player has the item
|
||||
QBCore.Functions.TriggerCallback('QBCore:HasItem', function(hasItem)
|
||||
if hasItem then
|
||||
-- Check if player is wearing the correct glasses if enabled
|
||||
if Config.CheckHelmet then
|
||||
local glassesConfig = Config.Glasses[gender]
|
||||
|
||||
if nvMode == 0 then
|
||||
-- Enable nightvision
|
||||
if IsWearingGlasses(ped, glassesConfig.up) then
|
||||
SetGlasses(ped, glassesConfig.nvDown)
|
||||
SetNightvision(true)
|
||||
nvMode = 1
|
||||
TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'nightvision', 0.25)
|
||||
QBCore.Functions.Notify('Nachtsicht aktiviert')
|
||||
else
|
||||
QBCore.Functions.Notify('Du trägst nicht die richtige Brille!', 'error')
|
||||
end
|
||||
else
|
||||
-- Disable nightvision
|
||||
SetGlasses(ped, glassesConfig.up)
|
||||
SetNightvision(false)
|
||||
nvMode = 0
|
||||
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')
|
||||
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 hast kein Nachtsichtgerät!', 'error')
|
||||
QBCore.Functions.Notify('Du trägst keine Nachtsichtbrille!', 'error')
|
||||
end
|
||||
end, Config.NVItem)
|
||||
else
|
||||
QBCore.Functions.Notify('Du hast kein Nachtsichtgerät!', 'error')
|
||||
end
|
||||
end)
|
||||
|
||||
-- Wärmebild-Befehl
|
||||
RegisterCommand('toggleThermal', function()
|
||||
local ped = PlayerPedId()
|
||||
local gender = IsPedMale(ped) and "male" or "female"
|
||||
|
||||
-- Check if player has the item
|
||||
QBCore.Functions.TriggerCallback('QBCore:HasItem', function(hasItem)
|
||||
if hasItem then
|
||||
-- Check if player is wearing the correct glasses if enabled
|
||||
if Config.CheckHelmet then
|
||||
local glassesConfig = Config.Glasses[gender]
|
||||
|
||||
if thermalMode == 0 then
|
||||
-- Enable thermal vision
|
||||
if IsWearingGlasses(ped, glassesConfig.up) then
|
||||
SetGlasses(ped, glassesConfig.thermalDown)
|
||||
SetSeethrough(true)
|
||||
thermalMode = 1
|
||||
TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'nightvision', 0.25)
|
||||
QBCore.Functions.Notify('Wärmebild aktiviert')
|
||||
else
|
||||
QBCore.Functions.Notify('Du trägst nicht die richtige Brille!', 'error')
|
||||
end
|
||||
else
|
||||
-- Disable thermal vision
|
||||
SetGlasses(ped, glassesConfig.up)
|
||||
SetSeethrough(false)
|
||||
thermalMode = 0
|
||||
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')
|
||||
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 hast kein Wärmebildgerät!', 'error')
|
||||
QBCore.Functions.Notify('Du trägst keine Wärmebildbrille!', 'error')
|
||||
end
|
||||
end, Config.ThermalItem)
|
||||
end)
|
||||
|
||||
-- Helm-Lampe-Befehl
|
||||
RegisterCommand('toggleHelmetLight', function()
|
||||
ToggleHelmetFlashlight()
|
||||
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)
|
||||
RegisterKeyMapping('toggleHelmetLight', 'Helm-Lampe umschalten', 'keyboard', Config.FlashlightKey)
|
||||
|
||||
-- Event zum Umschalten der Brille
|
||||
RegisterNetEvent('nightvision:toggleGlasses', function(mode)
|
||||
local ped = PlayerPedId()
|
||||
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
|
||||
-- Check if player has the item
|
||||
QBCore.Functions.TriggerCallback('QBCore:HasItem', function(hasItem)
|
||||
if hasItem then
|
||||
if nvMode == 0 then
|
||||
-- Enable nightvision
|
||||
SetGlasses(ped, glassesConfig.nvDown)
|
||||
SetNightvision(true)
|
||||
nvMode = 1
|
||||
TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'nightvision', 0.25)
|
||||
QBCore.Functions.Notify('Nachtsicht aktiviert')
|
||||
else
|
||||
-- Disable nightvision
|
||||
SetGlasses(ped, glassesConfig.up)
|
||||
SetNightvision(false)
|
||||
nvMode = 0
|
||||
TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'nightvision', 0.25)
|
||||
QBCore.Functions.Notify('Nachtsicht deaktiviert')
|
||||
end
|
||||
else
|
||||
QBCore.Functions.Notify('Du hast kein Nachtsichtgerät!', 'error')
|
||||
end
|
||||
end, Config.NVItem)
|
||||
-- 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
|
||||
-- Check if player has the item
|
||||
QBCore.Functions.TriggerCallback('QBCore:HasItem', function(hasItem)
|
||||
if hasItem then
|
||||
if thermalMode == 0 then
|
||||
-- Enable thermal vision
|
||||
SetGlasses(ped, glassesConfig.thermalDown)
|
||||
SetSeethrough(true)
|
||||
thermalMode = 1
|
||||
TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'nightvision', 0.25)
|
||||
QBCore.Functions.Notify('Wärmebild aktiviert')
|
||||
else
|
||||
-- Disable thermal vision
|
||||
SetGlasses(ped, glassesConfig.up)
|
||||
SetSeethrough(false)
|
||||
thermalMode = 0
|
||||
TriggerServerEvent('InteractSound_SV:PlayWithinDistance', 3.0, 'nightvision', 0.25)
|
||||
QBCore.Functions.Notify('Wärmebild deaktiviert')
|
||||
end
|
||||
else
|
||||
QBCore.Functions.Notify('Du hast kein Wärmebildgerät!', 'error')
|
||||
end
|
||||
end, Config.ThermalItem)
|
||||
-- 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)
|
||||
|
||||
|
@ -254,17 +204,3 @@ end)
|
|||
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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue