forked from Simnation/Main
67 lines
No EOL
1.8 KiB
Lua
67 lines
No EOL
1.8 KiB
Lua
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
|
|
local function SpawnGuardNPC(npc)
|
|
-- Ped Model laden
|
|
RequestModel(npc.model)
|
|
while not HasModelLoaded(npc.model) do
|
|
Wait(1)
|
|
end
|
|
|
|
-- NPC erstellen
|
|
npcHandle = CreatePed(4, npc.model, npc.spawn, false, true)
|
|
|
|
-- 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
|
|
local 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 - v.NPC.spawn)
|
|
local spawnDistance = v.NPC.distance
|
|
|
|
if dist < spawnDistance and not isNPCSpawned then
|
|
SpawnGuardNPC()
|
|
elseif dist > spawnDistance and isNPCSpawned then
|
|
RemoveGuardNPC()
|
|
end
|
|
end
|
|
|
|
Wait(1000) -- Überprüfung jede Sekunde
|
|
end
|
|
end) |