Config settings
Config = {}
Config.Debug = false -- Set to true if you want to see debug messages
Config.VersionCheck = true -- Set to false if you don't want console notifications when update is available
Config.Framework = "esx"
--[[
Supported Frameworks:
• esx | https://github.com/esx-framework/esx-legacy
• qb | https://github.com/qbcore-framework/qb-core
]]
Config.FrameworkEvents = { -- Change these events if you changed their name in your framework script
esx = {
resource_name = 'es_extended',
main = 'esx:getSharedObject',
load = 'esx:playerLoaded',
job = 'esx:setJob'
},
qbcore = {
resource_name = 'qb-core',
main = 'QBCore:GetObject',
load = 'QBCore:Client:OnPlayerLoaded',
job = 'QBCore:Client:OnJobUpdate',
gang = 'QBCore:Client:OnGangUpdate',
}
}
Config.Notifications = "okokNotify" -- Leave empty and edit extra/notify.lua if you want to use other notifications
--[[
Supported Notifications:
• esx
• qb
• okokNotify
• pNotify
• ps-ui
]]
Config.Target = "ox_target" -- Target script
--[[
Supported Targets:
• ox_target
• qb-target
]]
Config.ProgressBar = "custom" -- Leave empty if you don't want to use progress bar
--[[
Supported Progress Bars:
• qb
• custom (edit extra/progressBar.lua to work with your progressBar)
]]
Config.UseOXLibMenu = false -- Whether ox_lib menu should be used instead of custom UI. If you set this to true make sure to uncomment one line inside fxmanifest.lua
Config.Peds = {
['robbery_start'] = { -- Ped that orders robbery
coords = vector3(-327.73, -736.88, 32.98), -- Ped coords
heading = 168.0, -- Ped heading
scenario = 'WORLD_HUMAN_AA_SMOKE', -- Scenario from https://github.com/DioneB/gtav-scenarios. Leave empty if you dont want any
model = 'a_m_y_business_01', -- Ped model from https://docs.fivem.net/docs/game-references/ped-models/
targetDistance = 2.0, -- Distance from which player will be able to interact with ped
requiredItem = "" -- Item name required to talk with this ped
},
['hacking_guy'] = { -- Ped that sells hacking device
coords = vector3(463.47, -770.87, 26.38),
heading = 66.0, -- Ped heading
scenario = 'WORLD_HUMAN_STAND_MOBILE', -- Scenario from https://github.com/DioneB/gtav-scenarios. Leave empty if you dont want any
model = 'a_m_m_socenlat_01', -- Ped model from https://docs.fivem.net/docs/game-references/ped-models/
targetDistance = 2.0 -- Distance from which player will be able to interact with ped
},
['dealer'] = { -- Ped that buys items from robberies
coords = vector3(73.63, -873.49, 29.47),
heading = 110.0, -- Ped heading
scenario = 'WORLD_HUMAN_SMOKING_POT', -- Scenario from https://github.com/DioneB/gtav-scenarios. Leave empty if you dont want any
model = 'a_m_m_eastsa_01', -- Ped model from https://docs.fivem.net/docs/game-references/ped-models/
targetDistance = 2.0, -- Distance from which player will be able to interact with ped
requiredItem = "" -- Item name required to talk with this ped
}
}
Config.Hacking = {
itemName = 'hacking_device', -- Hacking device name. Make sure to add it to your inventory script in order for robbery to work
limit = 1, -- Maximum amount of hacking devices in player inventory. Set to 0 if you don't want any limit
price = 1500, -- Price for hacking device
canPayWithBank = false, -- Whether player can pay with bank money
removeAfterUse = true -- Whether item should be removed after ONE use
}
Config.MapBlip = { -- For blip settings visit: https://docs.fivem.net/docs/game-references/blips/
start = { -- Ped that orders heist
enabled = true, -- Set to false if you dont want to mark that ped on map
label = "Office Robbery",
sprite = 475,
scale = 0.75,
color = 2
},
hacker = { -- Hacker that sells hacking device
enabled = true, -- Set to false if you dont want to mark that ped on map
label = "Hacker friend",
sprite = 521,
scale = 0.75,
color = 2
},
office_position = { -- Office entry position
enabled = true, -- Set to false if you dont want to mark that on map
label = "Office Entry",
sprite = 134,
scale = 0.75,
color = 2
},
merchant = {
enabled = true, -- Set to false if you dont want to mark that ped on map
label = "Item Dealer",
sprite = 276,
scale = 0.75,
color = 2
},
police_blip = { -- To edit blip function go to extra/police_cl.lua and extra/police_sv.lua
label = "Office Robbery in progress",
sprite = 161,
scale = 1.4,
color = 3
}
}
Config.MinimumPolice = 0 -- Minimum amount of police officers required to start a heist
Config.PoliceJob = "police" -- Name of police job
Config.PoliceBlipTimer = 5 -- Time (in minutes) after which robbery blip will dissapear
Config.HeistCooldown = 0 -- Global ooldown (in minutes) after ending a heist. Applies to every player.
Config.MultipleRobberies = true -- Whether other players are able to start a robbery when one is in progress
Config.BlackListJobs = {"police", "ambulance"} -- Players with this jobs won't be able to start a heist
Config.CanTurnOffSecurity = true -- Whether player can turn off security using Hacking Device
Config.CanHackMultipleTimes = false -- Whether player can turn off security multiple times by hacking it again
Config.SecurityOfflineTime = { -- Minimum and maximum time (in seconds) that security can be turned off using Hacking Device
min = 10, -- 10-15 is good for all robberies but you can change it if you want to :))
max = 15
}
Config.UseLasers = true -- Whether lasers should be used as one of main security assets (Might affect performance, higher CPU usage when inside office)
Config.CancelByDistance = true -- Whether robbery should be cancelled when player already been inside but left and went away from the entry door
Config.CancelDistance = 100.0 -- Distance after which robbery will be cancelled
Config.UseRoutingBuckets = false -- Whether player should be send to solo session (only inside interior) to avoid meeting other players
Config.PossibleEntries = { -- List of possible office entries, one of them will be chosen at the beggining of the robbery
--@param coords vector3 Position outside of the building
--@param difficultyLevel table This position can be used for specified diffucilty level that player chose at the beggining
{coords = vector3(-58.9, -616.41, 37.4), difficultyLevel = {'easy', 'medium', 'hard'}},
{coords = vector3(-124.97, -637.48, 40.74), difficultyLevel = {'easy', 'medium', 'hard'}},
{coords = vector3(4.65, -705.95, 46.02), difficultyLevel = {'easy', 'medium', 'hard'}},
{coords = vector3(-70.92, -801.04, 44.28), difficultyLevel = {'easy', 'medium', 'hard'}},
{coords = vector3(-212.69, -728.19, 33.58), difficultyLevel = {'easy', 'medium', 'hard'}},
{coords = vector3(-267.49, -739.09, 34.47), difficultyLevel = {'easy', 'medium', 'hard'}},
{coords = vector3(-287.68, -1061.36, 27.26), difficultyLevel = {'easy', 'medium', 'hard'}},
{coords = vector3(7.35, -933.07, 29.95), difficultyLevel = {'easy', 'medium', 'hard'}},
{coords = vector3(-197.33, -831.37, 30.8), difficultyLevel = {'easy', 'medium', 'hard'}},
{coords = vector3(-290.34, -431.35, 30.29), difficultyLevel = {'easy', 'medium', 'hard'}},
{coords = vector3(-366.18, -355.52, 31.61), difficultyLevel = {'easy', 'medium', 'hard'}},
}
Config.ShowLootBlips = true -- Whether loot should be marked on map
Config.ShowLootText = false -- Whether there should be a text in bottom-right showing loot taken/max loot from current location (see: https://i.imgur.com/VXr17Os.png)
Config.Loot = { -- ⚠️ LEAVE IT LIKE THIS IF YOU FOLLOWED README.MD OR CUSTOMIZE IT IF YOU KNOW WHAT YOU ARE DOING ⚠️
[1] = { -- Easy robbery
{coords = vector3(1006.1, -3175.76, -38.65), heading = 150.0, model = 'ch_prop_ch_trophy_monkey_01a', item = 'golden_banana', amount = 1, name = 'Golden Banana', pickupTime = 3000},
{coords = vector3(998.95, -3145.66, -39.90), heading = 18.0, model = 'hei_heist_acc_artgolddisc_04', item = 'golden_disc', amount = 1, name = 'Golden Disc', pickupTime = 3000},
{coords = vector3(998.51, -3169.19, -34.02), heading = 201.0, model = 'xm_prop_x17_laptop_avon', item = 'lapto', amount = 1, name = 'Laptop', pickupTime = 3000},
},
[2] = { -- Medium robbery
{coords = vector3(-137.99, -642.74, 168.26), heading = 150.0, model = 'xm_prop_x17_laptop_avon', item = 'lapto', amount = 1, name = 'Laptop', pickupTime = 3000},
{coords = vector3(-149.74, -645.32, 168.80), heading = 150.0, model = 'hei_prop_heist_gold_bar', item = 'gold_bar', amount = 1, name = 'Golden bar', pickupTime = 3000},
{coords = vector3(-125.75, -638.28, 168.77), heading = 150.0, model = 'bkr_prop_coke_doll', item = 'doll', amount = 1, name = 'Doll', pickupTime = 3000},
{coords = vector3(-126.18, -633.44, 168.56), heading = 150.0, model = 'bkr_prop_biker_case_shut', item = 'money_case', amount = 1, name = 'Case with money', pickupTime = 3000},
{coords = vector3(-144.70, -637.21, 168.62), heading = 150.0, model = 'ba_prop_battle_trophy_no1', item = 'trophy', amount = 1, name = 'Trophy', pickupTime = 3000},
{coords = vector3(-133.62, -637.00, 168.77), heading = 150.0, model = 'v_res_d_dildo_f', item = 'dildoo', amount = 1, name = 'Dildo', pickupTime = 3000},
},
[3] = { -- Hard robbery
{coords = vector3(-783.85, 338.71, 216.29), heading = 217.0, model = 'xm_prop_x17_laptop_avon', item = 'lapto', amount = 1, name = 'Laptop', pickupTime = 3000},
{coords = vector3(-780.91, 339.74, 216.51), heading = 291.0, model = 'ex_prop_exec_award_gold', item = 'gold_figure', amount = 1, name = 'Golden Figure', pickupTime = 3000},
{coords = vector3(-783.30, 327.63, 216.95), heading = 239.0, model = 'v_res_jewelbox', item = 'jewel_box', amount = 1, name = 'Jewelery Box', pickupTime = 3000},
{coords = vector3(-798.74, 328.21, 216.62), heading = 0.0, model = 'bkr_prop_biker_case_shut', item = 'money_case', amount = 1, name = 'Case with money', pickupTime = 3000},
{coords = vector3(-791.28, 331.79, 219.44), heading = 0.0, model = 'prop_cs_shopping_bag', item = 'shopping_bag', amount = 1, name = 'Shopping Bag', pickupTime = 3000},
{coords = vector3(-797.68, 326.34, 219.44), heading = 102.0, model = 'prop_cs_shopping_bag', item = 'shopping_bag', amount = 1, name = 'Shopping Bag', pickupTime = 3000},
{coords = vector3(-805.50, 331.87, 220.13), heading = 195.0, model = 'prop_jewel_02a', item = 'golden_watch', amount = 1, name = 'Golden Watch', pickupTime = 3000},
}
}
Config.GiveBlackMoney = false -- Whether black money should be given for selling items
Config.BlackMoneyName = "blackmoney" -- ⚠️ QB ONLY ⚠️ Name for black money account
Config.SellCooldown = 3 -- Cooldown (in seconds) after selling items (prevents any exploits)
Config.LootPrice = { -- Table of items that can be sold to dealer with price for single one
['trophy'] = 3500, -- 1x Trophy will give player 3500$
['doll'] = 2500, -- 1x Doll will give player 2500$ etc...
['dildoo'] = 3000,
['gold_bar'] = 5000,
['lapto'] = 3500,
['money_case'] = 10000,
['golden_banana'] = 5000,
['golden_disc'] = 7500,
['gold_figure'] = 6000,
['jewel_box'] = 4000,
['shopping_bag'] = 3000,
['golden_watch'] = 9000,
}
Language = { -- Customize your translation here ⚠️ EDIT ONLY RIGHT SIDE ⚠️
["NOTIFY_TITLE"] = "Office Robbery",
["START_ROBBERY"] = "Start Office Robbery",
["END_ROBBERY"] = "Finish Office Robbery",
["CANT_BUY"] = "I have nothing for you sir",
["BUY_DEVICE"] = "Pay %s$ for Device",
["NO_MONEY_OR_SPACE"] = "You don't have enough money or space in your inventory",
["BUY_COMPLETE"] = "You have successfully bought Hacking Device for %s$",
["RECENTLY_ROBBED"] = "You have to wait %s minutes before robbing this office",
["ALREADY_ROBBING"] = "You are already robbing an office!",
["OTHER_ROBBERY_IN_PROGRESS"] = "There is already a robbery in progress!",
["NOT_ENOUGH_COPS"] = "There is not enough cops to start this robbery!",
["ROBBERY_STARTED"] = "Robbery started!",
["GO_TO_HACKER"] = "Visit my friend, he can help you with some security problems you might encounter",
["GO_YOLO"] = "If you think that you can handle it alone, you can try without his help",
["OFFICE_BLIP"] = "Office entry has been marked on your map, good luck!",
["HACKER_BLIP"] = "I have marked his position on your map",
["DONT_HAVE_DEVICE"] = "You don't have Hacking Device to perform this action!",
["PICKUP_LOOT"] = "Pick up %s",
["PICKED_UP"] = "You have picked up %s",
["PICKING_UP"] = "Picking up %s...",
["PICKED_ALL"] = "You grabbed all loot from this office, get out of there!",
["SELL_ITEMS"] = "Items that you stole can be sold at the merchant",
["ROBBERY_SUCCESSFUL"] = "Robbery successful!",
["TOO_FAR_FROM_OFFICE"] = "Robbery cancelled, you went too far from the office!",
["SELL_ALL_ITEMS"] = "Sell all loot",
["SOLD"] = "You have sold all loot for %s$",
["NOTHING_TO_SELL"] = "You don't have any loot to sell",
["SELL_SLOW_DOWN"] = "You have to wait %s seconds before selling items",
["POLICE_ALERT"] = "Alarm triggered in the office at %s street",
["CAUGHT"] = "Shit, alarm has been triggered. I have to hurry!",
["LOCKPICK_DOOR"] = "Lockpick doors",
["LOCKPICK_FAIL"] = "Lockpick failed, try again",
["YOU_ARE_IN"] = "You are inside, be careful and grab all the loot!",
["YOU_ARE_IN_DEVICE"] = "If you own a hacking device, you can use it near a keypad",
["LEAVE_OFFICE"] = "Leave office",
["ENTER_OFFICE"] = "Enter office",
["HACK_SECURITY"] = "Hack security",
["SECURITY_OFF"] = "You have successfully hacked security in the building. It will be off for around %s seconds",
["SECURITY_BACK_ON"] = "Security is back, be careful!",
["LOOT_FOUND"] = "LOOT FOUND",
["CANT_HACK_AGAIN"] = "You can't hack the security again!",
["NOT_INTRESTED"] = "I have nothing to talk with you about"
}
HTML_Language = {
-- HTML PART --
["ROBBERY_1"] = "Robbery I",
["ROBBERY_2"] = "Robbery II",
["ROBBERY_3"] = "Robbery III",
["EASY"] = "Easy 🟢",
["EASY_DESC"] = "Easiest robbery, even my kid would do it...",
["MEDIUM"] = "Medium 🟠",
["MEDIUM_DESC"] = "Medium robbery, maybe not my kid but yeah... still not that hard",
["HARD"] = "Hard 🔴",
["HARD_DESC"] = "They call it hard but who knows? Maybe it's not hard at all?",
["START_THIS_ROBBERY"] = "Start this robbery ▶",
["HACK_SUCCESS"] = "SUCCESS",
["HACK_FAILED"] = "FAILED",
["HACK_RAN_OUT_OF_TIME"] = "RAN OUT OF TIME"
}
-- ⚠️DON'T TOUCH THIS⚠️
function L(id) if Language[id] then return Language[id] else return "MISSING LOCALE ("..id..")" end end
function L_HTML(id) if HTML_Language[id] then return HTML_Language[id] else return "MISSING LOCALE ("..id..")" end end
Last updated