---@param text string ---@param errType "info" | "error" | "success function Notify(text, errType) if Config.NotificationSystem == "framework" and FrameworkNotify then FrameworkNotify(text, errType) else lib.notify({ description = text, type = errType }) end end RegisterNetEvent("loaf_spikestrips:notify", Notify) ---@param entity number function PlayDeployAudio(entity) debugprint("Loading audio bank..") while not RequestScriptAudioBank("dlc_stinger/stinger", false) do Wait(0) end debugprint("Audio bank loaded") local soundId = GetSoundId() PlaySoundFromEntity(soundId, "deploy_stinger", entity, "stinger", false, 0) ReleaseSoundId(soundId) ReleaseNamedScriptAudioBank("stinger") end ---Loads an anim dict and returns it ---@param dict string ---@return string function LoadDict(dict) RequestAnimDict(dict) while not HasAnimDictLoaded(dict) do Wait(0) end return dict end ---Loads a model and returns the hash ---@param model number | string ---@return number function LoadModel(model) local hash = type(model) == "string" and joaat(model) or model RequestModel(hash) while not HasModelLoaded(hash) do Wait(0) end ---@diagnostic disable-next-line: return-type-mismatch return hash end ---Wait for an animation to start ---@param entity number ---@param dict string ---@param animation string function WaitForAnimation(entity, dict, animation) while not IsEntityPlayingAnim(entity, dict, animation, 3) do Wait(0) end end ---Waits for a network id to exists, takes control of the entity and returns it ---@param netId number ---@return number entity function WaitForControlAndNetId(netId) while not NetworkDoesNetworkIdExist(netId) or not NetworkGetEntityFromNetworkId(netId) do Wait(0) end local entity = NetworkGetEntityFromNetworkId(netId) while not NetworkHasControlOfEntity(entity) do NetworkRequestControlOfEntity(entity) Wait(0) end return entity end ---@param coords vector3 | vector4 ---@return number function CreateStingerBlip(coords) local blip = AddBlipForCoord(coords.x, coords.y, coords.z) SetBlipSprite(blip, 237) -- 237, 274, 677 SetBlipColour(blip, 39) SetBlipScale(blip, 0.6) SetBlipAsShortRange(blip, true) SetBlipDisplay(blip, 2) BeginTextCommandSetBlipName("SPIKESTRIP_BLIP") EndTextCommandSetBlipName(blip) return blip end function ShowHelpText(textEntry) ClearHelp(true) BeginTextCommandDisplayHelp(textEntry) EndTextCommandDisplayHelp(0, true, true, 0) end function ClearHelpText() ClearHelp(true) end