πŸ₯ž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

Dependency
Required
Description

xmmx_bridge

βœ… Yes

Core logic handler: inventory, menus, interaction, etc. πŸ”— xmmx_bridge

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.

ox_lib

βœ… Yes

Required for UI, context menus, and support features. πŸ”— GitHub

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

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)

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:

Key
Description

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 at Registers 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

Feature
Description

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