Thanks
Update 2.0.1 of all versions
- Fixed a bug where in some cases it was possible to buy more items than indicated in the final cost.
- Improved UI responsiveness.
- Minor mistakes.
Contact me if you have any questions.
Is there a way to use qb-target to open the shop instead of pressing E? Really love this shop UI but most of my server is using targets.
Hello, only if you implement qb-target yourself in the unencrypted version.
Update 2.1.0 of all versions
- Added the ability to register several police jobs.
- Added the ability to register several jobs for robbery.
- Distance algorithms have been redesigned.
- Fixed a bug where ms could reach the limit values.
- Fixed a bug where in some cases the UI could be broken by interacting.
- Improved algorithms of robbery functions.
- Deprecated methods have been removed.
- Improved UI responsiveness.
Contact me if you have any questions.
Update 2.2.0 of all versions
- The configuration file has been completely redesigned.
- Added the ability to configure any store. You are no longer limited in the types of stores and their contents.
- Added export to store opening from any other places.
- Added support for Dialogue system.
New configuration file
--/*
-- ██████╗░██╗░░░██╗██████╗░███████╗██╗░░░██╗███████╗░██████╗████████╗███╗░░██╗██╗██╗░░██╗
-- ██╔══██╗██║░░░██║██╔══██╗██╔════╝██║░░░██║██╔════╝██╔════╝╚══██╔══╝████╗░██║██║██║░██╔╝
-- ██████╦╝██║░░░██║██████╔╝█████╗░░╚██╗░██╔╝█████╗░░╚█████╗░░░░██║░░░██╔██╗██║██║█████═╝░
-- ██╔══██╗██║░░░██║██╔══██╗██╔══╝░░░╚████╔╝░██╔══╝░░░╚═══██╗░░░██║░░░██║╚████║██║██╔═██╗░
-- ██████╦╝╚██████╔╝██║░░██║███████╗░░╚██╔╝░░███████╗██████╔╝░░░██║░░░██║░╚███║██║██║░╚██╗
-- ╚═════╝░░╚═════╝░╚═╝░░╚═╝╚══════╝░░░╚═╝░░░╚══════╝╚═════╝░░░░╚═╝░░░╚═╝░░╚══╝╚═╝╚═╝░░╚═╝*/
Config = {}
--If ESX = false and QBCore = false, then Standalone will turn on
--Are you using ESX?
Config.UseESX = true
--Enable this if ESX throws an error: Used the getSharedObject Event, this event no longer exists!
Config.UseESX_lib = false
--Are you using QBCore?
Config.UseQBCore = false
--Interaction Button
Config.ShopOpenButton = 38
--Do you want to be able to rob the cash register?
Config.Robberies = true
--Random robbery time from 10 to 30 seconds
Config.TimeRob = math.random(10,30)
--Random reward for robbery from $50 to $500
Config.MoneyRob = math.random(50,500)
--Interaction Button
Config.RobButton = 23
--Do you want to use the job for robberies
Config.UseJobRobESX = true
--Do you want to use the job for robberies
Config.UseJobRobQBCore = false
--Job for a police
Config.JobPolice = {"police", "unemployed"}
--Job for a robbery
Config.JobRob = {"gang1", "unemployed"}
--Objects for robbery
Config.ObjeRob = {'prop_till_01'}
--Cooldown to robbery
Config.Cooldown = 600000 --10 min
function BlackMarketLocations()
local locationsTable = { --Store locations [Black Market]
vector3(0.6, -1824.3, 28.5),
vector3(679.0, -897.3, 22.4),
vector3(-125.9, 1895.7, 196.3),
vector3(124.9, 6644.6, 30.7),
}
--Return a random element from the locations table
return locationsTable[math.random(#locationsTable)]
end
Config.Shops = {
{
shopName = "24/7", --Store name
interactionDistance = 2.0, --Distance for interaction with the store
useStreetNameShop = true, --Do you want to use name of the street (Shop) if false then streen name = "Secret"
alternativeStreetNameShop = "burevestnik.tebex.io", --It will work if useStreetNameShop = false
useBlip = true, --The ability to use blip on the map for this ped.
blipID = 59, --Blip ID.
blipScale = 0.7, --Blip scale.
blipColor = 25, --Blip color.
blipText = "24/7", --Blip text.
UseMarkers = false, --Do you want to use a marker ?
MarkerType = 1, --Marker type
MarkerSizeX = 0.5, --Marker size X
MarkerSizeY = 0.5, --Marker size Y
MarkerSizeZ = 0.5, --Marker size Z
MarkerColourR = 122, --Marker colour R
MarkerColourG = 195, --Marker colour G
MarkerColourB = 254, --Marker colour B
MarkerColourA = 20, --Marker colour A
allowedJobsInteraction = {"all"}, --Jobs that can interact with the store. If "all", then everyone can interact with the store.
locations = { --Store locations
vector3(25.7, -1347.2, 28.4),
vector3(373.8, 325.8, 102.5),
vector3(2557.4, 382.2, 107.6),
vector3(-3038.9, 585.9, 102.5),
vector3(-3241.9, 1001.4, 11.8),
vector3(547.4, 2671.7, 41.1),
vector3(1961.4, 3740.6, 31.3),
vector3(2678.9, 3280.6, 54.2),
vector3(1729.2, 6414.1, 34.0),
},
categories = { --Minimum 0 categories, maximum 4
"Water",
"Meal",
"Tools",
"Various",
},
products = {
{ --Category 1
{'orange',"Orange",9,5}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'bread',"bread",10,5}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'beer','Beer v1',4,12}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'beer1','Beer v2',22,12}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'beer2','Beer v3',25,120}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'beer3','Beer box',27,12}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'beer4','Beer v4',31,12}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
},
{ --Category 2
{'pizza','Pizza',5,15}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'burger',"Burger",6,5}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'chips','Chips',3,12}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'hotdog','Hot dog',7,5}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'donut','Donut',46,3}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
},
{ --Category 3
{'wrench','Wrench',194,50}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'hammer',"Hammer",191,15}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'toolkit',"Tool kit",250,60}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
},
{ --Category 4
{'boombox','Boombox',610,40}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'fak',"First aid kit",252,20}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'fishingrod',"Fishing rod",207,200}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'gear',"Gear",208,35}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'drone',"Drone",779,800}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
},
}
},
{
shopName = "Robs Liquor", --Store name
interactionDistance = 2.0, --Distance for interaction with the store
useStreetNameShop = true, --Do you want to use name of the street (Shop) if false then streen name = "Secret"
alternativeStreetNameShop = "burevestnik.tebex.io", --It will work if useStreetNameShop = false
useBlip = true, --The ability to use blip on the map for this ped.
blipID = 59, --Blip ID.
blipScale = 0.7, --Blip scale.
blipColor = 25, --Blip color.
blipText = "Robs Liquor", --Blip text.
UseMarkers = false, --Do you want to use a marker ?
MarkerType = 1, --Marker type
MarkerSizeX = 0.5, --Marker size X
MarkerSizeY = 0.5, --Marker size Y
MarkerSizeZ = 0.5, --Marker size Z
MarkerColourR = 122, --Marker colour R
MarkerColourG = 195, --Marker colour G
MarkerColourB = 254, --Marker colour B
MarkerColourA = 20, --Marker colour A
allowedJobsInteraction = {"all"}, --Jobs that can interact with the store. If "all", then everyone can interact with the store.
locations = { --Store locations
vector3(1135.8, -982.2, 45.4),
vector3(-1222.9, -906.9, 11.3),
vector3(-1487.5, -379.1, 39.1),
vector3(-2968.2, 390.7, 14.0),
vector3(1166.0, 2708.9, 37.1),
vector3(1392.5, 3604.6, 33.9),
vector3(-1393.4, -606.6, 29.3),
vector3(-559.9, 287.0, 81.1),
},
categories = { --Minimum 0 categories, maximum 4
"Water",
"Meal",
"Tools",
"Various",
},
products = {
{ --Category 1
{'orange',"Orange",9,5}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'bread',"bread",10,5}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'beer','Beer v1',4,12}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'beer1','Beer v2',22,12}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'beer2','Beer v3',25,120}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'beer3','Beer box',27,12}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'beer4','Beer v4',31,12}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
},
{ --Category 2
{'pizza','Pizza',5,15}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'burger',"Burger",6,5}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'chips','Chips',3,12}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'hotdog','Hot dog',7,5}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'donut','Donut',46,3}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
},
{ --Category 3
{'wrench','Wrench',194,50}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'hammer',"Hammer",191,15}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'toolkit',"Tool kit",250,60}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
},
{ --Category 4
{'boombox','Boombox',610,40}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'fak',"First aid kit",252,20}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'fishingrod',"Fishing rod",207,200}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'gear',"Gear",208,35}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'drone',"Drone",779,800}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
},
}
},
{
shopName = "LTD Gasoline", --Store name
interactionDistance = 2.0, --Distance for interaction with the store
useStreetNameShop = true, --Do you want to use name of the street (Shop) if false then streen name = "Secret"
alternativeStreetNameShop = "burevestnik.tebex.io", --It will work if useStreetNameShop = false
useBlip = true, --The ability to use blip on the map for this ped.
blipID = 59, --Blip ID.
blipScale = 0.7, --Blip scale.
blipColor = 25, --Blip color.
blipText = "LTD Gasoline", --Blip text.
UseMarkers = false, --Do you want to use a marker ?
MarkerType = 1, --Marker type
MarkerSizeX = 0.5, --Marker size X
MarkerSizeY = 0.5, --Marker size Y
MarkerSizeZ = 0.5, --Marker size Z
MarkerColourR = 122, --Marker colour R
MarkerColourG = 195, --Marker colour G
MarkerColourB = 254, --Marker colour B
MarkerColourA = 20, --Marker colour A
allowedJobsInteraction = {"all"}, --Jobs that can interact with the store. If "all", then everyone can interact with the store.
locations = { --Store locations
vector3(-48.5, -1757.5, 28.4),
vector3(1163.3, -323.8, 68.2),
vector3(-707.5, -914.2, 18.2),
vector3(-1820.5, 792.5, 137.1),
vector3(1698.3, 4924.4, 41.0),
},
categories = { --Minimum 0 categories, maximum 4
"Water",
"Meal",
"Tools",
"Various",
},
products = {
{ --Category 1
{'orange',"Orange",9,5}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'bread',"bread",10,5}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'beer','Beer v1',4,12}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'beer1','Beer v2',22,12}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'beer2','Beer v3',25,120}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'beer3','Beer box',27,12}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'beer4','Beer v4',31,12}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
},
{ --Category 2
{'pizza','Pizza',5,15}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'burger',"Burger",6,5}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'chips','Chips',3,12}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'hotdog','Hot dog',7,5}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'donut','Donut',46,3}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
},
{ --Category 3
{'wrench','Wrench',194,50}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'hammer',"Hammer",191,15}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'toolkit',"Tool kit",250,60}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
},
{ --Category 4
{'boombox','Boombox',610,40}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'fak',"First aid kit",252,20}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'fishingrod',"Fishing rod",207,200}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'gear',"Gear",208,35}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'drone',"Drone",779,800}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
},
}
},
{
shopName = "Black Market", --Store name
openCooldown = 600000, --10 min
statusCooldown = false, --10 min
interactionDistance = 2.0, --Distance for interaction with the store
useStreetNameShop = true, --Do you want to use name of the street (Shop) if false then streen name = "Secret"
alternativeStreetNameShop = "burevestnik.tebex.io", --It will work if useStreetNameShop = false
useBlip = true, --The ability to use blip on the map for this ped.
blipID = 429, --Blip ID.
blipScale = 0.7, --Blip scale.
blipColor = 2, --Blip color.
blipText = "Black Market", --Blip text.
UseMarkers = false, --Do you want to use a marker ?
MarkerType = 1, --Marker type
MarkerSizeX = 0.5, --Marker size X
MarkerSizeY = 0.5, --Marker size Y
MarkerSizeZ = 0.5, --Marker size Z
MarkerColourR = 122, --Marker colour R
MarkerColourG = 195, --Marker colour G
MarkerColourB = 254, --Marker colour B
MarkerColourA = 20, --Marker colour A
allowedJobsInteraction = {"test", "unemployed"}, --Jobs that can interact with the store. If "all", then everyone can interact with the store.
locations = {BlackMarketLocations()}, --Store locations
categories = { --Minimum 0 categories, maximum 4
--"Basic",
},
products = {
{ --Category 1
{'weed','Weed',14,100}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'bag','Bag',17,10}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'gloves','Gloves',-3,3}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'bong','Bong',62,5}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
{'binoculars','Binoculars',63,200}, --1 - the name of the item in the database | 2 - label | 3 - the name of the image of the item in the img package | 4 - price
},
}
}
}
Config.Translation = {
['menu'] = 'Press ~INPUT_CONTEXT~ to ~g~interact',
['buy1'] = 'You bought: ~g~',
['buy2'] = ' ~w~- ~g~$',
['nomoney'] = '~r~You do not have enough Money!',
['noaccess'] = '~r~Bro, get out of here!',
['robbery1'] = 'Press ~g~F~w~ to rob',
['robbery2'] = 'You stole: ',
['robbery3'] = '~g~$',
}
--Exports
--exports.Burevestnik_shops:bur_open_shop_by_id(1) --where the number is the store id
Contact me if you have any questions.
The script is very very good. The support is really very very good <3
Thanks for the review
Update 2.3.0 of all versions
- Redesigned notifications.
- The ability to configure police notifications has been added to the configuration file so that you can edit it as you wish.
Contact me if you have any questions.
+1 The script is really perfect, the support is really fast!
Thanks you for the review
Can we change currency to pay with? Like dirty money or an item?
Huge script, with a giant possibility of costumization. I even needed same help from the dev and he gave me quick support and solution for my situation. Thanks and continue the good work mate.
I think we can mate. I have changed it from cash to bank money mate.
Thanks for the review
You can do this by changing the code only in the open version of the resource, but this cannot be done conveniently through the configuration file.
Update 2.3.1 of all versions
- Added weight system for ESX.
- Fixed a bug that in some cases did not allow robberies to start with the QBCore framework enabled.|
Contact me if you have any questions.
very nice shop, bought it and got really good support. 10/10 <3
Thank you very much!