🍲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

  • 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

Option
Description

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.

Option
Description

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

Option
Description

SoundExport

"xsound" or "mx" for audio playback.

MaxVol

Volume cap (for mx-surround).

Panner

3D sound behavior (HRTF, drop-off, angles, etc.).

MiniGame Configuration

Option
Description

mode

Mini-game mode (e.g., "arrows").

amount

Number of steps required.

time

Time limit.

color1, color2

Visual theme.

Prop Placement System

Option
Description

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

These items can be placed by players (like furniture or appliances). Each entry includes:

Field
Type
Description

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

Option
Description

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

Option
Description

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, or qbx_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.

["Let's Cook!"] = {
  { ["lclemonlobster"] = { ["lclobstertails"] = 1, ["lcbutter"] = 1, ["lclemon"] = 1 }, ["amount"] = 2 },
}
  • Menu Name: "Let's Cook!"

  • Crafts: lclemonlobster

  • Ingredients:

    • lclobstertails Γ—1

    • lcbutter Γ—1

    • lclemon Γ—1

  • Result: lclemonlobster Γ—2

πŸ§‘β€πŸ³ "Let's Cook!"

Core meals like burgers, gumbo, curries, and seafood.

πŸ” "Let's Microwave!"

Quick meals made with microwaveable components.

🍹 "Let's Juice!"

Fruit juices and smoothies.

β˜• "Let's Brew!"

Coffees, teas, and hot drinks.

πŸ”₯ "Let's Grill!"

Barbecue-style meals: ribs, chicken, steak, etc.

🍞 "Let's Toast!"

Toaster-friendly foods: toast, waffles, poptarts.

🍳 "Let's Fry!"

Fried items: chicken, fries, cheese sticks.

πŸ– "Let's Griddle!"

Flat-surface grilled items and stir fry dishes.

πŸ§‚ "Let's Process!"

Food processed with processors: creams, sauces, and puddings.

πŸ₯ƒ "Let's Moonshine!"

Mash-based distilling and moonshine drinks (advanced crafting).

πŸ₯« "Let's Hobo!"

Simple meals with canned food and basic items.

πŸ”§ "Let's Craft!"

Tool/equipment crafting (like advancedlockpick).

⚠️ You must configure your own usable items and inventory entries for these.

πŸ’Š "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

  1. Choose or create a new menu (e.g., "Let's Bake!")

  2. 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:

Property
Description

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

  • Enables the skill mini-game when set to true.

  • Works with interaction types like Drugs, Crafting, etc.

Effect Options

Value
Behavior

false

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

Controls how players place and remove props. Includes animations and optional props.

🧍 MiniGameAnim

Defines the idle animation shown when a mini-game is active.

Cooking/Interaction Types

Type
Description

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 and Effect = "Explode" for high-risk crafting.

  • Leave Prop, Bone, Coord, and Rot as nil 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 = {
  { model = "mp_m_waremech_01", scenario = "WORLD_HUMAN_LEANING", coords = vector3(...), heading = ..., blip = true },
}

Each entry defines:

Key
Description

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 = {
  Enabled = true,
  Label   = "Let's Cook! Shop",
  Sprite  = 59,
  Display = 6,
  Scale   = 0.6,
  Color   = 47,
}
Key
Description

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' }
Field
Description

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:

  1. Make sure the item is defined in your inventory.

  2. Add an icon image to html/build/images/.

  3. 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