Installation

Dependencies, items, society account, job registration, and the coords you must move if you use a different MLO.

Dependencies

ResourceRequiredNotes
ox_inventoryYesStash, items, and ingredient consumption
ox_libYesNotifications, callbacks, text UI
oxmysqlYesPersistence
qb-core, qbx_core, or es_extendedOne ofAuto detected, override with Config.Framework
Banking: qb-management, qb-banking, Renewed-Banking, esx_addonaccount, or bablo-bankingOne ofAuto detected, override with Config.Banking
ox_target or qb-targetOne ofAuto 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:

cfg
ensure AC_Burgershot

2. 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.

TableHolds
burgershot_ordersOrder header: state, totals, channel, timestamps, cook and customer
burgershot_order_linesOne row per item: recipe id, quantity, cook state
burgershot_auditEvery state transition
burgershot_tipsOne row per tip paid, per order and cook
burgershot_xpPer 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 the AC_Burgershot.openTablet client 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

sql
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

lua
Config.Societies.Jobs['burgershot'] = {
    AccountNumber = 'BBURGERSHOT',
    Label         = 'BurgerShot',
    Access        = { 'boss' },
}

ESX with esx_addonaccount

sql
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:

sql
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 keyWhat it is
Config.StationsThe 5 cooking stations
Config.OrderPoints2 tills where customers place orders
Config.PayPointThe pay and collect window
Config.ServePointKitchen-side spot where the cook serves finished items
Config.Stash and Config.SupplierCombined stash and supplier zone
Config.DutyPointClock in and out
Config.KitchenTabletTablet zone
Config.BossMenuBoss 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:

  1. Give yourself the job: /setjob <yourId> burgershot 3
  2. Go to the MLO and clock in at the duty point.
  3. Use the burgershot_tablet item 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

  1. Back up config/config.lua, config/items.lua, config/recipes.lua, and any custom locale files.
  2. Replace the resource folder.
  3. Restore your config files.
  4. 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.