> For the complete documentation index, see [llms.txt](https://xmmx-development.gitbook.io/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://xmmx-development.gitbook.io/documentation/product-guides/lets-camp-plus.md).

# Let's Camp! Plus

<figure><img src="/files/Li4OQqZHN90wQVplumkw" alt=""><figcaption></figcaption></figure>

> ⚠️ **Do not rename the resource folder.** The script will not function if renamed.

## 📖REQUIREMENTS:

Before installing, ensure you have:

* A working **FiveM server**
* An **item system** (like `ox_inventory`, `qb-core`, or equivalent)
* A **targeting system** (e.g. `ox_target`)
* Bridge Resource: `xmmx_bridge`
* Minigames: `xmmx_keysgame` and `xmmx_circlesgame` (Included)
* Mrs. BzZz Survival Props ([Paid](https://bzzz.tebex.io/package/6248456))&#x20;
* Mrs. BzZz Lumberjack Props ([Free](https://bzzz.tebex.io/package/5741954))
* Mrs. BzZz Military Canteen ([Free](https://bzzz.tebex.io/package/6566277))

## 🛠️INSTALLATION:

•  Copy the images from the .INSTALL/images folder into your inventory images folder.\
•  Copy the items into your inventory or framework items table:&#x20;

{% tabs %}
{% tab title="ox\_inventory" %}
Copy to `ox_inventory/data/items.lua`:

```lua
    -- INGREDIENTS:
	["lcmarshmellow"] = {
		label = "Marshmellows",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Ingredient.",
		client = {
			image = "lcmarshmellow.png",
		}
	},
	["lcchocolate"] = {
		label = "Chocolate Bar",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Ingredient.",
		client = {
			image = "lcchocolate.png",
		}
	},
	["lcgramcrkrs"] = {
		label = "Graham Crackers",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Ingredient.",
		client = {
			image = "lcgramcrkrs.png",
		}
	},
	["lccampmeat"] = {
		label = "Raw Beef",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Ingredient.",
		client = {
			image = "lccampmeat.png",
		}
	},
	["lccampherbs"] = {
		label = "Wild Herbs",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Ingredient.",
		client = {
			image = "lccampherbs.png",
		}
	},
	["lccampbeans"] = {
		label = "Canned Beans",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Ingredient.",
		client = {
			image = "lccampbeans.png",
		}
	},
	["lccampcorn"] = {
		label = "Ear Corn",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Ingredient.",
		client = {
			image = "lccampcorn.png",
		}
	},
	["lccamppotato"] = {
		label = "Potato",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Ingredient.",
		client = {
			image = "lccamppotato.png",
		}
	},
	["lccampbutta"] = {
		label = "Butter",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Ingredient.",
		client = {
			image = "lccampbutta.png",
		}
	},
	["lccampfish"] = {
		label = "Fresh Fish",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Ingredient.",
		client = {
			image = "lccampfish.png",
		}
	},
	["lccampveggies"] = {
		label = "Jar Veggies",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Jar Veggies.",
		client = {
			image = "lccampveggies.png",
		}
	},
	["lccoffeebeans"] = {
		label = "Coffee Beans",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Coffee Beans.",
		client = {
			image = "lccoffeebeans.png",
		}
	},
	["lccampsoap"] = {
		label = "Critter Soap",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Critter Soap.",
		client = {
			image = "lccampsoap.png",
		}
	},
    -- CAMP EAT/DRINK ITEMS:
	["lccookedsmores"] = {
		label = "Smores",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! S'mores",
		client = {
			image = "lccookedsmores.png",
		}
	},
	["lccookedsteak"] = {
		label = "Cooked Steak",
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Cooked Steak",
		client = {
			image = "lccookedsteak.png",
		}
	},
	["lccookedbeans"] = {
		label = "Cooked Beans",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Cooked Beans",
		client = {
			image = "lccookedbeans.png",
		}
	},
	["lccookedcorn"] = {
		label = "Cooked Corn",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Cooked Corn on the Cob",
		client = {
			image = "lccookedcorn.png",
		}
	},
	["lccookedfish"] = {
		label = "Cooked Fish",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Cooked Fished",
		client = {
			image = "lccookedfish.png",
		}
	},
	["lccookedpotato"] = {
		label = "Cooked Taters",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Cooked Taters",
		client = {
			image = "lccookedpotato.png",
		}
	},
	["lcherbtea"] = {
		label = "Herbal Tea",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Herbal Tea",
		client = {
			image = "lcherbtea.png",
		}
	},
	["lcfullcanteen"] = {
		label = "Full Canteen",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Full Canteen",
		client = {
			image = "lcfullcanteen.png",
		}
	},
	["lcemptycanteen"] = {
		label = "Empty Canteen",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Empty Canteen",
		client = {
			image = "lcemptycanteen.png",
		}
	},
	["lccampcoffee"] = {
		label = "Coffee",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Cup of Coffee",
		client = {
			image = "lccampcoffee.png",
		}
	},
	["lccookedstew"] = {
		label = "Cooked Stew",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Cooked Stew",
		client = {
			image = "lccookedstew.png",
		}
	},
	["lccookedsoup"] = {
		label = "Veggie Soup",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Veggie Soup",
		client = {
			image = "lccookedsoup.png",
		}
	}, 
	["lcfishnchips"] = {
		label = "Fish n Chips",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Fish n Chips",
		client = {
			image = "lcfishnchips.png",
		}
	},
	["lcsteakveggies"] = {
		label = "Steak n Veggies",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Steak n Veggies",
		client = {
			image = "lcsteakveggies.png",
		}
	},
	["lcmeatpotato"] = {
		label = "Meat n Potato",
		weight = 80,
		stack = true,
		close = true,
		description = "Lets Camp! Meat n Potato",
		client = {
			image = "lcmeatpotato.png",
		}
	},

    -- CAMP PROPS:
	['lc_campcookpot'] = { 
		label = 'Camp Pot', 		  
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Camp Pot",
		client = {
			image = "lc_campcookpot.png",
		} 
	},
	["lc_campaxe"] = {
		label = "Camp Axe",
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Axe",
		client = {
			image = "lc_campaxe.png",
		}
	},

	-- TENTS:
	["lc_camptent_a"] = {
		label = "Large Tent",
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Large Tent",
		client = {
			image = "lc_camptent_a.png",
		}
	},
    ['lc_camptent_b'] = { 
		label = 'Small Tent', 		  
		weight = 200, 
		stack = true,
		close = true,
		description = "Lets Camp! Small Tent",
		client = {
			image = "lc_camptent_b.png",
		}
	},
    ['lc_camptent_c'] = { 
		label = 'Open Tent A', 		  
		weight = 200, 
		stack = true,
		close = true,
		description = "Lets Camp! Open Tent A",
		client = {
			image = "lc_camptent_c.png",
		}
	},
    ['lc_camptent_d'] = { 
		label = 'Open Tent B', 		  
		weight = 200, 
		stack = true,
		close = true,
		description = "Lets Camp! Open Tent B",
		client = {
			image = "lc_camptent_d.png",
		}
	},
    ['lc_camptent_e'] = { 
		label = 'Medic Tent', 		  
		weight = 200, 
		stack = true,
		close = true,
		description = "Lets Camp! Medic Tent",
		client = {
			image = "lc_camptent_e.png",
		}
	},

	-- BEDS:
	["lc_campbed_a"] = {
		label = "Camp Bed",
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Bed",
		client = {
			image = "lc_campbed_a.png",
		}
	},
	["lc_campbed_b"] = {
		label = "Camp Survival Bed",
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Survival Bed",
		client = {
			image = "lc_campbed_b.png",
		}
	},
	["lc_campbed_c"] = {
		label = "Camp Sleeping Bag",
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Sleeping Bag",
		client = {
			image = "lc_campbed_c.png",
		}
	},

	-- APPLIANCE:
	["lc_campcooler"] = {
		label = "Camp Cooler",
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Cooler",
		client = {
			image = "lc_campcooler.png",
		}
	},
	["lc_campgrill"] = {
		label = "Camp Grill",
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Grill",
		client = {
			image = "lc_campgrill.png",
		}
	},

	-- FIRES:
	["lc_campfire_a"] = {
		label = "Camp Fire A",
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Fire A",
		client = {
			image = "lc_campfire_a.png",
		}
	},
	["lc_campfire_b"] = {
		label = "Camp Fire B",
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Fire B",
		client = {
			image = "lc_campfire_b.png",
		}
	},
	["lc_campfire_c"] = {
		label = "Camp Fire C",
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Fire C",
		client = {
			image = "lc_campfire_c.png",
		}
	},

	-- TABLES:
    ['lc_camppicnic'] = { 
		label = 'Camp Picnic Table', 	  
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Log",
		client = {
			image = "lc_camppicnic.png",
		}  
	},
	["lc_camptable_a"] = {
		label = "Camp Table A",
		weight = 200,
		stack = false,
		close = true,
		description = "Lets Camp! Table A",
		client = {
			image = "lc_camptable_a.png",
		}
	},
    ['lc_campworktable'] = { 
		label = 'Camp Work Table', 	  
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Crafting Table",
		client = {
			image = "lc_campworktable.png",
		}  
	},
	-- CHAIRS:
	["lc_campchair_a"] = {
		label = "Camp Chair A",
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Chair A",
		client = {
			image = "lc_campchair_a.png",
		}
	},
	["lc_campchair_b"] = {
		label = "Camp Chair B",
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Chair B",
		client = {
			image = "lc_campchair_b.png",
		}
	},
	["lc_campchair_c"] = {
		label = "Camp Chair C",
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Chair C",
		client = {
			image = "lc_campchair_c.png",
		}
	},
	["lc_campchair_d"] = {
		label = "Camp Chair D",
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Chair D",
		client = {
			image = "lc_campchair_d.png",
		}
	},
	["lc_campchair_e"] = {
		label = "Camp Chair E",
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Chair E",
		client = {
			image = "lc_campchair_e.png",
		}
	},
    ['lc_campfence'] = { 
		label = 'Camp Wood Fence', 		  
		weight = 200, 
		stack = true,
		close = true,
		description = "Lets Camp! Wood Fence",
		client = {
			image = "lc_campfence.png",
		} 
	},
    ['lc_campfence_a'] = { 
		label = 'Camp Fence A', 		  
		weight = 200, 
		stack = true,
		close = true,
		description = "Lets Camp! Fence A",
		client = {
			image = "lc_campfence_a.png",
		} 
	},
    ['lc_campfence_b'] = { 
		label = 'Camp Fence B', 		  
		weight = 200, 
		stack = true,
		close = true,
		description = "Lets Camp! Fence B",
		client = {
			image = "lc_campfence_b.png",
		} 
	},
    ['lc_campfence_c'] = { 
		label = 'Camp Fence C', 		  
		weight = 200, 
		stack = true,
		close = true,
		description = "Lets Camp! Fence C",
		client = {
			image = "lc_campfence_c.png",
		} 
	},
    ['lc_campfence_d'] = { 
		label = 'Camp Fence D', 		  
		weight = 200, 
		stack = true,
		close = true,
		description = "Lets Camp! Fence D",
		client = {
			image = "lc_campfence_d.png",
		} 
	},
    ['lc_campdoor_a'] = { 
		label = 'Camp Door Fence', 		  
		weight = 200, 
		stack = true,
		close = true,
		description = "Lets Camp! Door Fence",
		client = {
			image = "lc_campdoor_a.png",
		} 
	},
    -- MATERIALS:
    ['lcburlapscrap'] = { 
		label = 'Camp Burlap Scraps', 	  
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Burlap Scraps",
		client = {
			image = "lcburlapscrap.png",
		}  
	},
	['lcnylonrope'] = { 
		label = 'Camp Nylon Rope', 	  
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Nylon Rope",
		client = {
			image = "lcnylonrope.png",
		}  
	},
	['lcferrorrod'] = { 
		label = 'Camp Ferro Rod', 	  
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Ferro Rod",
		client = {
			image = "lcferrorrod.png",
		}  
	},
	['lccampstones'] = { 
		label = 'Camp Stones', 	  
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Stones",
		client = {
			image = "lccampstones.png",
		}  
	},
    -- LIGHTS:
    ['lc_camplight_a'] = { 
		label = 'Camp Light', 	  
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Light",
		client = {
			image = "lc_camplight_a.png",
		}  
	},
    ['lc_camplight_b'] = { 
		label = 'Camp Work Light', 	  
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Work Light",
		client = {
			image = "lc_camplight_b.png",
		}  
	},
    -- LUMBER PROPS:
    ['lc_camplog_a'] = { 
		label = 'Camp Log A', 		  
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Log A",
		client = {
			image = "lc_camplog_a.png",
		} 
	},
    ['lc_campwood_a'] = { 
		label = 'Camp Wood A', 		  
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Wood A",
		client = {
			image = "lc_campwood_a.png",
		} 
	},
    ['lc_camplog_b'] = { 
		label = 'Camp Log B', 		  
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Log B",
		client = {
			image = "lc_camplog_b.png",
		} 
	},
    ['lc_campwood_b'] = { 
		label = 'Camp Wood B', 		  
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Wood B",
		client = {
			image = "lc_campwood_b.png",
		} 
	},
    ['lc_camplog_c'] = { 
		label = 'Camp Log C', 		  
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Log C",
		client = {
			image = "lc_camplog_c.png",
		} 
	},
    ['lc_campwood_c'] = { 
		label = 'Camp Wood C', 		  
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Wood C",
		client = {
			image = "lc_campwood_c.png",
		} 
	},
    ['lc_campsign_a'] = { 
		label = 'Camp Sign A', 		  
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Camp Sign A",
		client = {
			image = "lc_campsign_a.png",
		} 
	},
	['lc_campsign_b'] = { 
		label = 'Camp Sign B', 		  
		weight = 200,
		stack = true,
		close = true,
		description = "Lets Camp! Camp Sign B",
		client = {
			image = "lc_campsign_b.png",
		} 
	},
```

{% endtab %}

{% tab title="qb-core" %}
Copy to `qb-core/shared/items.lua`:

```lua
    -- INGREDIENTS:   
    lcmarshmellow 		= { name = "lcmarshmellow",    label = "Marshmellows", 	  weight = 100, 	type = "item", 	image = "lcmarshmellow.png",  unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Ingredient."},
    lcchocolate 		= { name = "lcchocolate",      label = "Chocolate", 	  weight = 100, 	type = "item", 	image = "lcchocolate.png", 	  unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Ingredient."},
    lcgramcrkrs 		= { name = "lcgramcrkrs",      label = "Graham Crackers", weight = 100, 	type = "item", 	image = "lcgramcrkrs.png", 	  unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Ingredient."},
    lccampmeat 			= { name = "lccampmeat",       label = "Raw Beef", 	      weight = 100, 	type = "item", 	image = "lccampmeat.png", 	  unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Ingredient."},
    lccampherbs 		= { name = "lccampherbs",      label = "Wild Herbs", 	  weight = 100, 	type = "item", 	image = "lccampherbs.png", 	  unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Ingredient."},
    lccampbeans 		= { name = "lccampbeans",      label = "Canned Beans", 	  weight = 100, 	type = "item", 	image = "lccampbeans.png", 	  unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Ingredient."},
    lccampcorn 			= { name = "lccampcorn",       label = "Corn", 	          weight = 100, 	type = "item", 	image = "lccampcorn.png", 	  unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Ingredient."},
    lccamppotato 		= { name = "lccamppotato",     label = "Potato", 	      weight = 100, 	type = "item", 	image = "lccamppotato.png",   unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Ingredient."},
    lccampbutta 		= { name = "lccampbutta",      label = "Butter", 	      weight = 100, 	type = "item", 	image = "lccampbutta.png", 	  unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Ingredient."},
    lccampfish 			= { name = "lccampfish",       label = "Fresh Fish", 	  weight = 100, 	type = "item", 	image = "lccampfish.png", 	  unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Ingredient."},
    lccampveggies 		= { name = "lccampveggies",    label = "Jar Veggies", 	  weight = 100, 	type = "item", 	image = "lccampveggies.png",  unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Ingredient."},
    lccoffeebeans 		= { name = "lccoffeebeans",    label = "Coffee Beans", 	  weight = 100, 	type = "item", 	image = "lccoffeebeans.png",  unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Ingredient."},
    lccampsoap 			= { name = "lccampsoap",       label = "Critter Soap", 	  weight = 100, 	type = "item", 	image = "lccampsoap.png", 	  unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Ingredient."},

    -- CAMP EAT/DRINK ITEMS:
    lccookedsmores 			= { name = "lccookedsmores",   label = "Smores", 	      weight = 100, 	type = "item", 	image = "lccookedsmores.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! S'mores."},
    lccookedsteak 			= { name = "lccookedsteak",    label = "Cooked Steak", 	  weight = 100, 	type = "item", 	image = "lccookedsteak.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Cooked Steak."},
    lccookedbeans 			= { name = "lccookedbeans",    label = "Cooked Beans", 	  weight = 100, 	type = "item", 	image = "lccookedbeans.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Cooked Beans."},
    lccookedcorn 			= { name = "lccookedcorn",     label = "Cooked Corn", 	  weight = 100, 	type = "item", 	image = "lccookedcorn.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Cooked Corn on the Cob."},
    lccookedfish 			= { name = "lccookedfish",     label = "Cooked Fish", 	  weight = 100, 	type = "item", 	image = "lccookedfish.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Cooked Fished."},
    lccookedpotato 			= { name = "lccookedpotato",   label = "Cooked Taters",   weight = 100, 	type = "item", 	image = "lccookedpotato.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Cooked Taters."},
    lcherbtea 				= { name = "lcherbtea",        label = "Herbal Tea", 	  weight = 100, 	type = "item", 	image = "lcherbtea.png", 	    unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Herbal Tea."},
    lcfullcanteen 			= { name = "lcfullcanteen",    label = "Full Canteen", 	  weight = 100, 	type = "item", 	image = "lcfullcanteen.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Full Canteen."},
    lcemptycanteen 			= { name = "lcemptycanteen",   label = "Empty Canteen",   weight = 100, 	type = "item", 	image = "lcemptycanteen.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Empty Canteen."},
    lccampcoffee 			= { name = "lccampcoffee",     label = "Coffee", 	  	  weight = 100, 	type = "item", 	image = "lccampcoffee.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Cup of Coffee."},
    lccookedstew 			= { name = "lccookedstew",     label = "Cooked Stew", 	  weight = 100, 	type = "item", 	image = "lccookedstew.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Cooked Stew."},
    lccookedsoup 			= { name = "lccookedsoup",     label = "Veggie Soup", 	  weight = 100, 	type = "item", 	image = "lccookedsoup.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Veggie Soup."},
    lcfishnchips 			= { name = "lcfishnchips",     label = "Fish n Chips", 	  weight = 100, 	type = "item", 	image = "lcfishnchips.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Fish n Chips."},
    lcsteakveggies 			= { name = "lcsteakveggies",   label = "Steak n Veggies", weight = 100, 	type = "item", 	image = "lcsteakveggies.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Steak n Veggies."},
    lcmeatpotato 			= { name = "lcmeatpotato",     label = "Meat n Potato",   weight = 100, 	type = "item", 	image = "lcmeatpotato.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Meat n Potato."},

    -- CAMP PROPS:
    lc_campcookpot 			= { name = "lc_campcookpot",   label = "Camp Pot",        weight = 200, 	type = "item", 	image = "lc_campcookpot.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Camp Pot."},
    lc_campaxe 				= { name = "lc_campaxe",       label = "Axe",             weight = 200, 	type = "item", 	image = "lc_campaxe.png", 	    unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Axe."},
 
	-- TENTS:
	lc_camptent_a 			= { name = "lc_camptent_a",     label = "Large Tent",   weight = 200, 	type = "item", 	image = "lc_camptent_a.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Large Tent."},
    lc_camptent_b 			= { name = "lc_camptent_b",     label = "Small Tent",   weight = 200, 	type = "item", 	image = "lc_camptent_b.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Small Tent."},
    lc_camptent_c 			= { name = "lc_camptent_c",     label = "Open Tent A",  weight = 200, 	type = "item", 	image = "lc_camptent_c.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Open Tent A."},
    lc_camptent_d 			= { name = "lc_camptent_d",     label = "Open Tent B",  weight = 200, 	type = "item", 	image = "lc_camptent_d.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Open Tent B."},
    lc_camptent_e 			= { name = "lc_camptent_e",     label = "Medical Tent", weight = 200, 	type = "item", 	image = "lc_camptent_e.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Medical Tent."},

	-- BEDS:
    lc_campbed_a 			= { name = "lc_campbed_a",     label = "Camp Bed", 		weight = 200, 	type = "item", 	image = "lc_campbed_a.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Camp Bed."},
    lc_campbed_b 			= { name = "lc_campbed_b",     label = "Survival Bed",  weight = 200, 	type = "item", 	image = "lc_campbed_b.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Survival Bed."},
    lc_campbed_c 			= { name = "lc_campbed_c",     label = "Sleeping Bag",  weight = 200, 	type = "item", 	image = "lc_campbed_c.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Sleeping Bag."},

	-- ALLIANCE:
	lc_campcooler 			= { name = "lc_campcooler",     label = "Camp Cooler",  weight = 200, 	type = "item", 	image = "lc_campcooler.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Camp Cooler."},
    lc_campgrill 			= { name = "lc_campgrill",      label = "Camp Grill",   weight = 200, 	type = "item", 	image = "lc_campgrill.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Camp Grill."},

	-- FIRES:
    lc_campfire_a 			= { name = "lc_campfire_a",      label = "Camp Fire A",   weight = 200, 	type = "item", 	image = "lc_campfire_a.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Camp Fire A."},
    lc_campfire_b 			= { name = "lc_campfire_b",      label = "Camp Fire B",   weight = 200, 	type = "item", 	image = "lc_campfire_b.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Camp Fire B."},
    lc_campfire_c 			= { name = "lc_campfire_c",      label = "Camp Fire C",   weight = 200, 	type = "item", 	image = "lc_campfire_c.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Camp Fire C."},

	-- TABLES:
    lc_camppicnic 			= { name = "lc_camppicnic",      label = "Camp Picnic Table",   weight = 200, 	type = "item", 	image = "lc_camppicnic.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Camp Picnic Table."},
    lc_camptable_a 			= { name = "lc_camptable_a",     label = "Camp Table A",        weight = 200, 	type = "item", 	image = "lc_camptable_a.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Camp Table A."},
	lc_campworktable		= { name = "lc_campworktable",   label = "Camp Work Table",     weight = 200, 	type = "item", 	image = "lc_campworktable.png", unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Work Table."},

	-- CHAIRS:
	lc_campchair_a 			= { name = "lc_campchair_a",     label = "Camp Chair A",        weight = 200, 	type = "item", 	image = "lc_campchair_a.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Chair A."},
    lc_campchair_b 			= { name = "lc_campchair_b",     label = "Camp Chair B",        weight = 200, 	type = "item", 	image = "lc_campchair_b.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Chair B."},
    lc_campchair_c 			= { name = "lc_campchair_c",     label = "Camp Chair C",        weight = 200, 	type = "item", 	image = "lc_campchair_c.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Chair C."},
    lc_campchair_d 			= { name = "lc_campchair_d",     label = "Camp Chair D",        weight = 200, 	type = "item", 	image = "lc_campchair_d.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Chair D."},
    lc_campchair_e 			= { name = "lc_campchair_e",     label = "Camp Chair E",        weight = 200, 	type = "item", 	image = "lc_campchair_e.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Chair E."},

	-- FENCING:
    lc_campfence 			= { name = "lc_campfence",       label = "Camp Fence",          weight = 200, 	type = "item", 	image = "lc_campfence.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Fence."},
    lc_campfence_a 			= { name = "lc_campfence_a",     label = "Camp Fence A",        weight = 200, 	type = "item", 	image = "lc_campfence_a.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Fence A."},
    lc_campfence_b 			= { name = "lc_campfence_b",     label = "Camp Fence B",        weight = 200, 	type = "item", 	image = "lc_campfence_b.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Fence B."},
    lc_campfence_c 			= { name = "lc_campfence_c",     label = "Camp Fence C",        weight = 200, 	type = "item", 	image = "lc_campfence_c.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Fence C."},
    lc_campfence_d 			= { name = "lc_campfence_d",     label = "Camp Fence D",        weight = 200, 	type = "item", 	image = "lc_campfence_d.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Fence D."},
    lc_campdoor_a 			= { name = "lc_campdoor_a",      label = "Camp Fence Door",     weight = 200, 	type = "item", 	image = "lc_campdoor_a.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Fence Door."},

	-- MATERIALS:
    lcburlapscrap 			= { name = "lcburlapscrap",      label = "Camp Scrap Burlap",   weight = 200, 	type = "item", 	image = "lcburlapscrap.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Scrap Burlap."},
    lcnylonrope 			= { name = "lcnylonrope",        label = "Camp Nylon Rope",     weight = 200, 	type = "item", 	image = "lcnylonrope.png", 	    unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Nylon Rope."},
    lcferrorrod 			= { name = "lcferrorrod",        label = "Camp Ferro Rod",      weight = 200, 	type = "item", 	image = "lcferrorrod.png", 	    unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Ferro Rod."},
    lccampstones 			= { name = "lccampstones",       label = "Camp Stones",         weight = 200, 	type = "item", 	image = "lccampstones.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Stones."},
    lc_camplight_a 			= { name = "lc_camplight_a",     label = "Camp Light",          weight = 200, 	type = "item", 	image = "lc_camplight_a.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Light."},
    lc_camplight_b 			= { name = "lc_camplight_b",     label = "Camp Work Light",     weight = 200, 	type = "item", 	image = "lc_camplight_b.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Work Light."},

	-- LUMBER PROPS:
	lc_camplog_a 			= { name = "lc_camplog_a",      label = "Camp ",         weight = 200, 	type = "item", 	image = "lc_camplog_a.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Log A."},
	lc_campwood_a 			= { name = "lc_campwood_a",     label = "Camp ",         weight = 200, 	type = "item", 	image = "lc_campwood_a.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Wood A."},
	lc_camplog_b 			= { name = "lc_camplog_b",      label = "Camp ",         weight = 200, 	type = "item", 	image = "lc_camplog_b.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Log B."},
	lc_campwood_b 			= { name = "lc_campwood_b",     label = "Camp Wood B",   weight = 200, 	type = "item", 	image = "lc_campwood_b.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Wood B."},
	lc_camplog_c 			= { name = "lc_camplog_c",      label = "Camp Log C",    weight = 200, 	type = "item", 	image = "lc_camplog_c.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Log C."},
	lc_campwood_c 			= { name = "lc_campwood_c",     label = "Camp Wood C",   weight = 200, 	type = "item", 	image = "lc_campwood_c.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Wood C."},
	lc_campsign_a 			= { name = "lc_campsign_a",     label = "Camp Sign A",   weight = 200, 	type = "item", 	image = "lc_campsign_a.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Sign A."},
	lc_campsign_b 			= { name = "lc_campsign_b",     label = "Camp Sign B",   weight = 200, 	type = "item", 	image = "lc_campsign_b.png", 	unique = false, 	useable = false, 	shouldClose = true,    combinable = nil,   description = "Lets Camp! Sign B."},
    
```

{% endtab %}
{% endtabs %}

| Name           | Description                                                  |
| -------------- | ------------------------------------------------------------ |
| `FirstInstall` | Must be `true` on first script start to set up the database. |
| `Version`      | Enable version checking (recommended to keep up to date).    |
| `Debug`        | Enable debug output. Disable before going live.              |

***

### Inventory & Consumables

| Name             | Description                                                                  |
| ---------------- | ---------------------------------------------------------------------------- |
| `Images`         | Path to inventory images (for example: `ox_inventory/web/images/`).          |
| `UseConsumables` | Enables crafted food/drinks to be useable. Set to `false` if using your own. |

***

### Menu Configuration

| Name         | Description                                                            |
| ------------ | ---------------------------------------------------------------------- |
| `Menu`       | Choose the menu style: `xm`, `ui`, `qb`, or `ox`.                      |
| `MenuBlur`   | Enables screen blur while the crafting menu is open.                   |
| `ToggleHud`  | Hides HUD when menu is open.                                           |
| `MenuTxt`    | Optional description text for xm\_menu. Leave as empty string to skip. |
| `MenuScheme` | Menu color scheme (supports hex, rgb, or named colors).                |
| `iconColor`  | Icon color for menus and targets.                                      |
| `iconAnims`  | List of possible icon animations (used by `ox` menu).                  |
| `qbImgSize`  | Image size in `qb-menu` (default is 100).                              |
| `notItem`    | Icon for missing ingredients (e.g. ❌). Use `""` for none.              |
| `hasItem`    | Icon for ingredients present (e.g. ✔️). Use `""` for none.             |

***

### Prop Placement Settings

| Name              | Description                                                   |
| ----------------- | ------------------------------------------------------------- |
| `PersistentProps` | Saves props to database across restarts/logins.               |
| `UseInstance`     | Saves props to routing buckets (good for interiors).          |
| `CastDist`        | How far in front to raycast for placement.                    |
| `MoveSpeed`       | Speed for vertical prop movement. (Range: 0.005 - 0.05)       |
| `MaxHeight`       | Prevents props being placed too high.                         |
| `TextUI`          | Choose text UI type: `ox` or `qb` (must match `xmmx_bridge`). |

***

### Placement Controls (`RayCastKeys`)

| Action            | Key Code | Description        |
| ----------------- | -------- | ------------------ |
| `rotateLeft`      | 14       | Scroll Wheel Down  |
| `rotateRight`     | 15       | Scroll Wheel Up    |
| `rotatePitchUp`   | 68       | Right Mouse Button |
| `rotatePitchDown` | 69       | Left Mouse Button  |
| `rotateRollLeft`  | 174      | Arrow Left         |
| `rotateRollRight` | 175      | Arrow Right        |
| `SnapGrnd`        | 19       | Left ALT           |
| `heightUp`        | 172      | Arrow Up           |
| `heightDown`      | 173      | Arrow Down         |
| `cancel`          | 202      | Backspace          |
| `place`           | 215      | Enter              |

***

### Progress Bar & Animations

| Setting       | Description                                              |
| ------------- | -------------------------------------------------------- |
| `UseProgress` | Show a progress bar and animation for placement/removal. |
| `AllRemove`   | Allow everyone to remove props, or just the placer.      |
| `AlertRemove` | Notify players when a prop is removed.                   |

**Placement Animation**

```lua
PropPlace = {
  Dict  = "mp_arresting",
  Clip  = "a_uncuff",
  Flag  = 49,
  Time  = 3500,
  Prog  = "Setting Up Item . . ."
}
```

**Removal Animation**

```lua
PropRemove = {
  Dict  = "random@domestic",
  Clip  = "pickup_low",
  Flag  = 8,
  Time  = 1500,
  Prog  = "Picking Up Item"
}
```

***

### Camp Zones (Optional)

| Setting      | Description                                                        |
| ------------ | ------------------------------------------------------------------ |
| `ZoneChecks` | Only allow placement inside predefined camp zones.                 |
| `CampZones`  | Define each camp zone with coordinates, radius, and optional blip. |

Example:

```lua
CampZones = {
  ["Raton Canyon! Camp Zone"] = {
    coords = vector3(-1080.23, 4371.21, 13.05),
    radius = 650.0,
    blip = true
  }
}
```

**Zone Blip Configuration**

```lua
ZoneBlip = {
  blipSprite  = 557,
  blipDisplay = 6,
  blipScale   = 0.7,
  blipColor   = 0,
  radiusColor = 5,
  radiusAlpha = 50
}
```

***

### Player Camp Blips

| Setting    | Description                                        |
| ---------- | -------------------------------------------------- |
| `enabled`  | Enable player camp blips.                          |
| `everyone` | Should all players see each other's camp blips?    |
| `models`   | List of models that should be tracked and blipped. |

***

### Trees, Bathing, and Tools

| Setting         | Description                                          |
| --------------- | ---------------------------------------------------- |
| `EnableTrees`   | Enable tree props that can be chopped.               |
| `EnableBathing` | Allow players to bathe (if soap item is configured). |
| `SoapItemName`  | Item name required for bathing.                      |
| `AxeItemName`   | Item name needed to chop trees.                      |

***

### CampProps: Placeable Items

Each item in the `CampProps` list includes:

* `name`: Item name in inventory
* `give`: Whether the item is returned on pickup
* `model`: The in-game model spawned
* `action`: What it does (e.g., `Tent`, `Fire`, `Craft`, `Prop`)
* `within`: Distance to object for placement

You can add your own props to this list.\
**Tip**: Set `action = "Prop"` to make it non-interactive (e.g., for static items or fences).

***

## ⚙️SETTINGS:

This file controls the **animations**, **interactions**, and **tree harvesting settings** within Let's Camp Plus. Below you'll find a breakdown of each configurable section.

### Tent Sleeping (`InTentAnim`)

| Setting                | Description                                                                                         |
| ---------------------- | --------------------------------------------------------------------------------------------------- |
| `Position`             | Text UI position (e.g. `left-center`)                                                               |
| `ZoomKey`              | Zoom in while inside (default `0` for Z key)                                                        |
| `CancelKey`            | Exit key (default `73` for X)                                                                       |
| `Dict`, `Clip`, `Flag` | Animation details                                                                                   |
| `OffSets`              | Offsets per tent model for proper player placement; can also enable slow healing with `heal = true` |

***

### Sitting in Chairs (`ChairSitAnim`)

| Setting     | Description                                     |
| ----------- | ----------------------------------------------- |
| `Scenario`  | Defines sitting animation scenario              |
| `CancelKey` | Key to cancel sitting                           |
| `OffSets`   | Model-specific offsets for proper sit alignment |

***

### Laying in Beds (`BedLayAnim`)

| Setting        | Description                              |
| -------------- | ---------------------------------------- |
| `Dict`, `Clip` | Animation dictionary and clip            |
| `OffSets`      | Placement adjustments for each bed model |

***

### Canteen Filling (`CanteenAnim`)

Handles animation for filling canteens from a water source.

| Setting                                | Description                         |
| -------------------------------------- | ----------------------------------- |
| `Dict`, `Clip`, `Flag`, `Time`, `Prog` | Animation and progress bar          |
| `Prop`, `Bone`, `Coord`, `Rot`         | Position and rotation for held prop |

***

### Hiking Mode (`Hiking`)

Enables optional idle animations and visible hiking backpacks when carrying certain items.

| Setting                    | Description                                        |
| -------------------------- | -------------------------------------------------- |
| `EnableBag`                | Show backpack on player                            |
| `EnableAnim`               | Play hiking animation                              |
| `IdleCheck`, `ActiveCheck` | Timers for checking movement                       |
| `Items`                    | Items that trigger hiking mode                     |
| `Cloth`                    | Clothing slot settings for backpacks (male/female) |

***

### Bathing Animation (`BathingAnim`)

Handles bathing with a progress bar, movement control, and nudity toggles.

| Setting                        | Description                                |
| ------------------------------ | ------------------------------------------ |
| `Dict`, `Clip`, `Time`, `Prog` | Animation and duration                     |
| `Move`                         | Disables movement during animation         |
| `Nude`                         | Whether clothes are removed during bathing |
| `Cloth`                        | Outfits applied per gender when bathing    |

***

### Cooking Animations

#### Grill Cooking (`GrillCookAnim`)

#### Fire Cooking (`FireCookAnim`)

Both support minigames and movement control during the animation.

| Setting                        | Description                                                     |
| ------------------------------ | --------------------------------------------------------------- |
| `Dict`, `Clip`, `Time`, `Prog` | Animation and text                                              |
| `Prop`, `Bone`, `Coord`, `Rot` | Cooking tool settings                                           |
| `Minigame`, `game`             | Whether a minigame is enabled and which one (`keys`, `circles`) |

***

### Cooler and Craft Bench

* **`CoolerAnim`**: Animation for purchasing from coolers.
* **`CraftBenchAnim`**: Used when crafting at workbenches. Minigame supported.

***

### Tree Chopping Animation (`TreeChopAnim`)

Used for harvesting trees/logs.

| Setting                                       | Description                         |
| --------------------------------------------- | ----------------------------------- |
| `Dict`, `Clip`, `Time`, `ProgTree`, `ProgLog` | Animation and progress bars         |
| `Prop`, `Bone`, `Coord`, `Rot`                | Axe visual settings                 |
| `Minigame`, `game`                            | Tree cutting minigame configuration |

***

### Carry Items (`CarryModel`)

Allows players to carry logs/wood visually.

| Setting                         | Description                 |
| ------------------------------- | --------------------------- |
| `name`                          | The item's identifier       |
| `Model`                         | Prop model to attach        |
| `Dict`, `Clip`, `Flag`          | Animation details           |
| `x`, `y`, `z`, `xr`, `yr`, `zr` | Positioning and rotation    |
| `Attack`, `Sprint`, `Car`       | Restrictions while carrying |

Additional carry behavior is toggled by:

| Setting        | Description                           |
| -------------- | ------------------------------------- |
| `CarryEnabled` | Master toggle for carry functionality |
| `NetworkProps` | Make props visible to others          |

***

### Tree & Logging System

#### Tree Configuration

Each tree entry in `TreeModels` includes:

* `label`: Display name
* `item`: Reward item when chopped
* `difficulty`: For minigame tuning (`easy`, `medium`, etc.)
* `coords`: Where trees spawn (use `vec4`)

#### Other Tree Settings

| Setting          | Description                            |
| ---------------- | -------------------------------------- |
| `Blips`          | Configures tree location blips         |
| `StumpModel`     | Model that replaces tree when chopped  |
| `RegrowTree`     | Minutes until a tree respawns          |
| `TreeTargetDist` | Max distance to interact with tree     |
| `LogChopAmt`     | Random reward amount from log chopping |

***

#### Example Tree Entry

```lua
["prop_tree_cedar_s_01"] = {
    blip = true,
    label = "Small Cedar Tree",
    item = "lc_camplog_c",
    amount = 1,
    difficulty = "easy",
    coords = {
        vec4(-943.150, 4401.460, 15.177, 29.64),
        vec4(-987.966, 4396.140, 14.324, 169.31),
        -- more coords...
    }
}
```

***

## 🛒SHOPS:

The `shops.lua` file handles shop ped locations, available purchasable items, and shop behavior (such as console logging and blips).<br>

### Global Settings

| Setting         | Description                                               |
| --------------- | --------------------------------------------------------- |
| `Enabled`       | Enables or disables the shop system entirely.             |
| `ConsolePrints` | Logs player shop usage to the server console when `true`. |

***

### Shopkeeper NPCs (`Peds`)

Define shopkeeper NPCs here. You can have multiple shop locations.

```lua
Peds = {
    {
        model = "a_m_y_hiker_01", 
        scenario = "WORLD_HUMAN_TOURIST_MAP", 
        coords = vector3(-1490.91, 4981.61, 63.33), 
        heading = 83.96, 
        blip = true
    },
    -- Add more shopkeepers as needed
}
```

* `model`: Ped model used.
* `scenario`: Ped activity (animation).
* `coords`: Position in the world.
* `heading`: Direction the ped is facing.
* `blip`: Whether a blip should appear on the map for this shop.

***

### Blip Settings (`Blips`)

Configure how shop locations appear on the map.

| Setting   | Description                                                              |
| --------- | ------------------------------------------------------------------------ |
| `Enabled` | Toggles map blips for all shopkeepers. Set to `false` to hide all blips. |
| `Label`   | Name shown on the map.                                                   |
| `Sprite`  | Blip icon ID.                                                            |
| `Display` | Display mode (`6` is standard).                                          |
| `Scale`   | Size of the blip.                                                        |
| `Color`   | Color of the blip.                                                       |

***

### Canteen Handling

Used to manage canteen filling at water sources.

| Setting        | Description                     |
| -------------- | ------------------------------- |
| `EmptyCanteen` | Item name for an empty canteen. |
| `FullCanteen`  | Item name for a filled canteen. |

***

### Shop Items (`Items`)

Each entry represents a purchasable item. You can categorize and assign prices.

```lua
{ name = 'lc_camptent_a', cost = 1000, category = 'Tents' }
```

| Field      | Description                                 |
| ---------- | ------------------------------------------- |
| `name`     | Item name (must match inventory item name). |
| `cost`     | Price in in-game currency.                  |
| `category` | Used to organize items in the shop UI.      |

***

### Available Categories

The following categories are currently used. These help sort items in the shop UI:

* `Appliance`
* `Beds`
* `Chairs`
* `Fencing`
* `Fires`
* `Grocery`
* `Hardware`
* `Lumber`
* `Tables`
* `Tents`

> Note: Many items can also be crafted by players using workbenches or other features in the script.

***

### Tips

* For shop purchase logs add your **webhook** in the server/editable.lua.
* Make sure items exist in your inventory system (e.g. `ox_inventory`) before adding them to the shop.
* You can mix crafted and purchased item availability to control the in-game economy.

***

## 🗒️FUNCTIONS:

This file contains **optional** features like healing, stress relief, and minigames. You are encouraged to **customize or delete** functions that don’t fit your framework.

> ⚠️ The provided events are examples only. You **must** adapt them to your server’s inventory, status, and medical systems.

### Camp Tent Logic (`CampTent`)

Handles **healing** and/or **stress relief** when a player is inside a tent.

#### Parameters:

* `bool`: `true` when entering the tent, `false` when exiting.
* `heal`: Enables slow healing if `true`.

#### Features:

* **Stress thread** reduces stress over time.
* **Healing thread** slowly restores health if below max.
* **Bleeding removal** supported via `randol_medical` if health is high but not full.

#### Notes:

* Threads are terminated when the player exits the tent.
* Use your own healing or stress systems if different from `hud:server:RelieveStress`.

***

### Camp Chair Logic (`CampChair`)

Relieves player **stress** while sitting in a chair.

* Uses the same stress relief logic as tents.
* Thread stops when player exits the chair.

***

### Camp Bed Logic (`CampBed`)

Also provides **stress relief**, similar to chairs and tents.

* Uses separate thread to avoid conflicts with other states.
* You may choose to add sleep animations or healing here if needed.

***

### Minigame Handler (`MiniGame`)

Triggers minigames during interactions like **crafting**, **cooking**, or using **special items**.

#### Supported Modes:

* `"circles"`: Uses `xmmx_circlesgame`
* `"keys"`: Uses `xmmx_keysgame`
* `"beans"`: Randomly triggers either of the two with different prompts

#### Usage:

```lua
local success = Config.MiniGame("keys")
if success then
    -- continue interaction
end
```

***

### Tree Minigame (`TreeMiniGame`)

Handles **tree chopping minigames**.

#### Parameters:

* `game`: `"circles"` or `"keys"`
* `level`: `"easy"`, `"medium"`, or `"hard"`
* `label`: The name of the tree or log for display

#### Behavior:

* Custom prompts like `"Chopping Pine Tree"` will appear.
* Success/failure returned to control chopping logic.
* Designed for `xmmx_circlesgame` and `xmmx_keysgame`.

***

### How to Customize

Here’s how you can tailor this file to your own framework:

| Feature          | Replace or Modify                                              |
| ---------------- | -------------------------------------------------------------- |
| Stress Relief    | Replace `hud:server:RelieveStress` with your own event         |
| Healing          | Adjust `SetEntityHealth` or link to your health system         |
| Bleeding Removal | Swap `exports.randol_medical:ClearBleeding()` with your system |
| Minigames        | Add/replace your own games or prompts                          |
| Player Metadata  | Update how you pull metadata if not using `XM.GetPlayerData()` |

***

### Important Tips

* These functions are **not required** but enhance immersion.
* Use them as a **base template**, not a final implementation.
* Remove unused functions to avoid resource waste or errors.

***
