JR System Racing
Guías de instalación, configuración y soporte para los recursos de JR Shops.
JR System Racing
Guía completa del ecosistema de carreras ilegales, tablet, pistas, competiciones y crews.
JR System Racing
A complete illegal racing system for FiveM servers running QBCore. It includes an interactive tablet, custom track creation, quick races, scheduled competitions, time trials, NPC opponents, ELO rankings, seasons, crews, and administration tools.
Most actions are performed directly from the tablet, so players and administrators do not need to learn a long list of commands.
Main features
- NUI tablet with simple navigation and a design optimized for FiveM.
- Custom tracks with checkpoints, a finish line, and decorative objects.
- Quick races with lobbies, entry fees, laps, and ghost mode.
- Scheduled competitions with registration, prizes, and cancellation refunds.
- Global ELO ranking.
- Seasons, rewards, badges, and police heat.
- Time trials with best-time records.
- Races against NPC opponents with several difficulty levels.
- Crew system with members, ELO, and team statistics.
- Street, Creator, and Administrator access profiles.
- Optional police alerts and Discord logs.
- Server-side validation and economy handling.
Requirements
Before installing the resource, make sure your server has the following:
| Resource | Status | Purpose |
|---|---|---|
qb-core | Required | Framework used by the racing system. |
oxmysql | Required | Database connection and storage. |
JR_Bridge | Required | Shared compatibility for inventory, money, permissions, notifications, and dispatch. |
| Compatible inventory | Required for the item | Stores and allows players to use the racing tablet. |
Step 1: Install the resource
Copy the folder named JR_System_Racing into your server's resources directory.
Do not rename the folder. Keeping the original name makes installation, updates, and support easier.
Step 2: Import the database
Import the following file into your server database:
JR_System_Racing/sql/install.sql
The resource also checks its database schema on startup to make future updates easier. However, install.sql remains the recommended method for a clean installation.
Step 3: Add the tablet item
The default item name is racing_tablet. Add it to the QBCore shared items file or to the item configuration used by your inventory.
QBCore example:
['racing_tablet'] = {
name = 'racing_tablet',
label = 'Racing Tablet',
weight = 1000,
type = 'item',
image = 'racing_tablet.png',
unique = false,
useable = true,
shouldClose = true,
description = 'Access to the underground racing network.'
},
If your inventory displays item images, add an image using the configured file name. If you change the item name, use the same value in Config.TabletItem.
Step 4: Start order
All dependencies must start before JR System Racing. The recommended order is:
ensure oxmysql
ensure qb-core
ensure your_inventory
ensure JR_Bridge
ensure JR_System_Racing
Replace your_inventory with the actual name of your inventory resource.
Step 5: Check the startup
Restart the server and check the console. JR System Racing prints a startup summary containing the detected framework, inventory, database, currency, dispatch, JR Bridge status, and installed version.
If the console displays SQL schema: Ready, the main database structure was checked successfully.
Essential configuration
All public configuration options are located in:
JR_System_Racing/config.lua
Tablet
Config.TabletItem = 'racing_tablet'
Config.OpenCommand = 'racingtablet'
TabletItem: item required to open the tablet.OpenCommand: command used to open it. The default command is/racingtablet.
The animation and the prop held by the player can be adjusted in Config.TabletAnimation.
Administrators
The resource can recognize administrators through QBCore groups, ACE permissions, or CitizenID and license allowlists.
Config.AdminGroups = {
admin = true,
god = true
}
Config.AdminAcePermission = 'illegalracing.admin'
Config.AdminCitizenIds = {}
Config.AdminLicenses = {}
Config.AdminIdentifiers = {}
Only configure the methods you actually need. Never publish real player identifiers or private information in shared files.
If an administrator does not receive full access, run /racingadmincheck to see how their permission is being detected.
Racing currency
JR System Racing can charge players through a QBCore money account or an inventory item.
Money account:
Config.CurrencyType = 'account'
Config.Currency = 'black_money'
Inventory item:
Config.CurrencyType = 'item'
Config.CurrencyItem = 'markedbills'
Make sure the selected account or item exists on your server. Crews can use a separate economy configuration inside Config.Crews.
Competitions
Config.Competitions.Enabled = true
Config.Competitions.AutoGenerate = false
With AutoGenerate = false, only competitions created from the Panel will exist. This is the recommended setting when the staff wants to control every event manually.
Only enable automatic generation when you want the system to create competitions using the times configured in Config.Competitions.Times.
Optional systems
The main optional systems can be adjusted through their own configuration blocks:
Config.NPCRaces: NPC opponents, entry fee, difficulty, and AI racing line.Config.Seasons: seasons and rewards.Config.Heat: police heat and bribes.Config.Crews: creation cost, currency, and member limit.Config.TimeTrial: time trial mode.Config.GhostMode: races without collisions.Config.PoliceAlert: police alerts and the jobs that receive them.Config.DiscordLogs: logs sent to Discord.
Do not leave Config.Debug enabled on a public server. Use it only while testing or diagnosing a problem.
Tablet permissions
JR System Racing includes three access levels:
| Profile | Available sections | Recommended use |
|---|---|---|
Street (Calle) | Home, Races, Map, Ranking, and Profile | Regular players. |
Creator (Creador) | Adds Tracks and Panel | Authorized organizers who can create and manage races. |
| Administrator | Full access | Staff with QBCore or ACE permissions. |
Only a real administrator can assign, edit, or remove tablet access from the Panel.
To grant access:
- Open the tablet as an administrator.
- Open
Panel. - Find the tablet permissions section.
- Enter the player's online ID, CitizenID, or license.
- Select
CalleorCreador. - Keep access enabled and press
Guardar acceso.
Permissions are stored in the database and are also validated by the server.
Usage
Opening the tablet
Players can use the racing_tablet item or run:
/racingtablet
The tablet can also be purchased from the organizer NPC when Config.Organizer.Enabled is enabled.
Creating a track
The Creator or Administrator profile is required.
- Open
Paneland go to the tracks section. - Enter the name, location, and player limits.
- Start recording mode.
- Place the checkpoints in the correct order.
- Place the finish line and return to the tablet.
- Review the settings and save the track.
Default controls while recording:
| Key | Action |
|---|---|
E | Place a checkpoint. |
G | Place the finish line. |
H | Place a decorative object. |
| Up/down arrows | Change the gate width. |
| Left/right arrows | Rotate the gate. |
Page Up / Page Down | Adjust the checkpoint radius. |
ALT | Change the selected object. |
Backspace | Delete the last point. |
Shift + Backspace | Delete the last decorative object. |
Enter | Return to the tablet. |
Vehicles must cross the line formed by the two objects of each gate. Use gates that are wide enough and avoid placing them in areas blocked by obstacles.
Creating a quick race
- Open
Pistas. - Select a saved track.
- Choose the option to create a quick race.
- Configure the entry fee, laps, player limit, and collision mode.
- Other drivers can join through
Carreras. - The host starts the race when everyone is ready.
Quick races remain in memory while their lobby or race is active.
Creating a competition
Authorized creators and administrators can schedule a competition from a saved track.
- Select the track.
- Choose the date, time, entry fee, and prize.
- Set the minimum and maximum number of drivers.
- Save the competition.
Administrators have access to the Competiciones section, while creators manage their own events from the Panel. When a registration has been processed and the event is cancelled correctly, the server handles the payment refund.
Time trials
Open Pistas and select Contrarreloj on an available track. This mode does not charge an entry fee or modify ELO. It records the best completion times for the leaderboard.
Races against NPCs
A track needs a valid AI racing line before Vs NPC becomes available:
- An administrator opens the saved track.
- Select
Grabar trazada IA. - Enter a vehicle and move to the first checkpoint.
- Press
Eand drive one clean lap along the ideal route. - The racing line is validated and saved when the vehicle crosses the finish line.
Once the track displays IA optimizada, players can select a difficulty and number of opponents. Changing the checkpoints or finish line invalidates the recording, so the AI racing line must be recorded again.
Crews and profile
The resource includes crews with a code or TAG, members, statistics, and a team leaderboard. In the current tablet layout, the complete crews section is part of administrator access.
Every player can use Perfil to review their ELO, wins, history, badges, heat, and public name. Some actions, such as changing the public name, can have a configurable cost.
Integrations
JR Bridge
JR_Bridge centralizes shared operations with QBCore and external resources, including players, inventory, money, permissions, notifications, logs, and dispatch. It must start before JR System Racing.
Do not duplicate these integrations inside the racing resource. When changing to a compatible inventory or external system, configure the relevant provider through JR Bridge first.
Police alerts
Config.PoliceAlert controls the dispatch provider, base alert chance, and police jobs that receive notifications.
Config.PoliceAlert = {
enabled = true,
chance = 35,
dispatch = 'origen',
jobs = {
police = true,
sheriff = true
}
}
The participants' heat can increase the final alert chance. Administrators can run /racingpolicetest to test the integration without starting multiple races.
Discord
Discord webhooks are optional. You can use one general webhook or configure separate webhooks for each category inside Config.DiscordLogs.Webhooks.
Never share a config.lua file containing real webhook URLs. Use /jrwebhooktest as an administrator, or jrwebhooktest from the server console, to test the configuration.
Commands
| Command | Access | Purpose |
|---|---|---|
/racingtablet | Players with a tablet | Opens the racing tablet. |
/racingclose | Everyone | Closes the tablet and releases NUI focus. |
/racingadmincheck | Administrator | Displays how the administrator permission was resolved. |
/racingpolicetest | Administrator | Sends a test police alert. |
/jrwebhooktest | Administrator or console | Tests the Discord webhook configuration. |
Some command names can be changed in config.lua. The NPC testing command is intended for development and balancing, not normal server use.
Common issues
The tablet does not open
- Make sure
JR_Bridge,qb-core, andoxmysqlstart before the resource. - Check that the inventory item name matches
Config.TabletItem. - Review F8 and the server console for errors.
- Run
/racingcloseand reopen the tablet if NUI focus became stuck.
An administrator does not have full access
- Check
Config.AdminGroupsand the ACE permissions. - Make sure the player's actual group matches the configured group.
- Run
/racingadmincheckand review the result on screen and in the console. - Avoid adding personal identifiers when the QBCore group or ACE permission already works correctly.
“You do not have enough money” appears
The account selected in Config.Currency must exist in your QBCore setup. If your server represents dirty money as an item, use Config.CurrencyType = 'item' and configure Config.CurrencyItem.
Deleted competitions return
Keep this setting disabled:
Config.Competitions.AutoGenerate = false
When automatic generation is enabled, the system can recreate competitions using the configured schedule.
The “Vs NPC” button is disabled
The track does not have a valid AI racing line, or the track was modified after recording it. Select Grabar trazada IA or Regrabar trazada IA and complete one clean lap.
Police alerts are not received
- Make sure
Config.PoliceAlert.enabledis enabled. - Check the provider name selected in
dispatch. - Make sure the configured job names match your QBCore jobs.
- Check that police officers are on duty when required by the integration.
- Run
/racingpolicetestto get a direct test result.
Discord logs do not appear
- Enable
Config.DiscordLogs.Enabled. - Configure either a general webhook or a webhook for the required category.
- Make sure the webhook URL is still valid.
- Run
/jrwebhooktestand review the server console.
Database-related error
- Make sure
oxmysqlstarts before JR System Racing. - Import
sql/install.sqlinto the correct database. - Restart the resource and review the startup summary.
- Do not delete tables containing player data to update the resource. Create a backup and apply only safe migrations.
Support
When requesting support, include:
- JR System Racing version.
- JR Bridge version.
- QBCore version and inventory resource.
- Complete server console or F8 error.
- Exact steps required to reproduce the problem.
Never send passwords, tokens, webhooks, private licenses, or complete files containing credentials.
¿Necesitas ayuda con la instalación?
Abre un ticket e incluye las versiones, el error completo y los pasos para reproducirlo. No compartas contraseñas, tokens ni webhooks.