78 lines
3.0 KiB
Lua
78 lines
3.0 KiB
Lua
Utils = {}
|
|
Utils.Functions = {}
|
|
--- Prints the contents of a table with optional indentation.
|
|
---
|
|
--- @param table (table) The table to be printed.
|
|
--- @param indent? (number, optional) The level of indentation for formatting.
|
|
Utils.Functions.printTable = function(table, indent)
|
|
indent = indent or 0
|
|
if type(table) == "table" then
|
|
for k, v in pairs(table) do
|
|
local tblType = type(v)
|
|
local formatting = ("%s ^3%s:^0"):format(string.rep(" ", indent), k)
|
|
if tblType == "table" then
|
|
print(formatting)
|
|
Utils.Functions.printTable(v, indent + 1)
|
|
elseif tblType == "boolean" then
|
|
print(("%s^1 %s ^0"):format(formatting, v))
|
|
elseif tblType == "function" then
|
|
print(("%s^9 %s ^0"):format(formatting, v))
|
|
elseif tblType == "number" then
|
|
print(("%s^5 %s ^0"):format(formatting, v))
|
|
elseif tblType == "string" then
|
|
print(("%s ^2%s ^0"):format(formatting, v))
|
|
else
|
|
print(("%s^2 %s ^0"):format(formatting, v))
|
|
end
|
|
end
|
|
else
|
|
print(("%s ^0%s"):format(string.rep(" ", indent), table))
|
|
end
|
|
end
|
|
|
|
--- A simple debug print function that is dependent on a convar
|
|
--- will output a nice prettfied message if debugMode is on
|
|
Utils.Functions.debugPrint = function(tbl, indent)
|
|
if not Config.DebugPrint then return end
|
|
print(("\x1b[ %s : DEBUG]\x1b"):format(GetInvokingResource() or "hp_vehicleshop"))
|
|
Utils.Functions.printTable(tbl, indent)
|
|
print("\x1b[ END DEBUG ]\x1b")
|
|
end
|
|
|
|
---@param name string resource name
|
|
---@return boolean
|
|
Utils.Functions.hasResource = function(name)
|
|
return GetResourceState(name):find("start") ~= nil
|
|
end
|
|
|
|
--- Get framework used by the server
|
|
--- @return object
|
|
Utils.Functions.GetFramework = function()
|
|
if Config.FrameWork == "qb" then
|
|
if not Utils.Functions.hasResource("qb-core") then
|
|
Utils.Functions.debugPrint("QBCore is not installed! The plugin cannot be used with this framework.")
|
|
return false
|
|
end
|
|
return exports["qb-core"]:GetCoreObject()
|
|
elseif Config.FrameWork == "esx" then
|
|
if not Utils.Functions.hasResource("es_extended") then
|
|
Utils.Functions.debugPrint("ESX is not installed! The plugin cannot be used with this framework.")
|
|
return false
|
|
end
|
|
return exports["es_extended"]:getSharedObject()
|
|
end
|
|
end
|
|
|
|
---@param source number | nil Player server id or nil, if value is nil, Trigger client event.
|
|
---@param title string
|
|
---@param type "error" | "success" | "info" | any
|
|
---@param text string
|
|
---@param duration number miliseconds
|
|
Utils.Functions.CustomNotify = function(source, title, type, text, duration, icon)
|
|
if source and source > 0 then -- Server Notify
|
|
-- TriggerClientEvent("EventName", source, ?, ?, ?, ?)
|
|
else -- Client Notify
|
|
-- exports["ExportName"]:Alert(?, ?, ?, ?)
|
|
end
|
|
end
|