Getting Started
On this page: How to install, configure & edit script
Requirements
To install that script, you need to have:
- Framework: ESX 1.2, ESX Legacy or QBCore
- Database: MySQL Async or oxmysql
Installation
Buy script here
Download script here
Extract script from archive and move it to resources folder
Open script folder and configure framework in
fxmanifest.lua
ESX 1.2
local framework = 'esx'
local mysql = "mysql-async"ESX Legacy
local framework = 'esx'
local mysql = "oxmysql"QB Core
local framework = 'qb'
local mysql = "oxmysql"
info
After making changes in fxmanifest.lua
you need to refresh your scripts by using command /refresh
. After that, you can restart script
- Go to
shared/config.lua
and configure your language - Go to
server/sv_config.lua
and configure script
- shared/config.lua
- server/sv_config.lua
Config = Config or {}
-- Your locale from locales folder
Config.Locale = 'en'
-- Check server/sv_config.lua to more options
Config = Config or {}
-- Check shared/config.lua to locale
-- Animation of hacking
Config.HackAnim = {
dict = "anim@amb@clubhouse@tutorial@bkr_tut_ig3@",
anim = "machinic_loop_mechandplayer",
}
-- Default animation of enemies
Config.DefaultEnemyAnim = {
dict = "rcmnigel1a",
anim = "base",
}
-- Index of timer bar
Config.BarIndex = 1
-- Price of Crime Tablet
Config.TabletPrice = 10000
-- Distance from delivery place where can't be cops to deliver
Config.CopDistance = 100
-- NPC that sells tablet
Config.TabletNpc = {
pos = vector3(-239.5,-256,36.5),
ped = "a_m_y_business_03",
heading = 30.0,
}
-- Blip of Tablet NPC
Config.TabletBlip = {
visible = true,
blip = 149,
color = 1
}
-- Blip of delivery in car thief and truck robbery
Config.DeliveryBlip = {
color = 76,
blip = 67,
}
-- NPC in truck robbery
Config.DeliveryNPC = "s_m_m_fiboffice_02"
-- Blip of search area
Config.AreaBlip = {
color = 76,
blip = 66,
}
-- Blip of VIP
Config.TargetBlip = {
color = 76,
blip = 310,
}
-- Blip in ping
Config.PingBlip = 161
-- Police blips
Config.PoliceBlips = {
car_fail = {
color = 67,
blip = 326,
},
car = {
color = 67,
blip = 326,
},
truck = {
color = 67,
blip = 326,
},
truck_fail = {
color = 67,
blip = 326,
},
vip = {
color = 67,
blip = 280,
}
}
-- Jobs Config
Config.Jobs = {
-- Max ammount of global EXP
maxGlobalExp = 1000,
-- Min PD to start 1 car job
minPD = 1,
-- Car Thief
car = {
-- Max amount of job EXP
maxExp = 500,
-- Job levels (You can add your own)
levels = {
{
-- Display Name
name = "Easy",
-- Image from web/assets
img = "thief_easy.png",
-- Don't change
available = 0,
-- Min global exp
globalExp = 0,
-- Min job exp
jobExp = 0,
-- How many hack games
hack = 1,
-- Rewards
rewards = {
money = {
-- Account
type = "bank",
min = 1000,
max = 1750,
},
exp = {
global = 1,
job = 1,
},
items = {
{
name = "bread",
minAmount = 1,
maxAmount = 3,
chance = 100,
},
{
name = "water",
minAmount = 1,
maxAmount = 3,
chance = 50,
}
},
},
-- Cooldown between jobs in milliseconds
cooldown = 20 * 60 * 1000,
-- GPS Time in milliseconds
gpsTime = 2 * 60 * 1000,
-- Search area size
findAreaSize = 50.0,
-- Available cars to steal
car = {"alpha", "sultan", "buffalo"},
-- Places where car can be spawned
spawn = {
vector4(171.55, -1518, 29.14, 120),
vector4(-27.65, -1516.5, 30.5, 140),
vector4(5.4, -1810, 25.35, 230),
},
-- Places where car can be deliverd
final = {
vector4(-1131.804, 2697.941, 17.8004, 144.8481),
vector4(53.72855, 2802.311, 56.8783, 232.913),
vector4(1037.219, 2650.439, 38.5511, 262.1326),
},
},
{
name = "Medium",
img = "thief_medium.png",
available = 0,
globalExp = 325,
jobExp = 250,
hack = 2,
rewards = {
money = {
type = "bank",
min = 1750,
max = 2500,
},
exp = {
global = 2,
job = 1,
},
items = {},
},
cooldown = 40 * 60 * 1000,
gpsTime = 4 * 60 * 1000,
findAreaSize = 100.0,
car = {"cheetah", "banshee", "bullet"},
spawn = {
vector4(266.2785, -332.2509, 44.91984, 250.9896),
vector4(110.3485, -714.3247, 33.13324, 158.1285),
vector4(-289.4423, -887.0172, 31.08061, 168.6812),
},
final = {
vector4(-2178.261, 4270.255, 48.05663, 322.2534),
vector4(68.18157, 6308.784, 30.22902, 298.4689),
vector4(430.7917, 6467.989, 27.77084, 224.9387),
},
},
{
name = "Hard",
img = "thief_hard.png",
available = 0,
globalExp = 750,
jobExp = 500,
hack = 3,
rewards = {
money = {
type = "bank",
min = 2500,
max = 3250,
},
exp = {
global = 3,
job = 1,
},
items = {},
},
cooldown = 60 * 60 * 1000,
gpsTime = 6 * 60 * 1000,
findAreaSize = 150.0,
car = {"t20", "osiris", "zentorno"},
spawn = {
vector4(176.2109, 480.7679, 142.0451, 352.4218),
vector4(315.0105, 566.6168, 154.4937, 312.4244),
vector4(879.654, -22.06112, 78.76405, 51.91465),
},
final = {
vector4(1051.964, -3286.138, 4.899103, 180.4652),
vector4(1201.196, -3184.411, 4.86129, 357.0574),
vector4(1233.324, -3330.55, 4.683371, 356.6609),
},
},
},
},
truck = {
maxExp = 500,
levels = {
{
name = "Easy",
img = "truck_easy.png",
available = 0,
globalExp = 0,
jobExp = 0,
hack = 1,
rewards = {
money = {
type = "bank",
min = 1000,
max = 1750,
},
exp = {
global = 1,
job = 1,
},
items = {},
},
cooldown = 20 * 60 * 1000,
findAreaSize = 50.0,
-- Places where car can be spawned
car = {
vector4(2169.634, 3514.815, 45.15834, 61.26917),
vector4(1959.903, 4634.875, 40.78429, 293.7296),
vector4(1685.062, 6437.228, 32.32114, 245.0916),
},
-- Enemies near car (see medium level)
enemies = {
{}, {}, {},
},
-- Places where items from truck can be delviered
final = {
vector4(-427.5651, 6355.432, 13.35769, 47.37328),
vector4(-595.9664, 5363.325, 70.48186, 229.2899),
vector4(-1387.819, 5196.188, 3.990475, 5.280439),
},
},
{
name = "Medium",
img = "truck_medium.png",
available = 0,
globalExp = 325,
jobExp = 250,
hack = 2,
rewards = {
money = {
type = "bank",
min = 1750,
max = 2500,
},
exp = {
global = 2,
job = 1,
},
items = {},
},
cooldown = 40 * 60 * 1000,
findAreaSize = 100.0,
car = {
vector4(-2964.249, 2128.092, 40.9553, 139.379),
vector4(-2942.624, 478.2526, 14.85451, 276.0443),
vector4(-2094.096, -320.3816, 12.62842, 175.6628),
},
enemies = {
-- First car position
{
{
pos = vector4(-2963.375, 2126.17, 41.05853, 180.8103),
},
{
pos = vector4(-2966.053, 2128.223, 41.0024, 81.08767),
},
{
-- Position of enemy
pos = vector4(-2961.9, 2131.137, 40.81406, 142.0),
-- Optional animation settings
dict = "mini@repair",
anim = "fixing_a_ped",
},
},
-- Second car position
{
{
pos = vector4(-2941.353, 480.7846, 15.24076, 355.3247),
},
{
pos = vector4(-2940.904, 475.98, 15.23938, 234.6337),
},
{
pos = vector4(-2947.112, 477.4703, 15.27155, 292.5603),
dict = "mini@repair",
anim = "fixing_a_ped",
},
},
-- Third car position
{
{
pos = vector4(-2092.671, -321.2622, 13.02795, 272.9938),
},
{
pos = vector4(-2093.481, -316.2344, 13.02644, 180.0),
dict = "mini@repair",
anim = "fixing_a_ped",
},
{
pos = vector4(-2095.994, -320.1798, 13.16864, 87.5836),
},
},
},
final = {
vector4(112.2095, 329.1426, 112.1248, 204.3701),
vector4(194.396, 1204.803, 225.5945, 334.0539),
vector4(-50.62337, 1892.009, 195.3617, 180.4545),
},
},
{
name = "Hard",
img = "truck_hard.png",
available = 0,
globalExp = 750,
jobExp = 500,
hack = 3,
rewards = {
money = {
type = "bank",
min = 2500,
max = 3250,
},
exp = {
global = 3,
job = 1,
},
items = {},
},
cooldown = 60 * 60 * 1000,
findAreaSize = 150.0,
car = {
vector4(-5.118363, -671.6876, 31.94514, 188.3948),
},
enemies = {
{
{
pos = vector4(-3.333284, -672.3182, 32.33808, 283.0774),
},
{
pos = vector4(-6.490292, -672.9037, 32.33808, 94.93914),
},
{
pos = vector4(-5.877133, -667.5543, 32.33808, 201.3617),
dict = "mini@repair",
anim = "fixing_a_ped",
},
{
pos = vector4(0.2280469, -659.6708, 33.48031, 149.4617),
},
{
pos = vector4(-14.05307, -661.3599, 33.48029, 216.7144),
},
{
pos = vector4(-13.46651, -669.4916, 32.44284, 255.7714),
},
{
pos = vector4(-4.218777, -656.1915, 33.45078, 113.1188),
},
{
pos = vector4(10.21472, -668.2438, 33.44944, 4.447594),
},
{
pos = vector4(-28.95922, -662.7633, 33.48046, 228.9495),
},
{
pos = vector4(-26.97999, -671.3036, 32.44286, 289.8144),
},
},
},
final = {
vector4(128.1614, 566.0607, 183.9595, 358.8353),
vector4(7.37423, 542.058, 176.0282, 341.4674),
vector4(57.89576, 451.8805, 146.9045, 356.974)
},
},
},
},
vip = {
maxExp = 500,
-- VIP peds
vips = {"s_m_m_fiboffice_02", "s_m_m_highsec_01", "s_m_m_highsec_02"},
-- Bodyguards peds
bodyguards = {"s_m_y_blackops_01", "s_m_m_chemsec_01", "s_m_m_armoured_01"},
levels = {
{
name = "Easy",
img = "vip_easy.png",
available = 0,
globalExp = 0,
jobExp = 0,
rewards = {
money = {
type = "bank",
min = 1000,
max = 1750,
},
exp = {
global = 1,
job = 1,
},
items = {},
},
cooldown = 20 * 60 * 1000,
-- Places where VIP can be spawned
start = {
{
-- Position
pos = vector4(225.3785, 1171.862, 225.7896, 283.2277),
-- Animation
dict = "anim@amb@nightclub@peds@",
anim = "rcmme_amanda1_stand_loop_cop",
},
{
pos = vector4(86.31068, 811.5331, 211.1208, 228.7334),
dict = "anim@amb@nightclub@peds@",
anim = "rcmme_amanda1_stand_loop_cop",
},
{
pos = vector4(-354.9788, 212.8227, 86.68143, 327.4157),
dict = "anim@amb@nightclub@peds@",
anim = "rcmme_amanda1_stand_loop_cop",
},
},
-- Bodyguards of VIP (See Medium level of truck robbery for more info)
bodyguards = {
{
{
pos = vector4(226.891, 1170.516, 225.46, 284.5973),
},
{
pos = vector4(225.8408, 1173.625, 225.46, 283.1619),
},
},
{
{
pos = vector4(85.76318, 810.6275, 211.1208, 227.9838),
},
{
pos = vector4(87.01804, 812.1462, 211.1208, 229.8653),
},
},
{
{
pos = vector4(-353.4664, 212.9197, 86.79256, 331.4019),
},
{
pos = vector4(-356.295, 214.2535, 86.52686, 340.1014),
},
},
},
},
{
name = "Medium",
img = "vip_medium.png",
available = 0,
globalExp = 325,
jobExp = 250,
rewards = {
money = {
type = "bank",
min = 1750,
max = 2500,
},
exp = {
global = 2,
job = 1,
},
items = {},
},
cooldown = 40 * 60 * 1000,
start = {
{
pos = vector4(5.644009, -708.0114, 45.97304, 203.9421),
dict = "anim@amb@nightclub@peds@",
anim = "rcmme_amanda1_stand_loop_cop",
},
{
pos = vector4(926.3167, 48.97448, 81.10635, 57.94458),
dict = "anim@amb@nightclub@peds@",
anim = "rcmme_amanda1_stand_loop_cop",
},
{
pos = vector4(-1370.231, -503.0955, 33.15742, 115.335),
dict = "anim@amb@nightclub@peds@",
anim = "rcmme_amanda1_stand_loop_cop",
},
},
bodyguards = {
{
{
pos = vector4(5.476906, -710.2206, 45.97304, 201.0224),
},
{
pos = vector4(7.189636, -709.4854, 45.97304, 204.4267),
},
{
pos = vector4(12.03081, -710.687, 45.97304, 164.4943),
},
{
pos = vector4(3.478052, -714.5543, 45.97304, 252.4825),
},
{
pos = vector4(15.43896, -722.9238, 44.21738, 181.4738),
},
{
pos = vector4(10.62961, -725.0691, 44.21738, 254.9738),
},
},
{
{
pos = vector4(926.1484, 50.59423, 81.10635, 53.15437),
},
{
pos = vector4(924.8398, 48.58603, 81.10635, 65.08252),
},
{
pos = vector4(929.6318, 56.07334, 81.09609, 330.9732),
},
{
pos = vector4(916.671, 62.49693, 80.89376, 209.389),
},
{
pos = vector4(906.7651, 46.72112, 80.89732, 240.3195),
},
{
pos = vector4(913.2264, 56.71949, 80.89403, 235.7396),
},
},
{
{
pos = vector4(-1371.966, -501.3751, 33.15742, 122.9683),
},
{
pos = vector4(-1369.302, -504.9968, 33.15742, 124.4431),
},
{
pos = vector4(-1365.079, -510.9914, 31.2331, 163.7976),
},
{
pos = vector4(-1380.814, -508.8672, 33.15742, 279.8357),
},
{
pos = vector4(-1381.916, -508.1307, 33.15742, 15.07747),
},
{
pos = vector4(-1392.303, -501.7239, 31.44291, 121.4096),
},
},
},
},
{
name = "Hard",
img = "vip_hard.png",
available = 0,
globalExp = 750,
jobExp = 500,
rewards = {
money = {
type = "bank",
min = 2500,
max = 3250,
},
exp = {
global = 3,
job = 1,
},
items = {},
},
cooldown = 60 * 60 * 1000,
start = {
{
pos = vector4(-58.86989, -838.5635, 43.62663, 232.4253),
dict = "anim@amb@nightclub@peds@",
anim = "rcmme_amanda1_stand_loop_cop",
},
},
bodyguards = {
{
{
pos = vector4(-53.65571, -835.9972, 43.63036, 272.868),
},
{
pos = vector4(-53.20713, -838.1924, 43.63009, 301.7685),
},
{
pos = vector4(-60.83245, -841.82, 43.62234, 158.3225),
},
{
pos = vector4(-47.26097, -823.931, 43.63233, 318.1292),
},
{
pos = vector4(-48.14828, -808.0341, 44.2251, 319.0769),
},
{
pos = vector4(-25.22011, -815.413, 42.9986, 307.7819),
},
{
pos = vector4(-23.84914, -816.2546, 42.9986, 324.867),
},
{
pos = vector4(-52.4868, -799.5452, 44.22509, 316.5157),
},
{
pos = vector4(-80.17301, -789.2665, 44.22734, 282.5709),
},
{
pos = vector4(-80.54894, -786.4946, 44.22744, 283.6159),
},
{
pos = vector4(-100.4134, -793.3615, 43.19482, 140.9833),
},
{
pos = vector4(-109.5732, -812.6082, 42.80743, 155.2296),
},
{
pos = vector4(-120.1967, -810.3805, 43.13115, 32.75665),
},
{
pos = vector4(-105.6869, -824.1275, 43.62932, 114.5402),
},
{
pos = vector4(-102.4089, -827.7082, 43.6287, 193.3752),
},
{
pos = vector4(-96.72205, -841.0029, 40.55691, 216.3536),
},
{
pos = vector4(-87.2277, -857.5444, 40.58161, 320.6104),
},
{
pos = vector4(-75.93667, -860.254, 40.58161, 176.1064),
},
{
pos = vector4(-62.65771, -861.99, 40.58156, 216.9312),
},
{
pos = vector4(-50.57986, -875.6765, 40.58453, 34.54379),
},
},
},
},
},
},
}
- If you want, you can translate your script into your language. (optional)
- Go to
locales
folder - Make copy of
en.lua
and rename it to your language code - Open renamed file
- Change variable
fileLocale
to your language code - Translate messages
- Go to
shared/config.lua
and changeConfig.Locale
to your language code
- Go to
- Register item
crime_tablet
in your framework- ESX - In database, in table
items
- QBCore - In file
qb-core/shared/items.lua
- ESX - In database, in table
- Start the server (or script after using
/refresh
command)
Editing script
With escrow
version you can only edit some files. In open-source
version you can edit every file (even web). To edit UI, please look at Fivem + ReactJS Tempalte that is used in this script.
danger
I won't fix issues that happened after editing the script!