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

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://xmmx-development.gitbook.io/documentation/product-guides/lets-camp-plus.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
