Scripts/resources/[il]/illenium-appearance/client/blips.lua

86 lines
2.4 KiB
Lua
Raw Permalink Normal View History

2024-12-29 19:49:12 +00:00
local Blips = {}
local client = client
local function ShowBlip(blipConfig, blip)
if blip.job and blip.job ~= client.job.name then
return false
elseif blip.gang and blip.gang ~= client.gang.name then
return false
end
if Config.RCoreTattoosCompatibility and blip.type == "tattoo" then
return false
end
return (blipConfig.Show and blip.showBlip == nil) or blip.showBlip
end
local function CreateBlip(blipConfig, coords)
local blip = AddBlipForCoord(coords.x, coords.y, coords.z)
SetBlipSprite(blip, blipConfig.Sprite)
SetBlipColour(blip, blipConfig.Color)
SetBlipScale(blip, blipConfig.Scale)
SetBlipAsShortRange(blip, true)
BeginTextCommandSetBlipName("STRING")
AddTextComponentString(blipConfig.Name)
EndTextCommandSetBlipName(blip)
return blip
end
local function SetupBlips()
for k, _ in pairs(Config.Stores) do
local blipConfig = Config.Blips[Config.Stores[k].type]
if ShowBlip(blipConfig, Config.Stores[k]) then
local blip = CreateBlip(blipConfig, Config.Stores[k].coords)
Blips[#Blips + 1] = blip
end
end
end
function ResetBlips()
if Config.ShowNearestShopOnly then
return
end
for i = 1, #Blips do
RemoveBlip(Blips[i])
end
Blips = {}
SetupBlips()
end
local function ShowNearestShopBlip()
for k in pairs(Config.Blips) do
Blips[k] = 0
end
while true do
local coords = GetEntityCoords(cache.ped)
for shopType, blipConfig in pairs(Config.Blips) do
local closest = 1000000
local closestCoords
for _, shop in pairs(Config.Stores) do
if shop.type == shopType and ShowBlip(blipConfig, shop) then
local dist = #(coords - vector3(shop.coords.xyz))
if dist < closest then
closest = dist
closestCoords = shop.coords
end
end
end
if DoesBlipExist(Blips[shopType]) then
RemoveBlip(Blips[shopType])
end
if closestCoords then
Blips[shopType] = CreateBlip(blipConfig, closestCoords)
end
end
Wait(Config.NearestShopBlipUpdateDelay)
end
end
if Config.ShowNearestShopOnly then
CreateThread(ShowNearestShopBlip)
end