Need help? Join our Discord for support and updates

Gardener

v1.0.0JobESXQBQBOX
On this page

Gardener

Overview

The Gardener script allows players to take on the role of a gardener within the game, providing a unique job experience. Players can engage in various gardening activities, enhancing their skills and earning experience as they progress. The script includes a range of props and markers to facilitate gardening tasks, creating an immersive roleplay environment.

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

  • ox_lib
  • es_extended or qb-core
  • drc_gardenerprops

Optional Dependencies

  • ox_target or qb-target or qtarget

Installation

1. Upload the resource

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

2. Install dependencies

Make sure all of the following are installed and started before this script:

  • ox_lib

3. Import database

This script uses a database. Import the included drc_gardener/install/experience.sql — or run the following SQL directly:

CREATE TABLE IF NOT EXISTS `drc_gardener` (
  `identifier` varchar(255) NOT NULL,
  `experience` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

INSERT INTO `addon_account` (name, label, shared) VALUES
	('society_gardener', 'gardener', 1)
;

INSERT INTO `addon_inventory` (name, label, shared) VALUES
	('society_gardener', 'gardener', 1)
;

INSERT INTO `datastore` (name, label, shared) VALUES
	('society_gardener', 'gardener', 1)
;

INSERT INTO `jobs` (name, label) VALUES
	('gardener', 'gardener')
;

INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
	('gardener',0,'worker','Worker',120,'{}','{}')
;

4. Add to server.cfg

ensure ox_lib
ensure drc_gardener

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 to confirm it loads without errors.

Config

drc_gardener/shared/sh_config.lua

Config = {}

Config.Debug = false
--SERVER SETTINGS
Config.Framework = "auto-detect"    -- Framework | types: auto-detect, qbcore, ESX, standalone
Config.NewESX = true -- if you use esx 1.1 version set this to false

Config.InteractionType = "target" -- target / 3dtext / textui
Config.Target = "auto-detect"   -- Target | types: auto-detect, qb-target, qtarget, ox_target

Config.Progress = "ox_lib" -- ProgressBar | types: progressBars, ox_lib, qbcore
Config.Context = 'ox_lib' -- Context | types: ox_lib, qbcore
Config.TextUI = 'ox_lib' -- TextUIs | types: esx, ox_lib, luke
Config.FuelType = 'legacy_fuel' --'legacy_fuel', 'rcore', 'ox_fuel', 'ps_fuel', 'cdn_fuel', false
Config.KeySystem = 'ox_lib' -- Key System | types: qs, wasabi, fivecode, qbcore

-- Process durations in milliseconds. These values control both progressbar length and animation length.
Config.ProcessDurations = {
    RakingLeaves = 5000,
    CleaningWeeds = 4500,
    PlantingTrees = 7000,
    WateringPlants = 4000,
    CollectMoney = 3000,
    GetTool = 3500,
}

Config.AutoClothing = true -- if you want to change player clothes
Config.Clothing = "auto-detect" -- Skin / Clothing | types: auto-detect, esx_skin, qb-clothing, fivem-appearance, ox_appearance, illenium-appearance

Config.RequireJob = false -- If player needs job to do job
Config.Job = 'gardener' -- name of the require job only work with RequireJob = true

Config.VehicleModel = 'burrito' -- Vehicle model for gardener to use

Config.SpawnCoords = {-488.5718, -58.9089, 39.9907, 356.1456}

Config.Offset = vec3(0.77, 0, 0)

Config.StartJobLocation = vec4(-517.0587, -65.6794, 39.8363, 155.4374)

Config.Blip = {
    BlipCoords = vec3(-517.0587, -65.6794, 39.8363), -- Blip coords
    Sprite = 237, -- Blip Icon
    Display = 4, -- keep 4
    Scale = 0.6, -- Size of blip
    Colour = 69, -- colour
    Name = "Gardener" -- Blip name
}

Config.CustomerBlip = {
    Sprite = 480,
    Colour = 5,
    Scale = 0.6, -- Size of blip
}

Config.Missions = {}


Config.MaxExperience = 100

Config.Missions.RakingLeaves = {
    AddToPlayer = {
        AddExperience = 15,
        Money = {300, 1000},
    },
    Missions = {
        ["Mission1"] = {
            npc_coords = vec4(969.3279, -502.3466, 61.1409, 46.2358),
            pile1 = vec3(965.9605, -496.6353, 60.7757),
            pile2 = vec3(971.4554, -491.9084, 60.8457),
            pile3 = vec3(976.9664, -489.0092, 61.1225),
            pile4 = vec3(977.9433, -492.9162, 61.1150),
        },
        ["Mission2"] = {
            npc_coords = vec4(-840.7773, -927.6354, 14.8791, 88.0349),
            pile1 = vec3(-838.7026, -924.8059, 15.0237),
            pile2 = vec3(-835.7042, -925.3527, 15.2009),
            pile3 = vec3(-834.0089, -930.4804, 15.3029),
            pile4 = vec3(-835.3348, -934.5846, 15.1591),
            pile5 = vec3(-830.7275, -935.1727, 15.4142),
        },
        ["Mission3"] = {
            npc_coords = vec4(861.7046, -582.2391, 57.1573, 332.3071),
            pile1 = vec3(854.3747, -575.5153, 56.8884),
            pile2 = vec3(856.1555, -573.6362, 56.7509),
            pile3 = vec3(853.0672, -572.3131, 56.7611),
            pile4 = vec3(859.9323, -571.2383, 56.5923),
            pile5 = vec3(862.9066, -574.1180, 56.6693),
        },
        ["Mission4"] = {
            npc_coords = vec4(934.0009, -637.1838, 56.8601, 302.3448),
            pile1 = vec3(936.2700, -635.5218, 56.9569),
            pile2 = vec3(938.2381, -633.4910, 56.7603),
            pile3 = vec3(940.5510, -635.0389, 56.7561),
            pile4 = vec3(931.7380, -631.6094, 56.9142),
            pile5 = vec3(932.2642, -628.2191, 56.7390),
            pile6 = vec3(934.5267, -629.1412, 56.6813),
        },
        ["Mission5"] = {
            npc_coords = vec4(1214.4069, -699.0596, 59.2947, 87.3511),
            pile1 = vec3(1214.2496, -701.4090, 59.3616),
            pile2 = vec3(1216.6294, -701.1245, 59.6531),
            pile3 = vec3(1219.6213, -700.5314, 59.9055),
            pile4 = vec3(1214.2543, -696.0114, 59.6705),
            pile5 = vec3(1213.6753, -693.3996, 59.7163),
            pile6 = vec3(1213.0026, -689.8580, 59.8270),
        },
    }
}
Config.Missions.PlantingTrees = {
    AddToPlayer = {
        AddExperience = 15,
        Money = {300, 1000},
    },
    Missions = {
        ["Mission1"] = {
        npc_coords = vec4(990.8698, -441.4105, 62.7721, 243.1758),
        sapling1 = vec3(997.0593, -441.6669, 62.9508),
        sapling2 = vec3(995.7840, -442.5928, 62.8763),
        sapling3 = vec3(993.9689, -443.9674, 62.7723),
        },
        ["Mission2"] = {
            npc_coords = vec4(1192.2286, -601.9547, 62.9502, 100.2178),
            sapling1 = vec3(1195.1958, -599.5179, 66.9904),
            sapling2 = vec3(1195.1105, -597.5477, 66.9894),
            sapling3 = vec3(1194.9121, -595.7457, 66.9891),
            sapling4 = vec3(1194.6155, -592.9788, 66.9891),
            sapling5 = vec3(1196.6672, -594.4377, 66.9893),
         },
            ["Mission3"] = {
                npc_coords = vec4(1192.2286, -601.9547, 62.9502, 100.2178),
                sapling1 = vec3(857.7657, -532.5310, 56.3289),
                sapling2 = vec3(857.5664, -534.1605, 56.3289),
                sapling3 = vec3(857.1187, -536.2701, 56.3289),
                sapling4 = vec3(856.7445, -537.8790, 56.3289),
                sapling5 = vec3(860.0118, -527.8931, 56.3272),
                sapling6 = vec3(857.0424, -527.3738, 56.3219),
            },
            ["Mission4"] = {
                npc_coords = vec4(950.6689, -252.5199, 66.5764, 110.2194),
                sapling1 = vec3(950.8433, -254.6856, 66.6197),
                sapling2 = vec3(950.1409, -255.5921, 66.6451),
                sapling3 = vec3(949.7927, -256.7761, 66.6370),
                sapling4 = vec3(948.6697, -258.1325, 66.5013),
                sapling5 = vec3(947.6275, -259.7542, 66.3546),
            },
            ["Mission5"] = {
                npc_coords = vec4(-573.7588, -996.2295, 21.1789, 250.7438),
                sapling1 = vec3(-576.1263, -995.4774, 21.2787),
                sapling2 = vec3(-576.0078, -993.6233, 21.2787),
                sapling3 = vec3(-575.9738, -991.0770, 21.2787),
                sapling4 = vec3(-576.0079, -988.6609, 21.2787),
                sapling5 = vec3(-575.9927, -986.0328, 21.2787),
                sapling6 = vec3(-576.0864, -983.2761, 21.2787),
                sapling7 = vec3(-576.1064, -980.5214, 21.2787),
            },
    }
}

Config.Missions.CleaningWeeds = {
AddToPlayer = {
    AddExperience = 15,
    Money = {300, 1000},
},
    Missions = {
        ["Mission1"] = {
        npc_coords = vec4(-2014.1183, 489.0760, 106.1717, 206.7787),
        weed1 = vec4(-2018.2094, 479.0862, 106.1619, 69.8974),
        weed2 = vec4(-2018.0143, 480.1909, 106.1526, 75.5682),
        weed3 = vec4(-2020.2554, 477.6495, 106.1619, 341.5254)
     },
     ["Mission2"] = {
        npc_coords = vec4(292.3271, -905.8131, 28.2162, 51.1240),
        weed1 = vec4(297.1531, -898.0298, 28.2838, 336.2406),
        weed2 = vec4(299.9749, -899.0565, 28.2923, 334.1530),
        weed3 = vec4(303.1777, -900.2231, 28.2948, 336.3535),
        weed4 = vec4(303.1715, -909.3328, 28.2933, 159.0358)
     },
     ["Mission3"] = {
        npc_coords = vec4(129.9982, -1029.3477, 28.3570, 306.0691),
        weed1 = vec4(129.4822, -1031.2333, 28.4335, 82.1779),
        weed2 = vec4(128.5934, -1033.6187, 28.4335, 79.0115),
        weed3 = vec4(127.8813, -1035.6775, 28.4335, 67.2464),
        weed4 = vec4(126.6720, -1038.8196, 28.4335, 66.7585),
        weed5 = vec4(130.9581, -1037.0298, 28.4335, 249.1073),
        weed6 = vec4(132.0330, -1034.1993, 28.4335, 250.0823),
     },
     ["Mission4"] = {
        npc_coords = vec4(64.0022, -138.7652, 54.0701, 205.5728),
        weed1 = vec4(61.4105, -138.4862, 54.0687, 356.1698),
        weed2 = vec4(59.7213, -137.8864, 54.0067, 338.0343),
        weed3 = vec4(58.1120, -137.2962, 54.9966, 359.5681),
        weed4 = vec4(55.9695, -136.5139, 54.0574, 359.6319),
     },
     ["Mission5"] = {
        npc_coords = vec4(1017.3979, -565.0938, 58.7132, 303.5102),
        weed1 = vec4(1013.5132, -561.0999, 59.1995, 353.7287),
        weed2 = vec4(1010.7545, -560.7391, 59.1995, 359.5822),
        weed3 = vec4(1007.7498, -560.3934, 59.1995, 0.7139),
        weed4 = vec4(1004.3952, -559.9174, 59.1995, 18.6651),
        weed5 = vec4(1002.1114, -559.7202, 59.1995, 349.3628),
        weed6 = vec4(999.4298, -560.5426, 59.2495, 32.9215),
        weed7 = vec4(997.3569, -562.0817, 59.2495, 35.6140),
        weed8 = vec4(994.8129, -563.8020, 59.2495, 47.3254),
     },
    }
}

Config.Missions.WateringPlants = {
    AddToPlayer = {
        AddExperience = 15,
        Money = {300, 1000},
    },

    Missions = {
        ["Mission1"] = {
        npc_coords = vec4(966.1359, -542.8436, 58.3591, 205.2195),
        plant1 = vec3(963.5701, -546.6447, 59.3589),
        plant2 = vec3(962.1029, -547.8755, 59.3588),
        plant3 = vec3(960.3389, -548.8728, 59.3586)
    },
    ["Mission2"] = {
        npc_coords = vec4(912.6827, -617.8937, 56.9042, 264.0297),
        plant1 = vec3(910.8616, -616.3309, 58.0928),
        plant2 = vec3(907.6899, -614.0260, 58.0918),
        plant3 = vec3(902.9125, -609.2996, 58.0917),
        plant4 = vec3(916.5391, -616.0798, 57.6948)
    },
    ["Mission3"] = {
        npc_coords = vec4(960.7908, -669.2843, 57.4509, 294.2350),
        plant1 = vec3(965.4473, -672.4285, 58.0537),
        plant2 = vec3(964.5616, -678.8165, 57.9540),
        plant3 = vec3(961.1960, -679.3245, 58.0661),
        plant4 = vec3(965.9732, -683.7194, 58.0662),
        plant5 = vec3(962.6708, -675.4239, 58.0138),
        plant6 = vec3(958.5796, -681.3015, 57.9883)
    },
    ["Mission4"] = {
        npc_coords = vec4(-14.8124, 10.3443, 70.5185, 321.7428),
        plant1 = vec3(-18.5477, 8.0784, 71.4535),
        plant2 = vec3(-22.8663, 10.5149, 71.4535),
        plant3 = vec3(-23.5015, 8.3743, 71.4535),
        plant4 = vec3(-26.0012, 11.0794, 71.4535),
        plant5 = vec3(-27.8466, 9.4694, 71.4535),
    },
    ["Mission5"] = {
        npc_coords = vec4(457.6120, 23.5211, 86.7257, 222.5366),
        plant1 = vec3(452.8117, 18.3820, 86.6581),
        plant2 = vec3(445.6230, 15.8169, 87.3094),
        plant3 = vec3(447.3637, 27.7953, 87.5665),
        plant4 = vec3(438.8681, 26.6647, 89.0129),
        plant5 = vec3(428.8678, 25.0426, 89.6409),
        plant6 = vec3(428.6201, 27.6297, 90.1203),
        plant7 = vec3(417.7583, 34.7311, 91.1602),
    },
}
}

Config.Missions.Lawnmower = {
    AddToPlayer = {
        AddExperience = 15,
        Money = {150, 1000},
    },
    Missions = {
        ["Mission1"] = { 
        marker = vec3(-1634.637330, 52.312088, 62.457154),
        npc_coords = vec4(-1629.323120, 38.479122, 61.524536, 337.322846),
        grass1 = vec3(-1632.936280, 48.052746, 61.0),
        grass2 = vec3(-1628.202148, 49.213188, 61.0),
        grass3 = vec3(-1629.428588, 53.050548, 61.0),
        grass4 = vec3(-1632.567016, 54.725274, 61.0),
        grass5 = vec3(-1635.665894, 56.756042, 61.0),
        grass6 = vec3(-1639.028564, 55.687912, 61.0),
        grass7 = vec3(-1637.406616, 52.087914, 61.0),
        grass8 = vec3(-1627.384644, 50.268132, 61.0),
        grass9 = vec3(-1633.002198, 56.953846, 61.0),
        grass10 = vec3(-1634.808838, 58.971428, 61.0),

    },  
        ["Mission2"] = { 
        marker = vec3(-1736.188964, 156.896698, 64.361206),
        npc_coords = vec4(-1694.927490, 141.454940, 63.327514, 209.763778),
        grass1 = vec3(-1713.639526, 149.103302, 62.5),
        grass2 = vec3(-1715.934082, 157.318680, 62.5),
        grass3 = vec3(-1722.197754, 163.450546, 62.5),
        grass4 = vec3(-1730.742920, 167.327468, 62.5),
        grass5 = vec3(-1734.290162, 159.995606, 62.5),
        grass6 = vec3(-1738.760498, 167.010986, 62.5),
        grass7 = vec3(-1739.934082, 175.160446, 62.5),
        grass8 = vec3(-1745.789062, 175.503296, 62.5),
        grass9 = vec3(-1749.824218, 168.435166, 62.5),
        grass10 = vec3(-1751.973632, 160.101104, 62.5),
        grass11 = vec3(-1747.701050, 153.586822, 62.5),
        grass12 = vec3(-1746.052734, 146.083526, 62.5),
        grass13 = vec3(-1742.703248, 147.876922, 62.5),
        grass14 = vec3(-1734.382446, 146.914292, 62.5),
        grass15 = vec3(-1729.978028, 141.560440, 62.5),
        grass16 = vec3(-1722.632934, 141.217590, 62.5),

    },
    ["Mission3"] = { 
        marker = vec3(221.934066, 775.832946, 204.669556),
        npc_coords = vec4(227.973632, 766.114258, 203.770752, 48.188972),
        grass1 = vec3(224.320878, 775.806580, 203.0),
        grass2 = vec3(225.309890, 778.865906, 203.0),
        grass3 = vec3(222.316482, 778.180236, 203.0),
        grass4 = vec3(219.890106, 774.487916, 203.0),
        grass5 = vec3(219.665940, 771.006592, 203.0),
        grass6 = vec3(217.912094, 768.026368, 203.0),
        grass7 = vec3(215.657136, 769.371398, 203.0),
        grass8 = vec3(214.140656, 771.890136, 203.0),
        grass9 = vec3(213.468140, 774.395630, 203.0),
        grass10 = vec3(214.298904, 776.980224, 203.0),
        grass11 = vec3(216.791214, 777.296692, 203.0),
        grass12 = vec3(222.830764, 771.903320, 203.0),
        grass13 = vec3(225.613190, 772.747254, 203.0),

    },
    ["Mission4"] = { 
        marker = vec3(1349.090088, -619.846130, 74.504760),
        npc_coords = vec4(1342.483520, -597.626342, 73.690064, 323.149598),
        grass1 = vec3(1328.756104, -612.567016, 73.0),
        grass2 = vec3(1330.747314, -614.479126, 73.0),
        grass3 = vec3(1332.764892, -616.536254, 73.0),
        grass4 = vec3(1335.626342, -618.870300, 73.0),
        grass5 = vec3(1338.685668, -620.848328, 73.0),
        grass6 = vec3(1342.061524, -622.074708, 73.0),
        grass7 = vec3(1344.316528, -618.197814, 73.0),
        grass8 = vec3(1350.000000, -618.593384, 73.0),
        grass9 = vec3(1348.338500, -623.960450, 73.0),
        grass10 = vec3(1347.243896, -622.523072, 73.0),
        grass11 = vec3(1350.263794, -624.026368, 73.0),
        grass12 = vec3(1351.912110, -622.562622, 73.0),
        grass13 = vec3(1352.109864, -619.028564, 73.0),
        grass14 = vec3(1351.265992, -616.114258, 73.0),
        grass15 = vec3(1349.960450, -612.751648, 73.0),
        grass16 = vec3(1352.756104, -611.274720, 73.0),
        grass17 = vec3(1350.843994, -609.837342, 73.0),

    },
    ["Mission5"] = { 
        marker = vec3(-266.347260, -1662.118652, 31.841064),
        npc_coords = vec4(-251.208786, -1662.487916, 30.857910, 99.212594),
        grass1 = vec3(-265.424164, -1665.850586, 30.0),
        grass2 = vec3(-261.072540, -1671.389038, 30.0),
        grass3 = vec3(-257.643952, -1668.593384, 30.0),
        grass4 = vec3(-255.362640, -1660.879150, 30.0),
        grass5 = vec3(-257.683502, -1658.663696, 30.0),
        grass6 = vec3(-258.540650, -1655.604370, 30.0),
        grass7 = vec3(-261.151642, -1653.665894, 30.0),
        grass8 = vec3(-264.171418, -1652.281372, 30.0),
        grass9 = vec3(-262.246154, -1663.358276, 30.0),
        grass10 = vec3(-257.578034, -1669.661500, 30.0),
        grass11 = vec3(-263.419770, -1673.551636, 30.0),
        grass12 = vec3(-269.327484, -1666.562622, 30.0),
        grass13 = vec3(-275.169220, -1661.419800, 30.0),
        grass14 = vec3(-276.303284, -1653.705444, 30.0),
        grass15 = vec3(-274.430786, -1648.298950, 30.0),
    },
}
}

Config.Outfits = {
    [`mp_m_freemode_01`] = { -- Skin model
            label = "Gardener",
            description = "Your Outfit",
            outfitData = {
                tshirt_1 = 15,
                tshirt_2 = 0,
                arms     = 19,
                torso_1  = 22,
                torso_2  = 0,
                pants_1  = 90,
                pants_2  = 0,
                shoes_1 = 1,
                shoes_2 = 0,
                chain_1 = 0,
                chain_2 = 0,
                glasses_1 = 0,
                glasses_2 = 0,
                ears_1 = 0,
                ears_2 = 0,
            
        }
    },
    [`mp_f_freemode_01`] = { -- Skin model
    
            label = "Gardner",
            description = "",
            outfitData = {
                tshirt_1 = 14,
                tshirt_2 = 0,
                arms     = 15,
                torso_1  = 173,
                torso_2  = 0,
                pants_1  = 78,
                pants_2  = 2,
                shoes_1 = 77,
                shoes_2 = 0,
                chain_1 = 0,
                chain_2 = 0,
                glasses_1 = 0,
                glasses_2 = 0,
                ears_1 = 0,
                ears_2 = 0,
            
        }
    },
}
Last updated 7/12/2026Browse all docs →