Main/resources/[carscripts]/jg-handling/framework/cl-functions.lua
2025-06-07 08:51:21 +02:00

89 lines
No EOL
3.3 KiB
Lua

---@param msg string
---@param type? "success" | "warning" | "error"
---@param time? number
function Framework.Client.Notify(msg, type, time)
type = type or "success"
time = time or 5000
if (Config.Notifications == "auto" and GetResourceState("okokNotify") == "started") or Config.Notifications == "okokNotify" then
exports["okokNotify"]:Alert("Mechanic", msg, time, type)
elseif (Config.Notifications == "auto" and GetResourceState("ps-ui") == "started") or Config.Notifications == "ps-ui" then
exports["ps-ui"]:Notify(msg, type, time)
elseif (Config.Notifications == "auto" and GetResourceState("nox_notify") == "started") or Config.Notifications == "nox_notify" then
TriggerEvent("nox_notify:showClientNotify", "Mechanic", msg, type, time)
elseif (Config.Notifications == "auto" and GetResourceState("ox_lib") == "started") or Config.Notifications == "ox_lib" then
exports["ox_lib"]:notify({
title = "Mechanic",
description = msg,
type = type
})
else
if Config.Framework == "QBCore" then
return QBCore.Functions.Notify(msg, type, time)
elseif Config.Framework == "Qbox" then
exports.qbx_core:Notify(msg, type, time)
elseif Config.Framework == "ESX" then
return ESX.ShowNotification(msg, type)
else
BeginTextCommandThefeedPost("STRING")
AddTextComponentSubstringPlayerName(("[%s] %s"):format(type:upper(), msg))
EndTextCommandThefeedPostTicker(true, true)
end
end
end
RegisterNetEvent("jg-handling:client:notify", function(...)
Framework.Client.Notify(...)
end)
-- Get a nice vehicle label from either QB/Qbx shared or GTA natives
---@param model string | number
function Framework.Client.GetVehicleLabel(model)
if type(model) == "string" then
if Config.Framework == "QBCore" and QBCore.Shared.Vehicles then
local vehShared = QBCore.Shared.Vehicles[model]
if vehShared then
return vehShared.brand .. " " .. vehShared.name
end
end
if Config.Framework == "Qbox" and exports.qbx_core:GetVehiclesByName() then
local vehShared = exports.qbx_core:GetVehiclesByName()[model]
if vehShared then
return vehShared.brand .. " " .. vehShared.name
end
end
end
local hash = type(model) == "string" and joaat(model) or model
local makeName = GetMakeNameFromVehicleModel(hash)
local modelName = GetDisplayNameFromVehicleModel(hash)
local label = GetLabelText(makeName) .. " " .. GetLabelText(modelName)
if makeName == "CARNOTFOUND" or modelName == "CARNOTFOUND" then
label = tostring(model)
else
if GetLabelText(modelName) == "NULL" and GetLabelText(makeName) == "NULL" then
label = (makeName or "") .. " " .. (modelName or "")
elseif GetLabelText(makeName) == "NULL" then
label = GetLabelText(modelName)
end
end
return label
end
---@param vehicle integer
---@return string|false plate
function Framework.Client.GetPlate(vehicle)
local plate = GetVehicleNumberPlateText(vehicle)
if not plate or plate == nil or plate == "" then return false end
if GetResourceState("brazzers-fakeplates") == "started" then
local originalPlate = lib.callback.await("jg-mechanic:brazzers-fakeplates:getPlateFromFakePlate", false, plate)
if originalPlate then plate = originalPlate end
end
local trPlate = string.gsub(plate, "^%s*(.-)%s*$", "%1")
return trPlate
end