Skip to content

Troubleshooting

The problems people actually hit, roughly in the order they hit them.


restart does not re-read fxmanifest.lua. If you added a file — a new locale, for instance — type refresh in the server console first, then restart mic_shopcreator.

Errors about es_extended or qb-core on start

Section titled “Errors about es_extended or qb-core on start”

Config.Framework is not detected on its own. Set 'esx' or 'qbcore' to match your server, and start mic_shopcreator after your framework in server.cfg.

On QBox, the value is 'qbcore' — QBox runs QBCore resources through its compatibility layer — and qbx_core must start before mic_shopcreator.

The ACE is mic_shop.open — not mic_shopcreator.open. Check the spelling in your add_ace line, and that it uses an identifier you actually connect with, or a group you are really in.

Everything says “Translation not found”

Section titled “Everything says “Translation not found””

Config.Locale names a file that is not in locales/, or not in shared_scripts in fxmanifest.lua. The console says Locale file not found for … when this happens.

  • You are too far. Shopkeepers only exist within Config.PedSpawnDistance (20 metres by default).
  • The location was robbed. A robbed location closes for its cooldown: shopkeeper and blip disappear for everyone until it ends. See below.
  • Config.SpawnNPC is off. Then there is no shopkeeper by design, only a marker or a target spot.
  • The model is invalid. A location’s model that will not load is swapped for Config.DefaultPed, and the console says Using default. If the default will not load either, you get CRITICAL: Could not load default ped model and no shopkeeper — put a valid model in Config.DefaultPed.

I can see the shopkeeper but cannot open the shop

Section titled “I can see the shopkeeper but cannot open the shop”

Config.Interaction does not match what you run. It ships as 'ox_target'. Set 'qb-target' for qb-target, or 'default' to walk up and press E within Config.RadiusInteract.

On QBCore with 'default', the prompt is not shown — ShowHelpNotification in bridge/client.lua is empty for QBCore. E still works; fill that function with your own help-text call to show the prompt.

“This shop is currently on cooldown” / a robbed shop stays closed for hours

Section titled ““This shop is currently on cooldown” / a robbed shop stays closed for hours”

A robbed location stays closed for the shop’s Cooldown (minutes). If a shop has no cooldown saved, the fallback is Config.RobberyCooldown — which is also read as minutes, so the shipped 300 is five hours. Set a cooldown on every robbable shop in the panel, or lower the fallback.

The shop window looks for <item name>.png in each folder of Config.InventoryImagePath, in order. It ships pointing at ox_inventory’s folder. On another inventory, put that inventory’s image folder there as a nui:// path. If the item name and the image file name differ, there is no picture.

Black money is paid from an account called black_money. QBCore has no such account out of the box, so use Cash, Bank or All (Cash + Bank) for products on QBCore — or add the account and adjust GetAccount in bridge/server.lua to however your server handles dirty money.

An owner opens the shop and has no gear button

Section titled “An owner opens the shop and has no gear button”

The owner list must hold the identifier Config.IdentifierType uses:

Config.IdentifierTypeWhat to type as the owner
'discord'The Discord ID number only, without discord:
'license'The full licence, including license:
'esx'The ESX identifier as stored in users, including any char1: prefix
'citizenid'The QBCore citizen ID

If you changed Config.IdentifierType after owners were added, add them again.

  • With 'discord', the player must have Discord linked; otherwise they are told to link it.
  • They must be within 10 metres of the owner when the owner opens the list.
  • They must press Y when asked. On QBCore the question is shown through ShowHelpNotification in bridge/client.lua, which is empty for QBCore — fill it, or tell the player to press Y.

Robbery must be enabled on that shop, and the player must be aiming a weapon — not bare hands — at the shopkeeper from within 5 metres. A location that is already being robbed, or still on cooldown, refuses.

  • Webhooks must be on for that shop, with a valid Discord webhook URL.
  • Config.Screenshot is on but screenshot-basic is not running. The log is sent through the screenshot, so without that resource nothing goes out. Start screenshot-basic before this resource, or set Config.Screenshot = false.

Config.PoliceAlert = "default" notifies players whose job is in Config.RobberyNotifyJobs, by job name. With "custom", nothing is sent until you write your dispatch call in TriggerPoliceAlert in bridge/server.lua — it ships empty.