[MODULE 01: ABOUT & OVERVIEW]

🚗 About WD Career Chopshop

Welcome to WD Career Chopshop, an advanced, fully-featured, modular vehicle recovery, dismantling, and scrap trading career system built for FiveM.


🌟 Overview & Core Concept

WD Career Chopshop introduces an immersive mechanic & salvager job pipeline to your server. Players engage in dynamic vehicle recovery contracts, transport damaged or abandoned vehicles with flatbed tow trucks, carefully dismantle parts using specialized mechanical tools, crush stripped frames, and trade harvested components for cash and crafting materials.

The resource is engineered from the ground up to support multiple frameworks out of the box with zero boilerplate configuration needed.


🧩 Architectural Design

1. Zero-Config Multi-Framework Bridge

The script features an autonomous bridge layer that identifies the server environment during runtime:

  • Frameworks Supported:
    • qbx_core (Qbox)
    • qb-core (QBCore)
    • es_extended (ESX Legacy & Classic)
    • Standalone (Custom / Native builds)
  • Targeting Systems:
    • ox_target
    • qb-target
    • qbx_target
  • Inventory Engines:
    • ox_inventory
    • qb-inventory
    • ps-inventory
    • qs-inventory
  • Menu Systems:
    • ox_lib context menus
    • qb-menu

🎮 Key Features & Gameplay Mechanics

1. Dynamic Job Generation & Dispatch HUD

  • Tow Contracts: Jobs are generated dynamically across Los Santos and Blaine County at configured intervals.
  • Smart Live Dispatch Timer: While racing to locate and tow the assigned target vehicle, players receive a live countdown HUD on their screen. When the timer hits $\le 30$ seconds, warning audio alerts the driver.
  • Auto-HUD Disarm: Once the vehicle is winched / attached to the flatbed tow truck, the timer automatically dismisses.
  • Distance Payouts: Vehicle pickups further away award bonus cash per mile to reimburse fuel and time.

2. Immersive Part Dismantling

Each part of the vehicle has dedicated interaction bones, tool requirements, multi-stage animations, sound effects, and visual particle effects:

PartRequired ToolAnimation / FX BehaviorResult Item
Doors, Hood, Trunkchop_sawCircular saw stance with synchronized metal sparks (scr_paletoscore) at bladecardoor, carhood, cartrunk
Wheels & RimsimpactdriverPneumatic drill audio, lug nut unscrewing sound, tire removalcarwheel (Intact) / chop_lqrim1 (Popped)
BatteryNoneEngine bay inspection, wrenching animation & ratchet SFXcarbattery
RadiatorNoneEngine bay dismantling, coolant drainage audio & wrenchingradiatorpart
GearboxNoneHeavy transmission extraction animationgearbox
ExhaustNoneSliding under rear chassis mechanics (mech2 stance)exhaust
Stripped FrameNoneKeyfob / console press triggering hydraulic crushingValuable end items (chop_gps, chop_hqrim, chop_speaker, chop_stereo, chop_sub)

3. Progressive Career & Challenge System

  • Career Ranks: Players advance through ranks (Rookie $\rightarrow$ Scrapper $\rightarrow$ Specialist $\rightarrow$ Chop Pro $\rightarrow$ Master Salvager) as they complete dispatches and scrap cars.
  • Daily & Weekly Challenges: Dynamic tasks that award cash bonuses upon completion (e.g. Chop 4 vehicle doors, Dismantle 4 wheels, Earn $10,000 from contracts).
  • Ledger History: Tracks every transaction and payout persistently in MySQL database tables (wd_chopshop_players and wd_chopshop_transactions).

4. Scrap Material Trading Post

  • Harvested parts can be traded to Jack at the trade depot for cash and tiered crafting materials:
    • Plastics & Synthetics: plastic, polymer, polyethylene, carbon
    • Metals: steel, iron, stainlesssteel, scrapmetal, rustedmetal, aluminium
    • Rubber & Wiring: rubber, silicone, wires, copperwires, electronics
    • Vehicle Parts: tirekit, brakepad, suspensionpart, clutchkit

5. In-Game Tablet Application

  • Includes a responsive Next.js web application formatted to match modern tablet bezels (such as wd-tablet).
  • Accessible via:
    • Command: /sal
    • Client Export: exports['wd_career_chopshop']:openTablet()
    • In-vehicle prompt when sitting inside a rented tow truck.

🗄️ Database Schema

The script automatically executes and manages its own database schema on server startup:

  1. wd_chopshop_players: Stores citizen ID, completed contract count, total earnings, active challenges, and rank.
  2. wd_chopshop_transactions: Historical ledger recording payouts, challenge bonuses, and trade transactions.
[MODULE 02: INSTALLATION & SETUP]

🛠️ WD Career Chopshop - Installation Guide

This guide provides step-by-step instructions for installing, configuring, and verifying wd_career_chopshop (wd_chopshop) on any FiveM server environment.


1. Prerequisites & Dependencies

Ensure your server is running the following components:

Mandatory Dependencies

DependencyDescription
ox_libUI components, notifications, progress circles, callbacks.
oxmysql or MySQLAsync database driver for player stats & challenge caching.
Target Systemox_target, qb-target, or qbx_target.
Frameworkqbx_core, qb-core, es_extended, or Custom Standalone.

Optional Enhancements

  • interact-sound or erp-sounds: For custom mechanical SFX (native GTA V SoundSets are used as automated fallbacks).
  • wd-tablet: If you use a dedicated tablet ecosystem.

2. Folder Placement

Place the wd_chopshop folder in your resources directory:

resources/
└── [wd]/
    └── wd_chopshop/

3. Inventory Items & Images Setup

A. ox_inventory Setup

1. Copy Images:

Copy all image files from install/imgs/ into:

resources/[ox]/ox_inventory/web/images/

2. Register Items:

Open ox_inventory/data/items.lua and paste the following items into your return table:

-- ============================================================
-- WD CAREER CHOPSHOP ITEMS
-- ============================================================

-- Tools
['chop_saw'] = {
    label = 'Chop Saw',
    weight = 2500,
    stack = false,
    close = true,
    description = 'Heavy-duty circular saw for cutting vehicle panels.',
    client = { image = 'chop_saw.png' }
},
['impactdriver'] = {
    label = 'Impact Driver',
    weight = 1500,
    stack = false,
    close = true,
    description = 'High-torque pneumatic driver for removing lug nuts and bolts.',
    client = { image = 'impactdriver.png' }
},

-- Harvested Vehicle Parts
['cardoor'] = {
    label = 'Car Door',
    weight = 6000,
    stack = true,
    close = true,
    description = 'Detached vehicle door.',
    client = { image = 'cardoor.png' }
},
['carhood'] = {
    label = 'Car Hood',
    weight = 7000,
    stack = true,
    close = true,
    description = 'Detached vehicle bonnet.',
    client = { image = 'carhood.png' }
},
['cartrunk'] = {
    label = 'Car Trunk',
    weight = 6000,
    stack = true,
    close = true,
    description = 'Detached vehicle trunk lid.',
    client = { image = 'cartrunk.png' }
},
['carwheel'] = {
    label = 'Car Wheel',
    weight = 4000,
    stack = true,
    close = true,
    description = 'Intact wheel and tire.',
    client = { image = 'carwheel.png' }
},
['carbattery'] = {
    label = 'Car Battery',
    weight = 2500,
    stack = true,
    close = true,
    description = '12V Lead-acid automotive battery.',
    client = { image = 'carbattery.png' }
},
['exhaust'] = {
    label = 'Exhaust Pipe',
    weight = 4500,
    stack = true,
    close = true,
    description = 'Stainless steel exhaust pipe section.',
    client = { image = 'exhaust.png' }
},
['gearbox'] = {
    label = 'Gearbox',
    weight = 9000,
    stack = true,
    close = true,
    description = 'Automotive transmission gearbox.',
    client = { image = 'gearbox.png' }
},
['radiatorpart'] = {
    label = 'Radiator',
    weight = 3500,
    stack = true,
    close = true,
    description = 'Vehicle engine cooling radiator.',
    client = { image = 'radiatorpart.png' }
},

-- Valuables & Audio
['chop_gps'] = {
    label = 'Navigation Unit',
    weight = 500,
    stack = true,
    description = 'GPS tracking and navigation module.',
    client = { image = 'chop_gps.png' }
},
['chop_hqrim'] = {
    label = 'High Quality Rim',
    weight = 3000,
    stack = true,
    description = 'Forged alloy performance rim.',
    client = { image = 'chop_hqrim.png' }
},
['chop_lqrim1'] = {
    label = 'Steel Rim',
    weight = 2500,
    stack = true,
    description = 'Stock steel wheel rim.',
    client = { image = 'chop_lqrim1.png' }
},
['chop_speaker'] = {
    label = 'Door Speaker',
    weight = 800,
    stack = true,
    description = 'Salvaged vehicle audio speaker.',
    client = { image = 'chop_speaker.png' }
},
['chop_stereo'] = {
    label = 'Car Stereo',
    weight = 1200,
    stack = true,
    description = 'Aftermarket head unit receiver.',
    client = { image = 'chop_stereo.png' }
},
['chop_sub'] = {
    label = 'Subwoofer',
    weight = 3500,
    stack = true,
    description = 'High-output audio subwoofer.',
    client = { image = 'chop_sub.png' }
},

B. qb-inventory / ps-inventory / qs-inventory Setup

1. Copy Images:

  • For qb-inventory: Copy .png files from install/imgs/ to resources/[qb]/qb-inventory/html/images/
  • For ps-inventory: Copy .png files from install/imgs/ to resources/[ps]/ps-inventory/html/images/
  • For qs-inventory: Copy .png files from install/imgs/ to resources/[qs]/qs-inventory/html/images/

2. Register Items:

Open qb-core/shared/items.lua and add the items into QBShared.Items:

-- ============================================================
-- WD CAREER CHOPSHOP ITEMS
-- ============================================================

-- Tools
['chop_saw']                       = {['name'] = 'chop_saw',                       ['label'] = 'Chop Saw',                 ['weight'] = 2500, ['type'] = 'item', ['image'] = 'chop_saw.png',                 ['unique'] = false, ['useable'] = false, ['shouldClose'] = true,   ['combinable'] = nil,   ['description'] = 'Heavy-duty circular saw for metal cutting.'},
['impactdriver']                   = {['name'] = 'impactdriver',                   ['label'] = 'Impact Driver',             ['weight'] = 1500, ['type'] = 'item', ['image'] = 'impactdriver.png',             ['unique'] = false, ['useable'] = false, ['shouldClose'] = true,   ['combinable'] = nil,   ['description'] = 'Pneumatic tool for removing lug nuts.'},

-- Harvested Vehicle Parts
['cardoor']                        = {['name'] = 'cardoor',                        ['label'] = 'Car Door',                  ['weight'] = 6000, ['type'] = 'item', ['image'] = 'cardoor.png',                  ['unique'] = false, ['useable'] = false, ['shouldClose'] = true,   ['combinable'] = nil,   ['description'] = 'Detached vehicle door.'},
['carhood']                        = {['name'] = 'carhood',                        ['label'] = 'Car Hood',                  ['weight'] = 7000, ['type'] = 'item', ['image'] = 'carhood.png',                  ['unique'] = false, ['useable'] = false, ['shouldClose'] = true,   ['combinable'] = nil,   ['description'] = 'Detached vehicle hood.'},
['cartrunk']                       = {['name'] = 'cartrunk',                       ['label'] = 'Car Trunk',                 ['weight'] = 6000, ['type'] = 'item', ['image'] = 'cartrunk.png',                 ['unique'] = false, ['useable'] = false, ['shouldClose'] = true,   ['combinable'] = nil,   ['description'] = 'Detached vehicle trunk.'},
['carwheel']                       = {['name'] = 'carwheel',                       ['label'] = 'Car Wheel',                 ['weight'] = 4000, ['type'] = 'item', ['image'] = 'carwheel.png',                 ['unique'] = false, ['useable'] = false, ['shouldClose'] = true,   ['combinable'] = nil,   ['description'] = 'Intact vehicle wheel.'},
['carbattery']                     = {['name'] = 'carbattery',                     ['label'] = 'Car Battery',               ['weight'] = 2500, ['type'] = 'item', ['image'] = 'carbattery.png',               ['unique'] = false, ['useable'] = false, ['shouldClose'] = true,   ['combinable'] = nil,   ['description'] = '12V Lead-acid battery.'},
['exhaust']                        = {['name'] = 'exhaust',                        ['label'] = 'Exhaust Pipe',              ['weight'] = 4500, ['type'] = 'item', ['image'] = 'exhaust.png',                  ['unique'] = false, ['useable'] = false, ['shouldClose'] = true,   ['combinable'] = nil,   ['description'] = 'Exhaust pipe segment.'},
['gearbox']                        = {['name'] = 'gearbox',                        ['label'] = 'Gearbox',                   ['weight'] = 9000, ['type'] = 'item', ['image'] = 'gearbox.png',                  ['unique'] = false, ['useable'] = false, ['shouldClose'] = true,   ['combinable'] = nil,   ['description'] = 'Transmission gearbox.'},
['radiatorpart']                   = {['name'] = 'radiatorpart',                   ['label'] = 'Radiator',                  ['weight'] = 3500, ['type'] = 'item', ['image'] = 'radiatorpart.png',             ['unique'] = false, ['useable'] = false, ['shouldClose'] = true,   ['combinable'] = nil,   ['description'] = 'Cooling radiator.'},

-- Valuables & Audio
['chop_gps']                       = {['name'] = 'chop_gps',                       ['label'] = 'Navigation Unit',           ['weight'] = 500,  ['type'] = 'item', ['image'] = 'chop_gps.png',                 ['unique'] = false, ['useable'] = false, ['shouldClose'] = true,   ['combinable'] = nil,   ['description'] = 'Stolen GPS unit.'},
['chop_hqrim']                     = {['name'] = 'chop_hqrim',                     ['label'] = 'High Quality Rim',          ['weight'] = 3000, ['type'] = 'item', ['image'] = 'chop_hqrim.png',               ['unique'] = false, ['useable'] = false, ['shouldClose'] = true,   ['combinable'] = nil,   ['description'] = 'Aftermarket alloy rim.'},
['chop_lqrim1']                    = {['name'] = 'chop_lqrim1',                    ['label'] = 'Steel Rim',                 ['weight'] = 2500, ['type'] = 'item', ['image'] = 'chop_lqrim1.png',              ['unique'] = false, ['useable'] = false, ['shouldClose'] = true,   ['combinable'] = nil,   ['description'] = 'Stock steel rim.'},
['chop_speaker']                   = {['name'] = 'chop_speaker',                   ['label'] = 'Door Speaker',              ['weight'] = 800,  ['type'] = 'item', ['image'] = 'chop_speaker.png',             ['unique'] = false, ['useable'] = false, ['shouldClose'] = true,   ['combinable'] = nil,   ['description'] = 'Door audio speaker.'},
['chop_stereo']                    = {['name'] = 'chop_stereo',                    ['label'] = 'Car Stereo',                ['weight'] = 1200, ['type'] = 'item', ['image'] = 'chop_stereo.png',              ['unique'] = false, ['useable'] = false, ['shouldClose'] = true,   ['combinable'] = nil,   ['description'] = 'Car head unit.'},
['chop_sub']                       = {['name'] = 'chop_sub',                       ['label'] = 'Subwoofer',                 ['weight'] = 3500, ['type'] = 'item', ['image'] = 'chop_sub.png',                 ['unique'] = false, ['useable'] = false, ['shouldClose'] = true,   ['combinable'] = nil,   ['description'] = 'High output subwoofer.'},

4. Database Setup

The resource will automatically run CREATE TABLE IF NOT EXISTS queries on server launch. If you prefer to execute the tables manually, run this SQL script in your database manager (HeidiSQL / phpMyAdmin):

CREATE TABLE IF NOT EXISTS `wd_chopshop_players` (
    `citizenid` VARCHAR(64) NOT NULL PRIMARY KEY,
    `name` VARCHAR(100) NOT NULL DEFAULT 'Salvager',
    `completed` INT NOT NULL DEFAULT 0,
    `earned` INT NOT NULL DEFAULT 0,
    `challenges` LONGTEXT NULL,
    `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

CREATE TABLE IF NOT EXISTS `wd_chopshop_transactions` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `citizenid` VARCHAR(64) NOT NULL,
    `description` VARCHAR(255) NOT NULL,
    `amount` INT NOT NULL DEFAULT 0,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

5. Server Configuration (server.cfg)

Add ensure wd_chopshop to your server.cfg after its dependencies:

# Dependencies
ensure oxmysql
ensure ox_lib
ensure qb-core          # Or es_extended / qbx_core
ensure qb-target        # Or ox_target
ensure qb-inventory     # Or ox_inventory

# Chopshop Resource
ensure wd_chopshop

6. Tablet / UI Configuration

  • Open via command: /sal
  • Open via Export:
    exports['wd_career_chopshop']:openTablet()
    
  • Integrate with wd-tablet: Trigger event wd_career_chopshop:client:openTablet from your tablet app icon.

7. Verification & Testing

  1. Start the server and check the console for clean startup logs with no errors.
  2. Head to the Job Ped location at vector4(862.75, -1346.38, 26.04, 95.85) (Jack).
  3. Target Jack to open the job menu.
  4. Rent a Tow Truck (make sure you have $250 in cash).
  5. Open the tablet (/sal) or review available dispatches.
  6. Accept a contract, follow the GPS route, load the vehicle onto the flatbed, and tow it back to the Chop Shop Bay.
  7. Use the chop_saw and impactdriver to chop the vehicle parts and crush the frame.
  8. Visit the Trade Post to sell the parts to Jack.

8. Troubleshooting & FAQ

  • Q: The ped does not show any target options?
    • Fix: Ensure your target script (ox_target or qb-target) is started before wd_chopshop in server.cfg.
  • Q: "You need a saw to chop this door!" message appears?
    • Fix: Ensure the item chop_saw is in your inventory and registered in your inventory item config.
  • Q: Particles/sparks do not emit from the saw?
    • Fix: Make sure your client game build is 2372 or higher (standard GTA V asset scr_paletoscore is loaded natively).
[MODULE 03: CONFIGURATION & EXPORTS]

⚙️ Configuration & Customization Guide

This document provides a comprehensive explanation of every configuration setting available in shared/config.lua and shared/chop_config.lua.


1. shared/config.lua - General Settings

Pricing & Economic Settings

Config.Debug = false
  • Type: boolean
  • Description: When set to true, prints detailed debug information in client and server consoles (e.g. blip coordinates, entity IDs, network control status).
Config.truckPrice = 250
Config.returnPrice = 250
  • truckPrice (number): Deposit amount charged to the player when renting a tow truck from Jack.
  • returnPrice (number): Amount refunded back to the player when returning the tow truck undamaged.
Config.minPartsToReward = 1
  • Type: number
  • Description: The minimum number of components (doors, wheels, battery, etc.) a player must dismantle before they are eligible to claim frame crushing rewards and complete the dispatch.
Config.Payment = { low = 50, high = 52 }
  • Type: table
  • Description: Additional cash payout per mile traveled between the vehicle pickup location and the delivery chop bay. Reimburses fuel and time. A random number between low and high is chosen.

Job & Tow Truck Settings

Config.jobVehicle = {
   { name = "Tow Truck", model = 'flatbed' }, 
}
  • Type: table
  • Description: List of tow trucks available for players to rent. You can add custom flatbed or tow truck models here.
Config.maxJobs = 8
Config.jobRefreshMinutes = 8
  • maxJobs (number): Maximum number of active contracts generated simultaneously on the dispatch board.
  • jobRefreshMinutes (number): Interval (in minutes) after which unaccepted contracts cycle and regenerate with new locations and vehicles.

Salvage Vehicle Spawn Pool

Config.models = { 
    'drafter', 'adder', 'buffalo', 'comet2', 'crusader', 
    'baller4', 'sultan', 'oracle', 'felon', 'kuruma' 
}
  • Type: table of strings
  • Description: Spawn pool of vehicle model names used for recovery contracts. You can add custom addon vehicles or vanilla GTA V models.

Job Ped & Spawn Coordinates

Config.jobPed = {
    name = 'Jack',
    model = `mp_m_weapexp_01`,
    coords = vector4(862.75, -1346.38, 26.04, 95.85),
}
  • name: Display name for the NPC.
  • model: Ped model hash for Jack.
  • coords: vector4(x, y, z, heading) representing the world position of the NPC.
Config.TruckSpawnLocations = {
    vector4(851.72, -1354.94, 26.08, 359.4)
}
  • Type: table of vector4
  • Description: Coords where the rented tow truck spawns upon payment.

Pickup Coordinates Pool

Config.pickupCoords = {
    vector4(172.95, -2539.09, 6.00, 358.87),
    vector4(279.11, -2080.34, 16.75, 203.83),
    -- Add more vector4 coordinates here...
}
  • Type: table of vector4
  • Description: Locations across the map where damaged target vehicles will spawn when a contract is accepted.

Delivery & Trade Zones

Config.deliveryZone = {
    coords = vector4(871.6, -1350.26, 26.31, 98.55),
    size = vec3(34.0, 36.5, 14.0),
    rotation = 0.0,
}
  • Description: Polyzone bounding box around the chop shop garage bay where vehicles must be parked to start chopping.
Config.TradeZone = {
    coords = vector4(153.85, -3210.05, 6.0, 0.0),
    size = vec3(2.0, 5.0, 2.0),
    rotation = 0.0,
}
  • Description: Polyzone bounding box at the docks where players can interact with Jack to trade harvested components for scrap materials.

2. shared/chop_config.lua - Dismantling & Trading

Door & Panel Bone Mappings

ChopConfig.Doors = {
    [0] = { index = 0, boneName = 'door_dside_f', label = 'Driver Door' },
    [1] = { index = 1, boneName = 'door_pside_f', label = 'Passenger Door' },
    [2] = { index = 2, boneName = 'door_dside_r', label = 'Rear Driver Door' },
    [3] = { index = 3, boneName = 'door_pside_r', label = 'Rear Passenger Door' },
    [4] = { index = 4, boneName = 'bonnet',       label = 'Hood' },
    [5] = { index = 5, boneName = 'boot',         label = 'Trunk' },
}
  • Maps native GTA V door indices ($0$ through $5$) to their bone names and user-facing labels.

Part Harvesting & Tool Requirements

ChopConfig.Parts = {
    ['door-0'] = { item = 'cardoor', equipment = 'chop_saw', part = 'body'},
    ['door-4'] = { item = 'carhood', equipment = 'chop_saw', part = 'body'},
    ['door-5'] = { item = 'cartrunk', equipment = 'chop_saw', part = 'body'},
    ['wheel-0'] = { item = 'carwheel', equipment = 'impactdriver', part = 'tires'},
    ['battery'] = { item = 'carbattery', part = 'engine' },
    ['exhaust'] = { item = 'exhaust', part = 'transmission' },
    ['gearbox'] = { item = 'gearbox', part = 'suspension' },
    ['radiator'] = { item = 'radiatorpart', part = 'engine' },
}
  • item: The inventory item rewarded upon successful dismantling.
  • equipment: The tool required in player inventory (chop_saw, impactdriver, or nil for hand tools).
  • part: Category used for tracking daily & weekly challenge progression.

Tire State Drops

ChopConfig.PoppedTireItem = 'chop_lqrim1' -- Item awarded if tire was punctured / flat
ChopConfig.IntactTireItem = 'carwheel'   -- Item awarded if tire was intact

Frame Crush Loot Pool

ChopConfig.endItems = {
    { item_id = 'chop_gps',     low = 1, high = 1 },
    { item_id = 'chop_hqrim',   low = 1, high = 4 },
    { item_id = 'chop_speaker', low = 1, high = 4 },
    { item_id = 'chop_stereo',  low = 1, high = 1 },
    { item_id = 'chop_sub',     low = 1, high = 2 },
    { item_id = 'chop_lqrim1',  low = 1, high = 4 },
}
  • When crushing the stripped frame at the bay, the player receives a randomized quantity between low and high for each item configured in this table.

Trade Post Material Payouts

ChopConfig.TradeItems = {
    ['cardoor'] = {
        cash = { low = 100, high = 180 },
        items = {
            { item = 'plastic', low = 2, high = 4 },
            { item = 'scrapmetal', low = 2, high = 5 },
            { item = 'iron', low = 1, high = 3 },
            { item = 'steel', low = 2, high = 5 },
            { item = 'carbon', amount = 1 },
        }
    },
    -- Additional trade item configurations...
}
  • cash: Random amount of money paid per item traded.
  • items: List of raw crafting materials given. You can use fixed amount = X or randomized low = X, high = Y.

3. Customization Examples

Adding a Custom Addon Vehicle:

Add the spawn code to Config.models in shared/config.lua:

Config.models = {
    'drafter',
    'adder',
    'mycustomcar', -- Your addon vehicle spawn code
}

Adding a New Pickup Coordinate:

Add a new vector4 to Config.pickupCoords in shared/config.lua:

Config.pickupCoords = {
    -- Existing coordinates...
    vector4(-1034.21, -2733.45, 13.76, 120.0), -- New pickup spot at LSIA
}

Adjusting Item Trade Rewards:

Edit ChopConfig.TradeItems['carbattery'] in shared/chop_config.lua:

['carbattery'] = {
    cash = { low = 150, high = 250 }, -- Higher cash payout
    items = {
        { item = 'copperwires', low = 3, high = 6 },
        { item = 'electronics', amount = 2 },
    }
}
[DEPLOY_RESOURCE // ZERO_LATENCY]

Enhance your FiveM server with Legal Chopshop | Advanced Multi-Framework

Instant automated delivery via Tebex with lifetime updates and direct support.

STORE_PAGE
Buy Me a Coffee
Claim your coupons here!