[ESX, QB, OX] Advanced Taxi Job

Hey everyone! :waving_hand:

We’re proud to introduce Advanced Taxi Job – a fully progression-based, career-style taxi system designed for RP servers that want more than just β€œdrive from A to B”.

This script turns taxi driving into a long-term profession with levels, vehicle unlocks, tasks, upgrades, and real motivation to keep working.
No more boring taxi jobs – every ride now matters.


:taxi: Advanced Taxi Job – A Real Career, Not Just a Job

Drive. Progress. Unlock. Earn.
Advance Taxi Job transforms taxi driving into a real RP career with depth, goals, and progression.


:star: Key Features

  • :oncoming_taxi: Full Career Progression System – Level up by driving, unlock content, and grow as a taxi driver
  • :chart_increasing: Experience & Level System – Earn EXP per kilometer and advance naturally
  • :automobile: Vehicle Unlock System – New taxis require both level AND unlock points
  • :bullseye: Tasks & Challenges – Daily, weekly, and monthly tasks with rewards
  • :wrench: Upgrade System – Improve earnings, EXP gain, and job availability
  • :money_bag: Distance-Based Taximeter – Fair pricing, no time charging, only distance
  • :round_pushpin: Passenger Selection System – Choose where you want to pick up passengers from the menu
  • :globe_showing_europe_africa: Configurable Passenger Spawns – Passengers can spawn anywhere you define
  • :star: Tiered Taxi Vehicles – Each taxi has level requirements, rating, and deposit
  • :bar_chart: Statistics System – Track rides, distance, earnings, and performance
  • :gear: Highly Configurable – Adjust everything to fit your economy and RP style

:automobile: Vehicle Progression That Actually Matters

Leveling up is not enough.

To unlock new taxi vehicles, drivers must:

  • Reach the required level
  • Earn unlock points from tasks and challenges
  • Spend points to unlock new taxis

This makes progression meaningful and rewarding.


:round_pushpin: Passenger System – You Choose How You Work

  • Passengers spawn across the map (fully configurable)
  • Players can choose pickup locations from the menu
  • Multiple destination zones
  • Dynamic distances and payouts

Work smart, not random.


:money_bag: Realistic Taximeter

  • Start price for every ride
  • Price per kilometer
  • Live calculation
  • Optional tips
  • No time charging – only distance

Fair, transparent, and RP-friendly.


:bullseye: Tasks, Challenges & Rewards

Keep gameplay fresh with tasks such as:

  • Transport X passengers
  • Drive X kilometers
  • Complete multiple rides
  • Earn a target amount

Rewards include:

  • :dollar_banknote: Money
  • :chart_increasing: Experience
  • :unlocked: Unlock points

:bar_chart: Statistics & Motivation

Players can track:

  • Total rides
  • Distance driven
  • Earnings
  • Performance over time

Perfect for competitive or progression-focused servers.


:gear: Easy to Configure

The script is fully configurable:

  • Passenger locations
  • Destination zones
  • Vehicles & tiers
  • Levels & EXP scaling
  • Tasks & rewards
  • Economy balance
  • Upgrades & progression

Works with ESX, QBcore and QBox and uses ox_lib for interactions.


:gear: CONFIG

Config = {}

Config.Framework = 'ESX'                                -- Framework used: 'ESX' or 'QBcore'
Config.OxLib = true                                      -- Use ox_lib (true/false)

Config.Language = 'en'                                   -- Language
-- Available languages:
-- 'pl'  - Polish
-- 'en'  - English
-- 'fr'  - French
-- 'de'  - German
-- 'es'  - Spanish
-- 'it'  - Italian
-- 'pt'  - Portuguese
-- 'sv'  - Swedish
-- 'tr'  - Turkish

Config.DistanceUnit = 'km'                               -- Distance unit: 'km' (kilometers) or 'mile' (miles)

Config.Job = {
    requireJob = false,                                   -- Require specific job to use taxi system (true/false)
    jobName = 'taxi',                                     -- Job name required (only if requireJob = true)
    jobLabel = 'Taxi Driver'                              -- Job label (for display purposes)
}

Config.Debug = {
    enabled = false,                                      -- Enable debug mode (true/false)
    print = false,                                       -- Print debug messages to console
    commands = false                                     -- Enable debug commands
}

Config.NPC = {
    coords = vector4(895.0, -179.0, 74.5, 240.0),       -- NPC coordinates (x, y, z, heading)
    model = 's_m_y_construct_01',                        -- NPC model name
    scenario = 'WORLD_HUMAN_CLIPBOARD',                  -- NPC scenario/animation
    blip = {
        enabled = true,                                  -- Enable blip on map (true/false)
        sprite = 198,                                   -- Blip sprite ID
        color = 5,                                       -- Blip color ID
        scale = 0.8,                                     -- Blip scale
        label = 'Taxi Office'                            -- Blip label
    }
}

Config.VehicleLocations = {
    spawns = {                                       -- Multiple spawn locations (will try each until free spot found)
        vector4(899.0, -181.0, 73.0, 53.0),          -- Vehicle spawn location 1 (x, y, z, heading)
    },
    spawnCheckRadius = 3.0,                             -- Radius to check if spawn location is free (in meters)
    returnZone = {
        coords = vector3(895.0, -179.0, 74.0),          -- Vehicle return zone center
        radius = 10.0                                    -- Return zone radius (in meters)
    }
}

Config.VehicleRegistrationPrefix = 'NRG '               -- Prefix for vehicle registration plate

Config.Vehicles = {
    {
        model = 'taxi',                                  -- Vehicle model name
        label = 'Standard Taxi',                        -- Vehicle display name
        stars = 1,                                       -- Vehicle star rating (1-5)
        levelRequired = 1,                               -- Required player level to use
        deposit = 500,                                   -- Deposit amount required to spawn vehicle
        unlockPoints = 0,                                -- Points required to unlock (0 = unlocked from start)
        price = 0                                        -- Vehicle purchase price (0 = free)
    },
    {
        model = 'taxi2',                                 -- Vehicle model name
        label = 'Better Taxi',                          -- Vehicle display name
        stars = 2,                                      -- Vehicle star rating (1-5)
        levelRequired = 3,                              -- Required player level to use
        deposit = 1000,                                  -- Deposit amount required to spawn vehicle
        unlockPoints = 50,                              -- Points required to unlock
        price = 0                                       -- Vehicle purchase price (0 = free)
    },
    {
        model = 'taxi3',                                 -- Vehicle model name
        label = 'Premium Taxi',                          -- Vehicle display name
        stars = 3,                                      -- Vehicle star rating (1-5)
        levelRequired = 5,                              -- Required player level to use
        deposit = 2000,                                  -- Deposit amount required to spawn vehicle
        unlockPoints = 150,                             -- Points required to unlock
        price = 0                                       -- Vehicle purchase price (0 = free)
    },
    {
        model = 'taxi4',                                 -- Vehicle model name
        label = 'Luxury Taxi',                          -- Vehicle display name
        stars = 4,                                      -- Vehicle star rating (1-5)
        levelRequired = 8,                              -- Required player level to use
        deposit = 3500,                                  -- Deposit amount required to spawn vehicle
        unlockPoints = 300,                             -- Points required to unlock
        price = 0                                       -- Vehicle purchase price (0 = free)
    },
    {
        model = 'taxi5',                                 -- Vehicle model name
        label = 'Elite Taxi',                           -- Vehicle display name
        stars = 5,                                      -- Vehicle star rating (1-5)
        levelRequired = 10,                             -- Required player level to use
        deposit = 5000,                                  -- Deposit amount required to spawn vehicle
        unlockPoints = 500,                             -- Points required to unlock
        price = 0                                       -- Vehicle purchase price (0 = free)
    }
}

Config.Levels = {
    maxLevel = 50,                                      -- Maximum level (0 = unlimited)
    expPerLevel = {                                     -- EXP required per level (if empty, uses formula)
        -- [1] = 100,                                  -- Level 1 requires 100 EXP
        -- [2] = 250,                                  -- Level 2 requires 250 EXP
        -- If empty, uses formula: baseExp * (level * multiplier)
    },
    baseExp = 100,                                      -- Base EXP (used if expPerLevel is empty)
    expMultiplier = 1.5                                -- EXP multiplier (used if expPerLevel is empty)
}

-- Task types: 'passengers', 'mileage', 'earnings', 'rides'
Config.Tasks = {
    {
        id = 1,                                         -- Unique task ID
        name = 'Daily Transport',                       -- Task name
        description = 'Transport %s passengers within 24 hours', -- Task description (%s = target value)
        type = 'passengers',                            -- Task type
        target = 10,                                   -- Target value to achieve
        timeLimit = 24,                                -- Time limit in hours
        cooldownHours = 12,                            -- Hours to wait before taking this task again
        levelRequired = 1,                             -- Required player level to take task
        rewards = {
            money = 5000,                              -- Money reward
            exp = 100,                                 -- Experience reward
            points = 10                                -- Points reward
        }
    },
    {
        id = 2,                                        -- Unique task ID
        name = 'Mileage Challenge',                    -- Task name
        description = 'Drive %s km within 7 days',    -- Task description
        type = 'mileage',                              -- Task type
        target = 500,                                  -- Target value in kilometers
        timeLimit = 168,                               -- 7 days in hours
        cooldownHours = 24,                            -- Hours to wait before taking this task again
        levelRequired = 2,                             -- Required player level
        rewards = {
            money = 10000,                             -- Money reward
            exp = 250,                                 -- Experience reward
            points = 25                                -- Points reward
        }
    },
    {
        id = 3,                                        -- Unique task ID
        name = 'Monthly Earnings',                     -- Task name
        description = 'Earn %s$ within 30 days',       -- Task description
        type = 'earnings',                             -- Task type
        target = 50000,                                -- Target value in dollars
        timeLimit = 720,                               -- 30 days in hours
        cooldownHours = 48,                            -- Hours to wait before taking this task again
        levelRequired = 5,                            -- Required player level
        rewards = {
            money = 20000,                             -- Money reward
            exp = 500,                                 -- Experience reward
            points = 50                                -- Points reward
        }
    },
    {
        id = 4,                                        -- Unique task ID
        name = 'Ride Master',                          -- Task name
        description = 'Complete %s rides within 24 hours', -- Task description
        type = 'rides',                                -- Task type: count completed rides
        target = 5,                                    -- Target value (number of rides)
        timeLimit = 24,                                -- Time limit in hours
        cooldownHours = 12,                            -- Hours to wait before taking this task again
        levelRequired = 1,                             -- Required player level
        rewards = {
            money = 3000,                              -- Money reward
            exp = 75,                                  -- Experience reward
            points = 8                                 -- Points reward
        }
    }
}

Config.Taximeter = {
    startPrice = 50.0,                                  -- Initial price when passenger enters
    pricePerKm = 7.5,                                  -- Price per kilometer
    pricePerMinute = 1.5,                              -- Price per minute (optional)
    minTip = 10,                                        -- Minimum tip amount
    maxTip = 90,                                       -- Maximum tip amount
    tipChance = 0.3,                                   -- Chance to receive tip (0.0 - 1.0) - only if passenger not cheated
    updateInterval = 1000,                             -- Update interval in milliseconds
    expPerKm = 5                                       -- Experience points per kilometer traveled
}

Config.PassengerLocations = {
    {
        name = 'Airport',                    -- Location name
        coords = vector4(-1037.0, -2737.0, 20.0, 150.0), -- Location coordinates (x, y, z, heading)
        spawnRadius = 5.0                             -- Passenger spawn radius around location
    },
    {
        name = 'City Center',             -- Location name
        coords = vector4(216.0, -800.0, 30.0, 67.0), -- Location coordinates
        spawnRadius = 5.0                             -- Passenger spawn radius
    },
    {
        name = 'Beach',                             -- Location name
        coords = vector4(-1207.0, -1545.0, 4.0, 323.0), -- Location coordinates
        spawnRadius = 5.0                             -- Passenger spawn radius
    },
    {
        name = 'Hospital',                        -- Location name
        coords = vector4(385.0, -572.0, 28.0, 159.0),  -- Location coordinates
        spawnRadius = 5.0                             -- Passenger spawn radius
    },
    {
        name = 'Police Station',           -- Location name
        coords = vector4(412.0, -987.0, 29.0, 180.0), -- Location coordinates
        spawnRadius = 5.0                             -- Passenger spawn radius
    },
    {
        name = 'Train Station',                        -- Location name
        coords = vector4(-237.0, -980.0, 29.0, 247.0), -- Location coordinates
        spawnRadius = 5.0                             -- Passenger spawn radius
    }
}

Config.Keybind = {
    openWorkMenu = 'F11',                              -- Key to open work menu in vehicle
    key = 'F11'                                        -- Key code (F11)
}

Config.DestinationLocations = {
    {
        name = 'Airport',                              -- Location name
        coords = vector4(-1037.0, -2737.0, 20.0, 150.0), -- Location coordinates (x, y, z, heading)
        radius = 50.0                                 -- Spawn radius around location (in meters)
    },
    {
        name = 'City Center',                   -- Location name
        coords = vector4(218.0, -817.0, 30.0, 191.0), -- Location coordinates
        radius = 50.0                                 -- Spawn radius
    },
    {
        name = 'Beach',                                 -- Location name
        coords = vector4(-1197.0, -1550.0, 4.0, 1.0), -- Location coordinates
        radius = 50.0                                 -- Spawn radius
    },
    {
        name = 'Hospital',                             -- Location name
        coords = vector4(385.0, -572.0, 28.0, 159.0),  -- Location coordinates
        radius = 50.0                                 -- Spawn radius
    },
    {
        name = 'Police Station',                       -- Location name
        coords = vector4(412.0, -987.0, 29.0, 180.0), -- Location coordinates
        radius = 50.0                                 -- Spawn radius
    },
    {
        name = 'Train Station',                        -- Location name
        coords = vector4(-237.0, -980.0, 29.0, 247.0), -- Location coordinates
        radius = 50.0                                 -- Spawn radius
    },
    {
        name = 'Shopping Mall',                             -- Location name
        coords = vector4(-69.0, -1777.0, 28.0, 138.0),  -- Location coordinates
        radius = 50.0                                 -- Spawn radius
    },
    {
        name = 'Downtown',                             -- Location name
        coords = vector4(327.0, -245.0, 53.0, 246.0),  -- Location coordinates
        radius = 50.0                                 -- Spawn radius
    },
    {
        name = 'Suburbs',                               -- Location name
        coords = vector4(-1232.0, -994.0, 5.0, 120.0), -- Location coordinates
        radius = 50.0                                 -- Spawn radius
    },
    {
        name = 'Industrial Area',                     -- Location name
        coords = vector4(956.0, -1961.0, 30.0, 170.0), -- Location coordinates
        radius = 50.0                                 -- Spawn radius
    }
}

Config.Jobs = {
    refreshInterval = 30000,                          -- Refresh jobs every X milliseconds (30000 = 30 seconds)
    refreshOnComplete = true,                          -- Refresh jobs after completing a job (true/false)
    jobExpireTime = 3600000,                          -- Job expiration time in milliseconds (3600000 = 1 hour)
    maxJobsToShow = 3                                  -- Number of jobs to display in the menu
}

Config.Passenger = {
    gpsDistanceMultiplier = 1.8,                      -- Multiplier for GPS distance (radial distance * this = approximate GPS route distance)
    enableCheatDetection = true,                       -- Enable cheating detection (true/false) - disabled by default as GPS routes vary greatly
    detectionRadius = 100.0,                           -- Cheating detection radius (in meters)
    routeDeviationThreshold = 5.0,                     -- Route deviation threshold (multiplier - 5.0 = 500% of direct distance)
    complaintChance = 0.2,                             -- Chance of passenger complaint when cheating detected
    stopChance = 0.05,                                 -- Chance of passenger stopping and leaving when cheating detected
    penaltyPercent = 0.5,                              -- Penalty percentage when cheating detected (0.5 = 50%)
    checkInterval = 10000,                             -- How often to check for cheating (in milliseconds)
    minDistanceToCheck = 1000.0,                       -- Minimum distance traveled before checking (in meters)
    maxTimeAwayFromRoute = 30000                       -- Maximum time (ms) moving away from destination before complaint (30000 = 30 seconds)
}

Config.Statistics = {
    ranges = {
        last24h = 24,                                  -- Last 24 hours (in hours)
        last7days = 168,                               -- Last 7 days (in hours)
        last30days = 720,                              -- Last 30 days (in hours)
        total = 0                                      -- Total (0 = all data)
    }
}

-- Upgrades System Configuration
-- Each upgrade can be leveled up multiple times (maxLevel)
-- Bonus values are cumulative (sum of all levels up to current)
Config.Upgrades = {
    {
        id = 'bonus_exp',                              -- Unique upgrade ID (used in database)
        name = 'Experience+',                          -- Display name
        description = '+%s%% EXP per ride',            -- Description (%s = total bonus value)
        icon = 'graduation-cap',                       -- FontAwesome icon
        maxLevel = 5,                                  -- Maximum upgrade level
        bonusPerLevel = {                              -- Bonus gained at each level (cumulative)
            [1] = 5,                                   -- Level 1: +5% EXP
            [2] = 5,                                   -- Level 2: +10% EXP (5+5)
            [3] = 10,                                  -- Level 3: +20% EXP (5+5+10)
            [4] = 10,                                  -- Level 4: +30% EXP (5+5+10+10)
            [5] = 20                                   -- Level 5: +50% EXP (5+5+10+10+20)
        },
        costPerLevel = {                               -- Cost in points for each level
            [1] = 20,                                  -- Level 1 costs 20 points
            [2] = 40,                                  -- Level 2 costs 40 points
            [3] = 70,                                  -- Level 3 costs 70 points
            [4] = 100,                                 -- Level 4 costs 100 points
            [5] = 150                                  -- Level 5 costs 150 points
        }
    },
    {
        id = 'bonus_earnings',                         -- Unique upgrade ID
        name = 'Earnings+',                            -- Display name
        description = '+%s%% earnings per ride',       -- Description
        icon = 'dollar-sign',                          -- FontAwesome icon
        maxLevel = 5,                                  -- Maximum upgrade level
        bonusPerLevel = {                              -- Bonus gained at each level (cumulative)
            [1] = 5,                                   -- Level 1: +5%
            [2] = 5,                                   -- Level 2: +10%
            [3] = 10,                                  -- Level 3: +20%
            [4] = 10,                                  -- Level 4: +30%
            [5] = 20                                   -- Level 5: +50%
        },
        costPerLevel = {
            [1] = 25,
            [2] = 50,
            [3] = 90,
            [4] = 140,
            [5] = 200
        }
    },
    {
        id = 'bonus_jobs',                             -- Unique upgrade ID
        name = 'Jobs+',                                -- Display name
        description = '+%s visible jobs',              -- Description
        icon = 'list-check',                           -- FontAwesome icon
        maxLevel = 5,                                  -- Maximum upgrade level
        bonusPerLevel = {                              -- Bonus gained at each level (cumulative)
            [1] = 1,                                   -- Level 1: +1 job
            [2] = 1,                                   -- Level 2: +2 jobs
            [3] = 1,                                   -- Level 3: +3 jobs
            [4] = 2,                                   -- Level 4: +5 jobs
            [5] = 2                                    -- Level 5: +7 jobs
        },
        costPerLevel = {
            [1] = 15,
            [2] = 30,
            [3] = 50,
            [4] = 80,
            [5] = 120
        }
    }
}

Config.SavaToSQL = true                                -- Save data to SQL database (true/false)


:camera_with_flash: Preview

:movie_camera: Video Preview: YouTube


:credit_card: Download


Dependencies


Turn taxi driving into a real profession.
Let players grind, unlock, upgrade, and progress – one ride at a time. :taxi::fire:

Advanced Taxi Job – because civilian jobs should be fun too.

:information_source: Final Information

Code is accessible Escrow
Subscription-based No
Lines (approximately) ~4000
Requirements Yes ox_lib, ox_target/qb-target and oxmysql
Support Yes

:package: NRG Releases on CFX

Advanced SIM Card System
Advanced SIM Card System
For LB_phone
NRG Alco Effect System
NRG Alco Effect System
Realistic Drunk Effect
NRG HUD
NRG HUD
Customizable & Modern
NRG Pro Meter
NRG Pro Meter
Vehicle Performance Test
NRG Stress System
NRG Stress System
Psychology & Immersive
5 Likes