Skip to main content

Plumber Job

Config file

config.lua

ESXEvent = nil -- set to nil to use export or event name

Language = "en"

Config = {}

Config.MoneyItem = "money"


Config.Clothes = {}

-- ragdolls player when running/jumping with pipe
Config.DisableFastMovement = true
Config.DisableControls = {
    21,
    22,
    24,
    25,
    44,
    68,
    140,
    141,
    142,
    257,
    263,
    264,
}

Config.RefillPoint = {
    waypointCoords = vector3(1377.188232, -2045.080933, 52.020157),
    coords = vector4(1358.68, -2095.84, 52.0, 310),
    length = 9.8,
    width = 14.0,
    minZ = 51.0,
    maxZ = 54.2
}

Config.Job = {
    name = "plumber",
    startPed = {
        coords = vector4(1384.631104, -2080.119873, 51.608837, 40.870346),
        model = `s_m_m_lathandy_01`
    },
    label = _L("job_label"),
    maxPlayers = 6,
    description = _L("job_description"),
    changePercent = true, -- allows owner to change player percents
    clothes = Config.Clothes,
    requireClothes = true, -- require job clothes
    requireJob = false,
    teamLimit = 26, -- maximum amount of teams
    vehicle = { -- or nil
        price = 500,
        model = `plumpo`,
        coords = vector4(1369.480591, -2079.999023, 51.998566, 305.774231),
        props = {
            livery = 1,
            mods = {
                [10] = 10,
            }
        }
    },
    -- changes difficulty (amount of pipes) depending on players on job
    difficulty = {
        [1] = "small",
        [2] = "small",
        [3] = "medium",
        [4] = "medium",
        [5] = "big",
        [6] = "big",
    },
    -- when players are not close to a owner/action coords during a action it kicks them
    playersActivityCheck = {
        closeCheck = true,
        vehDist = 250.0, -- distance from the vehicle
        noActionCheck = true, -- kicks a player when no action was performed during amount of other player actions
        noActionTimes = 10, -- amount of difference required between most active player and checked player (pipes placed in this case)
        offlineTime = 5 * 60, -- kick player after amount of time offline
    },
    payout = {
        -- bonus system (there's a base payout and for each additional player bonus percentage)
        useBonusPercent = false, -- uses basePayout and bonusPercent per player
        basePayout = 500,
        bonusPercent = 0.25,
        -- custom (TOTAL AMOUNT)
        playerPayouts = {
            [1] = 300,
            [2] = 600,
            [3] = 900,
            [4] = 1200,
            [5] = 1500,
            [6] = 1800
        },
    },
    blips = {
        {
            hasJob = true, -- requires job (or display always when requireJob is set to false)
            activeJob = false, -- requires being in active job (in team)
            label = _L("start_job_blip"),
            coords =  vector3(1384.631104, -2080.119873, 51.608837),
            sprite = 272,
            color = 26,
            alpha = 255,
        },
        {
            hasJob = true, -- requires job (or display always when requireJob is set to false)
            activeJob = true, -- requires being in active job (in team)
            label = _L("refill_pipes_blip"),
            coords = Config.RefillPoint.coords.xyz,
            sprite = 467,
            color = 26,
            alpha = 255,
        },
    },
    -- amount of pipes vehicle has, when the vehicle runs out of pipes the player is required to refill them
    vehPipes = 33
}

-- Used when no target was detected
Config.StandaloneControls = {
    ["get_pipe"] = {
        key = 38, -- its E on keyboard, to change to diffrent key see https://docs.fivem.net/docs/game-references/controls/
        disabled = false
    },
    ["place_pipe"] = {
        key = 38, -- its E on keyboard, to change to diffrent key see https://docs.fivem.net/docs/game-references/controls/
        disabled = false
    },
    ["open_valve"] = {
        key = 38, -- its E on keyboard, to change to diffrent key see https://docs.fivem.net/docs/game-references/controls/
        disabled = false
    },
}

-- Key to place pipe while holding it in hands
Config.DefaultKeys = {
    ["refill_pipes"] = "E"
}

-- Animation times (in miliseconds), to implement your progress bar etc edit the getPipeAnim and putPipeAnim callbacks in editable_client.lua
Config.AnimTimes = {
    ["get_pipe"] = 5000,
    ["put_pipe"] = 5000
}

-- Maximum distance from the pipe to place
Config.PipeDistance = 1.5

-- Distance from which the pipes will spawn
Config.RenderDistance = 150.0

Config.AttachOffset = { model = `pipe2`, offset = { 0.145, 0.04, -0.205, 62, -54.5, -70.5 }, bone = 57005 }

-- Installation site blip settings
Config.BlipSettings = {
    radius = 50.0,
    radiusColor = 39,
    radiusAlpha = 128,
    blipSprite = 402,
    blipColor = 26,
    blipAlpha = 255,
    showRoute = true,
    routeColor = 26
}

Config.LastPathDistance = 150.0 -- minimal distance between last path and next one

-- none/error/warning/all
Config.Verbose = "warning"

-- required to create new paths
Config.DevMode = false

Config.AfkTime = 60 * 60

Config.Paths = {}

Creating New Paths

If you want to add your custom pipes to our script, enable Config.DevMode and restart the script. Afterward, you can use the command /createtrack (name) to spawn the starting pipe at your coordinates. You can adjust the end offset using the arrow keys. To exit the editor, you need to press either the Enter key or the Escape key. If you confirm your choice, the configuration entry will be created and added to the tracks.txt file in the resource root folder.