80 lines
2.8 KiB
Lua
80 lines
2.8 KiB
Lua
blips = {}
|
|
radius2 = {}
|
|
|
|
local function randomOffset(baseX, baseY, offset)
|
|
local randomX = baseX + math.random(-offset, offset)
|
|
local randomY = baseY + math.random(-offset, offset)
|
|
|
|
return randomX, randomY
|
|
end
|
|
|
|
function createBlipData(coords, radius, sprite, color, scale, flash)
|
|
local blip = AddBlipForCoord(coords.x, coords.y, coords.z)
|
|
local radiusBlip = AddBlipForRadius(coords.x, coords.y, coords.z, radius)
|
|
|
|
SetBlipFlashes(blip, flash)
|
|
SetBlipSprite(blip, sprite or 161)
|
|
SetBlipHighDetail(blip, true)
|
|
SetBlipScale(blip, scale or 1.0)
|
|
SetBlipColour(blip, color or 84)
|
|
SetBlipAlpha(blip, 255)
|
|
SetBlipAsShortRange(blip, false)
|
|
SetBlipCategory(blip, 2)
|
|
SetBlipColour(radiusBlip, color or 84)
|
|
SetBlipAlpha(radiusBlip, 128)
|
|
|
|
return blip, radiusBlip
|
|
end
|
|
|
|
function createBlip(data, blipData)
|
|
local sprite = blipData.sprite or blipData.alert.sprite or 161
|
|
local color = blipData.color or blipData.alert.color or 84
|
|
local scale = blipData.scale or blipData.alert.scale or 1.0
|
|
local flash = blipData.flash or false
|
|
local radiusAlpha = 128
|
|
local blipWaitTime = ((blipData.length or blipData.alert.length) * 60000) / radiusAlpha
|
|
|
|
local blip, radius
|
|
if blipData.offset then
|
|
local offsetX, offsetY = randomOffset(data.coords.x, data.coords.y, Config.MaxOffset)
|
|
blip, radius = createBlipData({ x = offsetX, y = offsetY, z = data.coords.z }, blipData.radius, sprite, color, scale, flash)
|
|
else
|
|
blip, radius = createBlipData(data.coords, blipData.radius, sprite, color, scale, flash)
|
|
end
|
|
|
|
blips[data.id] = blip
|
|
radius2[data.id] = radius
|
|
|
|
local dispatchType = Config.DispatchTypes[data.type]
|
|
local dispatchLocale = Config.DispatchLocales['UI'][data.type]
|
|
local blipText = (dispatchType and dispatchType.code or "") .. " - " .. (dispatchLocale or data.message or "")
|
|
|
|
BeginTextCommandSetBlipName('STRING')
|
|
AddTextComponentString(blipText)
|
|
EndTextCommandSetBlipName(blip)
|
|
|
|
while radiusAlpha > 0 do
|
|
Wait(blipWaitTime)
|
|
radiusAlpha = math.max(0, radiusAlpha - 1)
|
|
SetBlipAlpha(radius, radiusAlpha)
|
|
end
|
|
|
|
RemoveBlip(radius)
|
|
RemoveBlip(blip)
|
|
end
|
|
|
|
function AddBlip(data, blipData)
|
|
if not Config.DispatchTypes[data.type].enable or not Config.DispatchTypes[data.type].blip or not Config.DispatchTypes[data.type].blip.enable then return end
|
|
|
|
CreateThread(function()
|
|
createBlip(data, blipData)
|
|
end)
|
|
|
|
debugPrint('Blip Added', data, blipData)
|
|
|
|
if blipData.sound == "Lose_1st" then
|
|
PlaySound(-1, blipData.sound, blipData.sound2, 0, 0, 1)
|
|
else
|
|
TriggerServerEvent("InteractSound_SV:PlayOnSource", blipData.sound or blipData.alert.sound, 0.25)
|
|
end
|
|
end |