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)
|
||||
|
|
|
@ -6,7 +6,6 @@ Config.ThermalItem = 'thermalvision' -- Item needed to use thermal vision
|
|||
Config.CheckHelmet = true -- Check if player has the appropriate glasses
|
||||
Config.NVKey = 'N' -- Key for nightvision
|
||||
Config.ThermalKey = 'M' -- Key for thermal vision
|
||||
Config.FlashlightKey = 'L' -- Key for helmet flashlight
|
||||
|
||||
-- Glasses configuration with drawables and textures
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,13 +3,6 @@ local QBCore = exports[Config.CoreName]:GetCoreObject()
|
|||
QBCore.Functions.CreateUseableItem(Config.NVItem, function(source, item)
|
||||
local Player = QBCore.Functions.GetPlayer(source)
|
||||
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)
|
Loading…
Add table
Add a link
Reference in a new issue