Files
Elite-Gaming-FiveM/resources/Fire-Script/client/dispatch.lua
T
2021-12-03 01:05:09 +00:00

124 lines
3.0 KiB
Lua

--================================--
-- FIRE SCRIPT v1.6.3 --
-- by GIMI (+ foregz, Albo1125) --
-- License: GNU GPL 3.0 --
--================================--
Dispatch = {
lastCall = nil,
blips = {},
__index = self,
init = function(o)
o = o or {active = {}, removed = {}}
setmetatable(o, self)
self.__index = self
return o
end
}
function Dispatch:renderRoute(coords)
ClearGpsMultiRoute()
StartGpsMultiRoute(6, true, true)
AddPointToGpsMultiRoute(table.unpack(coords))
SetGpsMultiRouteRender(true)
end
function Dispatch:create(dispatchNumber, coords)
if not (dispatchNumber and coords) then
return
end
-- Create a fire blip
local blip = AddBlipForCoord(table.unpack(coords))
SetBlipSprite(blip, 436)
SetBlipDisplay(blip, 4)
SetBlipScale(blip, 1.5)
SetBlipColour(blip, 1)
SetBlipAsShortRange(blip, false)
BeginTextCommandSetBlipName("STRING")
AddTextComponentString("Fire #" .. dispatchNumber)
EndTextCommandSetBlipName(blip)
self.blips[dispatchNumber] = {
coords = coords,
blip = blip
}
self:renderRoute(coords)
if Config.Dispatch.playSound then
Citizen.CreateThread(
function()
for i = 1, 3 do
PlaySoundFromEntity(-1, "IDLE_BEEP", GetPlayerPed(-1), "EPSILONISM_04_SOUNDSET", 0)
Citizen.Wait(300)
end
end
)
end
FlashMinimapDisplay()
Citizen.SetTimeout(
Config.Dispatch.removeBlipTimeout,
function()
if self.blips[dispatchNumber] and self.blips[dispatchNumber].blip then
RemoveBlip(blip)
self.blips[dispatchNumber].blip = false
end
if self.lastCall == dispatchNumber then
ClearGpsMultiRoute()
end
end
)
-- Only store the last 'Config.Dispatch.storeLast' dispatches' data.
if countElements(self.blips) > Config.Dispatch.storeLast then
local order = {}
for k, v in pairs(self.blips) do
table.insert(order, k)
end
table.sort(order)
self.blips[order[1]] = nil
end
self.lastCall = dispatchNumber
end
function Dispatch:clear(dispatchNumber)
ClearGpsMultiRoute()
if dispatchNumber and self.blips[dispatchNumber] and self.blips[dispatchNumber].blip then
RemoveBlip(self.blips[dispatchNumber].blip)
self.blips[dispatchNumber].blip = false
end
end
function Dispatch:remind(dispatchNumber)
if self.blips[dispatchNumber] then
SetNewWaypoint(table.unpack(self.blips[dispatchNumber].coords.xy))
return true
else
return false
end
end
--================================--
-- DISPATCH ROUTE REMOVAL --
--================================--
if Config.Dispatch.clearGpsRadius and tonumber(Config.Dispatch.clearGpsRadius) then
Citizen.CreateThread(
function()
while true do
Citizen.Wait(5000)
if Dispatch.lastCall and Dispatch.blips[Dispatch.lastCall] and Dispatch.blips[Dispatch.lastCall].blip and #(Dispatch.blips[Dispatch.lastCall].coords - GetEntityCoords(GetPlayerPed(-1))) < Config.Dispatch.clearGpsRadius then
ClearGpsMultiRoute()
end
end
end
)
end