A universal fastfood / coffeeshop job resource for FiveM ESX Legacy (v1.13+) + oxmysql.
One script handles every fastfood or coffeeshop job on your server — add a new job by filling in a config block and restarting. No SQL needed.
- Multi-job — unlimited jobs (McDonalds, Mikel Coffee, Starbucks, etc.) from a single resource
- Auto-provisioning — DB rows (job, grades, society account, inventory, datastore, items) created automatically on resource start
- Uniform system — per-job male/female clothing sets via skinchanger
- Society vault — buy ingredients using society account balance
- Fridge inventory — shared fridge storage separate from the main stock
- Crafting — config-driven recipes: ingredients → product, with cook time and output count
- Vehicle garage — society-owned garage or free-spawn mode
- Boss menu — full ESX Society boss panel (hire/fire/grades/balance/money wash)
- Billing — charge nearby players and redirect funds
- Weapon vault — deposit/withdraw weapons into the society datastore
- Map blips — public blips for every active job, plus internal zone blips for workers
| Dependency | Notes |
|---|---|
| es_extended | ESX Legacy v1.13+ |
| oxmysql | Replaces mysql-async |
| esx_society | Society accounts & boss menu |
| esx_addonaccount | Society wallet |
| esx_addoninventory | Stock & fridge |
| esx_datastore | Weapon vault |
| skinchanger | Uniform support |
| esx_billing | Billing players |
- Drop
esx_fastfoodinto yourresourcesfolder (or any category folder). - Add to
server.cfg:ensure esx_fastfood - Configure your jobs in
config.lua(see below). - Start / restart the resource — all DB rows are created automatically.
No manual SQL execution required.
Open config.lua and add an entry inside Config.Jobs:
['mcdonalds'] = {
Label = 'McDonalds',
Society = 'society_mcdonalds',
Fridge = 'society_mcdonalds_fridge',
Blip = {
Pos = { x = 0.0, y = 0.0, z = 0.0 }, -- map coords
Sprite = 52,
Display = 4,
Scale = 0.9,
Colour = 5,
Name = 'McDonalds',
},
Grades = {
{ grade = 0, name = 'recruit', label = 'Trainee', salary = 550 },
{ grade = 1, name = 'staff', label = 'Staff', salary = 600 },
{ grade = 2, name = 'chef', label = 'Chef', salary = 650 },
{ grade = 3, name = 'viceboss', label = 'Assistant', salary = 700 },
{ grade = 4, name = 'boss', label = 'Manager', salary = 750 },
},
AuthorizedVehicles = {
{ name = 'burrito', label = 'Delivery Van' },
},
Zones = {
Cloakrooms = { Pos={x=0,y=0,z=0}, Size={x=1.5,y=1.5,z=1.0}, Color={r=255,g=0,b=0}, Type=27 },
Vaults = { Pos={x=0,y=0,z=0}, Size={x=1.3,y=1.3,z=1.0}, Color={r=30,g=144,b=255}, Type=27 },
Fridge = { Pos={x=0,y=0,z=0}, Size={x=1.6,y=1.6,z=1.0}, Color={r=255,g=0,b=0}, Type=27 },
Cook = { Pos={x=0,y=0,z=0}, Size={x=1.6,y=1.6,z=1.0}, Color={r=0,g=200,b=220}, Type=27 },
Vehicles = { Pos={x=0,y=0,z=0}, SpawnPoint={x=0,y=0,z=0}, Size={x=1.8,y=1.8,z=1.0}, Color={r=255,g=255,b=0}, Type=27, Heading=0.0 },
BossActions = { Pos={x=0,y=0,z=0}, Size={x=1.5,y=1.5,z=1.0}, Color={r=0,g=100,b=0}, Type=1 },
},
ShopItems = {
{ name = 'bread', label = 'Bread', price = 2 },
{ name = 'meat', label = 'Meat', price = 4 },
{ name = 'lettuce', label = 'Lettuce', price = 2 },
},
CraftingRecipes = {
{
result = 'burger',
label = 'Burger',
time = 15000, -- milliseconds
produces = 1,
ingredients = {
{ item = 'bread', count = 1 },
{ item = 'meat', count = 1 },
{ item = 'lettuce', count = 1 },
},
},
},
Uniforms = {
barman_outfit = {
male = { ['tshirt_1']=0, ['torso_1']=0, ['pants_1']=0, ['shoes_1']=0 }, -- fill with real component IDs
female = { ['tshirt_1']=0, ['torso_1']=0, ['pants_1']=0, ['shoes_1']=0 },
},
},
},Then restart esx_fastfood. Done.
| Option | Default | Description |
|---|---|---|
Config.DrawDistance |
100.0 |
Distance at which markers are drawn |
Config.EnableSocietyOwnedVehicles |
true |
Use esx_society garage (true) or free-spawn (false) |
Config.EnableHelicopters |
false |
Enable helicopter zone support |
Config.EnableMoneyWash |
false |
Show money wash option in boss menu |
Config.MaxInService |
10 |
Max workers who can take a vehicle simultaneously (-1 = unlimited) |
Config.MissCraft |
0 |
% chance a crafting attempt fails (0 = always succeeds) |
| Zone key | Trigger | Action |
|---|---|---|
Cloakrooms |
E | Open uniform locker |
Vaults |
E | Buy ingredients (charged to society account) |
Fridge |
E | Transfer items to/from the fridge inventory |
Cook |
E | Craft recipes defined in CraftingRecipes |
Vehicles |
E | Spawn / store work vehicles |
BossActions |
E | Open ESX Society boss menu (boss grade only) |
F6 — Opens the billing menu from anywhere on the map.
On every resource start the server checks each job in Config.Jobs against the database:
- Job missing → inserts
jobs,job_grades,addon_account,addon_inventory(×2),datastore - Every start →
INSERT IGNOREfor allShopItemsand crafting result items into theitemstable
All queries use INSERT IGNORE so re-running is always safe.
esx_fastfood/
├── fxmanifest.lua
├── config.lua
├── locales/
│ └── en.lua
├── client/
│ └── main.lua
└── server/
└── main.lua
| Username | Role | |
|---|---|---|
| real69xaros | Author | |
| WizardXSC | Contributor |
MIT — free to use, modify, and distribute.