[ESX/QB/OX] Mower job - Time to clean up the garden

:seedling: Intro

You can try to experience the work of a gardener in a fun way that will enhance your roleplay experience.
This job offers 4 job types and an XP system that can be fully customized.

  • Leaf blower
  • Hand mower
  • Rose delivery
  • Mower

Preview

If the preview doesn’t work: Preview

Dependencies

Supports

Frameworks

  • ESX
  • QB Core
  • OX Core

Inventory

  • ox_inventory
  • qb-inventory
  • ps-inventory
  • quasar_inventory

Can’t see your inventory? You can easily add it in BRIDGE/

Targets

  • ox_target
  • qb-target

You don’t use target? You can use markers BRIDGE/config.lua - BRIDGE.UseMarkers = true

Clean UI and XP system

Check UI and XP


Files

Config.lua

Config = {}


--[[
 _______  _______  __   __  __   __  _______  __    _  _______  _______ 
|       ||   _   ||  | |  ||  |_|  ||       ||  |  | ||       ||       |
|    _  ||  |_|  ||  |_|  ||       ||    ___||   |_| ||_     _||  _____|
|   |_| ||       ||       ||       ||   |___ |       |  |   |  | |_____ 
|    ___||       ||_     _||       ||    ___||  _    |  |   |  |_____  |
|   |    |   _   |  |   |  | ||_|| ||   |___ | | |   |  |   |   _____| |
|___|    |__| |__|  |___|  |_|   |_||_______||_|  |__|  |___|  |_______|
]]--

Config.UISetup = {
    gardener_image = true,
    gradient = false,
}

Config.Payments = {
    leaf_job = 500,
    mower_hand_job = 1000,
    rose_delivery = 500,
    mower_car_job = 1000,
}

Config.XPPerJob = {
    job1 = 2, -- LEAF
    job2 = 2, -- HAND MOWER
    job3 = 3, -- Rose delivery
    job4 = 3, -- MOWER
}

Config.XP = {
    job1 = 0,
    job2 = 50,
    job3 = 200,
    job4 = 250,
}

-- XP*Config.MoneyMultiplierPerXP + Job payment = finalreward
Config.MoneyMultiplierPerXP = 1.1 


Config.HelpNotifyPLS = true -- False use ox_lib notify or BRIDGE/config.lua - Notify


Config.LeafBlower_FunnyFeature = true -- All the peds will run if you start blowing on them.


--[[
 _______  ___      ___   _______  _______ 
|  _    ||   |    |   | |       ||       |
| |_|   ||   |    |   | |    _  ||  _____|
|       ||   |    |   | |   |_| || |_____ 
|  _   | |   |___ |   | |    ___||_____  |
| |_|   ||       ||   | |   |     _____| |
|_______||_______||___| |___|    |_______|

]]--

Config.Blips = {
    {
        Label = "Mower",
        Sprite = 78, 
        Color = 25,
        ShortRange = true,
        Scale = 0.8,
        Display = 2,
        coords = vector3(-1408.1830, -254.9818, 46.3792),
    },
    {
        Label = "Rose field",
        Sprite = 75, 
        Color = 5,
        ShortRange = true,
        Scale = 0.8,
        Display = 2,
        coords = vector3(-943.7378, 2257.5671, 142.7184),
    }
}

--[[
 _______  _______  _______  __   __  _______    ______   _______  _______  _______ 
|       ||       ||       ||  | |  ||       |  |      | |   _   ||       ||   _   |
|  _____||    ___||_     _||  | |  ||    _  |  |  _    ||  |_|  ||_     _||  |_|  |
| |_____ |   |___   |   |  |  |_|  ||   |_| |  | | |   ||       |  |   |  |       |
|_____  ||    ___|  |   |  |       ||    ___|  | |_|   ||       |  |   |  |       |
 _____| ||   |___   |   |  |       ||   |      |       ||   _   |  |   |  |   _   |
|_______||_______|  |___|  |_______||___|      |______| |__| |__|  |___|  |__| |__|
]]--

Config.Mower = {
    job = {
        start = vector3(-1408.1830, -254.9818, 46.3792),
    },
    vehicles = {
        take = vector3(-1417.7334, -243.6898, 46.3792),
        spawn = vector4(-1423.2134, -241.8042, 45.9670, 133.7191),
        vehicleOptions = {
            {
                label = "Bison",
                name = "bison3",
            },
            {
                label = "Burrito",
                name = "burrito"
            },
            {
                label = "Bobcat",
                name = "bobcatxl",
            }
        }
    },
    gardenerStuff = {
        shop = vector3(-1412.0085, -262.6363, 46.3791),
        spawn = vector4(-1408.5596, -264.9563, 46.3792, 314.9549),
    },
    peds = {
        {
            model = "s_m_m_gardener_01", -- JOB START
            coords = vector4(-1407.7406, -254.4391, 46.3791, 135.2828),
        },
        {
            model = "ig_car3guy2", -- CAR GUY
            coords = vector4(-1417.5529, -243.1135, 46.3792, 156.7377),
        },
        {
            model = "s_m_y_armymech_01", -- SUPLIES
            coords = vector4(-1412.0085, -262.6363, 46.3791, 314.5256),
        },
    }
}

Config.CiviliansPeds = {"ig_car3guy2"}

Config.VehiclesColor = 62

Config.GardenerShop = {
    leaf_blower = { label = "Leaf blower", price = 500},
    hand_mower = { label = "Hand mower", price = 100},
    mower = { label = "Mower", price = 100},
}

--[[
     ___  _______  _______  _______ 
    |   ||       ||  _    ||       |
    |   ||   _   || |_|   ||  _____|
    |   ||  | |  ||       || |_____ 
 ___|   ||  |_|  ||  _   | |_____  |
|       ||       || |_|   | _____| |
|_______||_______||_______||_______|
]]--

Config.RosesNeedForOne = 10 -- This is count of roses for one pot

Config.DefineJobs = {

    job_leaf = {
        {
            Ped = vector4(1260.2697, -514.5494, 69.0926, 229.4473),
            Zone = {
                vector3(1257.9893, -510.9320, 69.1247),
                vector3(1253.5929, -528.7885, 68.9683),
                vector3(1226.5052, -510.9624, 69.0631), 
                vector3(1228.6281, -502.6016, 69.0559)
            },
            Leafs = {
                vector3(1231.0286, -507.3722, 69.0638),
                vector3(1236.1450, -514.1419, 69.0057),
                vector3(1231.0286, -507.3722, 69.0638),
                vector3(1236.1450, -514.1419, 69.0057),
            }
        },

        {
            Ped = vector4(1212.6432, -708.3506, 59.7450, 63.8586),
            Zone = {
                vector3(1214.6952, -708.4778, 59.9855),
                vector3(1243.0043, -705.4548, 60.8730),
                vector3(1244.6396, -738.8795, 61.5189), 
                vector3(1217.9318, -746.1197, 58.6130)
            },
            Leafs = {
                vector3(1232.7349, -735.4689, 60.8188),
                vector3(1225.1183, -732.3287, 59.9510),
                vector3(1241.3755, -711.9937, 60.8352),
                vector3(1232.7349, -735.4689, 60.8188),
                vector3(1225.1183, -732.3287, 59.9510),
                vector3(1241.3755, -711.9937, 60.8352)
            }
        },

        {
            Ped = vector4(961.2917, -655.5099, 57.4423, 335.1069),
            Zone = {
                vector3(960.9513, -656.6193, 57.4336),
                vector3(928.7247, -674.3969, 58.1037),
                vector3(921.0844, -661.7850, 58.1300), 
                vector3(945.7745, -636.9387, 57.4531)
            },
            Leafs = {
                vector3(937.7335, -663.4494, 58.0811),
                vector3(949.7125, -654.2958, 57.9929),
                vector3(930.3829, -665.6179, 58.1506),
                vector3(937.7335, -663.4494, 58.0811),
                vector3(949.7125, -654.2958, 57.9929),
                vector3(930.3829, -665.6179, 58.1506),
            }
        }
    },


    job_mower_hand = {
        {
            Ped = vector4(-1971.4528, 619.8163, 121.9441, 291.9061),
            Grass = {
                vector3(-1983.5492, 617.2070, 122.4918),
                vector3(-1990.5599, 619.2752, 122.4695),
                vector3(-1999.0088, 621.7502, 122.4602),
                vector3(-1990.4456, 661.1147, 122.7409),
                vector3(-1994.4923, 660.2780, 122.6105),
                vector3(-1989.1788, 657.0601, 122.5349),
                vector3(-1985.8793, 652.2693, 122.5394),
            },

            Stones = {
                vector3(-1998.0490, 660.1151, 122.5499),
            }
        },
        {
            Ped = vector4(-799.5679, -33.7579, 37.8949, 118.1962),
            Grass = {
                vector3(-791.7003, -32.3197, 38.3435),
                vector3(-791.4572, -26.9465, 39.1161),
                vector3(-791.4824, -20.9986, 39.7218),
                vector3(-797.7418, -17.4296, 39.2352),
                vector3(-798.6537, -9.8924, 39.9028),
                vector3(-804.4206, -5.6382, 40.733),
                vector3(-803.2731, 0.9647, 41.7404),
            },

            Stones = {
                vector3(-801.8337, -3.5994, 41.1206),
                vector3(-793.8500, -18.7702, 39.6539),
            }
        }
    },


    job_mower_car = {

        {
            Ped = vector4(-1972.1921, 619.2714, 121.9747, 256.8663),
            Grass = {
                vector3(-1983.9750, 616.9792, 122.4600),
                vector3(-1992.6886, 619.6033, 122.4605),
                vector3(-2004.2908, 624.1967, 122.4595),
                vector3(-2010.4822, 629.1288, 122.4991),
                vector3(-1992.9471, 660.6491, 122.6882),
                vector3(-1984.9972, 652.7495, 122.5362),
            },
            
            Stones = {
                vector3(-1997.4517, 660.3716, 122.5672),
                vector3(-1985.9565, 652.9579, 122.5362),
            }
        },
        {
            Ped = vector4(-653.6150, -43.4357, 39.9620, 165.8277),
            Grass = {
                vector3(-658.4651, -38.6796, 39.5404),
                vector3(-669.5455, -40.4932, 38.7303),
                vector3(-681.5648, -41.2819, 38.1878),
                vector3(-680.2635, -33.9234, 38.3194),
                vector3(-667.6099, -32.0118, 38.8929),
                vector3(-649.8823, -28.7130, 40.172),
                vector3(-640.0336, -33.8673, 40.9094),
                vector3(-634.9261, -35.6530, 41.3233),
                vector3(-630.1118, -31.0831, 41.6579),
                vector3(-619.9073, -28.2839, 42.4192),
                vector3(-607.3764, -28.0867, 43.0075),
                vector3(-598.8074, -32.5484, 43.1448),
            },
            
            Stones = {
                vector3(-616.3223, -33.4514, 42.415),
                vector3(-613.6236, -30.8283, 42.611),
                vector3(-601.3441, -33.8124, 42.9624),
            }
        },
    },

    job_mower_roses = {

        {
            Ped = vector4(912.0025, -607.4860, 57.4128, 321.2155),
            roses = {
                vector3(906.1523, -618.4863, 58.4533),
                vector3(907.6942, -620.1906, 58.0490),
            }
        },

        {
            Ped = vector4(975.2581, -454.2425, 62.5329, 261.3374),
            roses = {
                vector3(968.1017, -454.0062, 62.4028),

            }
        },

        {
            Ped = vector4(1007.3363, -463.0432, 63.7640, 43.5300),
            roses = {
                vector3(1012.1553, -470.5251, 64.2884),
                
            }
        },

        {
            Ped = vector4(1032.9816, -414.9866, 65.9976, 230.5606),
            roses = {
                vector3(1028.9934, -411.7180, 65.9443),
            }
        },

        {
            Ped = vector4(1093.6853, -431.3319, 66.7689, 75.7961),
            roses = {
                vector3(1101.4664, -434.3730, 67.3921),
            }
        }

    },
}

Config.AddonSoundsVolume = 0.05



--[[
 _______  ___   _______  ___      ______   _______ 
|       ||   | |       ||   |    |      | |       |
|    ___||   | |    ___||   |    |  _    ||  _____|
|   |___ |   | |   |___ |   |    | | |   || |_____ 
|    ___||   | |    ___||   |___ | |_|   ||_____  |
|   |    |   | |   |___ |       ||       | _____| |
|___|    |___| |_______||_______||______| |_______|
                                 
]]--



Config.FieldsLoadTime = 5000
Config.FieldsDistanceLoad = 50.0


Config.Fields = {
    {
        label="Rose field",
        pos = vector3(-943.7378, 2257.5671, 142.7184),
        spawnModel = "prop_plant_cane_01a",
        spawnLimit = 15,
        spawnRadius = 40.0,
        recivieItem = "rose",
        count = {
            min = 1,
            max = 2,
        }
    },
}
Actions.lua - For custom things
-- VARIABLES
-- playerVehicle - This is spawned vehicle if nil = not exist
-- playerAddonVehicle - This is entity for hand mower or mower if nil = not exist


function action_player_start_job(job)
    local pCoords =  GetEntityCoords(cache.ped)
    --[[
        Variable job
        @param job1 leafblower
        @param job2 handmower
        @param job3 rosedelivery
        @param job4 mower
    ]]--
    if pCoords then
        
    end
end

function action_player_end_job()
    -- When player end job and get paid
end

function action_player_spawn_vehicle(model)
    -- This is player vehicle
end

function action_player_start_second_job(job)
    -- This is when you talk to an NPC and start working.
end

function action_player_create_addon_vehicle(model)
    -- This is when you take mower or hand mower from shop.
end

What files are escrowed?

Only files where there are functions with the job and the functioning of the job itself.
But server.lua is open including xp system for possible configurations.
Because having as much editable as possible is essential!

:convenience_store: Store

Tebex store here.
Source: https://store.polisek.io/category/fivem-open-source

Check my other resources

[FREE] Job system - Create restaurant jobs in game.
Keycards heists
Weed growing

Code is accessible No
Subscription-based No
Lines (approximately) 1000+
Requirements ox_lib
Support Yes
4 Likes

Great release

2 Likes

Thanks a lot!

2 Likes

Sick release!

1 Like

Source version OUT NOW!