Usage
Opening the Tablet
Use the racing_tablet item from your inventory to open the racing UI. The tablet is required to join or participate in any race - players without it are disqualified at the start countdown.
The tablet can also be opened programmatically from another resource:
exports["prp-racing"]:OpenUI(source)Race Modes
| Mode | Description |
|---|---|
| Unranked | Open race created by any player; no ELO change |
| Ranked | Player-created ranked race (allowlist), or auto Race of the Hour when SystemRaces.ranked = true (default); affects ELO and season standings |
| Private | Password-protected race; invite only |
| Pink Slip | Winner receives a vehicle transfer claim for the loser's car |
Creating a Race
- Open the tablet and go to the Races section.
- Select a track and click Create Race.
- Configure the race:
- Name, vehicle class(es), min/max players, lap count
- Bid (entry fee) and additional reward pool with currency
- Ghost mode, reverse route, first person, password (for private races)
- The race appears in the active race list. Players can join by selecting their registered vehicle.
- The race creator starts the countdown when ready. Vehicles are frozen and a 15-second countdown begins.
Vehicle class check
Players must arrive at the start in the correct vehicle matching the race class and registration plate. Wrong vehicle = automatic DNF.
Ghost Mode
Ghost mode controls phasing during a race (players clip through other vehicles while active). It applies to player-created races (unranked, ranked via tablet, private, pink slip) and Race of the Hour system races.
Ghost mode values
| Value | In-game label | Behaviour |
|---|---|---|
0 | Disabled | No phasing — full contact racing |
1 | Enabled (Full) | Phasing stays on for the whole race |
2 | 30 sec | Phasing for 30 seconds after the countdown |
3 | 60 sec | Phasing for 60 seconds after the countdown |
4 | 90 sec | Phasing for 90 seconds after the countdown |
5 | 120 sec | Phasing for 120 seconds after the countdown |
Timed phasing starts after the pre-race countdown (SvConfig.StartTime, default 15 s). The HUD shows remaining phasing time during the race.
In-game (race creator)
When SvConfig.AllowGhostModeInUI = true (default), the Ghost Mode dropdown appears in the race creator. The host picks None / Full / 30 s / 60 s / 90 s / 120 s before creating the race. This works for normal and Create Ranked races.
When SvConfig.AllowGhostModeInUI = false, the dropdown is hidden and replaced by a read-only label. The server always applies SvConfig.PlayerRaceGhostMode — players cannot override it from the tablet.
Server config
| Option | Default | Applies to |
|---|---|---|
SvConfig.AllowGhostModeInUI | true | Player-created races — show ghost picker in tablet |
SvConfig.PlayerRaceGhostMode | 5 | Player-created races when UI selection is disabled (0–5) |
SvConfig.SystemRaces.ghostChance | 100 | Race of the Hour — chance (0–100) to apply ghostMode |
SvConfig.SystemRaces.ghostMode | 5 | Race of the Hour — ghost mode when the roll succeeds (0–5) |
Examples
-- Hosts pick ghost mode in the tablet (default)
SvConfig.AllowGhostModeInUI = true
-- Server locks all player-created races to 30 s phasing
SvConfig.AllowGhostModeInUI = false
SvConfig.PlayerRaceGhostMode = 2
-- Race of the Hour: always no phasing
SvConfig.SystemRaces.ghostChance = 100
SvConfig.SystemRaces.ghostMode = 0
-- Race of the Hour: 50% chance of full phasing, otherwise none
SvConfig.SystemRaces.ghostChance = 50
SvConfig.SystemRaces.ghostMode = 1Ranked vs Race of the Hour
Create Ranked (tablet, with allowlist) uses the same ghost rules as other player-created races (AllowGhostModeInUI / PlayerRaceGhostMode). Race of the Hour always uses SvConfig.SystemRaces.ghostChance and SvConfig.SystemRaces.ghostMode only. Whether it affects ELO is controlled by SvConfig.SystemRaces.ranked (default true).
Race of the Hour
Auto-generated system race (ownerStateId = -1). Server picks a verified track, vehicle class, laps, bid, rewards and ghost settings from SvConfig.SystemRaces.
Ranked vs unranked — SvConfig.SystemRaces.ranked (default true, same as before):
ranked | Behaviour |
|---|---|
true (default) | raceMode = ranked, affects ELO and ranked track stats; rewards skip RewardValidation |
false | raceMode = unranked, no ELO; casual track stats; rewards require RewardValidation |
SvConfig.SystemRaces.ranked = falseOnly one active system race exists at a time. A new race is created when:
- The resource starts (if none is waiting)
- The current system race finishes
- The current system race fails to start (not enough players)
Start time
SvConfig.SystemRaces.startDelayMinutes — minutes after generation before the race starts. Default: 60.
Testing example
SvConfig.SystemRaces.startDelayMinutes = 1
SvConfig.SystemRaces.minPlayers = 1Restart prp-racing after changing config. If a system race is already waiting, cancel or wait for it to finish before a new one is generated with the updated delay.
Pink Slips
- Create a Pink Slip race and set the vehicles to be wagered.
- The winner receives a vehicle claim recorded in the database.
- Travel to the pink slip redemption point (configured in
sv_config.lua→SvConfig.PinkSlips.redeem). - Pay 120 RACE (configurable) to complete the transfer and receive the vehicle.
Crews
- Open the tablet and go to Crews.
- Click Create Crew - costs $10,000. Set a name, tag and color.
- Invite players by nickname. You can define custom roles with specific permissions.
- The crew ELO is tracked per season alongside individual ELO.
Track Creator
- Open the tablet, go to Tracks and click Create Track.
- A free-cam mode activates. Place checkpoints along your route using the prop selection menu.
- Switch to Prop Mode to place decorative objects (tires, cones, barriers, lights, trailers).
- Save the track - it is saved as unpublished. Publish it to make it available for races.
Track flags
Admins can mark tracks as Verified, Official or Featured from the admin panel in the tablet.
Daily Rewards
| Races completed | Reward |
|---|---|
| 2 | RACING_CASE |
| 5 | RACING_CASE |
| 7 | RACING_CASE |
Progress resets at midnight. Up to 9 races are tracked per day. There is also a 2.5 % (25/1000) random chance to receive an additional case after any race that qualifies for rewards.
Reward Validation
Player-created ranked races and Race of the Hour when SystemRaces.ranked = true skip these checks. Other unranked races (and Race of the Hour when ranked = false) must meet:
| Requirement | Default |
|---|---|
| Minimum players | 4 |
| Minimum race duration | 5 minutes |
| Minimum checkpoints | 0 |
| Require verified track | No |
Configuration
config.lua
| Option | Default | Description |
|---|---|---|
Config.TrackCamEntityPrevention | true | If the track creator prop is placed on another entity, should the camera be returned to it's original position, prevents props on top of each other |
Config.TrackCreatorCamDist | 25.0 | How far ahead can the track creator prop go |
Config.RacingItem | "racing_tablet" | Inventory item name |
Config.RequireItemToOpen | true | Require item to open tablet |
Config.LeaderboardTimeout | 15000 | Post-race leaderboard display duration (ms) |
Config.ShowCreatorUsage | true | Show active track creator sessions to others |
sv_config.lua
| Option | Default | Description |
|---|---|---|
SvConfig.StartTime | 15 | Race countdown duration (seconds) |
SvConfig.AllowGhostModeInUI | true | Allow ghost mode selection in the race creator tablet |
SvConfig.PlayerRaceGhostMode | 5 | Ghost mode for player-created races when UI selection is off (0 = none, 1 = full, 2–5 = timed) |
SvConfig.SystemRaces.ghostChance | 100 | Race of the Hour — chance to apply system ghost mode (0–100) |
SvConfig.SystemRaces.ghostMode | 5 | Race of the Hour — ghost mode when chance succeeds (0–5) |
SvConfig.SystemRaces.startDelayMinutes | 60 | Race of the Hour — minutes until start |
SvConfig.SystemRaces.minPlayers | 4 | Race of the Hour — minimum players required to start |
SvConfig.SystemRaces.ranked | true | Race of the Hour — ranked (ELO) when true; unranked when false |
SvConfig.EloSettings.startingElo | 1000 | Starting ELO for new players |
SvConfig.EloSettings.kFactor | 64 | ELO k-factor (how fast ELO changes) |
SvConfig.CrewSettings.maxMembers | 20 | Maximum crew members |
SvConfig.CrewSettings.createCost | 10000 | Crew creation cost ($) |
SvConfig.DNFTime | 600 | Seconds until DNF is applied after last finisher |
SvConfig.SeasonLength | 2678400 | Season duration in seconds (31 days) |
SvConfig.CaseRewardChance | 25 | Case drop chance per qualifying race (0–1000) |
SvConfig.PoliceDispatchChance | 0.50 | Probability police are alerted to a race |
SvConfig.PinkSlips.process.amount | 120 | RACE currency cost to redeem a pink slip |
SvConfig.UseBridgeAllowlist | true | Use prp-bridge allowlist system |
SvConfig.UseAdminAllowlist | true | Whether admin checks use bridge allowlist also or just bridge.fw.isAdmin |
SvConfig.UseRankedAllowlist | true | Whether rank allowlist is needed for ranked race creation |
SvConfig.RequireALToCreateRace | false | Do they need the "create_race" allowlist to create a race |
SvConfig.RequireALToCreateTrack | false | Do they need the "track_creator" allowlist to create a race |
SvConfig.GenerateRaceOfTheHour | true | Will races of the hour generate |
SvConfig.RequireItemToRace | true | Will the racing tablet be required to join a race |
Allowlist keys
| Key | Purpose |
|---|---|
track_creator | Permission to open the track creator tool |
create_race | Permission to create races (if RequireALToCreateRace = true) |
create_ranked_race | Permission to create ranked races |
racing_admin | Full admin access in the racing tablet |