Installation
Dependencies, items, society account, job registration, and the coords you must move if you use a different MLO.
Dependencies
| Resource | Required | Notes |
|---|---|---|
| ox_inventory | Yes | Stash, items, and ingredient consumption |
| ox_lib | Yes | Notifications, callbacks, text UI |
| oxmysql | Yes | Persistence |
| qb-core, qbx_core, or es_extended | One of | Auto detected, override with Config.Framework |
| Banking: qb-management, qb-banking, Renewed-Banking, esx_addonaccount, or bablo-banking | One of | Auto detected, override with Config.Banking |
| ox_target or qb-target | One of | Auto detected, override with Config.Target |
QBCore with ox_inventory, ox_target, and qb-management is the fully tested combination. The qbx_core and ESX adapters ship and work, and are community tested.
1. Drop the resource
resources/
└── [jobs]/
└── AC_Burgershot/
Then add it to server.cfg:
ensure AC_Burgershot2. Database
Nothing to run by hand. server/install.lua creates every table on first boot with CREATE TABLE IF NOT EXISTS, so re-runs are no-ops. If you would rather do it manually, sql/install.sql holds the same schema.
| Table | Holds |
|---|---|
burgershot_orders | Order header: state, totals, channel, timestamps, cook and customer |
burgershot_order_lines | One row per item: recipe id, quantity, cook state |
burgershot_audit | Every state transition |
burgershot_tips | One row per tip paid, per order and cook |
burgershot_xp | Per employee XP and level |
3. ox_inventory items
Item definitions. Open sql/items_for_ox_inventory.lua in the resource and paste the whole block into your ox_inventory/data/items.lua. It defines:
- 6 raw ingredients:
raw_meat,burger_bun,potato,cheese,tomato,lettuce - 5 outputs:
cooked_meat,hamburger,cola,fries,murder_meal - 5 random toys:
toy_bloods,toy_ballas,toy_vagos,toy_gsf,toy_pd, dropped by the Murder Meal - 1 tablet:
burgershot_tablet, wired to theAC_Burgershot.openTabletclient export
Icons. Copy the resource's inventory_images/ folder contents into ox_inventory/web/images/. All 17 PNGs ship with the script, so there is nothing to source. Replace them with your own art if you want, but keep the filenames.
AC_Burgershot/inventory_images/*.png → ox_inventory/web/images/
4. Society account
The account name is Config.SocietyAccount, which defaults to burgershot. Create it in whichever banking resource you run.
QBCore with qb-management
INSERT INTO addon_account (account_name, account_label, account_shared) VALUES
('society_burgershot', 'BurgerShot', 1);
INSERT INTO addon_account_data (account_name, money) VALUES
('society_burgershot', 0);qb-banking or Renewed-Banking
Add burgershot to that resource's society config.
bablo-banking
Config.Societies.Jobs['burgershot'] = {
AccountNumber = 'BBURGERSHOT',
Label = 'BurgerShot',
Access = { 'boss' },
}ESX with esx_addonaccount
INSERT INTO addon_account (name, label, shared) VALUES ('society_burgershot', 'BurgerShot', 1);
INSERT INTO addon_account_data (account_name, money) VALUES ('society_burgershot', 0);If Withdraw and Deposit do nothing in the tablet, it is almost always this step. The society account does not exist in your banking resource yet.
5. Job
QBCore and qbx_core. The job is registered automatically at boot with grades 0 Trainee, 1 Crew, 2 Manager, 3 Owner. If you prefer to define it yourself in qb-core/shared/jobs.lua, set Config.JobDefinition = nil and add it there.
ESX. Add it to your jobs tables:
INSERT INTO jobs (name, label) VALUES ('burgershot', 'BurgerShot');
INSERT INTO job_grades (job_name, grade, name, label, salary) VALUES
('burgershot', 0, 'trainee', 'Trainee', 150),
('burgershot', 1, 'crew', 'Crew', 250),
('burgershot', 2, 'manager', 'Manager', 400),
('burgershot', 3, 'owner', 'Owner', 750);6. Coordinates
The shipped coords target the Vespucci BurgerShot MLO, the free version found on most public MLO repos. If you use a different interior, edit these in config/config.lua:
| Config key | What it is |
|---|---|
Config.Stations | The 5 cooking stations |
Config.OrderPoints | 2 tills where customers place orders |
Config.PayPoint | The pay and collect window |
Config.ServePoint | Kitchen-side spot where the cook serves finished items |
Config.Stash and Config.Supplier | Combined stash and supplier zone |
Config.DutyPoint | Clock in and out |
Config.KitchenTablet | Tablet zone |
Config.BossMenu | Boss desk, gated to Owner grade |
Stand where you want the box, grab vector4(x, y, z, heading) with any coord tool, and paste the position in.
Station coords are deliberately pushed about 0.7m forward along the heading you were facing when you captured them, so the target box sits on the prop rather than on the spot you stood. If you re-capture a station, apply the same offset:
target = origin + 0.7 * (-sin(h), cos(h)).
Set Config.Debug = true while you place them. It draws the target boxes and prints debug lines.
7. WaveShield
Nothing to do. The script never calls os.time or any other os.* function, all timestamps come from SQL UNIX_TIMESTAMP(). Set Config.WaveShield = true to make that explicit in your config, which also marks the resource for any future update that branches on it.
8. First boot
Restart the server and watch the console. You should see the bridges resolve:
[AC_Burgershot] bridge: framework=qb
[AC_Burgershot] target bridge: using ox
[AC_Burgershot] banking bridge: using qb-management
[AC_Burgershot] AC_Burgershot booted (job=burgershot framework=qb banking=qb-management)
Then:
- Give yourself the job:
/setjob <yourId> burgershot 3 - Go to the MLO and clock in at the duty point.
- Use the
burgershot_tabletitem from your inventory. The tablet opens.
The kitchen stash is seeded with a starting batch of ingredients on boot (Config.StartingStash) so the first cook is not blocked by an empty kitchen.
Translations
Copy locales/en.lua to locales/<code>.lua, translate the strings, and set Config.Locale = '<code>'. Only en ships in v1.0.
Updating
- Back up
config/config.lua,config/items.lua,config/recipes.lua, and any custom locale files. - Replace the resource folder.
- Restore your config files.
- Restart the resource.
Under Cfx asset escrow, the config files, locales, SQL, and the whole web/ folder stay unencrypted, so all of your customization survives an update as long as you keep those files.
