π₯Greasy Joes!
Installation Guide!

π Installation Guide
Greasy Joeβs is a highly immersive diner system for FiveM roleplay servers. This script includes food crafting, trays, sinks, job checks, custom UI, and integration with major inventory systems.
π§° DEPENDENCIES
Greasy Joe's Drive-In MLO by Markz3d aka MXC
β Yes, or you must adjust all coords.
This script is pre-configured to the Greasy Joe's MLO's by Markz3d. You may obtain it at πMXC Tebex.
DJ's Breakfast Collection Props
β Yes
Required props in order for script to function properly. Get them at π DJ's Collections
DJ's Animations
β Yes
Required animations received when purchasing DJ's props above.
Inventory
β Yes
Compatible with ox_inventory, qb-inventory, qs-inventory, etc. via xmmx_bridge
Target System
β Yes
Managed via xmmx_bridge
. Compatible with ox_target
, qb-target
, etc.
Job Framework
β Yes
Compatible with QBCore, QBox, ESX or custom job systems
MPW Mega Food Bundle (Optional)
β No
The script also uses the slushy props found in this bundle but they are not required. If the resource has not been renamed, the script will detect it automatically or you may obtain them at πMetal & Poison Worx
π INSTALLATION
STEP 1:
Add to your server.cfg
server.cfg
ensure ox_lib
ensure xmmx_bridge
ensure xmmx_greasyjoes
STEP 2:
Copy the items from the .INSTALL folder to your inventory or core.
Add to ox_inventory/data/items.lua:
-- Meals:
["greasy_bigplatebacon"] = { label = "Big Bacon Plate", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Big Bacon Plate", client = { image = "greasy_bigplatebacon.png", } },
["greasy_baconstripsplate"] = { label = "Bacon Strip Plate", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Bacon Strip Plate", client = { image = "greasy_baconstripsplate.png", } },
["greasy_baconeggtoastplate"] = { label = "Bacon Egg Plate", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Bacon Egg Plate", client = { image = "greasy_baconeggtoastplate.png", } },
["greasy_sunnysideeggplate"] = { label = "Sunnyside Egg", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Sunnyside Egg", client = { image = "greasy_sunnysideeggplate.png", } },
["greasy_sausageggtoastplate"] = { label = "Sausage Breakfast", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Sausage Breakfast", client = { image = "greasy_sausageggtoastplate.png", } },
["greasy_baconomeletteplate"] = { label = "Bacon Omelette", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Bacon Omelette", client = { image = "greasy_baconomeletteplate.png", } },
["greasy_chikfajitaomelette"] = { label = "Chik Fajita Omelette", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Chik Fajita Omelette", client = { image = "greasy_chikfajitaomelette.png", } },
["greasy_spinachomelette"] = { label = "Spinach Omelette", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Spinach Omelette", client = { image = "greasy_spinachomelette.png", } },
["greasy_steakomelette"] = { label = "Steak Omelette", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Steak Omelette", client = { image = "greasy_steakomelette.png", } },
-- Pancakes:
["greasy_buttermilkpancakes"] = { label = "Buttermilk Pancakes", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Buttermilk Pancakes", client = { image = "greasy_buttermilkpancakes.png", } },
["greasy_blueberrypancakes"] = { label = "Blueberry Pancakes", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Blueberry Pancakes", client = { image = "greasy_blueberrypancakes.png", } },
["greasy_chocchippancakes"] = { label = "Chocolate Pancakes", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Chocolate Pancakes", client = { image = "greasy_chocchippancakes.png", } },
["greasy_cinnamonpancakes"] = { label = "Cinnamon Pancakes", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Cinnamon Pancakes", client = { image = "greasy_cinnamonpancakes.png", } },
["greasy_cupcakepancakes"] = { label = "Cupcake Pancakes", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Cupcake Pancakes", client = { image = "greasy_cupcakepancakes.png", } },
["greasy_cheesecakepancakes"] = { label = "Cheesecake Pancakes", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Cheesecake Pancakes", client = { image = "greasy_cheesecakepancakes.png", } },
["greasy_berrynanapancakes"] = { label = "Berry Nana Pancakes", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Berry Nana Pancakes", client = { image = "greasy_berrynanapancakes.png", } },
["greasy_treslechespancakes"] = { label = "Tres Leches Pancakes", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Tres Leches Pancakes", client = { image = "greasy_treslechespancakes.png", } },
-- Treats:
["greasy_solocinnarollplate"] = { label = "Single Cinnaroll", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Single Cinnaroll", client = { image = "greasy_solocinnarollplate.png", } },
["greasy_frenchtoastplate"] = { label = "Frech Toast Plate", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Frech Toast Plate", client = { image = "greasy_frenchtoastplate.png", } },
["greasy_avocadotoastplate"] = { label = "Avocado Toast Plate", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Avocado Toast Plate", client = { image = "greasy_avocadotoastplate.png", } },
["greasy_ccheeseavotoast"] = { label = "CC Avocado Toast", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Cream Cheese Avocado Toast", client = { image = "greasy_ccheeseavotoast.png", } },
["greasy_bigplatecinnaroll"] = { label = "Big Plate Cinnarolls", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Big Plate Cinnarolls", client = { image = "greasy_bigplatecinnaroll.png", } },
["greasy_toast"] = { label = "Toast", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy Ingredient! Toast", client = { image = "greasy_toast.png", } },
-- Drinks:
["greasy_chocolatemilk"] = { label = "Chocolate Milk", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Chocolate Milk", client = { image = "greasy_chocolatemilk.png", } },
["greasy_whitemilk"] = { label = "Milk", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Milk", client = { image = "greasy_whitemilk.png", } },
["greasy_orangejuice"] = { label = "Orange Juice", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Orange Juice", client = { image = "greasy_orangejuice.png", } },
["greasy_cupofcoffee"] = { label = "Cup of Coffee", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Cup of Coffee", client = { image = "greasy_cupofcoffee.png", } },
["greasy_cupoftea"] = { label = "Cup of Tea", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Cup of Tea", client = { image = "greasy_cupoftea.png", } },
["greasy_water"] = { label = "Greasy Water", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Water", client = { image = "greasy_water.png", } },
["greasy_bananaicee"] = { label = "Banana Sludgie", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Banana Sludgie", client = { image = "greasy_bananaicee.png", } },
["greasy_blueberryicee"] = { label = "Blueberry Sludgie", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Blueberry Sludgie", client = { image = "greasy_blueberryicee.png", } },
["greasy_cherryicee"] = { label = "Cherry Sludgie", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Cherry Sludgie", client = { image = "greasy_cherryicee.png", } },
["greasy_limeicee"] = { label = "Lime Sludgie", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Lime Sludgie", client = { image = "greasy_limeicee.png", } },
["greasy_strawberryicee"] = { label = "Strawberry Sludgie", weight = 20, stack = true, close = true, degrade = 2880, decay = true, description = "Greasy! Strawberry Sludgie", client = { image = "greasy_strawberryicee.png", } },
-- Ingredients:
["greasy_rawbacon"] = { label = "Raw Bacon", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Raw Bacon", client = { image = "greasy_rawbacon.png", } },
["greasy_friedbacon"] = { label = "Fried Bacon", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Fried Bacon", client = { image = "greasy_friedbacon.png", } },
["greasy_rawchicken"] = { label = "Raw Chicken", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Raw Chicken", client = { image = "greasy_rawchicken.png", } },
["greasy_cookchicken"] = { label = "Grilled Chicken", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Grilled Chicken", client = { image = "greasy_cookchicken.png", } },
["greasy_rawsteak"] = { label = "Raw Steak", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Raw Steak", client = { image = "greasy_rawsteak.png", } },
["greasy_cooksteak"] = { label = "Grilled Steak", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Grilled Steak", client = { image = "greasy_cooksteak.png", } },
["greasy_cookfrenchtoast"] = { label = "French Toast", weight = 20, stack = true, close = true, description = "Greasy Ingredient! French Toast", client = { image = "greasy_cookfrenchtoast.png", } },
["greasy_rawegg"] = { label = "Egg", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Egg", client = { image = "greasy_rawegg.png", } },
["greasy_friedegg"] = { label = "Fried Egg", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Fried Egg", client = { image = "greasy_friedegg.png", } },
["greasy_rawtoast"] = { label = "Bread Slice", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Bread Slice", client = { image = "greasy_rawtoast.png", } },
["greasy_rawcinnaroll"] = { label = "Raw Cinnaroll", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Raw Cinnaroll", client = { image = "greasy_rawcinnaroll.png", } },
["greasy_cookcinnaroll"] = { label = "Fried Cinnaroll", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Cooked Cinnaroll", client = { image = "greasy_cookcinnaroll.png", } },
["greasy_blueberry"] = { label = "Blueberry", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Blueberry", client = { image = "greasy_blueberry.png", } },
["greasy_strawberry"] = { label = "Strawberry", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Strawberry", client = { image = "greasy_strawberry.png", } },
["greasy_lime"] = { label = "Lime", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Lime", client = { image = "greasy_lime.png", } },
["greasy_cherry"] = { label = "Cherry", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Cherry", client = { image = "greasy_cherry.png", } },
["greasy_banana"] = { label = "Banana", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Banana", client = { image = "greasy_banana.png", } },
["greasy_avocado"] = { label = "Avocado", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Avocado", client = { image = "greasy_avocado.png", } },
["greasy_chocolate"] = { label = "Chocolate", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Chocolate", client = { image = "greasy_chocolate.png", } },
["greasy_chochips"] = { label = "Chocolate Chips", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Chocolate Chips", client = { image = "greasy_chochips.png", } },
["greasy_butter"] = { label = "Butter", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Butter", client = { image = "greasy_butter.png", } },
["greasy_milk"] = { label = "Milk", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Milk", client = { image = "greasy_milk.png", } },
["greasy_coffeebeans"] = { label = "Coffee Beans", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Coffee Beans", client = { image = "greasy_coffeebeans.png", } },
["greasy_flour"] = { label = "Flour", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Flour", client = { image = "greasy_flour.png", } },
["greasy_creamcheese"] = { label = "Cream Cheese", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Cream Cheese", client = { image = "greasy_creamcheese.png", } },
["greasy_spinach"] = { label = "Spinach", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Spinach", client = { image = "greasy_spinach.png", } },
["greasy_cinnamon"] = { label = "Cinnamon", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Cinnamon", client = { image = "greasy_cinnamon.png", } },
["greasy_orange"] = { label = "Orange", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Orange", client = { image = "greasy_orange.png", } },
["greasy_buttermilk"] = { label = "Buttermilk", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Buttermilk", client = { image = "greasy_buttermilk.png", } },
["greasy_rawsausage"] = { label = "Raw Sausage", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Raw Sausage", client = { image = "greasy_rawsausage.png", } },
["greasy_cooksausage"] = { label = "Cooked Sausage", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Cooked Sausage", client = { image = "greasy_cooksausage.png", } },
["greasy_onion"] = { label = "Onion", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Onion", client = { image = "greasy_onion.png", } },
["greasy_potato"] = { label = "Potato", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Potato", client = { image = "greasy_potato.png", } },
["greasy_bellpepper"] = { label = "Bellpepper", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Bellpepper", client = { image = "greasy_bellpepper.png", } },
["greasy_syrup"] = { label = "Syrup", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Syrup", client = { image = "greasy_syrup.png", } },
["greasy_teabag"] = { label = "Tea Bag", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Tea Bag", client = { image = "greasy_teabag.png", } },
["greasy_crushedice"] = { label = "Crushed Ice", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Crushed Ice", client = { image = "greasy_crushedice.png", } },
["greasy_sliceonion"] = { label = "Sliced Onion", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Sliced Onion", client = { image = "greasy_sliceonion.png", } },
["greasy_slicepepper"] = { label = "Sliced Bellpepper", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Sliced Bellpepper", client = { image = "greasy_slicepepper.png", } },
["greasy_sliceavocado"] = { label = "Sliced Avocado", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Sliced Avocado", client = { image = "greasy_sliceavocado.png", } },
["greasy_slicepotato"] = { label = "Sliced Potato", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Sliced Potato", client = { image = "greasy_slicepotato.png", } },
["greasy_hashbrown"] = { label = "Hash Brown", weight = 20, stack = true, close = true, description = "Greasy Ingredient! Hash Brown", client = { image = "greasy_hashbrown.png", } },
-- optional or may have already installed if using my other scripts.
["xm_receipt"] = { label = "Receipt", weight = 100, stack = false, close = true, description = "", client = { image = "xm_receipt.png", } },
βοΈ CONFIGURATION
Edit the following configs:
config.lua
β Main behavior (menu type, recipes, animations, etc.)locations.lua
β Positioning, zones, and support for multi-location restaurants
πΊοΈ MULTIPLE LOCATIONS SUPPORT (locations.lua
)
locations.lua
)You can run multiple Greasy Joeβs locations by toggling them in configs/locations.lua
.
Structure Overview
Each entry in the returned table is a location config:
LaPuerta = {
Enabled = true,
JobName = "greasy",
...
}
Fields You Can Define:
Enabled
Whether this location should be active.
JobName
The job required to access crafting or cashier menus at this location.
BossGrade
Minimum job grade required to access the boss menu.
CheckDuty
Enforce on-duty status (for QB/QBox).
Blips
Configurable blip display in the map for this location.
Registers
Cash register/cashier positions (where customers place orders).
BossMenu
Position for the society boss menu.
Sinks
, Supplies
, Prep
, Fryer
, etc.
Define the coordinates of all interaction zones.
Props
Props to auto-spawn (e.g., coffee machines) with model/position/heading.
β
Example: Enable a Location
In configs/locations.lua
, simply set Enabled = true
:
Paleto = {
Enabled = true,
JobName = "greasyp",
...
}
π½οΈ JOB + INVENTORY SYSTEMS
This script supports many combinations via xmmx_bridge
.
β ox_inventory
β qb-inventory
β qs-inventory
β codem-inventory
β Custom exports
xmmx_bridge
handles inventory interaction, item checks, and giving rewards.
STEP 3:
Copy the jobs below into your corresponding framework or database.
greasy = {
label = 'Greasy Joes LaPuerta',
defaultDuty = false,
offDutyPay = false,
grades = {
['0'] = { name = 'Delivery', payment = 40 },
['1'] = { name = 'Cook', payment = 45 },
['2'] = { name = 'Cashier', payment = 50 },
['3'] = { name = 'Manager', payment = 60, isboss = true },
['4'] = { name = 'Owner', payment = 70, isboss = true },
},
},
-- Optional 2nd Location:
greasyp = {
label = 'Greasy Joes Paleto',
defaultDuty = false,
offDutyPay = false,
grades = {
['0'] = { name = 'Delivery', payment = 40 },
['1'] = { name = 'Cook', payment = 45 },
['2'] = { name = 'Cashier', payment = 50 },
['3'] = { name = 'Manager', payment = 60, isboss = true },
['4'] = { name = 'Owner', payment = 70, isboss = true },
},
},
πΌοΈ INVENTORY IMAGES
STEP 4:
Place item images in: (or your respective inventory images folder)
ox_inventory/web/images/
or
qb-inventory/html/images/
Update the config here if needed:
Images = "ox_inventory/web/images/"
or
Images = "qb-inventory/html/images/"
π RECEIPTS + ORDERING
Use
/register
or interact atRegisters
to open the cashier UI.Receipts are sent (if enabled) to the customer through
ox_inventory
metadata.
βοΈ CRAFTING
Each station (prep, griddle, fryer, drinks, etc.) has its own defined recipes via:
Recipes = {
["Greasy Prep"] = {
{ ['item_name'] = { ['ingredient'] = amount }, ["amount"] = X }
}
}
Multiple crafting UIs are supported:
Menu = "ui" -- "ui", "ox", "xm", "qb"
β‘ MINIGAME
MiniGame
Arrows-based minigame to simulate crafting
π£ NOTES
You can run multiple diners with unique jobs, props, and zones.
All crafting logic is shared across locations.
Staff must be on the correct job to access their Greasy Joeβs features.
Last updated