You can create your own training course preset. It's fairly easy to do, let's review the different steps together.
Go into CONFIG/ and open TRAININGS.lua
in the Config.HORSETRAININGSETTINGS table duplicate the table at the end.
Two important things here : The lua table index which increased since the last one is [8] so new table is now [9] and the end " } " to close the main table. Make sure you don't break any of these.
How to get coords ? See the coords section here
Now let's review each param and what they do :
ENABLED: Master switch for this whole training location/entry.
TYPE: Enables specific training modes.
ONMOUNT: Training while riding the horse.
LEADING: Training while leading the horse (on foot).
LUNGING: Lunge-style training (horse on a circle).
PLAYER_INSTANCE: If true, runs the training in a “separate instance/routing bucket” so other players don’t interfere.
PLAYERLOCK: If true, restricts access using the PLAYER_LIST whitelist rules. IDENTIFIER should be a string and charid an integer. If you're using rsg CHARID result will be the CitizenID
IDENTIFIER = "steam:99", CHARID = 1
PLAYER_LIST: Whitelist/override rules per player entry.
TRAINING_ACCESS: Whether this entry is allowed at all.
IDENTIFIER: Player identifier to match (steam licence or a special token like "OTHER_PLAYERS").
CHARID: Character ID to match (or special token like "OTHER_PLAYERS").
XPGIVEN: XP reward amounts per mode (ONMOUNT/LEADING/LUNGING) for that player entry.
COUNTDOWN: Cooldown (seconds) for the player to complete the training.
JOBLOCKED: If true, restricts access using the JOB_LIST whitelist rules.
JOB_LIST: Whitelist/override rules per job entry.
TRAINING_ACCESS: Whether this job entry is allowed.
LABEL: database job label key used to match a player’s job (or special token like "OTHER_JOBS").
XPGIVEN: XP reward amounts per mode for that job entry.
COUNTDOWN: Cooldown (seconds) for that job to complete the training.
DEFAULT_XP: XP amounts per mode if no player/job override matches.
DEFAULT_COUNTDOWN: Cooldowns per mode if no player/job override matches.
BLIPENABLED: Toggles a map blip for the training spot.
BLIPSPRITE: The blip icon hash (that -1327110633 is a sprite hash).
BLIPNAME: Text shown on the map for the blip.
BLIPCOORDS: vector3(x,y,z) position of the blip.
PROMPTNAME: The label shown on the on-screen prompt (ex: “VALENTINE STABLES”).
PROMPTCOORDS: Where the prompt is located.
PROMPTDISTANCE: How close the player must be to see/trigger the prompt.
MUSICENABLED: Toggles music during training / intro.
MUSICUSED: The track/event name used by the script (here "BOU1_START").
OBSTACLES_ENABLED: Master toggle for spawning/using obstacles in these modes.
OBSTACLES: List of obstacle props to spawn.
ENABLED: Per-obstacle toggle.
MODEL: Prop model name to spawn.
COORDS: vector4(x,y,z,h) spawn position + heading.
CUTSCENE: Master toggle for a cutscene-style camera sequence.
CAMERACUTSCENE: List of camera shots.
DELAY: How long to hold that camera shot (ms).
CAMERACOORDS: Camera params array (commonly x,y,z, rotX,rotY,rotZ, fov).
STARTPLAYERCOORDS: Where player starts for ONMOUNT / LEADING course (vector4 includes heading).
CHECKPOINTS: Ordered checkpoint list for the course.
COORDS: Checkpoint position.
DETECTIONDISTANCE: Radius to count as “passed”.
RGB: Marker color for the checkpoint.
LUNGING_START_PLAYER_COORDS: Where player starts for lunging mode.
LUNGING_OBSTACLES_ENABLED: Master toggle for lunging obstacles.
LUNGING_OBSTACLES: List of lunging obstacles.
ENABLED: Per-obstacle toggle.
MODEL: Prop model name.
COORDS: Spawn position + heading (vector4).
Simply set your own coordinates and label, or apply job/player locks, and that’s it you now know how to create your own training preset! Restart the script for the changes to take effect.