77 lines
1.8 KiB
Lua
77 lines
1.8 KiB
Lua
|
local spawnedPeds = {}
|
||
|
|
||
|
Citizen.CreateThread(function()
|
||
|
while true do
|
||
|
Citizen.Wait(500)
|
||
|
for k,v in pairs(Config.PedList) do
|
||
|
local playerCoords = GetEntityCoords(PlayerPedId())
|
||
|
local distance = #(playerCoords - v.coords.xyz)
|
||
|
|
||
|
if distance < Config.DistanceSpawn and not spawnedPeds[k] then
|
||
|
local spawnedPed = NearPed(v.model, v.coords, v.gender, v.animDict, v.animName, v.scenario)
|
||
|
spawnedPeds[k] = { spawnedPed = spawnedPed }
|
||
|
end
|
||
|
|
||
|
if distance >= Config.DistanceSpawn and spawnedPeds[k] then
|
||
|
if Config.FadeIn then
|
||
|
for i = 255, 0, -51 do
|
||
|
Citizen.Wait(50)
|
||
|
SetEntityAlpha(spawnedPeds[k].spawnedPed, i, false)
|
||
|
end
|
||
|
end
|
||
|
DeletePed(spawnedPeds[k].spawnedPed)
|
||
|
spawnedPeds[k] = nil
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
function NearPed(model, coords, gender, animDict, animName, scenario)
|
||
|
RequestModel(model)
|
||
|
while not HasModelLoaded(model) do
|
||
|
Citizen.Wait(50)
|
||
|
end
|
||
|
|
||
|
if Config.MinusOne then
|
||
|
spawnedPed = CreatePed(Config.GenderNumbers[gender], model, coords.x, coords.y, coords.z - 1.0, coords.w, false, true)
|
||
|
else
|
||
|
spawnedPed = CreatePed(Config.GenderNumbers[gender], model, coords.x, coords.y, coords.z, coords.w, false, true)
|
||
|
end
|
||
|
|
||
|
SetEntityAlpha(spawnedPed, 0, false)
|
||
|
|
||
|
if Config.Frozen then
|
||
|
FreezeEntityPosition(spawnedPed, true)
|
||
|
end
|
||
|
|
||
|
if Config.Invincible then
|
||
|
SetEntityInvincible(spawnedPed, true)
|
||
|
end
|
||
|
|
||
|
if Config.Stoic then
|
||
|
SetBlockingOfNonTemporaryEvents(spawnedPed, true)
|
||
|
end
|
||
|
|
||
|
if animDict and animName then
|
||
|
RequestAnimDict(animDict)
|
||
|
while not HasAnimDictLoaded(animDict) do
|
||
|
Citizen.Wait(50)
|
||
|
end
|
||
|
|
||
|
TaskPlayAnim(spawnedPed, animDict, animName, 8.0, 0, -1, 1, 0, 0, 0)
|
||
|
end
|
||
|
|
||
|
if scenario then
|
||
|
TaskStartScenarioInPlace(spawnedPed, scenario, 0, true)
|
||
|
end
|
||
|
|
||
|
if Config.FadeIn then
|
||
|
for i = 0, 255, 51 do
|
||
|
Citizen.Wait(50)
|
||
|
SetEntityAlpha(spawnedPed, i, false)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return spawnedPed
|
||
|
end
|