[ZaT-SCRIPTS][QBCore/ESX] CLOTHING STORE HEIST

As a player, you will enjoy a seamless and user-friendly UI.

  • You can start the mission with your group.
  • You can make it work with any other MLOs, all the data and coords are in the config.lua
  • As a dev you can configure the following settings :
    • The Framework.
    • The Target/Dialog useage.
    • The Target/Interact useage.
    • The minimum cops required.
    • The minigame settings.
    • The alarm sounds.
    • The dispatch.
    • The rewards and their chances.
    • ++ More.

Code is accessible 80%
Subscription-based No
Lines (approximately) 5k+
Requirements qb-core/ es_extended
Support Yes
  • Config.lua :
Config = {}

Config.Framework        = "qb" -- "esx"
Config.Inventory        = "qb" -- "qb", "ox", "qs"
Config.QBInventory      = "old" -- new
Config.Target           = "qb" -- ox
Config.FrameworkPseudo  = 'qb-core'
Config.UseInteract      = false -- better to use target
Config.Doorlock         = 'qb'
Config.phone            = 'qb-phone'
Config.Debug            = true -- use /placebox and /placeshoe and /placepc command to place the prop using gizmo and get coords
--::::::::::::::::::::::::: NPC DIALOG ::::::::::::::::::::::::::::::
Config.UseNPCDialog     = true
-- Only if NPCDialog is set to false
Config.NPC = {
    model  = "a_f_y_business_04",
    anim   = "CODE_HUMAN_MEDIC_TIME_OF_DEATH",
    coords = vector4(-1224.08, -1442.37, 3.31, 210.98)
}
--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Config.Alarm = {
    started             = false,
    dispatch            = 'qb-core',
    url                 = 'https://www.youtube.com/watch?v=EnRK43JkxJk', -- alarm URL
    time                = 3, -- 3 minutes and the alarm sound will stop
}

Config.MiniumCops       = 0
Config.Timeout          = 45    -- 45 minutes timeout between each robbery
Config.RobberyTime      = 5     -- 5 minutes before alarm starts and doors get locked
Config.GenerateTime     = 1     -- 1 minute to generate a mission

Config.Scanner          = 'rfid_scanner'
Config.Prices           = {     -- price to sell the shoes
    min = 500,
    max = 850
}

-----------------------------------------------------------------------------------------------------------------------
    --!!!!!!!!!!!!!!!!!!!! IMPORTANT !!!!!!!!!!!!!!!!!!!!--
    -- The ['shoes'].coords Length must be >= to the ['boxes'].coords Length
    -- So if in a store you create 8 boxes coords you MUST create at least 8 shoes coords
    -- Otherwise you will have an infinite loop...
    -- If you do not understand what is writen, please do not touch the Config.Locations
    --!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!--
-----------------------------------------------------------------------------------------------------------------------
Config.Locations = {
    ['Innocence Blvd'] = {
        ['main']  = vector3(73.05, -1388.59, 30.92),
        ['boxes'] = {
            coords = {
                -- 8 slots
                vector4(73.05, -1388.59, 30.92, 20.0),
                vector4(73.05, -1388.59, 31.08, 0.0),
                vector4(73.16, -1387.09, 31.08, 20.0),
                vector4(73.16, -1387.09, 31.24, 0.0),
                vector4(81.42, -1388.41, 29.33, 88.15),
                vector4(81.25, -1388.78, 29.33, 333.81),
                vector4(75.12, -1389.39, 28.94, 316.14),
                vector4(75.12, -1389.39, 29.10, 0.0),
            }
        },
        ['shoes'] = {
            coords = {
                -- 8 slots
                vector4(73.11, -1393.51, 29.69, 65.8),
                vector4(73.07, -1392.81, 29.71, 340.66),
                vector4(82.11, -1394.78, 29.45, 218.78),
                vector4(82.03, -1395.32, 28.42, 317.46),
                vector4(81.61, -1395.0, 28.42, 146.56),
                vector4(80.05, -1396.38, 28.42, 331.95),
                vector4(80.41, -1400.73, 28.42, 61.84),
                vector4(80.04, -1400.76, 28.42, 155.37),
                -- Extra
                vector4(73.04, -1394.03, 29.36, 327.53),
                vector4(78.25, -1396.36, 28.43, 207.84),
                vector4(82.03, -1397.41, 28.42, 148.45),
                vector4(82.12, -1397.69, 28.42, 235.87),
                vector4(73.64, -1386.67, 28.85, 316.58),
            }
        },
        ['pc']    = {
            coords = vector4(74.67, -1392.91, 29.32, 284.58),
            prop   = 'prop_laptop_01a',
        },
        ['doors']  = { -- list all shop doors id
            'shoesheist-1'
        },
        ['Hacked'] = false,
    },
    ['Grapeseed Main'] = {
        ['main']  = vector3(1690.65, 4818.17, 42.04),
        ['boxes'] = {
            coords = {
                -- 8 slots
                vector4(1690.65, 4818.17, 42.04, 0.0),
                vector4(1690.2, 4817.75, 42.02, 317.87),
                vector4(1696.16, 4817.55, 41.15, 90.99),
                vector4(1696.16, 4817.55, 41.31, 0.0),
                vector4(1695.49, 4818.35, 42.1, 297.53),
                vector4(1695.84, 4818.83, 42.1, 0.0),
                vector4(1695.83, 4824.67, 41.58, 0.0),
                vector4(1695.76, 4824.72, 41.74, 302.48),
            }
        },
        ['shoes'] = {
            coords = {
                -- 8 slots
                vector4(1691.29, 4830.28, 41.11, 309.88),
                vector4(1691.13, 4830.14, 41.11, 14.64),
                vector4(1697.39, 4827.67, 41.11, 333.63),
                vector4(1697.41, 4827.42, 41.11, 0.0),
                vector4(1689.79, 4822.02, 41.11, 229.18),
                vector4(1689.91, 4821.77, 41.11, 144.58),
                vector4(1691.68, 4826.17, 41.11, 248.19),
                vector4(1690.79, 4825.87, 41.12, 0.0),
                -- Extra
                vector4(1686.77, 4826.63, 41.11, 0.0),
                vector4(1686.83, 4826.84, 41.11, 49.04),
                vector4(1687.6, 4824.51, 41.11, 330.4),
                vector4(1687.64, 4824.69, 41.11, 0.0),
                vector4(1689.34, 4816.32, 41.11, 57.58),
            }
        },
        ['pc']    = {
            coords = vector4(1694.68, 4822.99, 42.01, 81.93),
            prop   = 'prop_laptop_01a',
        },
        ['doors']  = { -- list all shop doors id
            'shoesheist-2'
        },
        ['Hacked'] = false,
    },
    ['North Rockford'] = {
        ['main']  = vector3(-1193.41, -766.55, 17.32),
        ['boxes'] = {
            coords = {
                -- 8 slots
                vector4(-1193.95, -765.29, 17.35, 37.58),
                vector4(-1193.6, -765.02, 17.35, 38.61),
                vector4(-1193.61, -765.43, 17.35, 38.35),
                vector4(-1189.29, -774.34, 16.42, 38.71),
                vector4(-1189.31, -774.37, 16.58, 17.77),
                vector4(-1197.04, -768.5, 16.6, 0.0),
                vector4(-1196.97, -768.57, 16.77, 328.84),
                vector4(-1191.63, -764.71, 16.4, 0.0),
            }
        },
        ['shoes'] = {
            coords = {
                -- 8 slots
                vector4(-1190.24, -764.57, 16.83, 0.0),
                vector4(-1190.29, -764.87, 16.83, 246.65),
                vector4(-1190.78, -775.1, 16.85, 68.99),
                vector4(-1190.99, -775.02, 16.85, 115.48),
                vector4(-1193.03, -770.18, 17.78, 154.22),
                vector4(-1191.94, -769.83, 17.78, 55.97),
                vector4(-1187.5, -770.35, 16.37, 179.13),
                vector4(-1187.34, -770.07, 16.37, 119.69),
                -- Extra
                vector4(-1192.28, -776.19, 16.37, 255.62),
                vector4(-1192.02, -776.36, 16.37, 212.25),
                vector4(-1204.52, -774.57, 16.36, 307.35),
                vector4(-1204.7, -774.69, 16.36, 0.0),
                vector4(-1189.59, -771.05, 16.37, 25.69)
            }
        },
        ['pc']    = {
            coords = vector4(-1193.01, -767.16, 17.27, 180.03),
            prop   = 'prop_laptop_01a',
        },
        ['doors']  = { -- list all shop doors id
            'shoesheist-3'
        },
        ['Hacked'] = false,
    },
    ['Sinners Passage'] = {
        ['main']  = vector3(424.59, -807.43, 29.49),
        ['boxes'] = {
            coords = {
                -- 8 slots
                vector4(422.23, -810.5, 29.47, 330.09),
                vector4(422.23, -810.5, 29.58, 0.0),
                vector4(421.21, -810.56, 29.45, 35.47),
                vector4(425.95, -809.73, 29.05, 309.85),
                vector4(425.97, -809.74, 29.21, 0.0),
                vector4(427.14, -812.39, 29.01, 340.04),
                vector4(427.14, -812.42, 29.17, 0.0),
                vector4(427.77, -804.75, 29.01, 0.0),
            }
        },
        ['shoes'] = {
            coords = {
                -- 8 slots
                vector4(427.14, -798.68, 28.53, 233.58),
                vector4(427.51, -798.68, 28.53, 322.64),
                vector4(431.44, -802.02, 28.53, 177.9),
                vector4(431.21, -802.41, 28.53, 124.94),
                vector4(419.81, -805.61, 28.53, 53.05),
                vector4(419.84, -805.33, 28.53, 339.7),
                vector4(423.91, -802.56, 28.53, 132.52),
                vector4(423.89, -803.02, 28.53, 0.0),
                -- Extra
                vector4(421.88, -805.7, 28.53, 298.15),
                vector4(421.63, -805.7, 28.53, 242.0),
                vector4(420.32, -811.61, 28.53, 36.74),
                vector4(420.54, -811.74, 28.53, 0.0),
                vector4(426.05, -805.1, 29.48, 36.61),
            }
        },
        ['pc']    = {
            coords = vector4(426.38, -806.18, 29.44, 79.92),
            prop   = 'prop_laptop_01a',
        },
        ['doors']  = { -- list all shop doors id
            'shoesheist-4'
        },
        ['Hacked'] = false,
    },
    ['Paleto Blvd'] = {
        ['main']  = vector3(2.89, 6512.37, 31.88),
        ['boxes'] = {
            coords = {
                -- 8 slots
                vector4(2.44, 6509.94, 31.44, 0.0),
                vector4(2.45, 6509.96, 31.6, 255.41),
                vector4(9.11, 6514.35, 31.42, 0.0),
                vector4(9.49, 6513.94, 31.42, 70.44),
                vector4(2.38, 6508.47, 31.92, 0.0),
                vector4(2.42, 6508.44, 32.08, 101.49),
                vector4(-0.72, 6512.49, 31.85, 92.91),
                vector4(-0.72, 6511.98, 31.85, 0.0),
            }
        },
        ['shoes'] = {
            coords = {
                -- 8 slots
                vector4(11.74, 6511.11, 30.93, 128.79),
                vector4(11.9, 6511.3, 30.93, 0.0),
                vector4(10.3, 6512.83, 31.37, 0.0),
                vector4(10.1, 6512.99, 31.37, 80.13),
                vector4(10.16, 6517.72, 30.92, 0.0),
                vector4(10.0, 6517.91, 30.92, 246.61),
                vector4(2.43, 6518.54, 30.92, 0.0),
                vector4(2.53, 6518.76, 30.92, 35.0),
                -- Extra
                vector4(2.19, 6515.22, 30.92, 0.0),
                vector4(2.07, 6515.41, 30.92, 56.99),
                vector4(6.18, 6516.2, 30.92, 0.0),
                vector4(6.21, 6516.53, 30.92, 97.96),
                vector4(5.8, 6516.96, 30.92, 215.9),
            }
        },
        ['pc']    = {
            coords = vector4(5.49, 6511.93, 31.82, 0.0),
            prop   = 'prop_laptop_01a',
        },
        ['doors']  = { -- list all shop doors id
            'shoesheist-6'
        },
        ['Hacked'] = false,
    },
    ['Route 68'] = {
        ['main']  = vector3(612.49, 2761.91, 42.09),
        ['boxes'] = {
            coords = {
                -- 8 slots
                vector4(611.62, 2763.72, 42.12, 0.0),
                vector4(611.69, 2763.72, 42.29, 62.93),
                vector4(613.72, 2762.01, 42.12, 0.0),
                vector4(613.72, 2762.02, 42.29, 64.36),
                vector4(612.55, 2759.79, 41.92, 296.74),
                vector4(612.54, 2759.76, 42.09, 0.0),
                vector4(612.98, 2766.75, 41.64, 315.4),
                vector4(612.99, 2766.74, 41.8, 0.0),
            }
        },
        ['shoes'] = {
            coords = {
                -- 8 slots
                vector4(616.49, 2762.76, 42.55, 0.0),
                vector4(616.16, 2761.7, 42.55, 0.0),
                vector4(618.93, 2766.7, 41.13, 257.51),
                vector4(619.01, 2766.52, 41.13, 203.36),
                vector4(621.54, 2760.81, 41.6, 0.0),
                vector4(621.39, 2761.05, 41.6, 71.89),
                vector4(613.61, 2749.68, 41.13, 303.56),
                vector4(613.4, 2749.55, 41.13, 0.0),
                -- Extra
                vector4(614.67, 2754.04, 41.97, 301.42),
                vector4(614.45, 2754.32, 41.97, 228.04),
                vector4(616.51, 2754.3, 41.97, 252.0),
                vector4(619.25, 2754.52, 41.97, 236.48),
                vector4(619.48, 2754.42, 41.97, 0.0),
            }
        },
        ['pc']    = {
            coords = vector4(613.51, 2763.41, 42.04, 274.94),
            prop   = 'prop_laptop_01a',
        },
        ['doors']  = { -- list all shop doors id
            'shoesheist-7'
        },
        ['Hacked'] = false,
    },
}

Config.Shoes = {
    -- model 1
    {
        model   = 'Air Force', -- nike
        box     = 'prop_shoebox_0192021', -- done
        shoe    = 'prop_shoe_0192021',
        color   = 'red',
        size    = '43',
        ref     = '0192021',
    },
    {
        model   = 'Runfalcon', -- adidas
        box     = 'prop_shoebox_2510251', --done
        shoe    = 'prop_shoe_2510251',
        color   = 'red',
        size    = '42',
        ref     = '2510251',
    },
    {
        model   = 'Upland', -- vans
        box     = 'prop_shoebox_1254891', --done
        shoe    = 'prop_shoe_1254891',
        color   = 'red',
        size    = '41',
        ref     = '1254891',
    },
    {
        model   = 'Rebound V6', -- puma
        box     = 'prop_shoebox_5484158', --done
        shoe    = 'prop_shoe_5484158',
        color   = 'red',
        size    = '40',
        ref     = '5484158',
    },
    {
        model   = 'True Flight', -- jordan
        box     = 'prop_shoebox_1247145', --done
        shoe    = 'prop_shoe_1247145',
        color   = 'red',
        size    = '39',
        ref     = '1247145',
    },
    {
        model   = 'Nimbus 26', -- Asics
        box     = 'prop_shoebox_8457915',--done
        shoe    = 'prop_shoe_8457915',
        color   = 'red',
        size    = '38',
        ref     = '8457915',
    },
    -- model 2
    {
        model   = 'Air Force', -- nike
        box     = 'prop_shoebox_8547516',--done
        shoe    = 'prop_shoe_8547516',
        color   = 'yellow',
        size    = '42',
        ref     = '8547516',
    },
    {
        model   = 'Runfalcon', -- adidas
        box     = 'prop_shoebox_6512547', --done
        shoe    = 'prop_shoe_6512547',
        color   = 'yellow',
        size    = '41',
        ref     = '6512547',
    },
    {
        model   = 'Upland', -- vans
        box     = 'prop_shoebox_1241257', --done
        shoe    = 'prop_shoe_1241257',
        color   = 'yellow',
        size    = '40',
        ref     = '1241257',
    },
    {
        model   = 'Rebound V6', -- puma
        box     = 'prop_shoebox_6262514', --done
        shoe    = 'prop_shoe_6262514',
        color   = 'yellow',
        size    = '39',
        ref     = '6262514',
    },
    {
        model   = 'True Flight', -- jordan
        box     = 'prop_shoebox_0221514', --done
        shoe    = 'prop_shoe_0221514',
        color   = 'yellow',
        size    = '38',
        ref     = '0221514',
    },
    {
        model   = 'Nimbus 26', -- Asics
        box     = 'prop_shoebox_2251400', --done
        shoe    = 'prop_shoe_2251400',
        color   = 'yellow',
        size    = '43',
        ref     = '2251400',
    },
        -- model 3
    {
        model   = 'Air Force', -- nike
        box     = 'prop_shoebox_0221465', -- done
        shoe    = 'prop_shoe_0221465',
        color   = 'black',
        size    = '41',
        ref     = '0221465',
    },
    {
        model   = 'Runfalcon', -- adidas
        box     = 'prop_shoebox_20001421',-- done
        shoe    = 'prop_shoe_20001421',
        color   = 'black',
        size    = '40',
        ref     = '20001421',
    },
    {
        model   = 'Upland', -- vans
        box     = 'prop_shoebox_9555841',-- done
        shoe    = 'prop_shoe_9555841',
        color   = 'black',
        size    = '39',
        ref     = '9555841',
    },
    {
        model   = 'Rebound V6', -- puma
        box     = 'prop_shoebox_6362681',  -- done
        shoe    = 'prop_shoe_6362681',
        color   = 'black',
        size    = '38',
        ref     = '6362681',
    },
    {
        model   = 'True Flight', -- jordan
        box     = 'prop_shoebox_6363659',  -- done
        shoe    = 'prop_shoe_6363659',
        color   = 'black',
        size    = '43',
        ref     = '6363659',
    },
    {
        model   = 'Nimbus 26', -- Asics
        box     = 'prop_shoebox_9695989', -- done
        shoe    = 'prop_shoe_9695989',
        color   = 'black',
        size    = '42',
        ref     = '9695989',
    },
    -- model 4
    {
        model   = 'Air Force', -- nike
        box     = 'prop_shoebox_9151417',--done
        shoe    = 'prop_shoe_9151417',
        color   = 'blue',
        size    = '40',
        ref     = '9151417',
    },
    {
        model   = 'Runfalcon', -- adidas
        box     = 'prop_shoebox_7471725', --done
        shoe    = 'prop_shoe_7471725',
        color   = 'blue',
        size    = '39',
        ref     = '7471725',
    },
    {
        model   = 'Upland', -- vans
        box     = 'prop_shoebox_5152541', --done
        shoe    = 'prop_shoe_5152541',
        color   = 'blue',
        size    = '38',
        ref     = '5152541',
    },
    {
        model   = 'Rebound V6', -- puma
        box     = 'prop_shoebox_7141526', --done
        shoe    = 'prop_shoe_7141526',
        color   = 'blue',
        size    = '43',
        ref     = '7141526',
    },
    {
        model   = 'True Flight', -- jordan
        box     = 'prop_shoebox_0221451', --done
        shoe    = 'prop_shoe_0221451',
        color   = 'blue',
        size    = '42',
        ref     = '0221451',
    },
    {
        model   = 'Nimbus 26', -- Asics
        box     = 'prop_shoebox_1447848', --done
        shoe    = 'prop_shoe_1447848',
        color   = 'blue',
        size    = '41',
        ref     = '1447848',
    },
        -- model 5
    {
        model   = 'Air Force', -- nike
        box     = 'prop_shoebox_3332514', --done
        shoe    = 'prop_shoe_3332514',
        color   = 'white',
        size    = '39',
        ref     = '3332514',
    },
    {
        model   = 'Runfalcon', -- adidas
        box     = 'prop_shoebox_6654715', -- done
        shoe    = 'prop_shoe_6654715',
        color   = 'white',
        size    = '38',
        ref     = '6654715',
    },
    {
        model   = 'Upland', -- vans
        box     = 'prop_shoebox_6633251',-- done
        shoe    = 'prop_shoe_6633251',
        color   = 'white',
        size    = '43',
        ref     = '6633251',
    },
    {
        model   = 'Rebound V6', -- puma
        box     = 'prop_shoebox_0012141',-- done
        shoe    = 'prop_shoe_0012141',
        color   = 'white',
        size    = '42',
        ref     = '0012141',
    },
    {
        model   = 'True Flight', -- jordan
        box     = 'prop_shoebox_0321451',
        shoe    = 'prop_shoe_0321451',
        color   = 'white',
        size    = '41',
        ref     = '0321451',
    },
    {
        model   = 'Nimbus 26', -- Asics
        box     = 'prop_shoebox_6338874',-- done
        shoe    = 'prop_shoe_6338874',
        color   = 'white',
        size    = '40',
        ref     = '6338874',
    },
}

----------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------OPTIMISATION PART --------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------
-- Description  : this part is responsable on deleting the not needed props when no players are nearby
-- refreshprops : is the time to check if there is someone near the props or not
-- radius       : is to check how far is the player from the prop if it is < then the prop will be deleted until someone is nearby...
Config.RefreshProps = 10     -- 15 seconds
Config.Radius       = 100.0  -- if the distance between the player and the prop is < 50 then the prop will be deleted.
----------------------------------------------------------------------------------------------------------------------------------------
1 Like