forked from Simnation/Main
99 lines
2.7 KiB
Lua
99 lines
2.7 KiB
Lua
---
|
|
--[[ Contains client-side helper functions. ]]
|
|
---
|
|
|
|
local Utils = {}
|
|
|
|
--- Custom notifications with options.
|
|
---@param title string
|
|
---@param type 'inform'|'error'|'success'|'warning'
|
|
---@param duration number
|
|
---@param description string
|
|
function Utils.Notify(title, type, duration, description)
|
|
lib.notify({
|
|
title = title,
|
|
description = description,
|
|
duration = duration,
|
|
position = 'top-right',
|
|
type = type,
|
|
})
|
|
end
|
|
|
|
--[[ Show the TextUI window ]]
|
|
function Utils.ShowTextUI(text, options)
|
|
lib.showTextUI(text, options)
|
|
end
|
|
|
|
--[[ Hide the TextUI window ]]
|
|
function Utils.HideTextUI()
|
|
lib.hideTextUI()
|
|
end
|
|
|
|
function Utils.TriggerPoliceAlert(coords)
|
|
local ped = cache.ped
|
|
-- ? Use your own alert dispatch script export/event
|
|
end
|
|
|
|
--[[ There are situations where you need to hide the Hud script ]]
|
|
function Utils.ToggleHud(state)
|
|
if shared.IsResourceStart('0r-hud-v3') then
|
|
exports['0r-hud-v3']:ToggleVisible(state)
|
|
else
|
|
-- # Your hud script export
|
|
end
|
|
end
|
|
|
|
---Creates an object with the specified params
|
|
---@param model string
|
|
---@param coords vector3
|
|
---@param rotation vector3
|
|
---@param freeze boolean
|
|
---@param isNetwork boolean
|
|
---@param doorFlag boolean
|
|
---@return integer
|
|
function Utils.CreateObject(model, coords, rotation, freeze, isNetwork, doorFlag)
|
|
if freeze == nil then freeze = true end
|
|
if isNetwork == nil then isNetwork = false end
|
|
if doorFlag == nil then doorFlag = false end
|
|
lib.requestModel(model)
|
|
local object = CreateObject(model, coords.x, coords.y, coords.z, isNetwork, isNetwork, doorFlag)
|
|
SetEntityCoords(object, coords.x, coords.y, coords.z, false, false, false, true)
|
|
if rotation then
|
|
SetEntityRotation(object, rotation.x, rotation.y, rotation.z, 2, false)
|
|
end
|
|
FreezeEntityPosition(object, freeze)
|
|
SetModelAsNoLongerNeeded(model)
|
|
return object
|
|
end
|
|
|
|
function Utils.DeleteEntities(data)
|
|
if type(data) ~= 'table' then
|
|
data = { data }
|
|
end
|
|
for key, entity in pairs(data) do
|
|
if entity and DoesEntityExist(entity) then
|
|
DeleteEntity(entity)
|
|
end
|
|
end
|
|
end
|
|
|
|
function Utils.WaitForEntityWithNetworkId(networkId)
|
|
if NetworkDoesEntityExistWithNetworkId(networkId) then return true end
|
|
|
|
local startTime = GetGameTimer()
|
|
|
|
while GetGameTimer() - startTime < 5000 do
|
|
if NetworkDoesEntityExistWithNetworkId(networkId) then
|
|
return true
|
|
end
|
|
Citizen.Wait(0)
|
|
end
|
|
return false
|
|
end
|
|
|
|
function Utils.debug(...)
|
|
if not Config.debug then return end
|
|
lib.print.info(...)
|
|
end
|
|
|
|
return Utils
|