Need help? Join our Discord for support and updates

Builder Job

v1.0.0JobESXQBQBOX
On this page

Builder Job

Overview

The Builder Job script allows players to engage in construction-themed missions within the game. Players can utilize various commands to manage building tasks, including starting and stopping missions, and interacting with cranes and other construction equipment. The script supports multiple frameworks and offers optional integrations for enhanced functionality, making it adaptable to different server setups.

Compatibility

Framework: ESX, QBCore, QBox, Standalone

Target: ox_target, qb-target, or qtarget (optional) — falls back to 3D text / TextUI if none are installed

Dependencies

Required Dependencies

None detected — needs manual review.

Optional Dependencies

  • ox_lib
  • ox_target or qb-target or qtarget
  • es_extended
  • qb-core

Installation

1. Upload the resource

Place the resource folder inside your server's resources directory (rename it to drc_builderjob-pack if needed).

2. Install dependencies

No required dependencies were detected. If this script needs one, this needs manual review.

3. Import database

No SQL file was detected. If this script uses a database, this needs manual review.

4. Add to server.cfg

ensure drc_builderjob-pack

5. Configure the script

Open the config file and adjust the settings for your server. See the Config section below.

6. Restart and test

Restart your server (or start the resource) and test it in-game, e.g. with /showbuild.

Config

drc_builderjob-pack/drc_builderjob/shared/sh_config.lua


Config = Config or {}


Config.Locale = 'en'
Config.Debug = false

Config.Framework = 'auto-detect'       -- auto-detect | esx | qbcore | standalone
Config.NewESX = true
Config.InteractionType = 'target'      -- target | textui
Config.FrameworkTarget = 'auto-detect' -- auto-detect | ox_target | qtarget | qb-target | none

Config.NotificationType = 'ox_lib'     -- ox_lib | esx | qbcore | custom
Config.TextUI = 'ox_lib'               -- ox_lib | esx | luke | custom
Config.Menu = 'ox_lib'                 -- ox_lib | qbcore | custom
Config.Progress = 'ox_lib'             -- ox_lib | qbcore | progressBars | custom
Config.FuelType = 'ox_fuel'            -- ox_fuel | legacy_fuel | ps_fuel | cdn_fuel | rcore | none
Config.KeySystem = 'auto-detect'        -- auto-detect | qs | wasabi | fivecode | qbcore | none

Config.Job = 'builder'

-- Config.WebHook and Config.Security are server-only in server/sv_utils.lua.

-- -------------------------------------------------------------------------
-- COMPANY CLOTHING
-- Locations configured in the creator are combined with these fallback points.
-- -------------------------------------------------------------------------

Config.Clothing = {
    Enabled = true,
    RequireClothing = true,
    ClothingType = 'illenium-appearance', -- auto-detect | rcore_clothing | esx_skin
                                             -- qb-clothing | fivem-appearance | ox_appearance
                                             -- illenium-appearance | native
    ChangeAutomatically = false,
    RestoreOnMissionEnd = true,
    InteractionDistance = 2.0,
    Locations = {
        { coords = vector3(890.3005, -1037.7020, 35.2516), radius = 1.25 },
        { coords = vector3(888.0442, -1042.4937, 35.2516), radius = 1.25 },
        { coords = vector3(893.3835, -1038.7745, 35.2516), radius = 1.25 },
    },
    Outfits = {
        male = {
            components = {
                { id = 3, drawable = 0, texture = 0 },
                { id = 4, drawable = 36, texture = 0 },
                { id = 6, drawable = 25, texture = 0 },
                { id = 8, drawable = 59, texture = 1 },
                { id = 11, drawable = 56, texture = 0 },
            },
            props = {
                { id = 0, drawable = 0, texture = 0 },
            },
        },
        female = {
            components = {
                { id = 3, drawable = 14, texture = 0 },
                { id = 4, drawable = 35, texture = 0 },
                { id = 6, drawable = 25, texture = 0 },
                { id = 8, drawable = 36, texture = 0 },
                { id = 11, drawable = 49, texture = 0 },
            },
            props = {
                { id = 0, drawable = 0, texture = 0 },
            },
        },
    },
}

-- -------------------------------------------------------------------------
-- CREATOR ACCESS & GAMEPLAY
-- -------------------------------------------------------------------------

Config.BuildCreator = {
    command = 'createbuildmission',
    useAcePermission = false,
    acePermission = 'drc_builderjob.creator',
    adminGroups = { admin = true, superadmin = true },
    cementPourDuration = 25, -- seconds
}

Config.Painting = {
    interactionDistance = 3.0,
    renderDistance = 45.0,
    brushWidth = 0.18,
    cursorSpeed = 0.038,
    completionThreshold = 0.98,
    paintOpacity = 165,
    brushModel = 'prop_paint_brush03',
    blip = {
        enabled = true,
        sprite = 1,
        colour = 17,
        scale = 0.72,
        shortRange = false,
    },
    defaultColour = { r = 230, g = 176, b = 62 },
}

Config.GraffitiCleaning = {
    interactionDistance = 3.0,
    renderDistance = 45.0,
    spongeWidth = 0.26,
    cleaningStrength = 0.28,
    completionThreshold = 0.90,
    cursorSpeed = 0.038,
    graffitiOpacity = 225,
    spongeModel = 'prop_sponge_01',
    spongeFallbackModel = 'prop_rag_01',
    blip = {
        enabled = true,
        sprite = 1,
        colour = 47,
        scale = 0.72,
        shortRange = false,
    },
    presets = { 'neon_tag', 'street_crown', 'red_warning', 'bubble_crew' },
}

-- -------------------------------------------------------------------------
-- HUD
-- -------------------------------------------------------------------------

Config.Hud = {
    toggleKey = 'H',
    layoutCommand = 'buildhud',
    guideCommand = 'buildhelp',
    showToggleHint = true,
    showBuildHint = true,
    defaultPosition = nil,
    colours = {
        accent = '#ffb340',
        accentHot = '#ff9524',
        accentSoft = '#ffd08a',
        text = '#f4f7fb',
        dim = '#cfd9e5',
        muted = '#9dadc0',
        info = '#63cbff',
        success = '#57e08f',
        danger = '#ff8b8b',
        shade = 'rgba(3, 6, 11, .66)',
    },
}

-- -------------------------------------------------------------------------
-- SUPPLY ORDERS
-- Pickup destinations, NPC positions and vehicle spawns are set in the creator.
-- Cargo slot and attachment calibrations are internal and shared by all missions.
-- -------------------------------------------------------------------------

Config.SupplyOrders = {
    interactionDistance = 2.5,
    loadingDuration = 4500,
    returnRadius = 5.0,
    vehicleFuel = 100.0,
    vehicleColour = { r = 205, g = 92, b = 28 },
    platePrefix = 'SUPPLY',
    preset = {
        npcModel = 's_m_m_dockwork_01',
        npcScenario = 'WORLD_HUMAN_CLIPBOARD',
        vehicleModel = 'flatbed',
        forkliftModel = 'forklift',
        forkliftReturnRadius = 5.0,
        materials = {
            woodbeam = {
                labelKey = 'materials.wooden_beams',
                label = 'Wooden beams',
                price = 1,
                maxPerRun = 2,
                model = 'drc_build_woodbeam_packaged',
                unpackModel = 'drc_build_woodbeam',
            },
            brick = {
                labelKey = 'materials.bricks',
                label = 'Bricks',
                price = 1,
                maxPerRun = 3,
                model = 'drc_build_brick_package',
                unpackModel = 'drc_build_brick',
                palletModel = 'prop_pallet_01a',
            },
            plank = {
                labelKey = 'materials.planks',
                label = 'Planks',
                price = 1,
                maxPerRun = 2,
                model = 'drc_build_plank_package',
                unpackModel = 'drc_build_plank',
            },
        },
    },
}

-- -------------------------------------------------------------------------
-- CREW, RECONNECT & PAYOUT
-- -------------------------------------------------------------------------

Config.Crew = {
    command = 'buildmenu',
    maxMembers = 6,
    inviteRadius = 30.0,
    inviteTimeout = 30,
    requireJobToStart = false,
    minShare = 5,
}

Config.Reconnect = {
    enabled = true,
    graceSeconds = 60 * 60,
}

Config.Payout = {
    base = 2500,
    perDestination = 150,
    perInstallProp = 200,
    perCementPhase = 400,
    crewMultiplier = { 1.0, 1.05, 1.1, 1.15, 1.2, 1.25 },
    roundTo = 10,
}

-- -------------------------------------------------------------------------
-- FOREMAN & MISSION VEHICLES
-- -------------------------------------------------------------------------

Config.JobStart = {
    vehicleColour = { r = 205, g = 92, b = 28 },
    npc = {
        model = `s_m_y_construct_01`,
        coords = vector4(901.8422241210938, -1043.3958740234376, 34.72628021240234, 2.22300291061401),
        scenario = 'PROP_HUMAN_SEAT_COMPUTER',
        streamDistance = 120.0,
        despawnDistance = 150.0,
        interactionDistance = 2.5,
        groundSnap = false,
        groundOffset = 0.05,
        maxGroundCorrection = 3.0,
    },
    blip = {
        enabled = true,
        sprite = 801,
        colour = 5,
        scale = 0.8,
        labelKey = 'blips.builder_job',
        shortRange = true,
    },
    vehicles = {
        {
            model = 'caracara2',
            labelKey = 'vehicles.builder_pickup',
            coords = vector4(900.3353, -1067.5786, 32.8278, 358.9997),
        },
        {
            model = 'mixer2',
            role = 'cementMixer',
            labelKey = 'vehicles.concrete_mixer',
            coords = vector4(906.5311, -1065.6398, 32.8286, 354.8499),
            returnRadius = 5.0,
        },
    },
    vehicleSpawnDistance = 180.0,
    siteArrivalRadius = 95.0,
    cementMixerModel = 'mixer2',
}

-- -------------------------------------------------------------------------
-- TOWER CRANE
-- Mission-specific cranes and their positions are created in the mission editor.
-- -------------------------------------------------------------------------

Config.Crane = {
    model = `drc_towercrane_crane`,
    originalMapModel = `prop_towercrane_02d`,
    TowerAssembly = {
        baseModel = `prop_towercrane_02a`,
        sectionModel = `prop_towercrane_02b`,
        minSections = 2,
        maxSections = 20,
        defaultSections = 2,
        Access = { enabled = true },
    },
    coords = vector3(128.08977, -347.89783, 97.476456),
    spawnMainEntity = true,
    hideOriginal = true,
    hideRadius = 20.0,
    MainRotation = { x = 0.0, y = 0.0, z = 280.20 },
    operator = vector4(127.0847, -346.1940, 99.0789, 99.3772),
    targetRadius = 1.25,
    Blip = {
        enabled = true,
        sprite = 767,
        colour = 5,
        scale = 0.85,
        labelKey = 'blips.operational_tower_crane',
        shortRange = false,
    },
    trolleyModel = `drc_towercrane_trolley`,
    hookModel = `drc_towercrane_hook`,
    ropeEnabled = true,
    ropeMode = 'line', -- line | physics
    rotationSpeed = 5.0,
    trolleySpeed = 1.5,
    hookSpeed = 1.5,
    hookRotationSpeed = 35.0,
    fastSpeedMultiplier = 3.0,
    trolleyMin = -35.0,
    trolleyMax = 6.298,
    hookMin = 5.0,
    hookMax = 100.0,
}

-- -------------------------------------------------------------------------
-- TABLE SAW
-- Cutting transforms, animations, recipes and sawdust are internally calibrated.
-- -------------------------------------------------------------------------

Config.TableSaw = {
    model = `prop_custom_tablesaw_anim_a`,
    targetDistance = 2.0,
    pushSpeed = 0.22,
}
Last updated 10/19/2026Browse all docs →