⛺Let's Camp! Plus
Installation Guide!

⚠️ 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
andxmmx_circlesgame
(Included)Mrs. BzZz Survival Props (Paid)
Mrs. BzZz Lumberjack Props (Free)
Mrs. BzZz Military Canteen (Free)
🛠️INSTALLATION:
• Copy the images from the .INSTALL/images folder into your inventory images folder. • Copy the items into your inventory or framework items table:
Copy to ox_inventory/data/items.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",
}
},
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
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
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
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
)
RayCastKeys
)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
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
PropPlace = {
Dict = "mp_arresting",
Clip = "a_uncuff",
Flag = 49,
Time = 3500,
Prog = "Setting Up Item . . ."
}
Removal Animation
PropRemove = {
Dict = "random@domestic",
Clip = "pickup_low",
Flag = 8,
Time = 1500,
Prog = "Picking Up Item"
}
Camp Zones (Optional)
ZoneChecks
Only allow placement inside predefined camp zones.
CampZones
Define each camp zone with coordinates, radius, and optional blip.
Example:
CampZones = {
["Raton Canyon! Camp Zone"] = {
coords = vector3(-1080.23, 4371.21, 13.05),
radius = 650.0,
blip = true
}
}
Zone Blip Configuration
ZoneBlip = {
blipSprite = 557,
blipDisplay = 6,
blipScale = 0.7,
blipColor = 0,
radiusColor = 5,
radiusAlpha = 50
}
Player Camp Blips
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
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 inventorygive
: Whether the item is returned on pickupmodel
: The in-game model spawnedaction
: 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
)
InTentAnim
)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
)
ChairSitAnim
)Scenario
Defines sitting animation scenario
CancelKey
Key to cancel sitting
OffSets
Model-specific offsets for proper sit alignment
Laying in Beds (BedLayAnim
)
BedLayAnim
)Dict
, Clip
Animation dictionary and clip
OffSets
Placement adjustments for each bed model
Canteen Filling (CanteenAnim
)
CanteenAnim
)Handles animation for filling canteens from a water source.
Dict
, Clip
, Flag
, Time
, Prog
Animation and progress bar
Prop
, Bone
, Coord
, Rot
Position and rotation for held prop
Hiking Mode (Hiking
)
Hiking
)Enables optional idle animations and visible hiking backpacks when carrying certain items.
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
)
BathingAnim
)Handles bathing with a progress bar, movement control, and nudity toggles.
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
)
GrillCookAnim
)Fire Cooking (FireCookAnim
)
FireCookAnim
)Both support minigames and movement control during the animation.
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
)
TreeChopAnim
)Used for harvesting trees/logs.
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
)
CarryModel
)Allows players to carry logs/wood visually.
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:
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 nameitem
: Reward item when choppeddifficulty
: For minigame tuning (easy
,medium
, etc.)coords
: Where trees spawn (usevec4
)
Other Tree Settings
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
["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).
Global Settings
Enabled
Enables or disables the shop system entirely.
ConsolePrints
Logs player shop usage to the server console when true
.
Shopkeeper NPCs (Peds
)
Peds
)Define shopkeeper NPCs here. You can have multiple shop locations.
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
)
Blips
)Configure how shop locations appear on the map.
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.
EmptyCanteen
Item name for an empty canteen.
FullCanteen
Item name for a filled canteen.
Shop Items (Items
)
Items
)Each entry represents a purchasable item. You can categorize and assign prices.
{ name = 'lc_camptent_a', cost = 1000, category = 'Tents' }
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
)
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 iftrue
.
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
)
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
)
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
)
MiniGame
)Triggers minigames during interactions like crafting, cooking, or using special items.
Supported Modes:
"circles"
: Usesxmmx_circlesgame
"keys"
: Usesxmmx_keysgame
"beans"
: Randomly triggers either of the two with different prompts
Usage:
local success = Config.MiniGame("keys")
if success then
-- continue interaction
end
Tree Minigame (TreeMiniGame
)
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
andxmmx_keysgame
.
How to Customize
Here’s how you can tailor this file to your own framework:
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.
Last updated