Full View config.client.lua

Preview File Updated: v1.0.4 - 25.08.2024

CL = {}

CL.DrawText3D = function(coords, text, textScale) -- This is the function used when using Config.UseText3D
    local textScale = textScale or 0.45
    local camCoords = GetFinalRenderedCamCoord()
    local distance = #(coords.xyz - camCoords)
    local scale = (textScale / distance) * 2
    local fov = (1 / GetGameplayCamFov()) * 100
    scale = scale * fov
    SetTextScale(0.0 * scale, 0.55 * scale)
    SetTextFont(4)
    SetTextDropShadow()
    SetTextProportional(1)
    SetTextColour(255, 255, 255, 215)
    SetTextEntry("STRING")
    SetTextCentre(true)
    AddTextComponentString(text)
    SetDrawOrigin(coords.x, coords.y, coords.z, 0)
    DrawText(0.0, 0.0)
    ClearDrawOrigin()
end

CL.Notification = function(message, time, type)
    if type == "success" then
        if GetResourceState("vms_notify") == 'started' then
            exports['vms_notify']:Notification("PARKING", message, time, "#36f230", "fa-solid fa-square-parking")
        else
            TriggerEvent('esx:showNotification', message)
            TriggerEvent('QBCore:Notify', message, 'success', time)
        end
    elseif type == "error" then
        if GetResourceState("vms_notify") == 'started' then
            exports['vms_notify']:Notification("PARKING", message, time, "#f23030", "fa-solid fa-square-parking")
        else
            TriggerEvent('esx:showNotification', message)
            TriggerEvent('QBCore:Notify', message, 'error', time)
        end
    elseif type == "info" then
        if GetResourceState("vms_notify") == 'started' then
            exports['vms_notify']:Notification("PARKING", message, time, "#4287f5", "fa-solid fa-square-parking")
        else
            TriggerEvent('esx:showNotification', message)
            TriggerEvent('QBCore:Notify', message, 'primary', time)
        end
    end
end

CL.Hud = {
    Enable = function()
        if GetResourceState('vms_hud') ~= 'missing' then
            -- exports['vms_hud']:Display(true)
        end
    end,
    Disable = function()
        if GetResourceState('vms_hud') ~= 'missing' then
            -- exports['vms_hud']:Display(false)
        end
    end
}

CL.TextUI = {
    Enabled = false,
    Open = function(message)
        exports["interact"]:Open("E", message) -- Here you can use your TextUI or use my free one - https://github.com/vames-dev/interact
    end,
    Close = function()
        exports["interact"]:Close() -- Here you can use your TextUI or use my free one - https://github.com/vames-dev/interact
    end
}


-- █▀ █▀▄ ▄▀▄ █▄ ▄█ ██▀ █   █ ▄▀▄ █▀▄ █▄▀
-- █▀ █▀▄ █▀█ █ ▀ █ █▄▄ ▀▄▀▄▀ ▀▄▀ █▀▄ █ █
CL.GetPlayerData = function(type)
    if Config.Core == "ESX" then
        return ESX.GetPlayerData()
    elseif Config.Core == "QB-Core" then
        return QBCore.Functions.GetPlayerData()
    end
end

CL.GetPlayerIdentifier = function()
    if Config.Core == "ESX" then
        return PlayerData.identifier
    elseif Config.Core == "QB-Core" then
        return PlayerData.citizenid
    end
end

CL.GetPlayerJob = function(type)
    if Config.Core == "ESX" and PlayerData.job then
        if type == "table" then
            return PlayerData.job
        end
        if type == "name" then
            return PlayerData.job.name
        end
        if type == "label" then
            return PlayerData.job.label
        end
        if type == "grade" then
            return PlayerData.job.grade
        end
        if type == "grade_name" then
            return PlayerData.job.grade_name
        end
    elseif Config.Core == "QB-Core" and PlayerData.job then
        if type == "table" then
            return PlayerData.job
        end
        if type == "name" then
            return PlayerData.job.name
        end
        if type == "label" then
            return PlayerData.job.label
        end
        if type == "grade" then
            return PlayerData.job.grade.level
        end
        if type == "grade_name" then
            return PlayerData.job.grade.name
        end
    end
    return nil
end

CL.GetClosestPlayer = function()
    if Config.Core == "ESX" then
        return ESX.Game.GetClosestPlayer(GetEntityCoords(PlayerPedId()), 6.0) -- ESX
    elseif Config.Core == "QB-Core" then
        return QBCore.Functions.GetClosestPlayer(GetEntityCoords(PlayerPedId())) -- QB-Core
    end
end

CL.GetClosestPlayers = function()
    if Config.Core == "ESX" then
        local playerInArea = ESX.Game.GetPlayersInArea(GetEntityCoords(PlayerPedId()), 5.0)
        return playerInArea
    elseif Config.Core == "QB-Core" then
        local playerInArea = QBCore.Functions.GetPlayersFromCoords(GetEntityCoords(PlayerPedId()), 5.0)
        return playerInArea
    end
end

CL.GetClosestVehicle = function(myCoords)
    if Config.Core == "ESX" then
        local closestVehicle, closestDistance = ESX.Game.GetClosestVehicle(myCoords);
        if closestDistance >= 6.0 then
            return nil
        end
        return closestVehicle;
        
    elseif Config.Core == "QB-Core" then
        local closestVehicle, closestDistance = QBCore.Functions.GetClosestVehicle(myCoords);
        if closestDistance >= 6.0 then
            return nil
        end
        return closestVehicle;
        
    end
end

CL.IsAreaClear = function(coords, distance)
    if Config.Core == "ESX" then
        return ESX.Game.IsSpawnPointClear(coords.xyz, distance)
    else
        return QBCore.Functions.SpawnClear(coords.xyz, distance)
    end
end

CL.GetVehicleProperties = function(vehicle)
    if Config.Core == "ESX" then
        return ESX.Game.GetVehicleProperties(vehicle)

    elseif Config.Core == "QB-Core" then
        return QBCore.Functions.GetVehicleProperties(vehicle)
        
    end
end

CL.SetVehicleProperties = function(vehicle, properties)
    if Config.Core == "ESX" then
        ESX.Game.SetVehicleProperties(vehicle, properties)
    
    elseif Config.Core == "QB-Core" then
        QBCore.Functions.SetVehicleProperties(vehicle, properties)
        
    end
end

-- █▀ █ █ ██▀ █  
-- █▀ ▀▄█ █▄▄ █▄▄
CL.SetVehicleFuel = function(vehicle, level)
    local oxFuel = GetResourceState('ox_fuel') == 'started'
    if oxFuel then
        Entity(vehicle).state.fuel = level
    end

    local legacyFuel = GetResourceState('LegacyFuel') == 'started'
    if legacyFuel then
        exports["LegacyFuel"]:SetFuel(vehicle, level)
    end

    local ndFuel = GetResourceState('ND_Fuel') == 'started'
    if ndFuel then
        exports['ND_Fuel']:SetFuel(vehicle, level)
    end

    local cdnFuel = GetResourceState('cdn-fuel') == 'started'
    if cdnFuel then
        exports['cdn-fuel']:SetFuel(vehicle, level)
    end

    local qsFuel = GetResourceState('qs-fuelstations') == 'started'
    if qsFuel then
        exports['qs-fuelstations']:SetFuel(vehicle, level)
    end

    local okokGasStation = GetResourceState('okokGasStation') == 'started'
    if okokGasStation then
        exports['okokGasStation']:SetFuel(vehicle, level)
    end

    local psFuel = GetResourceState('ps-fuel') == 'started'
    if psFuel then
        exports['ps-fuel']:SetFuel(vehicle, level)
    end

    local esxSnaFuel = GetResourceState('esx-sna-fuel') == 'started'
    if esxSnaFuel then
        exports['esx-sna-fuel']:SetFuel(vehicle, level)
    end

    local qbSnaFuel = GetResourceState('qb-sna-fuel') == 'started'
    if qbSnaFuel then
        exports['qb-sna-fuel']:SetFuel(vehicle, level)
    end
    
    local frFuel = GetResourceState('FRFuel') == 'started'
    if frFuel then
        exports['FRFuel']:setFuel(vehicle, level)
    end

end

CL.SetOnVehicleSpawn = function(vehicle, properties)
    CL.SetVehicleFuel(vehicle, properties['fuelLevel'])

end

CL.GetVehicleLabel = function(model)
    if not model then return nil end;
    
    local model = tonumber(model) and model or joaat(model)
    
	for k, v in pairs(Config.CustomVehicleLabels) do
		if model == k then
			return v
		end
	end

    local vehLabel = GetLabelText(GetDisplayNameFromVehicleModel(model))
    if vehLabel == 'NULL' then
        return GetDisplayNameFromVehicleModel(model)
    end

	return vehLabel
end

-- █ █ ██▀ █▄█ █ ▄▀▀ █   ██▀   █▄▀ ██▀ ▀▄▀ ▄▀▀
-- ▀▄▀ █▄▄ █ █ █ ▀▄▄ █▄▄ █▄▄   █ █ █▄▄  █  ▄██
CL.GiveVehicleKeys = function(vehicle, plate)
    local qsVehicleKeys = GetResourceState('qs-vehiclekeys') == 'started'
    if qsVehicleKeys then
        local model = GetDisplayNameFromVehicleModel(GetEntityModel(vehicle))
        exports['qs-vehiclekeys']:GiveKeys(plate, model)
    end
    
    local qbVehicleKeys = GetResourceState('qb-vehiclekeys') == 'started'
    if qbVehicleKeys then
        TriggerEvent("vehiclekeys:client:SetOwner", plate)
    end

    local wasabiCarLock = GetResourceState('wasabi_carlock') == 'started'
    if wasabiCarLock then
        exports['wasabi_carlock']:GiveKey(plate)
    end

end

CL.RemoveVehicleKeys = function(vehicle, plate)
    local qsVehicleKeys = GetResourceState('qs-vehiclekeys') == 'started'
    if qsVehicleKeys then
        local model = GetDisplayNameFromVehicleModel(GetEntityModel(vehicle))
        exports['qs-vehiclekeys']:RemoveKeys(plate, model)
    end
    
    local qbVehicleKeys = GetResourceState('qb-vehiclekeys') == 'started'
    if qbVehicleKeys then
        TriggerEvent("qb-vehiclekeys:client:RemoveKeys", plate)
    end

    local wasabiCarLock = GetResourceState('wasabi_carlock') == 'started'
    if wasabiCarLock then
        exports['wasabi_carlock']:RemoveKey(plate)
    end
    
end

Last updated