Full View config.lua

Config = {}

-- Get Duty Status from the client side:
-- local jobDutyStatus = exports['vms_jobs']:getJobDuty()
-- local gangDutyStatus = exports['vms_jobs']:getGangDuty()

-- Get Duty Status from the server side:
-- local jobDutyStatus = exports['vms_jobs']:getJobDuty(source)
-- local gangDutyStatus = exports['vms_jobs']:getGangDuty(source)


------------------------------ █▀ █▀▄ ▄▀▄ █▄ ▄█ ██▀ █   █ ▄▀▄ █▀▄ █▄▀ ------------------------------
------------------------------ █▀ █▀▄ █▀█ █ ▀ █ █▄▄ ▀▄▀▄▀ ▀▄▀ █▀▄ █ █ ------------------------------
Config.Core = "ESX" -- "ESX" / "QB-Core"
Config.CoreExport = function()
    return exports['es_extended']:getSharedObject()
    -- return exports['qb-core']:GetCoreObject()
end

Config.Notification = function(title, message, time, type)
    if type == "success" then
        exports['vms_notify']:Notification(title, message, time, "#36f230", "fa-solid fa-store")
        -- ESX.ShowNotification(message)
	-- QBCore.Functions.Notify(message, "success", time)
    elseif type == "error" then
        exports['vms_notify']:Notification(title, message, time, "#f23030", "fa-solid fa-store")
        -- ESX.ShowNotification(message)
	-- QBCore.Functions.Notify(message, "error", time)
    elseif type == "info" then
        exports['vms_notify']:Notification(title, message, time, "#4287f5", "fa-solid fa-store")
        -- ESX.ShowNotification(message)
	-- QBCore.Functions.Notify(message, "primary", time)
    end
end

Config.Interact = {
    Enabled = false,
    Open = function(msg)
        exports["interact"]:Open("E", msg) -- 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,
}

------------------------------- ▀█▀ █▀▄ ▄▀▄ █▄ █ ▄▀▀ █   ▄▀▄ ▀█▀ ██▀ -------------------------------
-------------------------------  █  █▀▄ █▀█ █ ▀█ ▄██ █▄▄ █▀█  █  █▄▄ -------------------------------
Config.Translate = {
    ['menu.title.fastmenu'] = "Menu - %s",
    ['menu.title.cloakroom'] = "Cloakroom",
    ['menu.title.vehicles'] = "Vehicles",
    ['menu.title.shop'] = "Shop",
    ['menu.title.sell'] = "Sell",
    ['menu.title.storage'] = "Storage",
    ['menu.title.storage_put'] = "Put Items",
    ['menu.title.storage_pull'] = "Pull Items",
    
    ['menu_dialog.title.storage_put'] = "Enter the count of items to put",
    ['menu_dialog.title.storage_pull'] = "Enter the count of items to pull",
    
    ['menu.element.shopitem_with_price'] = "%s <span style='color:green'>%s$</span> (%sx)",
    ['menu.element.shopitem_without_price'] = "%s (%sx)",
    ['menu.element.sellitem_with_price'] = "%s <span style='color:green'>%s$</span> (%sx)",
    ['menu.element.storage_put'] = "Put items",
    ['menu.element.storage_put_format'] = "%s (%s)",
    ['menu.element.storage_pull'] = "Pull items",
    ['menu.element.storage_pull_format'] = "%s (%s)",

    ['notify.title.harvest'] = 'ITEM HARVEST',
    ['notify.title.exchange'] = 'ITEM EXCHANGE',
    ['notify.title.shop'] = 'SHOP',
    ['notify.title.sell'] = 'SELL',
    ['notify.title.vehicle'] = 'VEHICLE',
    ['notify.title.storage'] = 'STORAGE',
    ['notify.title.duty'] = 'DUTY',
    
    ['notify.storage.putted_item'] = "You put %s (%s) to storage.",
    ['notify.storage.pulled_item'] = "You pull %s (%s) to storage.",
    ['notify.storage.put_quantity_invalid'] = "Quantity invalid.",
    ['notify.storage.pull_quantity_invalid'] = "Quantity invalid.",
    ['notify.storage.does_not_have_items'] = "Storage does not have any items.",
    ['notify.inv.does_not_have_items'] = "You don't have any items in inventory.",
    ['notify.duty.on'] = "You signed up for service.",
    ['notify.duty.off'] = "You have discharged from service.",

    ['veh.area_is_occupied'] = 'Area is occupied.',

    ['inv.not_enough_space'] = "You do not have enough space in your inventory to complete this action.",
    ['inv.not_enough_items'] = "You do not have enough required items to complete this action.",
    ['inv.not_enough_money'] = "You do not have enough money.",
    ['inv.already_got_weapon'] = "You already have this weapon.",


    ['menu.cloakroom.citizen_wear'] = "Citizen Wear",

    ['keybind.fastmenu.description'] = "Job Menu",

    ['menu.confirm.storage_put'] = {label = "Put", icon = ""},
    ['menu.confirm.storage_pull'] = {label = "Pull", icon = ""},
}


------------------------ █▄ ▄█ ▄▀▄ █ █▄ █   ▄▀▀ ██▀ ▀█▀ ▀█▀ █ █▄ █ ▄▀  ▄▀▀ ------------------------
------------------------ █ ▀ █ █▀█ █ █ ▀█   ▄██ █▄▄  █   █  █ █ ▀█ ▀▄█ ▄██ ------------------------
-- @PlayerLoaded - ESX: "esx:playerLoaded" / QB-Core: "QBCore:Client:OnPlayerLoaded"
Config.PlayerLoaded = "esx:playerLoaded"

-- @PlayerLogout - ESX: "esx:playerLogout" / QB-Core: "QBCore:Client:OnPlayerUnload"
Config.PlayerLogout = "esx:playerLogout"

-- @PlayerSetJob - ESX: "esx:setJob" / QB-Core: "QBCore:Client:OnJobUpdate"
Config.PlayerSetJob = "esx:setJob"

-- @PlayerSetGang - ESX: "esx:setJob2" / QB-Core: "QBCore:Client:OnGangUpdate"
Config.PlayerSetGang = "esx:setJob2" -- "esx:setJob2" is custom trigger, does not exist in default ESX

-- @SkinManager - ESX: "esx_skin", "fivem-appearance", "illenium-appearance" / QB-Core: "qb-clothing", "fivem-appearance", "illenium-appearance" 
Config.SkinManager = "esx_skin"

-- @Menu - 'esx_menu_default' / 'esx_context' / 'qb-menu' / 'ox_lib'
Config.Menu = 'esx_context'
Config.ESXMenuAlign = 'right' -- Only for ESX Menus

-- @FastMenuMenu - 'esx_menu_default' / 'esx_context' / 'qb-menu' / 'ox_lib'
Config.FastMenuMenu = 'esx_menu_default'
Config.ESXFastMenuAlign = 'right' -- Only for ESX Menus

Config.ESXInventoryCarry = 'weight' -- For ESX inventory: 'limit' / 'weight'

-- @Society - 'esx_society', 'qb-management', 'other' - if you want to use custom, change in the CL.OpenSociety()
Config.Society = 'esx_society'

-- @Storage - 'vms_jobs', 'esx_addoninventory', 'qb', 'qs', 'other' - if you want to use custom, change in the CL.OpenStorage()
Config.Storage = 'vms_jobs'

Config.StorageOptions = { -- for Config.Storage = 'qb'
    maxweight = 50000,
    slots = 90,
}

Config.UseSaveLastInterior = true -- When a player leaves the server while in an interior with a routing bucket, upon reconnecting to the server, they will be teleported to that interior along with loading the virtual world they were in.

Config.DefaultRoutingBucket = 0

Config.TeleportFadeDuration = 500

Config.KeyToAccess = 38 -- E

Config.UseFastMenu = true
Config.FastMenuKey = 'f6'
Config.FastMenuCommand = '+f6'

Config.ProgressBar = function(data, cb)
    exports["rprogress"]:Custom({
        Async = true,
        canCancel = data.can_cancel,
        Duration = data.time,
        Label = data.label,
        DisableControls = {
            Mouse = false,
            Player = true,
            Vehicle = true
        },
        onComplete = function()
            cb()
        end
    })
end

Config.Companies = {} -- do not insert here anything

Config.PublicTeleports = {
    {
        marker = {
            distanceToSee = 15.0,
            distanceToAccess = 1.0,
            id = 21,
            color = {r = 200, g = 200, b = 200, a = 125},
            size = vec(0.4, 0.4, 0.4),
            bobUpAndDown = false,
            rotate = true,
            showOnFoot = true,
            showInVehicle = true,
            accessOnFoot = true,
            accessInVehicle = false,
            requiredRoutingBucket = nil
        },
        coords = vector3(-67.0, -802.33, 44.4),
        teleportTo = vector4(-68.85, -814.13, 284.0, 69.96),
        routingBucket = 1, -- this makes it so that you can do multiple jobs in one interiors and they won't hear or see each other
        type = "enter",
        hint = "Press ~INPUT_CONTEXT~ to enter to Mechanic",
    },
    {
        marker = {
            distanceToSee = 15.0,
            distanceToAccess = 2.0,
            id = 21,
            color = {r = 200, g = 200, b = 200, a = 125},
            size = vec(1.4, 1.4, 1.4),
            bobUpAndDown = false,
            rotate = true,
            showOnFoot = true,
            showInVehicle = true,
            accessOnFoot = false,
            accessInVehicle = true,
            requiredRoutingBucket = nil
        },
        coords = vector3(-84.12, -821.47, 35.8),
        teleportTo = vector4(-73.23, -815.04, 284.0, 158.81),
        routingBucket = 1, -- this makes it so that you can do multiple jobs in one interiors and they won't hear or see each other
        type = "enter",
        hint = "Press ~INPUT_CONTEXT~ to exit from Mechanic",
    },
    {
        marker = {
            distanceToSee = 15.0,
            distanceToAccess = 1.0,
            id = 21,
            color = {r = 200, g = 200, b = 200, a = 125},
            size = vec(0.4, 0.4, 0.4),
            bobUpAndDown = false,
            rotate = true,
            showOnFoot = true,
            showInVehicle = true,
            accessOnFoot = true,
            accessInVehicle = false,
            requiredRoutingBucket = 1
        },
        coords = vector3(-68.85, -814.13, 285.2),
        teleportTo = vector4(-67.0, -802.33, 42.4, 344.11),
        type = "exit",
        hint = "Press ~INPUT_CONTEXT~ to enter to Mechanic",
    },
    {
        marker = {
            distanceToSee = 15.0,
            distanceToAccess = 2.0,
            id = 21,
            color = {r = 200, g = 200, b = 200, a = 125},
            size = vec(1.1, 1.1, 1.1),
            bobUpAndDown = false,
            rotate = true,
            showOnFoot = false,
            showInVehicle = true,
            accessOnFoot = false,
            accessInVehicle = true,
            requiredRoutingBucket = nil
        },
        coords = vector3(-72.26, -813.25, 285.29),
        teleportTo = vector4(-72.3, -812.87, 35.32, 37.12),
        type = "exit",
        hint = "Press ~INPUT_CONTEXT~ to exit from Mechanic",
    },
    {
        marker = {
            distanceToSee = 15.0,
            distanceToAccess = 1.0,
            id = 21,
            color = {r = 200, g = 200, b = 200, a = 125},
            size = vec(0.4, 0.4, 0.4),
            bobUpAndDown = false,
            rotate = true,
            showOnFoot = true,
            showInVehicle = true,
            accessOnFoot = true,
            accessInVehicle = false,
            requiredRoutingBucket = nil
        },
        coords = vector3(-116.26, -603.32, 36.28),
        teleportTo = vector4(-1399.35, -481.56, 71.04, 9.51),
        routingBucket = 3, -- this makes it so that you can do multiple jobs in one interiors and they won't hear or see each other
        type = "enter",
        hint = "Press ~INPUT_CONTEXT~ to enter to Lawyer",
    },
    {
        marker = {
            distanceToSee = 15.0,
            distanceToAccess = 1.0,
            id = 21,
            color = {r = 200, g = 200, b = 200, a = 125},
            size = vec(0.4, 0.4, 0.4),
            bobUpAndDown = false,
            rotate = true,
            showOnFoot = true,
            showInVehicle = true,
            accessOnFoot = true,
            accessInVehicle = false,
            requiredRoutingBucket = 3
        },
        coords = vector3(-1399.35, -481.56, 72.04),
        teleportTo = vector4(-116.26, -603.32, 36.28, 253.04),
        type = "exit",
        hint = "Press ~INPUT_CONTEXT~ to exit from Lawyer",
    },
}

Last updated