πŸ’ͺEquipment Setup Guide

circle-check

Where to edit

All equipment is configured in a single file:

configs/shared.lua
Shared.Exercises = {
    -- your entries go here
}

Available exercise UIDs

Each entry must use one of these uid values (defined in Shared.ExercisesTypes):

UID
Exercise

kettlebellswing

Kettlebell swing

boxing

Punching bag

jumpingbox

Box jumps

overhead

Overhead press (barbell)

backsquat

Back squat (barbell)

raises

Dumbbell raises (large rack)

biceps

Biceps curls (small rack)

treadmill

Treadmill run

circle-info

Each uid is linked to Shared.ExercisesTypes (minigames + skill tree XP). To add a brand-new exercise type, you must extend Shared.ExercisesTypes and create the matching exercise script in escrowed/exercises/.


Available props (known models)

These models have a default menu offset registered in Config.PropsMenuOffset (configs/client.lua):

Model
Used for

devhub_gym_kettlebell_rack

Kettlebells

devhub_gym_punch_bag

Punching bag

devhub_gym_jumping_box

Jump box

devhub_gym_barbell

Barbell β€” squat

devhub_gym_dumbell2_rack

Large dumbbells

devhub_gym_dumbell1_rack

Small dumbbells

prop_barbell_02

Vanilla GTA barbell β€” overhead

devhub_gym_treadmill

Treadmill


How to add new equipment (script spawns the prop)

1

Pick a UID and prop

Choose from the tables above.

2

Get the coordinates

Stand where you want the prop in-game, copy x, y, z, heading.

3

Add the entry

Append a new table inside Shared.Exercises in configs/shared.lua:

4

Restart

circle-info

playerCoords is not required for every exercise (e.g. boxing, jumpingbox, treadmill don't use it), but it is recommended for kettlebellswing, overhead, backsquat, raises, biceps.


How to use an EXISTING prop from the map (MLO / IPL)

If the prop already exists in the world and you do not want to spawn a duplicate, set dontSpawnProp = true:

circle-exclamation

Full entry options

Key
Type
Required
Description

uid

string

βœ“

Exercise type

maxReps

number

βœ“

Max reps per session

propName

string

βœ“

Prop model name

propCoords

vec4

βœ“

x, y, z, heading

playerCoords

vec4

β€”

Optional β€” fixed player position

placeOnTheGround

bool

β€”

true = snap prop to ground

dontSpawnProp

bool

β€”

true = use an existing prop from the map


Important rules

triangle-exclamation
circle-exclamation
circle-info

Custom prop? Register its menu offset in configs/client.lua β†’ Config.PropsMenuOffset, otherwise the menu may appear inside the model:

circle-info

Map blips are configured in configs/client.lua β†’ Config.Blips.

circle-info

Skill Tree XP β€” if Shared.DevhubSkillTreeEnabled = true, XP rewards are configured in Shared.ExercisesTypes[uid].skillTrees.


Examples

Punching bag attached to a prop that already exists inside an MLO:


circle-check

Last updated