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
 |