π²Let's Cook Plus!
Installation Guide

β οΈ All props are created server-side. If you are using any anti-cheat scripts, then please follow the instructions from your anti-cheat to whitelist these two events:
'xmmx_letscookplus:client:spawnProp' -- client-side
'xmmx_letscookplus:server:PlaceObject' -- server-side
This has been the common issue for those whose props disappear after placing them. Please know how your anti-cheat works, and be sure you include new resources to them to avoid uneccessary issues. βΊοΈ
βοΈCONFIG.LUA
xmmx_letscookplus
is an advanced FiveM cooking and crafting system built for high customization, immersive gameplay, and compatibility with multiple frameworks and inventory/target systems.
β οΈ Important: Do NOT rename this resource β doing so will break its functionality!
First Time Setup
FirstInstall = true
FirstInstall = true
Purpose: Must be
true
on first install and launch of the script. This will auto install the necessary databse tables.After first boot: Set to
false
and leave it that way.
Core Settings
VersionChk
Enables version updates check.
Debug
Enables verbose debug logging. Set false
for production.
Target
Target system: "ox"
, "qb"
, "qt"
, "interact"
.
Distance
Radius for target interaction.
IntDistance
For "interact"
system only.
Inventory
Supported systems: "ox"
, "newQB"
, "oldQB"
, "qs"
, "codem"
, "core"
, "ak47"
.
Images
Path to inventory image assets.
UseConsumables
If true
, crafted food items can be used.
DocumentItem
Name of the printer output item.
Menu Options
Menu
UI type: "ui"
(built-in), "qb"
, "ox"
, or "xm"
(xm_menu).
MenuBlur
Enables screen blur during menu.
ToggleHud
Toggle player HUD while menu is open.
MenuTxt
Header text (optional).
MenuScheme
Primary theme color (hex, RGB, or name).
iconColor
Icon color for menus and target markers.
iconAnims
Animations for ox
target icons.
qbImgSize
Image size for qb-menu
.
Sound Configuration
SoundExport
"xsound"
or "mx"
for audio playback.
MaxVol
Volume cap (for mx-surround
).
Panner
3D sound behavior (HRTF, drop-off, angles, etc.).
MiniGame Configuration
mode
Mini-game mode (e.g., "arrows"
).
amount
Number of steps required.
time
Time limit.
color1
, color2
Visual theme.
Prop Placement System
SaveProps
Save props to DB so they persist across restarts/logins.
UseInstance
Save props in the current routing bucket (useful for apartments that use persistent instances).
PlayerOption
"raycast"
mode is now the only mode used.
PlaceType
No longer used!
CastDist
Max raycast distance.
MoveSpeed
Prop height adjustment speed.
TextUI
"ox"
or "qb"
text UI display.
RayCastKeys
Keybinds for rotating, placing, and canceling prop placement.
Global Props
GlobalProps = {
Stoves = { "prop_pizza_oven_01", "prop_cooker_03" },
Grills = { "prop_bbq_1", "prop_bbq_2" },
...
}
Defines all interactable object hashes used for placement targeting.
Item-Based Placeables
ItemProps
ItemProps
These items can be placed by players (like furniture or appliances). Each entry includes:
label
string
UI label for the item.
name
string
Item name used in inventory.
model
string
World model to spawn.
inside
bool
Whether the item can only be placed indoors.
Example:
{ label = "Stove", name = "lc_stove", model = "prop_cooker_03", inside = false }
Interior Settings
InsideChecks
If true
, enforces "indoors only" placement for specific props.
AllRemove
If true
, any player can remove a prop. If false
, only the placer can.
Visual Feedback
notItem
Prefix shown when a required item is missing (e.g., β).
hasItem
Prefix shown when a required item is present (e.g., βοΈ).
Integration Requirements
Make sure the following dependencies are started:
qb-core
,es_extended
, orqbx_core
xmmx_bridge
(required)Supported inventory system (
ox
,qb
,qs
, etc.)Target system (
ox_target
,qb-target
, etc.)Sound system (
xsound
,mx-surround
)
Final Notes
β Never rename this resource β it will not work if renamed.
π Many features depend on external systems (
xmmx_bridge
,ox_inventory
,ox_target
, etc.).β Fully supports prop persistence, routing buckets, and interactive mini-games.
π§© Highly modular β built to extend or integrate into larger job or crafting systems.
πRECIPES.LUA
Here is a full explanation of the recipes.lua
file found in the configs
folder of the xmmx_letscookplus
script:
Recipe Configuration Guide
This configuration file defines craftable recipes used by xmmx_letscookplus, organized into named menus that correspond to target zone labels (e.g., "Let's Cook!", "Let's Grill!", etc.).
Each menu can contain multiple recipes, each specifying:
An output item
A list of ingredients
An amount produced when crafted
General Behavior
Each menu header (e.g.,
"Let's Cook!"
) corresponds to an in-game crafting station or interaction zone.Each recipe is a key-value pair where:
The key is the item being crafted.
The value is a table of ingredients and their quantities.
A separate
"amount"
field defines how many of the result item are given.
Custom UI Limitation:
Max 5 ingredients per recipe (to avoid layout issues) when using the built in UI.
Displays 5 recipes per row in the built in UI crafting menu.
Menu Structure Example
["Let's Cook!"] = {
{ ["lclemonlobster"] = { ["lclobstertails"] = 1, ["lcbutter"] = 1, ["lclemon"] = 1 }, ["amount"] = 2 },
}
Menu Name:
"Let's Cook!"
Crafts:
lclemonlobster
Ingredients:
lclobstertails
Γ1lcbutter
Γ1lclemon
Γ1
Result:
lclemonlobster
Γ2
Menu Categories Breakdown
π§βπ³ "Let's Cook!"
"Let's Cook!"
Core meals like burgers, gumbo, curries, and seafood.
π "Let's Microwave!"
"Let's Microwave!"
Quick meals made with microwaveable components.
πΉ "Let's Juice!"
"Let's Juice!"
Fruit juices and smoothies.
β "Let's Brew!"
"Let's Brew!"
Coffees, teas, and hot drinks.
π₯ "Let's Grill!"
"Let's Grill!"
Barbecue-style meals: ribs, chicken, steak, etc.
π "Let's Toast!"
"Let's Toast!"
Toaster-friendly foods: toast, waffles, poptarts.
π³ "Let's Fry!"
"Let's Fry!"
Fried items: chicken, fries, cheese sticks.
π "Let's Griddle!"
"Let's Griddle!"
Flat-surface grilled items and stir fry dishes.
π§ "Let's Process!"
"Let's Process!"
Food processed with processors: creams, sauces, and puddings.
π₯ "Let's Moonshine!"
"Let's Moonshine!"
Mash-based distilling and moonshine drinks (advanced crafting).
π₯« "Let's Hobo!"
"Let's Hobo!"
Simple meals with canned food and basic items.
π§ "Let's Craft!"
"Let's Craft!"
Tool/equipment crafting (like advancedlockpick
).
β οΈ You must configure your own usable items and inventory entries for these.
π "Let's Drug!"
"Let's Drug!"
Drug processing recipes (e.g., converting raw coke
to cokebaggy
).
β οΈ Intended for servers with custom drug systems. Configure responsibly.
Advanced Notes
The
"amount"
value can be static or dynamic:["amount"] = math.random(20, 30)
Recipes can be shared across menus (e.g.,
lccheeseburger
in"Let's Grill!"
and"Let's Cook!"
).Ensure item names match those defined in your inventory system.
Adding Custom Recipes
Choose or create a new menu (e.g.,
"Let's Bake!"
)Add new recipe entry:
["Let's Bake!"] = {
{ ["lccookies"] = { ["lcflour"] = 1, ["lcsugar"] = 1, ["lcchocchip"] = 1 }, ["amount"] = 4 },
}
Important Constraints
Each menu name must match the
label
property in your target zones or interaction setup.Do not exceed 5 ingredients per recipe or the UI might break visually depending on screen resolution.
π§SETTINGS.LUA
Hereβs a comprehensive guide for the settings.lua
configuration file found in the configs
folder of the xmmx_letscookplus
script:
Animation & Interaction Configuration
This configuration file controls all animations, progress behavior, minigame usage, visual effects, and prop setup logic used during crafting and cooking interactions.
Each section represents a prop interaction type, such as Grill
, Stove
, Still
, etc., and defines how that prop behaves when used.
General Explanation
Each table entry (e.g., Grill
, Stove
) defines:
Dict
Animation dictionary.
Clip
Animation clip.
Flag
Animation flag (e.g., loop, upper-body only, etc.).
Time
Duration in milliseconds.
Prop
Optional prop to attach during animation (e.g., tool).
Bone
Bone ID to attach prop to (usually 28422
for right hand).
Coord
Vector3 offset for prop position.
Rot
Vector3 rotation for the prop.
Prog
Progress bar label (e.g., "Cooking ").
Move
If true
, disables movement while interacting.
MiniG
Enables minigame during interaction.
Effect
Optional consequence if minigame fails (false
, "Fire"
, "Explode"
, "Shock"
).
Alert
Optional dispatch alert ID to trigger police notification.
Minigame & Effects
MiniG
MiniG
Enables the skill mini-game when set to
true
.Works with interaction types like
Drugs
,Crafting
, etc.
Effect
Options
Effect
Optionsfalse
No effect on failure.
"Fire"
50% chance to damage the player (~20% HP).
"Explode"
30% chance to kill player.
"Shock"
Could be configured to stun (custom effect).
Example: ProgressBar Setup with Optional Prop
Grill = {
Dict = "amb@prop_human_bbq@male@idle_a",
Clip = "idle_b",
Flag = 49,
Time = 5000,
Prop = "prop_fish_slice_01",
Bone = 28422,
Coord = vec3(0.0, 0.0, 0.0),
Rot = vec3(0.0, 0.0, 0.0),
Prog = "Grilling ",
Move = true,
MiniG = false,
Effect = "false",
Alert = false
}
Configuration Sections Breakdown
π¦ PropPlace
/ PropRemove
PropPlace
/ PropRemove
Controls how players place and remove props. Includes animations and optional props.
π§ MiniGameAnim
MiniGameAnim
Defines the idle animation shown when a mini-game is active.
Cooking/Interaction Types
Grill
BBQ style cooking.
Stove
Stove top cooking (includes "Fire"
effect).
Still
Distilling/Moonshine (includes dispatch alert).
Microwave
Quick heating (includes "Shock"
effect).
Juicer
Makes juices and smoothies.
Brewer
Coffee/tea preparation.
Toaster
Toasts bread-type items.
Fryer
Deep frying (with "Fire"
effect).
Griddle
Surface cooking with flat pans.
Processor
Processes raw food into sauces/creams/etc.
HoboStove
Simple outdoor cooking with risk of fire.
Crafting
Used for tools/crafting benches (dispatch alert = 3).
Drugs
Drug mixing (minigame enabled, fire effect, alert = 2).
GroceryBag
Unpacks groceries β cosmetic only.
Dispatch Alerts (Optional)
Each section can optionally trigger a police dispatch alert by setting the Alert
value to a numeric identifier. You must configure this behavior in:
configs/functions.lua
Set Alert = false
to disable dispatch for that interaction.
Tips for Customization
To add a new interaction type:
Copy any existing section (e.g.,
Grill
).Rename it and adjust the animation, prop, and label.
Set
MiniG = true
andEffect = "Explode"
for high-risk crafting.Leave
Prop
,Bone
,Coord
, andRot
asnil
if no prop is used.
Summary
This file gives you full control over how each crafting or cooking type looks and feels in-game, down to:
Animation
Props
Risk effects
Progress behavior
Optional minigames
πSHOPS.LUA
Hereβs a full breakdown of the shops.lua
configuration file in the configs
folder for xmmx_letscookplus
.
Shop System Configuration
This configuration handles the in-game shop(s) where players can buy ingredients, appliances, tools, and crafting items for use with the cooking system. It supports multiple shop locations, NPC vendors, categorized menus, and optional blips.
Global Toggle
Enabled = true
Enables or disables the entire shop system.
Shop NPCs (Peds
)
Peds
)Peds = {
{ model = "mp_m_waremech_01", scenario = "WORLD_HUMAN_LEANING", coords = vector3(...), heading = ..., blip = true },
}
Each entry defines:
model
Ped model used as the shopkeeper.
scenario
Animation or behavior (e.g., WORLD_HUMAN_LEANING
).
coords
Location of the NPC.
heading
NPC facing direction.
blip
Enables/disables map blip for this location.
β Multiple shopkeepers at different locations are supported.
Map Blips (Blips
)
Blips
)Blips = {
Enabled = true,
Label = "Let's Cook! Shop",
Sprite = 59,
Display = 6,
Scale = 0.6,
Color = 47,
}
Enabled
Enables/disables map blips globally.
Label
Name shown on the map.
Sprite
Blip icon (e.g., 59 = food icon).
Display
HUD style (6 = always visible).
Scale
Blip size.
Color
Blip color (e.g., 47 = dark green).
Grocery Bags
GroceryAmt = math.random(1, 5)
When a player uses a grocery bag item, this determines how many of each item is randomly granted from its contents.
Categories
Items are grouped into specific categories to organize the in-game shop UI. These must not be renamed:
"General", "Fruit", "Dairy", "Produce", "Meats",
"Grocery", "Electronics", "Appliance", "Furniture", "Materials"
They appear in this exact order in the UI.
Items List
Each item entry follows this format:
{ name = 'itemname', cost = 5, category = 'General' }
name
Item name (must match your inventory system).
cost
Price in dollars.
category
One of the predefined categories.
π§ Item images must exist in:
html/build/images/
(for UI icons)
π Item Types Overview
π¦ General
Microwavables, base condiments, water, sugar, tea bags, etc.
π Fruit
All kinds of fruits and berries (for juices, baking, etc.).
π₯ Dairy
Milk, butter, cheese, pudding, etc.
π₯¬ Produce
Vegetables, canned goods, rice.
π₯© Meats
Raw proteins for grilling, frying, and gourmet dishes.
ποΈ Grocery
Pre-packed grocery bag items (grocerya
, groceryb
, etc.).
π₯οΈ Electronics
Appliances that can be placed in the world.
π§ Appliance
Craftable devices like grill, juicer, toaster, etc.
ποΈ Furniture
Larger props like tables, stills, benches, and seating.
π§° Materials
Used for crafting and processing (e.g., baking_soda
, shinekit
).
Add New Items
To add a new shop item:
Make sure the item is defined in your inventory.
Add an icon image to
html/build/images/
.Add an entry like:
{ name = 'lcchocolatebar', cost = 3, category = 'General' }
Summary
The shop system is fully customizable and supports:
Multiple shops across the map
Smart categorization for UI clarity
Appliance and material sales
Grocery bag support with randomization
Last updated