πŸ”₯All scripts on our website are 50% off!πŸ”₯
Logo

Add Jobs

Adding a New Custom Job

To add a new job, follow these steps:

Step 1: Add to Main Jobs List

Copy the following template and add it to the Jobs table in bit-jobs/config.lua, following the order of existing jobs:

[10] = { -- jobID (change the number to follow the order)
    -- Name that appears in the Job UI
    ["name"] = "Your Job Name",
    --Image of the character appearing in the UI
    ["image"] = "assets/yourjob.png",
    --Position of the character on the main UI screen
    ["descpos"] = {top = "0rem", left = "35rem", width = "34rem"},
    --Position of the character in the "How it Works?" screen of the UI.
    ["vecpos"] = {top = "9rem", left = "-3rem", width = "49rem"},
    --Position of the character in the "Leaderboard" screen of the UI.
    ["scorepos"] = {top = "9rem", left = "-3rem", width = "49rem"},
    --HTML description of the job shown on the main screen
    ["description"] = "Your job description here<br><br>More details...",
    --Texts of the working points in the "How it works?" section.
    ["howitworks1"] = "Go to the wardrobe to change into your work clothes",
    ["howitworks2"] = "Take the work vehicle and go to the point marked on the map",
    ["howitworks3"] = "Collect items...",
    ["howitworks4"] = "Process the items...",
    ["howitworks5"] = "Sell the items...",
    --Text of the item required for this work
    ["require"] = "1x Your Required Item",
    --Svg icon appearing in job listing
    ["svg"] = "<svg>...</svg>", -- Your custom SVG icon
    --If the "Config.jobRequired" option is active
    ["jobName"] = "yourjobname",
    ["jobGrade"] = 0,
    --How many points you want to award each time the items are sold
    ["points"] = 100,
    --If the job belongs to another script enter the trigger to start the job here:
    ["triggerToStart"] = nil,
    --If you want the action points to be randomized
    ["randomActionLocations"] = true
},

Step 2: Create Job Configuration File

  1. Navigate to the bit-jobs/jobs/ folder
  2. Copy any existing job file (e.g., miner.lua)
  3. Rename it to match your job name (e.g., yourjob.lua)
  4. Modify the data in that file according to your needs

Example structure:

local jobName = "YOURJOB"
local emoji = "πŸ”§" -- Your job emoji
local jobID = 10 -- Must match the number in Jobs list in config.lua

ConfigJob[jobID] = {
    name = jobName,
    requireItem = true, -- Set to true if the job requires a tool
    requiredItem = "yourtool", -- The tool item name
    wardrobe = {
        coord = vector3(x, y, z), -- Wardrobe location
        wardrobeName = emoji..jobName.." - Wardrobe",
        wardrobeBlipSprite = 73,
        wardrobeBlipColor = 5,
        wardrobeBlipScale = 0.9,
        wardrobeMarkerRGB = {r = 73, g= 196, b= 137},
        wardrobeMarkerType = 23,
        wardrobeMarkerText = "🦺\n "..jobName.." Wardrobe"
    },
    vehicle = {
        useVehicle = true, -- Set to false if job doesn't need a vehicle
        vehModel = "yourcar",
        vehCoords = vector3(x, y, z),
        vehHeading = 0.0,
        vehBlipSprite = 67,
        vehBlipText = "Job Vehicle",
        vehBlipColor = 5,
        vehBlipScale = 0.9,
    },
    jobSteps = {
        [1] = { -- Collection point
            -- Configure collection point
        },
        [2] = { -- Processing point 1
            -- Configure processing
        },
        [3] = { -- Processing point 2 (optional)
            -- Configure second processing
        },
        [4] = { -- Selling point
            -- Configure selling location
        }
    },
    ActionPoints = {
        [1] = vector3(x, y, z),
        [2] = vector3(x, y, z),
        -- Add more action points as needed
    }
}

Step 3: Configure Clothes

Add clothing configuration for both ESX and QBCore frameworks at the end of your job file.

Adding Jobs from Other Scripts

If you want to integrate a job from another script:

  1. Follow Step 1 above to add the job to the main Jobs list
  2. Instead of creating a full configuration file, use the triggerToStart property:
["triggerToStart"] = "yourscript:startjob",

This will trigger the external script's job instead of using the built-in job system.

Example

[10] = {
    ["name"] = "External Job",
    ["image"] = "assets/externaljob.png",
    -- ... other properties ...
    ["triggerToStart"] = "jobscripttrigger:startjob", -- Trigger from other script
    ["randomActionLocations"] = false -- Not needed for external jobs
}