Full View config.lua

Preview File Updated: v2.0.2 - 05.05.2024

Config = {}

------------------------------ β–ˆβ–€ β–ˆβ–€β–„ β–„β–€β–„ β–ˆβ–„ β–„β–ˆ β–ˆβ–ˆβ–€ β–ˆ   β–ˆ β–„β–€β–„ β–ˆβ–€β–„ β–ˆβ–„β–€ ------------------------------
------------------------------ β–ˆβ–€ β–ˆβ–€β–„ β–ˆβ–€β–ˆ β–ˆ β–€ β–ˆ β–ˆβ–„β–„ β–€β–„β–€β–„β–€ β–€β–„β–€ β–ˆβ–€β–„ β–ˆ β–ˆ ------------------------------
Config.Core = "ESX" -- "ESX" / "QB-Core"
Config.CoreExport = function()
    if Config.Core == "ESX" then
        return exports['es_extended']:getSharedObject()
    elseif Config.Core == "QB-Core" then
        return exports['qb-core']:GetCoreObject()
    end
end

Config.Notification = function(message, time, type)
    if type == "success" then
        if GetResourceState("vms_notify") == 'started' then
            exports['vms_notify']:Notification("TUNING", message, time, "#36f230", "fa-solid fa-screwdriver-wrench")
        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("TUNING", message, time, "#f23030", "fa-solid fa-screwdriver-wrench")
        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("TUNING", message, time, "#4287f5", "fa-solid fa-screwdriver-wrench")
        else
            TriggerEvent('esx:showNotification', message)
            TriggerEvent('QBCore:Notify', message, 'primary', time)
        end
    end
end

Config.Hud = {
    Enable = function()
        DisplayRadar(true)

        if GetResourceState('vms_hud') ~= 'missing' then
            exports['vms_hud']:Display(true)
        end
    end,
    Disable = function()
        DisplayRadar(false)
        
        if GetResourceState('vms_hud') ~= 'missing' then
            exports['vms_hud']:Display(false)
        end
    end
}

Config.Interact = {
    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
        -- exports['qb-core']:DrawText(message, 'right')
    end,
    Close = function()
        exports["interact"]:Close() -- Here you can use your TextUI or use my free one - https://github.com/vames-dev/interact
        -- exports['qb-core']:HideText()
    end
}


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

-- @PlayerLogoutServer: ESX: "esx:playerDropped" / QB-Core: "QBCore:Server:OnPlayerUnload"
Config.PlayerLogoutServer = "esx:playerDropped"

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


------------------------ β–ˆβ–„ β–„β–ˆ β–„β–€β–„ β–ˆ β–ˆβ–„ β–ˆ   β–„β–€β–€ β–ˆβ–ˆβ–€ β–€β–ˆβ–€ β–€β–ˆβ–€ β–ˆ β–ˆβ–„ β–ˆ β–„β–€  β–„β–€β–€ ------------------------
------------------------ β–ˆ β–€ β–ˆ β–ˆβ–€β–ˆ β–ˆ β–ˆ β–€β–ˆ   β–„β–ˆβ–ˆ β–ˆβ–„β–„  β–ˆ   β–ˆ  β–ˆ β–ˆ β–€β–ˆ β–€β–„β–ˆ β–„β–ˆβ–ˆ ------------------------

-- @UseProgressbar: If you want to use a progress bar for part installation, you can do so below.
Config.UseProgressBar = false

-- @UseSkillbar: If you want to use the skill bar to install parts, you can do so below.
Config.UseSkillbar = false

-- @UseTarget: Do you want to use target system
Config.UseTarget = false
Config.TargetResource = 'ox_target' -- 'ox_target' / 'qb-target'
Config.UseTargetSystemForBossMenu = false

-- @Menu: Menu that will appear to the mechanic if the player sends a tuning request
Config.Menu = 'esx_context' -- 'esx_menu_default' / 'esx_context' / 'qb-menu' / 'ox_lib'
Config.ESXMenuDefault_Align = 'right'
Config.UseCustomQuestionMenu = false -- if you want to use for example vms_notify Question Menu, set it true, if you want to use default menu from Config.Menu set it false

Config.RequiredJobToBeHired = 'unemployed'

-- @AutoExecuteQuery: Automatic execution of the creation of the vms_business table in database
Config.AutoExecuteQuery = true


Config.KeyToAccess = 38 -- E

Config.UseMarkers = true
Config.UseText3D = true
Config.UseHelpNotify = true

Config.Markers = {
    part = {
        id = 21,
        size = vec(0.4, 0.4, 0.4),
        rotation = {0.0, 0.0, 0.0},
        color = {r=87, g=60, b=250, a=120},
        bobUpAndDown = false,
        rotate = true,
        distanceToSee = 25.0,
        distanceToAccess = 1.0
    },
    installation = {
        id = 20,
        size = vec(0.35, 0.35, 0.35),
        rotation = {0.0, 180.0, 0.0},
        color = {r=87, g=60, b=250, a=120},
        bobUpAndDown = false,
        rotate = true,
        distanceToSee = 25.0,
        distanceToAccess = 1.0
    },
    talkWithNpc = { -- talk with npc marker from missions
        id = 20,
        size = vec(0.28, 0.28, 0.28),
        rotation = {0.0, 180.0, 0.0},
        color = {r=50, g=207, b=91, a=185},
        bobUpAndDown = false,
        rotate = true,
        distanceToSee = 25.0,
        distanceToAccess = 1.0
    },
    collectMoney = { -- Collect Money marker from missions
        id = 29,
        size = vec(0.28, 0.28, 0.28),
        rotation = {0.0, 0.0, 0.0},
        color = {r=50, g=207, b=91, a=185},
        bobUpAndDown = false,
        rotate = true,
        distanceToSee = 25.0,
        distanceToAccess = 1.0
    },
    returnVehicle = { -- Return vehicle marker from missions
        id = 1,
        size = vec(2.7, 2.7, 0.72),
        rotation = {0.0, 0.0, 0.0},
        color = {r=50, g=207, b=91, a=185},
        bobUpAndDown = false,
        rotate = false,
        distanceToSee = 25.0,
        distanceToAccess = 4.0
    },
}

-- @LoadPricesFromDatabase: You can load vehicle prices from the database to automate the configuration process, but make sure that your database match to the function SV.getPricesFromDatabase in config.server.lua
Config.LoadPricesFromDatabase = false

-- @LiveriesUseCustomNames: When using this option, it will search if a name other than NULL exists, if found, it will display the custom name, otherwise, it will set 'Livery ID' as before.
Config.LiveriesUseCustomNames = true

-- @RemoveGunsTuningMods: Do you want tuning parts that add weapons to the vehicle to be automatically detected and removed from the purchase option
Config.RemoveGunsTuningMods = true
Config.DebugModsNames = false -- you will receive name prints that can be entered into Config.BlacklistArmedMods
Config.BlacklistArmedMods = {
    -- This works as a string.find, so for example if you debug the names of the mods and there is GUN_MOD1, GUN_MOD2 etc., just enter "GUN" as below
    "GUN", "ARMOR", "TORPEDO", "MISSILE", "REMOTE", "WIRE", "ROCKET",
}

-- @DefaultVehiclePrice: Default price if the vehicle is not defined in Config.Vehicles (config.vehicles.lua)
Config.DefaultVehiclePrice = 50000

-- @ForMotorcyclesOnlyMotoWheels: When a player wants to tune the wheels of a motorcycle, he will only be able to choose from the 'Motorcycle' section, because by using other types of rims, there may be problems for motorcycles
Config.ForMotorcyclesOnlyMotoWheels = true

-- @UseDiscountCodes: Do you want it to be possible to use the discount code for tuning
Config.UseDiscountCodes = true

-- @DiscountCodeLength: from how many characters the code will be generated
Config.DiscountCodeLength = 12

-- @EnableDiscountsForWorkshops: This allows in the boss-menu to create discount codes for the heads of tuning workshops
Config.EnableDiscountsForWorkshops = true

-- @DiscountCodesPercentages: Percentages available to generate codes in boss menu for player
Config.DiscountCodesPercentages = {5, 10, 15, 20}

-- @DiscountCodesUsablesCount: Number of coupons available to generate codes in player's boss menu
Config.DiscountCodesUsablesCount = {1, 2, 3, 4, 5, 10, 15, 20}

-- @AdminDiscountCodesCommand: Commands for administrators to generate and delete discount codes
Config.AdminDiscountCodesCommand = {
    generate = {
        enabled = true,
        oldESX = false, -- oldESX only for ESX which use essentialmode script.
        commandName = "generatetuningcode",
        argumentsLabels = {
            [1] = "Code name or 0 - if you want to be random", 
            [2] = "Mechanic Point name or all", 
            [3] = "Percentage of discount", 
            [4] = "Count to use"
        },
        helpLabel = "Generate a discount code for tuning.",
        groups = "admin", -- example: string: "admin" or table: {"admin", "moderator"}
    },
    remove = {
        enabled = true,
        oldESX = false, -- oldESX only for ESX which use essentialmode script.
        commandName = "removetuningcode",
        argumentsLabels = {
            [1] = "Code name"
        },
        helpLabel = "Remove tuning discount code by name.",
        groups = "admin", -- example: string: "admin" or table: {"admin", "moderator"}
    }
}

-- @UseBuildInCompanyBalance: If you don't want to use the balance built into the Management Menu, set this to false and configure config.server.lua to be compatible with your server, for example a script for banks that may have company accounts
Config.UseBuildInCompanyBalance = true
Config.RemoveBalanceFromMenu = false -- if you are using other than our prepared esx_society or buildet-in balance, set it true

Config.ESXSocietyEvents = {
    ['check'] = 'esx_society:checkSocietyBalance',
    ['withdraw'] = 'esx_society:withdrawMoney',
    ['deposit'] = 'esx_society:depositMoney',
}

-- @BillMoneyToSocietyPercent: Do you want the company to receive a % from paid billing of tuning a vehicle?
Config.BillMoneyToSocietyPercent = 80

-- @BillMoneyToTunerPercent: Do you want the tuner to receive a % from paid billing of tuning a vehicle?
Config.BillMoneyToTunerPercent = 20

-- @RequestMoneyToTunerPercent: Do you want the tuner to receive a % from request of tuning a vehicle?
Config.RequestMoneyToTunerPercent = 5

-- @AddSocietyMoneyForTuningPercent: Do you want the company to receive a % from price of tuning a vehicle?
Config.AddSocietyMoneyForTuningPercent = 10 -- number or false


-- @UseTuningPoints: Do you want to use the points provided by the vms_tuning resource, if you want to use export with another resource set false
Config.UseTuningPoints = true

Config.TuningPoints = {
    ['BennyS'] = {
        -- BennyS: Interior Benny'S.
        blip = {
            enabled = true,
            sprite = 72,
            display = 4,
            scale = 0.85,
            color = 83,
            coords = vec(-222.41, -1329.52, 29.89),
            name = "Tuning",
        },
        marker = {
            enabled = true,
            id = 1,
            size = vec(2.7, 2.7, 0.25),
            color = {r=87, g=60, b=250, a=125},
            rotate = false,
            distanceToSee = 15.0,
            distanceToAccess = 1.9
        },
        markerBossMenu = {
            enabled = true,
            id = 29,
            coords = vector3(-197.97, -1341.61, 34.7),
            size = vec(0.55, 0.55, 0.55),
            color = {r=87, g=60, b=250, a=125},
            rotate = true,
            distanceToSee = 15.0,
            distanceToAccess = 1.3,
        },
        whitelist = { -- https://docs.vames-store.com/assets/vms_tuning/guides/
            vehicleClasses = {
                [0] = true, -- Compacts
                [1] = true, -- Sedans
                [2] = true, -- SUVs
                [3] = true, -- Coupes
                [4] = true, -- Muscle
                [5] = true, -- Sports Classics
                [6] = true, -- Sports
                [7] = true, -- Super
                [8] = true, -- Motorcycles
                [9] = true, -- Off-road
                -- [10] = true, -- Industrial
                -- [11] = true, -- Utility
                [12] = true, -- Vans
                [13] = true, -- Cycles
                -- [14] = true, -- Boats
                -- [15] = true, -- Helicopters
                -- [16] = true, -- Planes
                -- [17] = true, -- Service
                [18] = true, -- Emergency
                -- [19] = true, -- Military
                [20] = true, -- Commercial
                -- [21] = true, -- Trains
                -- [22] = true, -- Open Wheel
            },
            -- indexedColors = {},
            -- menus = {},
            -- parts = {},
            -- actions = {},
        },
        blacklist = { -- https://docs.vames-store.com/assets/vms_tuning/guides/
            -- vehicleClasses = {},
            -- indexedColors = {
            --     ['chameleon'] = true,
            -- },
            -- menus = {},
            -- parts = {},
            -- actions = {},
        },
        points = {
            vector3(-222.41, -1329.52, 29.89),
            vector3(-223.26, -1323.21, 29.89),
        },
        jobGradesToSet = {
            {grade = 0, label = 'Recruit'},
            {grade = 1, label = 'Employee'},
            {grade = 2, label = 'Manager', needToBeBoss = true}, -- needToBeBoss means that only the boss can give this grade, the manager will not be able to do so
            {grade = 3, label = 'Boss', needToBeBoss = true}, -- needToBeBoss means that only the boss can give this grade, the manager will not be able to do so
        },

        vehicleSpawn = vector4(-181.4, -1289.19, 30.3, 175.67),

        client_can_select_tuning = false, -- this causes each player to be able to select parts for his vehicle, then when paying, he selects the nearest mechanic who will install all the selected parts for him

        send_bill_to_player = true,

        pay_from_society_money = false, -- Do you want the payment to be made with money from the society, if so, you need to enter the account name in society_name
        society_name = 'society_mechanic', -- Society name will be requiered for pay_from_society_money or for Config.AddSocietyMoneyForTuningPercent or for Config.BillMoneyToSocietyPercent only if you are using esx_society/qb-management | example: 'society_mechanic',
        
        job = 'mechanic', -- not required if you want to use this public.
        grades_access = {'recruit', 'employee', 'manager', 'boss'}, -- nil for every user with job, string: 'name', table: {'name', 'name2'}
        manager_grades = 'manager', -- string: 'name', table: {'name', 'name2'}
        boss_grades = 'boss', -- string: 'name', table: {'name', 'name2'}
    },
    ['BennyS-Paintshop'] = {
        -- BennyS: Interior Benny'S.
        blip = {
            enabled = false,
        },
        marker = {
            enabled = true,
            id = 1,
            size = vec(2.7, 2.7, 0.25),
            color = {r=87, g=60, b=250, a=125},
            rotate = false,
            distanceToSee = 15.0,
            distanceToAccess = 1.9
        },
        whitelist = {
            -- vehicleClasses = {},
            -- indexedColors = {},
            menus = {
                ['visual'] = true, 
                ['paint'] = true,
                ['color1'] = true, 
                ['color2'] = true, 
            },
            parts = {
                ['color1'] = true, 
                ['color2'] = true, 
                ['pearlescentColor'] = true, 
                ['paintType1'] = true, 
                ['paintType2'] = true
            },
            -- actions = {}
        },
        blacklist = {
            -- vehicleClasses = {},
            -- indexedColors = {},
            -- menus = {},
            -- parts = {},
            actions = {
                ['repair'] = true
            },
        },
        points = {
            vector3(-200.73, -1324.29, 29.71),
        },

        client_can_select_tuning = false,
        
        send_bill_to_player = true,

        pay_from_society_money = false,
        society_name = nil,

        job = 'mechanic', -- not required if you want to use this public.
        grades_access = {'recruit', 'employee', 'boss'},
    },
}

Last updated