forked from Simnation/Main
89 lines
3.3 KiB
Lua
89 lines
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
|