85 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| 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
 | 
