For the complete documentation index, see llms.txt. This page is also available as Markdown.

Config

Config = {}

Config.debug = false

Config.locale = 'en'

-- Whether to use metric units for "go_to" task distance display
-- true = meters/kilometers
-- false = yards/miles
Config.useMetricUnits = true

-- Whether the contract base payment should be split between all team members
-- When set to `true`, I highly recommend enabling the 'teamWorkBonuses', to balance working in teams better
Config.splitProfitsBetweenTeam = true

-- Here all the different jobs are defined. You can freely edit, delete and even add more jobs.
-- When creating a new job, make sure to also create a new contract (lua) file with the same key
Config.jobs = {
    ['postop'] = {
        label = 'PostOP',

        -- Two job types are available "delivery" (default) and "trucking"
        type = 'delivery',

        jobName = 'postop', -- Set to false or nil to disable the job requirement

        averageVehicleSpeed = 50, -- Average driving speed in MPH for duration estimation
        payPerMinute = 500, -- Base pay per estimated minute of contract duration (Excluding bonuses)

        headquarters = {
            coords = vec3(-423.22, -2788.71, 6.0),

            blip = {
                sprite = 85,
                color = 5,
                scale = 1.1,
            },

            npc = {
                model = 's_m_m_ups_02',
                coords = vec4(-423.22, -2788.71, 6.0, 316.0),
                scenario = 'WORLD_HUMAN_CLIPBOARD',
            },

            outfitZone = {
                coords = vec3(-426.56, -2786.30, 6.0),
                scale = vec3(2.5, 2.5, 2.5),
                interactDist = 2.5,

                object = 'reh_prop_reh_bag_outfit_01a', -- Optional: prop to spawn at the zone
                objectHeading = 327.0,

                marker = {
                    enabled = true,
                    type = 1,
                    color = { r = 255, g = 255, b = 255, a = 80 },
                    size = vec3(1.2, 1.2, 0.5),
                },
            },
        },

        vehicles = {
            ['mule'] = {
                label = 'Mule',
                model = 'mule',
                packageOffset = vec3(0.0, -3.9, 0.1),
                interactDist = 2,
                doorIndices = { 2, 3 },
                extras = {
                    [1] = false,
                    [2] = false,
                    [3] = false,
                    [4] = true,
                    [5] = false,
                    [6] = false,
                    [7] = false,
                },
            },
            ['boxville4'] = {
                label = 'Boxville',
                model = 'boxville4',
                unlockRequired = 'vehicle_boxville',
                packageOffset = vec3(0.0, -3.6, 0.1),
                interactDist = 2,
                doorIndices = { 2, 3 },
                defaultMods = {
                    [13] = 0, -- Gearbox upgrade by default (example)
                }
            },
        },
        defaultVehicle = 'mule',

        vehicleSpawnLocations = {
            vec4(-444.1, -2789.2, 6.0, 44.0),
            vec4(-447.6, -2793.1, 6.0, 44.0),
            vec4(-451.1, -2797.0, 6.0, 44.0),
            vec4(-454.6, -2800.9, 6.0, 44.0),
            vec4(-458.1, -2804.8, 6.0, 44.0),
            vec4(-461.6, -2808.7, 6.0, 44.0),
            vec4(-465.1, -2812.6, 6.0, 44.0),

            vec4(-407.47, -2800.82, 6.0, 310.0),
            vec4(-412.97, -2794.95, 6.0, 310.0),

            vec4(-374.88, -2815.09, 6.0, 46.0),
            vec4(-380.85, -2820.28, 6.0, 46.0),
        },

        spawnCheckRadius = 3.0,

        -- Here you can edit all the bonuses, feel free to remove, add more or modify them. To add more vehicle mod upgrades
        -- You can code them in the editable client file in `ApplyVehicleLevelUpgrades` function
        levelUpgrades = {
            ['vehicle_boxville'] = {
                level = 15,
                label = 'New work vehicle - Boxville',
            },
            ['vehicle_engine'] = {
                level = 8,
                label = 'Work vehicle engine upgrade',
            },
            ['vehicle_turbo'] = {
                level = 25,
                label = 'Work vehicle turbo upgrade',
            },
            ['salary_bonus_5'] = {
                level = 5,
                label = '5% Salary Bonus',
                bonusPercentage = 5,
            },
            ['salary_bonus_10'] = {
                level = 10,
                label = '10% Salary Bonus',
                bonusPercentage = 10,
            },
            ['salary_bonus_15'] = {
                level = 15,
                label = '15% Salary Bonus',
                bonusPercentage = 15,
            },
            ['salary_bonus_25'] = {
                level = 30,
                label = '25% Salary Bonus',
                bonusPercentage = 25,
            },
        },

        -- Remove this whole section to disable the outfits from a job
        outfits = {
            ['mp_m_freemode_01'] = {
                ['standard'] = {
                    label = 'PostOP Uniform',
                    components = {
                        [3] = { drawable = 0, texture = 0 },    -- hands/torso
                        [4] = { drawable = 10, texture = 0 },   -- legs
                        [5] = { drawable = 0, texture = 0 },    -- bags
                        [6] = { drawable = 8, texture = 2 },    -- shoes
                        [8] = { drawable = 15, texture = 0 },   -- shirt
                        [9] = { drawable = 0, texture = 0 },    -- body armor
                        [11] = { drawable = 242, texture = 3 }, -- jacket
                    },
                },
            },
            ['mp_f_freemode_01'] = {
                ['standard'] = {
                    label = 'PostOP Uniform',
                    components = {
                        [3] = { drawable = 14, texture = 0 },   -- hands/torso
                        [4] = { drawable = 34, texture = 0 },   -- legs
                        [5] = { drawable = 0, texture = 0 },    -- bags
                        [6] = { drawable = 27, texture = 0 },   -- shoes
                        [8] = { drawable = 14, texture = 0 },   -- shirt
                        [9] = { drawable = 0, texture = 0 },    -- body armor
                        [11] = { drawable = 250, texture = 3 }, -- jacket
                    },
                },
            },
        },

        -- Job payment bonuses and penalties
        bonuses = {
            fiveStarBonus = 10,
            fourStarBonus = 5,
            vehicleCare = 5,
            maxVehicleDamagePenalty = 1000,
            missingVehiclePenalty = 1200,

            -- Whether working in teams should yield a bonus, and how much
            teamWorkBonuses = {
                enabled = true,
                memberCounts = {
                    [1] = 0,
                    [2] = 80,
                },
            },
        },

        -- The definition of the package used for the job
        package = {
            prop = 'v_serv_abox_04',
            bone = 60309,
            offset = vec3(0.13, -0.05, 0.23),
            rotation = vec3(-84.0, 14.0, 41.0),
            animDict = 'anim@heists@box_carry@',
            animName = 'idle',
        },

        deliveryMarker = {
            enabled = true,
            type = 1,
            color = { r = 255, g = 255, b = 255, a = 100 },
            size = vec3(1.5, 1.5, 0.5),
        },

        -- How many contracts should be available at once.
        maxAvailableContracts = 10,

        -- Time before a new contract shows up after one becomes unavailable(get started by another player)
        contractReplenishDelay = 30,

        -- Ban from performing the job for specified amount of minutes upon leave/cancellation of an active contract
        cancellationBan = {
            enabled = true,
            duration = 5,
        },

        xpGainMultiplier = 1.0,
    },
    ['gopostal'] = {
        label = "GoPostal",

        -- Two job types are available "delivery" (default) and "trucking"
        type = 'delivery',

        jobName = 'gopostal', -- Set to false or nil to disable the job requirement

        averageVehicleSpeed = 45, -- Average driving speed in MPH for duration estimation
        payPerMinute = 400, -- Base pay per estimated minute of contract duration (Excluding bonuses)

        headquarters = {
            coords = vec3(65.04, 116.93, 79.10),

            blip = {
                sprite = 85,
                color = 53,
                scale = 1.1,
            },

            npc = {
                model = 's_m_m_postal_01',
                coords = vec4(55.95, 120.34, 79.11, 194.41),
                scenario = 'WORLD_HUMAN_CLIPBOARD',
            },

            outfitZone = {
                coords = vec3(78.66, 111.79, 81.17),
                scale = vec3(2.5, 2.5, 2.5),
                interactDist = 2.5,

                object = 'reh_prop_reh_bag_outfit_01a', -- Optional: prop to spawn at the zone
                objectHeading = 300.0,                  -- Optional: heading for the prop

                marker = {
                    enabled = true,
                    type = 1,
                    color = { r = 255, g = 255, b = 255, a = 80 },
                    size = vec3(1.2, 1.2, 0.5),
                },
            },
        },

        vehicles = {
            ['boxville2'] = {
                label = 'Boxville',
                model = 'boxville2',
                packageOffset = vec3(0.0, -3.6, 0.1),
                interactDist = 2,
                doorIndices = { 2, 3 },

                colors = {
                    primary = { 255, 255, 255 },
                    secondary = { 50, 66, 171 },
                },
            },
            ['pony'] = {
                label = 'Pony',
                model = 'pony',
                unlockRequired = 'vehicle_pony',
                packageOffset = vec3(0.0, -2.6, 0.1),
                interactDist = 2,
                doorIndices = { 2, 3 },
                livery = 1,

                colors = {
                    primary = { 255, 255, 255 },
                    secondary = { 255, 255, 255 },
                },
                defaultMods = {
                    [13] = 0, -- Gearbox Upgrade
                },
            },
        },

        defaultVehicle = 'boxville2',

        vehicleSpawnLocations = {
            vec4(60.23, 124.08, 79.24, 155),
            vec4(63.39, 122.95, 79.16, 155),
            vec4(67.36, 120.94, 79.11, 155),
            vec4(71.38, 119.72, 79.17, 155),

            vec4(84.59, 104.08, 79.15, 68.03),
            vec4(96.04, 99.72, 79.17, 68.47),
            vec4(110.11, 94.36, 80.64, 75.11),

            vec4(118.85, 97.87, 81.02, 72.34),

            vec4(77.46, 97.35, 78.90, 66.90),
            vec4(74.90, 90.14, 78.76, 70.66),
        },

        spawnCheckRadius = 3.0,

        levelUpgrades = {
            ['vehicle_pony'] = {
                level = 10,
                label = 'New work vehicle - Pony',
            },
            ['vehicle_engine'] = {
                level = 8,
                label = 'Work vehicle engine upgrade',
            },
            ['vehicle_turbo'] = {
                level = 20,
                label = 'Work vehicle turbo upgrade',
            },
            ['salary_bonus_5'] = {
                level = 5,
                label = '5% Salary Bonus',
                bonusPercentage = 5,
            },
            ['salary_bonus_10'] = {
                level = 15,
                label = '10% Salary Bonus',
                bonusPercentage = 10,
            },
            ['salary_bonus_15'] = {
                level = 25,
                label = '15% Salary Bonus',
                bonusPercentage = 15,
            },
            ['salary_bonus_20'] = {
                level = 40,
                label = '20% Salary Bonus',
                bonusPercentage = 20,
            },
        },

        outfits = {
            ['mp_m_freemode_01'] = {
                ['standard'] = {
                    label = 'GoPostal Uniform',
                    components = {
                        [3] = { drawable = 11, texture = 0 },   -- hands/torso
                        [4] = { drawable = 10, texture = 1 },   -- legs
                        [5] = { drawable = 0, texture = 0 },    -- bags
                        [6] = { drawable = 8, texture = 2 },    -- shoes
                        [8] = { drawable = 15, texture = 0 },   -- shirt
                        [9] = { drawable = 0, texture = 0 },    -- body armor
                        [11] = { drawable = 319, texture = 6 }, -- jacket
                    },
                },
            },
            ['mp_f_freemode_01'] = {
                ['standard'] = {
                    label = 'GoPostal Uniform',
                    components = {
                        [3] = { drawable = 14, texture = 0 },   -- hands/torso
                        [4] = { drawable = 41, texture = 2 },   -- legs
                        [5] = { drawable = 0, texture = 0 },    -- bags
                        [6] = { drawable = 27, texture = 1 },   -- shoes
                        [8] = { drawable = 14, texture = 0 },   -- shirt
                        [9] = { drawable = 0, texture = 0 },    -- body armor
                        [11] = { drawable = 330, texture = 6 }, -- jacket
                    },
                },
            },
        },

        bonuses = {
            fiveStarBonus = 10,
            fourStarBonus = 5,
            vehicleCare = 5,
            maxVehicleDamagePenalty = 1000,
            missingVehiclePenalty = 1200,
            teamWorkBonuses = {
                enabled = true,
                memberCounts = {
                    [1] = 0,
                    [2] = 70,
                },
            },
        },

        package = {
            prop = 'xm3_prop_xm3_product_box_01',
            bone = 60309,
            offset = vec3(0.0, 0.07, 0.27),
            rotation = vec3(129.0, 106.0, 186.0),
            animDict = 'anim@heists@box_carry@',
            animName = 'idle',
        },

        deliveryMarker = {
            enabled = true,
            type = 1,
            color = { r = 255, g = 255, b = 255, a = 100 },
            size = vec3(1.5, 1.5, 0.5),
        },

        maxAvailableContracts = 10,
        contractReplenishDelay = 30,

        cancellationBan = {
            enabled = true,
            duration = 5,
        },

        xpGainMultiplier = 1.0,
    },
    ['alphamail'] = {
        label = "Alpha Mail",

        -- Two job types are available "delivery" (default) and "trucking"
        type = 'delivery',

        jobName = 'alphamail', -- Set to false or nil to disable the job requirement

        averageVehicleSpeed = 60, -- Average driving speed in MPH for duration estimation
        payPerMinute = 450, -- Base pay per estimated minute of contract duration (Excluding bonuses)

        headquarters = {
            coords = vec3(1225.49, -3331.43, 6.03),

            blip = {
                sprite = 85,
                color = 30,
                scale = 1.1,
            },

            npc = {
                model = 'ig_josh',
                coords = vec4(1223.59, -3326.77, 6.03, 214.80),
                scenario = 'WORLD_HUMAN_CLIPBOARD',
            },

            outfitZone = {
                coords = vec3(1241.59, -3323.40, 6.03),
                scale = vec3(2.5, 2.5, 2.5),
                interactDist = 2.5,

                object = 'reh_prop_reh_bag_outfit_01a', -- Optional: prop to spawn at the zone
                objectHeading = 20.0,                   -- Optional: heading for the prop

                marker = {
                    enabled = true,
                    type = 1,
                    color = { r = 255, g = 255, b = 255, a = 80 },
                    size = vec3(1.2, 1.2, 0.5),
                },
            },
        },

        vehicles = {
            ['burrito3'] = {
                label = 'Burrito',
                model = 'burrito3',
                packageOffset = vec3(0.0, -2.6, 0.1),
                interactDist = 2,
                doorIndices = { 2, 3 },

                colors = {
                    primary = { 41, 41, 41 },
                    secondary = { 41, 41, 41 },
                }
            },
            ['speedo'] = {
                label = 'Speedo',
                model = 'speedo',
                unlockRequired = 'vehicle_speedo',
                packageOffset = vec3(0.0, -2.6, 0.1),
                interactDist = 2,
                doorIndices = { 2, 3 },

                colors = {
                    primary = { 41, 41, 41 },
                    secondary = { 41, 41, 41 },
                }
            },
        },

        defaultVehicle = 'burrito3',

        vehicleSpawnLocations = {
            vec4(1233.47, -3329.45, 5.61, 179.12),
            vec4(1218.23, -3329.66, 5.62, 177.43),

            vec4(1243.62, -3330.85, 6.03, 272.67),
            vec4(1244.74, -3326.91, 6.03, 267.27),
            vec4(1245.96, -3321.88, 6.03, 271.65),

            vec4(1268.39, -3322.27, 5.90, 87.06),
            vec4(1268.57, -3329.37, 5.90, 85.47),
            vec4(1269.94, -3337.71, 5.90, 89.70),
        },

        spawnCheckRadius = 3.0,

        levelUpgrades = {
            ['vehicle_speedo'] = {
                level = 10,
                label = 'New work vehicle - Speedo',
            },
            ['vehicle_engine'] = {
                level = 7,
                label = 'Work vehicle engine upgrade',
            },
            ['vehicle_turbo'] = {
                level = 20,
                label = 'Work vehicle turbo upgrade',
            },
            ['salary_bonus_10'] = {
                level = 5,
                label = '10% Salary Bonus',
                bonusPercentage = 10,
            },
            ['salary_bonus_15'] = {
                level = 15,
                label = '15% Salary Bonus',
                bonusPercentage = 15,
            },
            ['salary_bonus_20'] = {
                level = 25,
                label = '20% Salary Bonus',
                bonusPercentage = 20,
            },
        },

        outfits = {
            ['mp_m_freemode_01'] = {
                ['standard'] = {
                    label = 'Alpha Mail Uniform',
                    components = {
                        [3] = { drawable = 11, texture = 0 },   -- hands/torso
                        [4] = { drawable = 35, texture = 0 },   -- legs
                        [5] = { drawable = 0, texture = 0 },    -- bags
                        [6] = { drawable = 12, texture = 6 },    -- shoes
                        [8] = { drawable = 15, texture = 0 },   -- shirt
                        [9] = { drawable = 0, texture = 0 },    -- body armor
                        [11] = { drawable = 319, texture = 8 }, -- jacket
                    },
                },
            },
            ['mp_f_freemode_01'] = {
                ['standard'] = {
                    label = 'Alpha Mail Uniform',
                    components = {
                        [3] = { drawable = 14, texture = 0 },   -- hands/torso
                        [4] = { drawable = 45, texture = 1 },   -- legs
                        [5] = { drawable = 0, texture = 0 },    -- bags
                        [6] = { drawable = 25, texture = 0 },   -- shoes
                        [8] = { drawable = 14, texture = 0 },   -- shirt
                        [9] = { drawable = 0, texture = 0 },    -- body armor
                        [11] = { drawable = 330, texture = 8 }, -- jacket
                    },
                },
            },
        },

        bonuses = {
            fiveStarBonus = 10,
            fourStarBonus = 5,
            vehicleCare = 5,
            maxVehicleDamagePenalty = 1000,
            missingVehiclePenalty = 1200,
            teamWorkBonuses = {
                enabled = false,
                memberCounts = {},
            },
        },

        package = {
            prop = 'prop_cardbordbox_05a',
            bone = 11816,
            offset = vec3(0.0, 1.15, -0.36),
            rotation = vec3(19 + 90, 0, 0),
            animDict = 'anim@heists@box_carry@',
            animName = 'idle',
        },

        deliveryMarker = {
            enabled = true,
            type = 1,
            color = { r = 255, g = 255, b = 255, a = 100 },
            size = vec3(1.5, 1.5, 0.5),
        },

        -- Whether the job uses the "sack truck" (trolley/cart) for the boxes. (Modification of the package offsets and bone is necessary for it)
        requireSacktruck = true,

        maxAvailableContracts = 10,
        contractReplenishDelay = 30,

        cancellationBan = {
            enabled = true,
            duration = 5,
        },

        xpGainMultiplier = 1.0,
    },
    ['overeats'] = {
        label = "OverEats",

        -- Two job types are available "delivery" (default) and "trucking"
        type = 'delivery',

        jobName = 'overeats', -- Set to false or nil to disable the job requirement

        averageVehicleSpeed = 50, -- Average driving speed in MPH for duration estimation
        payPerMinute = 300, -- Base pay per estimated minute of contract duration (Excluding bonuses)

        headquarters = {
            coords = vec3(-679.18, -877.24, 24.50),

            blip = {
                sprite = 85,
                color = 24,
                scale = 1.1,
            },

            npc = {
                model = 'cs_lifeinvad_01',
                coords = vec4(-683.33, -876.25, 24.50, 179.19),
                scenario = 'WORLD_HUMAN_CLIPBOARD',
            },

            objects = {
                {
                    model = 'kq_overeats_sign',
                    coords = vec3(-666.89, -892.21, 29.78),
                    rotation = vec3(0, 0, 90),
                },
                {
                    model = 'kq_overeats_sign',
                    coords = vec3(-683.35, -875.78, 26.65),
                    rotation = vec3(0, 0, 0),
                },
            },

            outfitZone = {
                coords = vec3(-675.48, -879.96, 24.43),
                scale = vec3(2.5, 2.5, 2.5),
                interactDist = 2.5,

                object = 'reh_prop_reh_bag_outfit_01a', -- Optional: prop to spawn at the zone
                objectHeading = 35.0,                   -- Optional: heading for the prop

                marker = {
                    enabled = true,
                    type = 1,
                    color = { r = 255, g = 255, b = 255, a = 80 },
                    size = vec3(1.2, 1.2, 0.5),
                },
            },
        },

        vehicles = {
            ['kqfoodscooter'] = {
                label = 'OverEats Faggio',
                model = 'kqfoodscooter',
                packageOffset = vec3(0.0, -1.0, 0.4),
                interactDist = 1.4,

                colors = {
                    primary = { 178, 243, 0 },
                    secondary = { 178, 243, 0 },
                }
            },
            ['kqdilettante'] = {
                label = 'OverEats Dilettante',
                model = 'kqdilettante',
                unlockRequired = 'vehicle_kqdilettante',
                packageOffset = vec3(0.0, -2.1, 0.1),
                interactDist = 2,
                doorIndices = { 5 },
            },
        },

        defaultVehicle = 'kqfoodscooter',

        vehicleSpawnLocations = {
            vec4(-687.90, -878.47, 24.50, 267.21),

            vec4(-686.92, -885.95, 24.50, 175.58),
            vec4(-683.57, -885.24, 24.50, 178.11),
            vec4(-685.31, -893.73, 24.50, 271.16),
            vec4(-676.87, -894.10, 24.50, 267.11),
            vec4(-668.26, -894.16, 24.50, 269.13),
            vec4(-660.41, -893.98, 24.64, 272.33),

            vec4(-650.13, -901.17, 24.63, 178.05),
        },

        spawnCheckRadius = 2.6,

        levelUpgrades = {
            ['vehicle_kqdilettante'] = {
                level = 10,
                label = 'New work vehicle - OverEats Dilettante',
            },
            ['salary_bonus_10'] = {
                level = 5,
                label = '10% Salary Bonus',
                bonusPercentage = 10,
            },
            ['salary_bonus_15'] = {
                level = 10,
                label = '15% Salary Bonus',
                bonusPercentage = 15,
            },
            ['salary_bonus_20'] = {
                level = 25,
                label = '20% Salary Bonus',
                bonusPercentage = 20,
            },
            ['salary_bonus_30'] = {
                level = 50,
                label = '35% Salary Bonus',
                bonusPercentage = 30,
            },
        },

        outfits = {
            ['mp_m_freemode_01'] = {
                ['standard'] = {
                    label = 'OverEats Uniform',
                    components = {
                        [3] = { drawable = 4, texture = 0 },     -- hands/torso
                        [4] = { drawable = 98, texture = 1 },    -- legs
                        [5] = { drawable = 0, texture = 0 },     -- bags
                        [6] = { drawable = 25, texture = 6 },    -- shoes
                        [8] = { drawable = 15, texture = 0 },    -- shirt
                        [9] = { drawable = 0, texture = 0 },     -- body armor
                        [11] = { drawable = 332, texture = 21 }, -- jacket
                    },
                },
            },
            ['mp_f_freemode_01'] = {
                ['standard'] = {
                    label = 'OverEats Uniform',
                    components = {
                        [3] = { drawable = 3, texture = 0 },     -- hands/torso
                        [4] = { drawable = 101, texture = 1 },   -- legs
                        [5] = { drawable = 0, texture = 0 },     -- bags
                        [6] = { drawable = 25, texture = 0 },    -- shoes
                        [8] = { drawable = 14, texture = 0 },    -- shirt
                        [9] = { drawable = 0, texture = 0 },     -- body armor
                        [11] = { drawable = 347, texture = 21 }, -- jacket
                    },
                },
            },
        },

        bonuses = {
            fiveStarBonus = 30,
            fourStarBonus = 15,
            vehicleCare = 5,
            maxVehicleDamagePenalty = 600,
            missingVehiclePenalty = 900,
            teamWorkBonuses = {
                enabled = false,
                memberCounts = {},
            },
        },

        package = {
            prop = 'prop_paper_bag_01',
            bone = 28422,
            offset = vec3(0.29, 0.03, -0.01),
            rotation = vec3(90, 0, 270),
            animDict = 'move_weapon@jerrycan@generic',
            animName = 'idle',
            pickupAnim = {
                dict = 'random@mugging1',
                name = 'pickup_low',
                duration = 1000,
            },
            deliverAnim = {
                dict = 'random@mugging1',
                name = 'pickup_low',
                duration = 800,
            },
        },

        deliveryMarker = {
            enabled = true,
            type = 1,
            color = { r = 255, g = 255, b = 255, a = 100 },
            size = vec3(1.5, 1.5, 0.5),
        },

        maxAvailableContracts = 10,
        contractReplenishDelay = 30,

        cancellationBan = {
            enabled = true,
            duration = 5,
        },

        xpGainMultiplier = 1.2, -- Slightly faster XP gain by default for OverEats job
    },
    ['trucking'] = {
        label = "RS Haul - Trucking",

        -- This job has a different type, to match the contract style. Two job types are available "delivery" (default) and "trucking"
        type = 'trucking',

        jobName = 'trucking', -- Set to false or nil to disable the job requirement

        averageVehicleSpeed = 50,
        payPerMinute = 550, -- Base pay per estimated minute of contract duration (Excluding bonuses)

        headquarters = {
            coords = vec3(861.01, -2535.99, 28.45),

            blip = {
                sprite = 477,
                color = 47,
                scale = 1.0,
            },

            npc = {
                model = 's_m_m_trucker_01',
                coords = vec4(861.01, -2535.99, 28.45, 180.0),
                scenario = 'WORLD_HUMAN_CLIPBOARD',
            },
        },

        vehicles = {
            ['hauler'] = {
                label = 'Hauler',
                model = 'hauler',
                colors = {
                    primary = { 207, 131, 56 },
                    secondary = { 207, 131, 56 },
                },
            },
            ['packer'] = {
                label = 'Packer',
                model = 'packer',
                unlockRequired = 'vehicle_packer',
                colors = {
                    primary = { 207, 131, 56 },
                    secondary = { 207, 131, 56 },
                },
            },
            ['phantom'] = {
                label = 'Phantom',
                model = 'phantom',
                unlockRequired = 'vehicle_phantom',
                colors = {
                    primary = { 207, 131, 56 },
                    secondary = { 207, 131, 56 },
                },
            },
        },
        defaultVehicle = 'hauler',

        trailers = {
            ['trailers'] = {
                label = 'Box Trailer',
                model = 'trailers',
            },
            ['trailers2'] = {
                label = 'Box Trailer Alt',
                model = 'trailers2',
            },
            ['trailers3'] = {
                label = 'Box Trailer Large',
                model = 'trailers3',
            },
            ['docktrailer'] = {
                label = 'Container Trailer',
                model = 'docktrailer',
            },
            ['trailerlogs'] = {
                label = 'Logging Trailer',
                model = 'trailerlogs',
            },
        },
        defaultTrailer = 'trailers',

        vehicleSpawnLocations = {
            vec4(993.45, -2548.39, 28.30, 354.30),
            vec4(987.67, -2548.84, 28.30, 352.43),
            vec4(982.37, -2548.06, 28.30, 353.11),
            vec4(976.97, -2547.03, 28.30, 350.47),
            vec4(971.51, -2547.10, 28.30, 351.84),
            vec4(1045.42, -2494.59, 28.50, 154.58),
            vec4(1035.12, -2490.85, 28.52, 153.06),
            vec4(1024.12, -2489.33, 28.53, 152.71),
            vec4(1013.33, -2487.96, 28.30, 152.64),
            vec4(801.10, -2467.89, 21.79, 174.14),
            vec4(809.69, -2467.47, 22.47, 172.20),
            vec4(817.90, -2468.62, 23.11, 170.60)
        },

        spawnCheckRadius = 5.0,

        levelUpgrades = {
            ['vehicle_packer'] = {
                level = 10,
                label = 'New truck - Packer',
            },
            ['vehicle_phantom'] = {
                level = 20,
                label = 'New truck - Phantom',
            },
            ['vehicle_engine'] = {
                level = 7,
                label = 'Work vehicle engine upgrade',
            },
            ['vehicle_turbo'] = {
                level = 22,
                label = 'Work vehicle turbo upgrade',
            },
            ['salary_bonus_10'] = {
                level = 5,
                label = '10% Salary Bonus',
                bonusPercentage = 10,
            },
            ['salary_bonus_15'] = {
                level = 15,
                label = '15% Salary Bonus',
                bonusPercentage = 15,
            },
            ['salary_bonus_25'] = {
                level = 30,
                label = '25% Salary Bonus',
                bonusPercentage = 25,
            },
        },

        bonuses = {
            fiveStarBonus = 12,
            fourStarBonus = 6,
            vehicleCare = 8,
            maxVehicleDamagePenalty = 1500,
            missingVehiclePenalty = 2000,
            teamWorkBonuses = {
                enabled = false,
                memberCounts = {},
            },
        },

        maxAvailableContracts = 8,
        contractReplenishDelay = 30,

        cancellationBan = {
            enabled = true,
            duration = 5,
        },

        xpGainMultiplier = 1.1,
    },
}

Last updated

Was this helpful?