QBCore = exports['qb-core']:GetCoreObject() Player = nil local npcHandle = nil local isNPCSpawned = false Citizen.CreateThread(function() while Player == nil do Player = exports['qb-core']:GetPlayerData() Wait(0) end end) -- Funktion zum Spawnen des NPCs function SpawnGuardNPC(npc) -- Ped Model laden RequestModel(npc.model) local timeout = 0 while not HasModelLoaded(npc.model) and timeout < 100 do timeout = timeout + 1 Wait(100) end if not HasModelLoaded(npc.model) then return end -- NPC erstellen npcHandle = CreatePed(4, npc.model, npc.spawn.x, npc.spawn.y, npc.spawn.z, npc.spawn.w, false, true) if not DoesEntityExist(npcHandle) then return end -- NPC Eigenschaften setzen SetEntityAsMissionEntity(npcHandle, true, true) SetBlockingOfNonTemporaryEvents(npcHandle, true) SetPedDiesWhenInjured(npcHandle, false) SetPedCanPlayAmbientAnims(npcHandle, true) SetPedCanRagdollFromPlayerImpact(npcHandle, false) SetEntityInvincible(npcHandle, true) FreezeEntityPosition(npcHandle, true) -- Optional: Animation für den NPC TaskStartScenarioInPlace(npcHandle, "WORLD_HUMAN_GUARD_STAND", 0, true) isNPCSpawned = true end -- Funktion zum Entfernen des NPCs function RemoveGuardNPC() if DoesEntityExist(npcHandle) then DeleteEntity(npcHandle) isNPCSpawned = false end end -- Hauptthread zum Überprüfen der Spieler-Position CreateThread(function() while true do local playerPed = PlayerPedId() local playerCoords = GetEntityCoords(playerPed) for k, v in pairs(Config.Zonen) do local dist = #(playerCoords - vector3(v.NPC.spawn.x, v.NPC.spawn.y, v.NPC.spawn.z)) local spawnDistance = v.NPC.distance if dist < spawnDistance and not isNPCSpawned then AddTargetOptions() SpawnGuardNPC(v.NPC) elseif dist > spawnDistance and isNPCSpawned then exports['qb-target']:RemoveTargetEntity(npcHandle) RemoveGuardNPC() end end Wait(0) -- Überprüfung jede Sekunde end end) function AddTargetOptions() exports['qb-target']:AddTargetEntity(npcHandle, { options = { { type = "client", event = "garage:storeVehicle", icon = "fas fa-parking", label = "Fahrzeug einparken" }, { type = "client", event = "garage:retrieveVehicle", icon = "fas fa-car", label = "Fahrzeug ausparken" } }, distance = 2.5 }) end