Skip to content

Installation

Ten minutes: one SQL file, one permission, and three lines of config.lua worth checking.


You needWhy
ESX, QBCore or QBoxMoney, jobs, items and notifications come from the framework
oxmysqlEverything the shops remember is in your database
ox_target or qb-targetOptional. ox_target is the default; without either, players get a help prompt and press E
screenshot-basicOptional, for screenshots on Discord logs. Needed if you leave Config.Screenshot on

Download mic_shopcreator from your Cfx.re granted assets and drop the folder into your resources, for example resources/[mic]/mic_shopcreator.


In server.cfg, ensure mic_shopcreator goes below oxmysql, your framework (es_extended, qb-core or qbx_core), your inventory, your target resource and screenshot-basic.

It worked when the resource starts with no red lines, and no Locale file not found message.


Import mic_shopcreator.sql once. It creates nine tables:

TableWhat it holds
mic_shopcreatorThe shops, with their blip, job, robbery, ownership and webhook settings
mic_shopcreator_locationsWhere each shopkeeper stands, its model, its clothes, and when it was last robbed
mic_shopcreator_productsProducts of shops the server runs
mic_shopcreator_owner_productsProducts of player-owned shops, with their stock
mic_shopcreator_jobsWhich jobs and grades may use a shop
mic_shopcreator_rewardsWhat a robbery pays out
mic_shopcreator_ownersWho owns which shop
mic_shopcreator_employeesWho works where, their commission and their personal vault
mic_shopcreator_vaultsEach owned shop’s clean and black-money balance

Updating from an older version? You do not need update.sql: on every start the resource checks for the columns added since (clothes on locations, min_amount and max_amount on rewards) and adds them if they are missing. The console says Added clothes column to mic_shopcreator_locations table. the one time it does.


None of its own. A shop sells items that already exist in your inventory — you type their names when you add a product. Product pictures come from your inventory’s image folder, see step 5.


Open config.lua and check:

OptionSet it to
Config.Framework'esx' (the default) or 'qbcore'. It is not detected on its own. On QBox, use 'qbcore' — QBox runs QBCore resources through its compatibility layer
Config.Interaction'ox_target' (the default), 'qb-target' or 'default' (help prompt and E)
Config.InventoryImagePathWhere your inventory keeps item pictures. Ships pointing at nui://ox_inventory/web/images/
Config.IdentifierTypeHow owners and employees are recognised. Ships as 'discord'; see below

Config.IdentifierType decides what goes into the owner list and what the employee table stores:

ValuePlayers are recognised byUse it when
'discord'Their Discord ID, the number without discord:Everyone connects with Discord linked
'license'Their Rockstar licence, the full license:…You do not require Discord
'esx'ESX’s own identifier, character prefix includedESX with multicharacter, so each character owns separately
'citizenid'The QBCore citizen IDQBCore or QBox, so each character owns separately

Pick it before anybody owns or works in a shop. Changing it later means re-entering every owner, and existing employees will no longer be recognised.


The panel is locked behind the ACE permission mic_shop.open (not mic_shopcreator.open). Grant it in server.cfg with an add_ace line — to one person, for example add_ace identifier.discord:YOUR_DISCORD_ID mic_shop.open allow, or to a group, for example add_ace group.admin mic_shop.open allow.

It worked when /shopcreator opens the Shop Creator. Without the permission you get the “no permission” notification.


  1. /shopcreator, create a shop, and give it a name.
  2. Add a location. A preview of the shopkeeper follows where you look: mouse wheel turns it, ↑ / ↓ raise and lower it, E places it, X cancels.
  3. Add a product: an item that exists in your inventory, a price, a category and a payment type. Save.

It worked when the shopkeeper is standing where you placed it, talking to it opens the shop with your product and its picture, and buying it takes the money and gives the item.


  • Config.IdentifierType is final. Decide it now; owners and employees are stored by it.
  • Only admins have mic_shop.open. It can create, edit and delete every shop.
  • Leave Config.Screenshot on only if screenshot-basic runs. Otherwise logs will not send.
  • Robbery cooldowns are set per shop, in minutes — set one on every shop you make robbable.
  • Buy something on a normal character in each job-restricted shop, to check the grade you set.