Advanced Racing System | Ranked • ELO • Crews • Custom Tracks

:chequered_flag: [QB / QBOX / ESX] Advanced Racing System | Ranked • ELO • Crews • Custom Tracks | ak4y-racing



:information_source: Description
AK4Y Advanced Racing System delivers a complete and competitive racing experience for FiveM.
With ranked gameplay, ELO progression, custom track creation and crew systems, this script turns racing into a long-term competitive activity.

Everything is designed to provide a real racing feel, high replayability and strong player engagement.


:feather: Features

Ranked & ELO System

  • Gain ELO by participating in ranked races
  • Progress through ranks
  • Some races require specific ELO levels

Player Profile

  • Customize username and profile image
  • Used in leaderboard systems

Advanced Track Creation

  • Create custom race routes via tablet
  • Save and reuse routes
  • Place race props (visible only to racers)
  • Choose:
    • Prop-based checkpoints
    • Invisible checkpoints
  • Easy placement system

Race Setup System

  • Start races from saved routes
  • Configure:
    • ELO restrictions
    • Ranked / Unranked mode
    • Entry fee & reward pool
    • Lap count
    • Vehicle class restrictions
    • Ghost mode settings
    • DNF timer
  • Optional host-funded prize pool

Racing Experience

  • Advanced racing HUD:
    • Track progress visualization
    • Accurate race position tracking
  • Checkpoint miss warning system
  • Wrong direction detection HUD

Crew System

  • Create and manage crews
  • Track member performance
  • Crew leaderboard system
  • Join & invite system

Config & Customization

  • Fully configurable (no coding required)
  • Restrict tablet access by job
  • Tablet can be opened via item or command
  • 20+ language support
  • Discord log integration (webhook)

:gear: Performance

  • 0.0 resmon when idle
  • Low resmon during races
  • Fully optimized and responsive

:shopping_cart: You can buy this script from ak4y.tebex.io


:clapper_board: Preview Video

Preview

https://youtu.be/3WfhUSXDNJU


:page_facing_up: Config

Config = {}

-- Locale/translation table (loaded from locales/*.lua files)
Config.locales = {}
-- Language code to use (en, tr, de, fr, es, pl, ru, etc.)
Config.Locale = "en"

-- Open menu with command (true = /racing command works)
Config.OpenWithCommand = true
-- Command name that opens the menu
Config.CommandName = "racing"
-- Open menu with item (true = tablet item can be used)
Config.UseWithItem = true
-- Tablet item name
Config.ItemName = "racingtablet"
-- Menu open event: ak4y-racing:client:openMenu

-- These jobs cannot open the racing menu (e.g. police)
Config.BlockedJobs = {
    ["police"] = true,
    ["bcso"] = true
}

-- Route/track creator settings
Config.RouteCreator = {
    MinCheckpoints = 10,           -- Minimum checkpoint count (route cannot be saved below this)
    MinTireDistance = 2.0,         -- Minimum distance between checkpoint tires (meters)
    MaxTireDistance = 30.0,        -- Maximum distance between checkpoint tires (meters)
    HeadingStep = 5.0,             -- Checkpoint heading rotation step (degrees)
    CheckpointPileModel = 'prop_offroad_tyres02',  -- Default checkpoint prop model
    Buttons = {
        AddCheckpoint = 'INSERT',      -- Key to add new checkpoint
        DeleteCheckpoint = 'DELETE',   -- Key to delete last checkpoint
        SaveRoute = '0',               -- Key to save route
        Exit = '9',                    -- Key to exit route creator
        IncreaseDistance = 'PAGEUP',   -- Key to increase checkpoint distance
        DecreaseDistance = 'PAGEDOWN', -- Key to decrease checkpoint distance
        RotateHeadingLeft = 'LEFT',    -- Key to rotate checkpoint heading left
        RotateHeadingRight = 'RIGHT',  -- Key to rotate checkpoint heading right
        AddRaceObject = 'RETURN',      -- Key to add start/finish object (Enter)
    },
}

-- Racing system settings
Config.Racing = {
    DNFCountdownSeconds = 60,      -- DNF countdown for players who don't finish (seconds) (For the default, you can change on race setup page.)
    VehicleDistanceLimit = 50,     -- Max distance from vehicle (meters), disqualify if exceeded
    ShowWrongDirectionWarning = true,   -- Show wrong direction warning (when going backwards)
    ShowCheckpointMissedWarning = true, -- Show checkpoint missed warning
    CheckpointCylinderRadius = 5.0,     -- Checkpoint detection cylinder radius (meters)
    CheckpointCylinderHeight = 0.0,     -- Checkpoint detection cylinder height
    MinPlayersForRanked = 3,       -- Minimum players for ranked race
    Elo = {
        DefaultElo = 1000,         -- Starting ELO for new players
        KFactor = 32,              -- ELO K factor (experienced players)
        KFactorProvisional = 40,   -- ELO K factor (new players, faster rating change)
    },
    PrizePercentages = {
        First = 50,                -- 1st place prize percentage
        Second = 30,               -- 2nd place prize percentage
        Third = 20,                -- 3rd place prize percentage
    },
}

-- GPS/navigation settings
Config.IgnoreRoadsForGps = false   -- true = GPS uses roads only (false = allows shortcuts)
Config.ShowGpsRoute = true         -- Show GPS route on map during race
Config.ShowUiWaypoints = true      -- Show waypoint markers on screen
Config.UseUglyWaypoint = false     -- Use old/ugly waypoint style
Config.ShowNewWaypoints = true     -- Use new waypoint style
Config.MarkAmountOfCheckpointsAhead = 5  -- How many checkpoints ahead to show (minimap/UI)
Config.Gps = { color = 12 }        -- GPS route color (GTA color ID)

-- Prop/object options for start, checkpoint and finish points
Config.RouteObjects = {
    ["start"] = {  -- Start line objects
        { propName = "drawmarker" },
        { img = "img/icons/prop_beachflag_le.png",     propName = "prop_beachflag_le" },
        { img = "img/icons/prop_golfflag.png",     propName = "prop_golfflag" },
        { img = "img/icons/prop_beachflag_01.png",     propName = "prop_beachflag_01" },
        { img = "img/icons/prop_beachflag_02.png",     propName = "prop_beachflag_02" },
        { img = "img/icons/prop_tyre_wall_01.png",     propName = "prop_tyre_wall_01" },
        { img = "img/icons/stt_prop_tyre_wall_01.png",     propName = "stt_prop_tyre_wall_01" },
    },
    ["checkpoint"] = {  -- Checkpoint objects (flags, cones, tires, etc.)
        { propName = "drawmarker" },
        { img = "img/icons/prop_offroad_tyres02.png",    propName = "prop_offroad_tyres02" },
        { img = "img/icons/stt_prop_tyre_wall_01.png",    propName = "stt_prop_tyre_wall_01" },
        { img = "img/icons/prop_offroad_tyres01_tu.png",    propName = "prop_offroad_tyres01_tu" },
        { img = "img/icons/prop_offroad_tyres01.png",   propName = "prop_offroad_tyres01" },
        { img = "img/icons/prop_mp_cone_01.png",     propName = "prop_mp_cone_01" },
        { img = "img/icons/prop_roadcone01a.png",    propName = "prop_roadcone01a" },
        { img = "img/icons/prop_roadcone01b.png",    propName = "prop_roadcone01b" },
        { img = "img/icons/prop_air_conelight.png",    propName = "prop_air_conelight" },
        { img = "img/icons/prop_mp_cone_04.png",    propName = "prop_mp_cone_04" },
    },
    ["finish"] = {  -- Finish line objects
        { propName = "drawmarker" },
        { img = "img/icons/prop_beachflag_le.png",     propName = "prop_beachflag_le" },
        { img = "img/icons/prop_golfflag.png",     propName = "prop_golfflag" },
        { img = "img/icons/prop_beachflag_01.png",     propName = "prop_beachflag_01" },
        { img = "img/icons/prop_beachflag_02.png",     propName = "prop_beachflag_02" },
        { img = "img/icons/prop_tyre_wall_01.png",     propName = "prop_tyre_wall_01" },
        { img = "img/icons/stt_prop_tyre_wall_01.png",     propName = "stt_prop_tyre_wall_01" },
    },
}

-- Returns translation text for key; returns key itself if not found
function getLocale(key)
    return Config.locales[Config.Locale][key] or key
end

discord_banner


Code is accessible Yes / No
Subscription-based No
Requirements QB / QBOX / ESX and ak4y-core (free with script)
Multiplayer Support Yes
Support Yes
1 Like

looks solid overall