2026-04-14 17:41:39 +02:00

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