[QBCore/ESX] ADVANCED GANG SYSTEM, TURFS, WARS AND MORE

A script by ZaT

No reviews yet.
[QBCore/ESX] ADVANCED GANG SYSTEM, TURFS, WARS AND MORE main image

Full Description

Revolutionize gang roleplay with zat-gangs, the ultimate gang management system!

This feature-packed script brings immersive gang wars, dynamic turf battles, and endless customization options to your server. Tailored for developers and players alike, this script is fully configurable to meet your unique gameplay needs.

Key Features

  • Gang Wars: Create high-stakes battles with customizable war times, coordinates, and betting systems.
  • Turf System: Control and raid turfs with configurable trust levels, spray mechanics, and raid schedules.
  • Black Market: Enable competitive trading with shop items and adjustable prices.

Developer Customization Options

  • Configure props, currency, and even add or remove turfs.
  • Set max grades and permissions for each gang.
  • Upload diaporama photos to enhance the dashboard experience.
  • Define shop items, black market prices, and garage vehicles with point requirements.
  • Adjust corner-selling settings, airdrop displays, and more.
  • Create unique contracts and missions (note: no default contracts included).
  • Fine-tune minigames and other gang-related mechanics.

Whether it’s defining the rules for gang wars, customizing vehicles for the garage, or managing turf control, zat-gangs empowers server owners to craft a truly unique gang roleplay experience.








Code is accessible 80%
Subscription-based No
Lines (approximately) 20k+
Requirements qb-core, es_extended
Support Yes

Config.lua :

Config = {}
Config.Framework        = 'qb'
Config.UseInteract      = false
Config.Target           = 'ox'
Config.Inventory        = 'ox'
Config.FrameworkPseudo  = 'qb-core'
Config.phone            = 'qb-phone'

Config.Props = {
    ['table'] = {
        item = 'gangtable',
        prop = 'prop_gang_table',
    },
    ['camera'] = {
        item = 'gangcamera',
        prop = 'prop_cctv_cam_01a',
        hack = 'rfid_cloner',
        remove = true, -- removes the hack item after useage or not
    },
    ['stashs'] = {
        item = 'gangstashs',
        prop = 'prop_gang_basket_s',
        remove = true, -- removes the hack item after useage or not
        slots = 5,
    },
    ['stashm'] = {
        item = 'gangstashm',
        prop = 'prop_gang_basket_m',
        remove = true, -- removes the hack item after useage or not
        slots = 15,
    },
}
Config.currency = {
    symbol  = '$',      -- €
    type    = 'USD',    --'EUR'
    gang    = 'GP',     -- Gang Points
}
Config.Turf = {
    spray  = 'spray', -- spray item name
    clean  = 'sprayc', -- spray cleaner item name
    start = 11,
    over  = 01,     
    increase = 0.1, -- the amount the trust increases after each sell drug
    decrease = 0.1, -- the amount the trust decreases after each sell drug from other gangs
    penalty  = 50,  -- 50 points will be reduced from the raided gang points (just after raid ends)
    color = '#ffff', -- default color after spray remove, (check sql in case you want to change the defaults aswell)
    fillColor = '#ffffffc9', -- default color after spray remove, (check sql in case you want to change the defaults aswell)
    icon = 'https://i.ibb.co/nQkq70y/blocked-icon-256x256-fxgkjvxb.png', -- default icon after spray remove, (check sql in case you want to change the defaults aswell)
}
Config.Server = {
    name            = 'Server Name',
    player          = 'https://i.ibb.co/dcNvH30/player.png',
    camera          = 'https://i.ibb.co/ZNq9B03/istockphoto-1448589559-612x612.jpg',
    logo            = 'https://www.shutterstock.com/image-vector/image-icon-trendy-flat-style-600nw-643080895.jpg', -- default gang logo and spray
}
Config.Grades = {
    'Recruit',      -- 0
    'Enforcer',     -- 1
    'Shot Caller',  -- 2
    'Boss'          -- 3
}
Config.Permissions = {
    ['members'] = {2,3}, -- who is able to manage the members (invite, kick, change ranks...)
}
Config.Diaporama = {
    {
        title = 'Urban Power: Gang Life in Los Santos',
        img   = 'https://www.gta-multiplayer.cz/screenshots/original/155224.jpg',
        description = 'A gritty snapshot of gang territory in the heart of Los Santos. Dark streets, flashing lights, and ominous figures paint a picture of power, control, and survival in the chaotic world of GTA 5 FiveM. Will you rise to the top or fall to the streets?'
    },
    {
        title = 'Night Shift: The Fast Lane of Los Santos',
        img   = 'https://c4.wallpaperflare.com/wallpaper/862/266/461/grand-theft-auto-v-fivem-mitsubishi-evolution-mitsubishi-lancer-evo-x-hd-wallpaper-preview.jpg',
        description = 'A sleek Mitsubishi Lancer Evo X roars through the neon-lit streets of Los Santos, embodying speed, danger, and style. In the FiveM underworld, the car you drive can mean the difference between life and death. Are you ready to outrun your rivals?'
    },
    {
        title = 'Brotherhood & Chaos: Gang Wars Unleashed',
        img   = 'https://tehrangaming.com/wp-content/uploads/2024/05/fivem-wallpaper-1400x749-1.jpeg',
        description = 'The gang emerges from the shadows, ready for battle. Guns drawn, loyalty tested, and alliances forged in fire — the streets of Los Santos are their playground in GTA 5 FiveM. Rule the city or be forgotten.'
    },
    {
        title = 'Ruling the City: A Gang’s Dominance',
        img   = 'https://fivemods.io/images/graphics-slider/2a.webp',
        description = 'Dominating the skyline of Los Santos, this gang doesn’t just walk the streets — they own them. In the world of FiveM, it’s not just about surviving; it’s about conquering. Are you bold enough to seize the power?'
    },
}
Config.Shop = {
    {
        name = 'blueprint',
        label= 'Blueprint',
        price= 2,
        rare = 1,
        image= 'https://i.ibb.co/y0Hw0Qf/thermite.png',
        description = 'Thermite is a pyrotechnic composition of metal powder and metal oxide. When ignited by heat or chemical reaction, thermite undergoes an exothermic reduction-oxidation (redox) reaction.',
        info = {
            type = 'thermite'
        },
    },
    {
        name = 'harness',
        label= 'Harness',
        price= 1500,
        rare = 1,
        image= 'https://i.ibb.co/TRdQ0yf/harness.png',
        description = 'A safety harness is a form of protective equipment designed to safeguard the user from injury or death from falling. The core item of a fall arrest system, the harness is usually fabricated from rope, braided wire cable, or synthetic webbing.',
        info = {},
    },
    {
        name = 'handcuffs',
        label= 'Handcuffs',
        price= 750,
        rare = 1,
        image= 'https://i.ibb.co/hByZN9S/handcuffs.png',
        description = 'Handcuffs are restraint devices designed to secure an individuals wrists in proximity to each other. They comprise two parts, linked together by a chain, a hinge, or rigid bar. Each cuff has a rotating arm which engages with a ratchet that prevents it from being opened once closed around a persons wrist. ',
        info = {},
    },
    {
        name = 'fitbit',
        label= 'Fitbit',
        price= 450,
        rare = 1,
        image= 'https://i.ibb.co/Jk9PSqd/fitbit.png',
        description = 'Fitbit is a line of wireless-enabled wearable technology, physical fitness monitors and activity trackers such as smartwatches, pedometers and monitors for heart rate, quality of sleep, and stairs climbed as well as related software. It operated as an American consumer electronics and fitness company from 2007 to 2021.',
        info = {},
    },
    {
        name = 'crafting table',
        label= 'Crafting Table',
        price= 600,
        rare = 2,
        image= 'https://i.ibb.co/RbxXVTQ/craftingtable.png',
        description = 'A workbench is a sturdy table at which manual work is done. They range from simple flat surfaces to very complex designs that may be considered tools in themselves. Workbenches vary in size from tiny jewellers benches to the huge benches used by staircase makers. Almost all workbenches are rectangular in shape, often using the surface, corners and edges as flat/square and dimension standards. ',
        info = {},
    },
    {
        name = 'weapon_gadgetpistol',
        label= 'Golden Pistol',
        price= 1,
        rare = 3,
        image= 'https://i.ibb.co/ByXWrT1/WEAPON-GADGETPISTOL.png',
        description = 'A Sniper Riffle with a high precision scope.',
        info = {},
    },
}
Config.Contracts = {
    {
        id = 1,
        label = 'Roof Running',
        requirements = {
            'Green Laptop',
            'RFID Cloner',
            'Drill',
            'Helmet'
        },
        price = 15,
        available = true,
        image = 'https://www.awheatingandcooling.com/blog/wp-content/uploads/2020/07/Are-Rooftop-AC-Units-Right-for-Your-Business.jpg',
        resource = 'zat-roofrunning',
        text = 'Roof Running mission started, head over to the location and contact the responsable...',
        coords = vector3(574.08, 133.01, 98.47) -- npc location
    },
    {
        id = 2,
        label = 'Laundromat',
        requirements = {
            'Green Laptop',
            'RFID Cloner',
            'Drill',
            'Helmet'
        },
        price = 15,
        available = true,
        image = 'https://www.trycents.com/hubfs/doing-laundry-in-nyc-laundromat-header.jpg',
        resource = 'zat-laundromat',
        text = 'Laundromat mission started, head over to the location and contact the responsable...',
        coords = vector3(574.08, 133.01, 98.47) -- npc location
    },
    {
        id = 3,
        label = 'Cash Exchange',
        requirements = {
            'Green Laptop',
            'RFID Cloner',
            'Drill',
            'Helmet'
        },
        price = 15,
        available = true,
        image = 'https://images.stockcake.com/public/a/d/8/ad82e97a-1cce-452b-9fc8-56a4a24e89f0_large/cash-transaction-exchange-stockcake.jpg',
        resource = 'zat-cashexchange',
        text   = 'Cashexchange mission started, head over to the location and contact the responsable...',
        coords = vector3(574.08, 133.01, 98.47) -- npc location
    },
}
Config.Turfs = {
    -- 1, 2, 3 are the id(s) of the turf in the SQL, so if you change the coordinates(ui coordinates) 
    --in the sql you must change them here aswell (GTA V Coordinates).
    [1] = { 
        coords = {
            vector2(131.68, -2029.12),
            vector2(56.69, -2028.69),
            vector2(-186.67, -1794.75),
            vector2(-24.86, -1629.42),
            vector2(253.29, -1859.93)
        },
        minZ = 5.0,
        maxZ = 40.0,
        debugPoly = false,
        spray = { -- allowed spray locations
            vector3(0.0, 0.0, 0.0),
            vector3(0.0, 0.0, 0.0),
            vector3(0.0, 0.0, 0.0),
            vector3(0.0, 0.0, 0.0),
        }
    },
    [2] = { 
        coords = {
            vector2(168.18, -2031.61),
            vector2(273.26, -1881.52),
            vector2(479.84, -2048.46),
            vector2(345.55, -2186.55)
        },
        minZ = 5.0,
        maxZ = 40.0,
        debugPoly = false,
        spray = { -- allowed spray locations
            vector3(0.0, 0.0, 0.0),
            vector3(0.0, 0.0, 0.0),
            vector3(0.0, 0.0, 0.0),
            vector3(0.0, 0.0, 0.0),
        }
    },
    [3] = { 
        coords = {
            vector2(-180.24, -1766.29),
            vector2(-355.91, -1677.03),
            vector2(-263.49, -1439.83),
            vector2(-128.06, -1378.62),
            vector2(-6.02, -1375.7),
            vector2(91.67, -1354.96),
            vector2(136.34, -1404.59)
        },
        minZ = 5.0,
        maxZ = 40.0,
        debugPoly = false,
        spray = { -- allowed spray locations
            vector3(0.0, 0.0, 0.0),
            vector3(0.0, 0.0, 0.0),
            vector3(0.0, 0.0, 0.0),
            vector3(0.0, 0.0, 0.0),
        }
    },
    [4] = { 
        coords = {
            vector2(451.81, -1622.23),
            vector2(339.57, -1512.21),
            vector2(472.33, -1429.31),
            vector2(524.45, -1437.46),
            vector2(546.0, -1526.81)
        },
        minZ = 5.0,
        maxZ = 40.0,
        debugPoly = false,
        spray = { -- allowed spray locations
            vector3(0.0, 0.0, 0.0),
            vector3(0.0, 0.0, 0.0),
            vector3(0.0, 0.0, 0.0),
            vector3(0.0, 0.0, 0.0),
        }
    },
    [5] = { 
        coords = {
            vector2(819.78, -182.91),
            vector2(874.05, -96.16),
            vector2(965.62, -28.93),
            vector2(1098.58, -115.33),
            vector2(980.48, -290.51)
        },
        minZ = 50.0,
        maxZ = 90.0,
        debugPoly = false,
        spray = { -- allowed spray locations
            vector3(990.18, -154.96, 72.69),
            vector3(957.47, -196.46, 73.2),
            vector3(981.32, -65.47, 74.96),
        }
    },    
}
Config.CornerSeliing = {
    SuccessChance = 50,
    ScamChance = 25,
    RobberyChance = 25,
    MinimumDrugSalePolice = 0,
    Alert = 'qb-core', -- ps-dispatch, -- cd_dispatch
    AlertChance = 99,  --in percentage (if 99, theres the 99% to call the police)
    DrugsPrice = {
        ['joint'] = { -- item name
            label = 'Joint', -- item label
            min = 15,
            max = 24,
        },
    },
    density = true, -- if your ped density is 0 (no npc in the city set this to false)
}
Config.Drop = {
    blip    = {
        sprite = 94,
        color  = 1,
        scale  = 1.0,
        label  = 'Loot Drop'
    },
    prop    = 'prop_drop_armscrate_01',
    plane   = 'titan', 
    pilot   = 's_m_m_pilot_02',
    slots   = 50,
    weight  = 4000000,
    coords  = {
        vector3(-1863.52, 1402.52, 202.78),
        vector3(-801.4, 2568.21, 72.34),
        vector3(300.77, 4323.2, 46.75),
        vector3(1319.44, 3263.8, 36.5),
    },
    
    time    = 15, -- 15 minutes for the drop to come out
    -- !! important in case you want more action in the city :p
    all     = false, -- Inform All Gangs about the drop via phone notifications and gang app mails...

}
Config.Garage = {
    {
        level = 1,
        photo = 'https://docs.fivem.net/vehicles/brioso.webp',
        price = 50,
        model = 'brioso', 
        label = 'Brioso',
        rarity= 1,
    }, 
    {
        level = 2,
        photo = 'https://docs.fivem.net/vehicles/rhapsody.webp',
        price = 100,
        model = 'rhapsody', 
        label = 'Rhapsody',
        rarity= 1,
    }, 
    {
        level = 3,
        photo = 'https://docs.fivem.net/vehicles/chino.webp',
        price = 150,
        model = 'chino', 
        label = 'Chino',
        rarity= 2,
    }, 
    {
        level = 4,
        photo = 'https://docs.fivem.net/vehicles/buccaneer2.webp',
        price = 200,
        model = 'buccaneer2', 
        label = 'Buccaneer',
        rarity= 2,
    }, 
    {
        level = 5,
        photo = 'https://docs.fivem.net/vehicles/comet6.webp',
        price = 250,
        model = 'comet6', 
        label = 'Comet6',
        rarity= 3,
    }, 
    {
        level = 6,
        photo = 'https://docs.fivem.net/vehicles/comet6.webp',
        price = 250,
        model = 'comet6', 
        label = 'Comet6',
        rarity= 3,
    }, 
}
Config.Wars ={
    Locations = {
        [1] = { 
            id      = 1, -- important
            coordsA = { -- spawn coords for team A
                vector4(1424.77, 1107.8, 114.26, 272.19),
                vector4(1424.77, 1116.68, 114.46, 1.31), 
                vector4(1436.61, 1124.71, 114.21, 274.44), 
                vector4(1437.8, 1096.99, 114.11, 272.95), 
            },
            coordsB = { -- spawn coords for team B
                vector4(1481.73, 1101.06, 114.33, 105.2),
                vector4(1480.95, 1107.94, 114.33, 103.65),
                vector4(1481.16, 1117.58, 114.33, 93.94),
                vector4(1480.95, 1132.82, 114.33, 113.24),
            },
            center  = vector3(1462.02, 1112.76, 114.33), -- center of the warzone
            radius  = 150.0,  -- when player is in war and try to go out of the radius of the zone (from center) he will not be able to. 
            label   = 'First war zone'
        },
    },
    Kills  = 3, -- first to get 20 kills wins.
    Delete = 5, -- war invitation will be automatically deleted after 5 minutes.
    Start  = 1, -- war starts after 5 minutes the gang B accepts the war invitation.
    revive = 10, -- revive player after 10 seconds once he is down in the fight.
    spawn  = vector3(-260.47, -972.93, 31.22), -- default coords in case a player disconnects from a war he will be kicked to these coords after joining
    health = 10, -- when player got a kill he gets +10 health as bonus
    armor  = 10, -- when player got a kill he gets +10 armour as bonus
}

ShowCase : https://youtu.be/XDR2BMIgQ8o

QBCore :
Tebex : https://zatv.tebex.io/category/qbcore
Documentation: Gang | ZaT Scripts

ESX :
Tebex : https://zatv.tebex.io/category/esx
Documentation : Gang | ZaT Scripts