> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shdevelopment.org/llms.txt
> Use this file to discover all available pages before exploring further.

# sh-burgershot: Burger Shot Restaurant Job for FiveM

> sh-burgershot adds a full Burger Shot restaurant job for QBCore. Employees cook, assemble, and serve a complete menu of burgers, sides, and drinks.

sh-burgershot transforms the GTA V Burger Shot location into a fully operational fast-food restaurant job for your QBCore or QBX Core server. Employees clock in, work their way through a realistic cooking chain — buying raw ingredients, cooking individual components, and assembling finished products — then serve customers at the counter and collect payment. A complete job hierarchy covers Cashier, Cook, Manager, and Owner grades, and a boss banking system lets management handle the restaurant's finances in-game.

## Supported Frameworks

* **QBCore** — full support
* **QBX Core** — full support

## Dependencies

| Dependency                                                    | Required | Notes                                           |
| ------------------------------------------------------------- | -------- | ----------------------------------------------- |
| [PolyZone](https://github.com/mkafrin/PolyZone)               | ✅ Yes    | Zone detection for cooking stations and storage |
| [ox\_lib](https://github.com/overextended/ox_lib)             | ✅ Yes    | UI menus and utility functions                  |
| [mysql-async](https://github.com/brouznouf/fivem-mysql-async) | ✅ Yes    | Database persistence                            |
| qb-target **or** ox\_target                                   | ✅ Yes    | Third-eye interaction on all props and stations |
| qb-inventory **or** ox\_inventory                             | ✅ Yes    | Item and storage handling                       |

## Installation

<Steps>
  <Step title="Add the resource">
    Drop the `sh-burgershot` folder into your server's `resources` directory and add `ensure sh-burgershot` to your `server.cfg`.
  </Step>

  <Step title="Run the SQL">
    Open the `INSTALL/` folder inside the resource. Execute the included `.sql` file against your database to create the required tables.
  </Step>

  <Step title="Add inventory items">
    Import the item definitions from `INSTALL/` into your inventory resource. For qb-inventory, add the entries to `qb-core/shared/items.lua`. For ox\_inventory, add them to `ox_inventory/data/items.lua`.
  </Step>

  <Step title="Configure the resource">
    Open `shared/config.lua` and set `Config.Target`, `Config.Menu`, and `Config.Inventory` to match the resources running on your server.
  </Step>

  <Step title="Restart and test">
    Start or restart the resource, then log into your server and clock in at the Burger Shot location to verify everything is working.
  </Step>
</Steps>

<Note>
  All SQL and item setup files are in the `INSTALL/` folder. Do not start the resource before running the SQL — missing tables will cause errors the moment a player interacts with any cooking station.
</Note>

## Job Grades

| Grade | Role    | Permissions                                 |
| ----- | ------- | ------------------------------------------- |
| 0     | Cashier | Serve customers, operate registers          |
| 1     | Cook    | Use all cooking stations and storage        |
| 2     | Manager | All Cook permissions + manage employee duty |
| 3     | Owner   | Full access including boss banking          |

## Cooking Workflow

All interactions use your configured third-eye target — look at a prop or station and use the target key to see the available actions.

<Steps>
  <Step title="Acquire raw ingredients">
    Purchase raw ingredients from the restaurant's ingredient storage. Ingredients are tracked per-item in your inventory.
  </Step>

  <Step title="Cook components">
    Use cooking stations to prepare individual components: grill patties, fry fries, fill drink cups, and so on. Batch cook in quantities of 1×, 5×, or 10× to speed up prep during busy periods.
  </Step>

  <Step title="Assemble products">
    Combine cooked components at the assembly station to create finished menu items — burgers, combo meals, and drinks.
  </Step>

  <Step title="Serve and collect payment">
    Hand finished products to customers at the counter. Completed orders register payment directly to the restaurant's till.
  </Step>
</Steps>

## Configuration

```lua shared/config.lua theme={null}
Config.Target    = 'qb'   -- 'qb' (qb-target) or 'ox' (ox_target)
Config.Menu      = 'qb'   -- 'qb' (qb-menu) or 'ox' (ox_lib context menu)
Config.Inventory = 'qb'   -- 'qb' (qb-inventory) or 'ox' (ox_inventory)

-- Cooking animation durations (randomised per item type, in milliseconds)
Config.MakingTime = {
    Fries    = math.random(2000, 3000),
    Donut    = math.random(2000, 3000),
    Drinks   = math.random(2000, 3000),
    CreamPie = math.random(2000, 3000),
    Patty    = math.random(2000, 3000),
    Burgers  = math.random(2000, 3000),  -- Assembly time
}

-- Eating/drinking animation durations (in milliseconds)
Config.ConsumeTime = {
    Food  = math.random(2000, 3000),
    Drink = math.random(2000, 3000),
}

-- Food and drink item hunger/thirst modifiers
Config.Consumables = {
    ['bs_bleeder']     = { type = 'food',  hunger = math.random(15, 25) },
    ['bs_torpedo']     = { type = 'food',  hunger = math.random(15, 25) },
    ['bs_moneyshot']   = { type = 'food',  hunger = math.random(15, 25) },
    ['bs_heartstopper']= { type = 'food',  hunger = math.random(15, 25) },
    ['bs_meatfree']    = { type = 'food',  hunger = math.random(15, 25) },
    ['bs_fries']       = { type = 'food',  hunger = math.random(15, 25) },
    ['bs_rimjob']      = { type = 'food',  hunger = math.random(15, 25) },
    ['bs_creampie']    = { type = 'food',  hunger = math.random(15, 25) },
    ['bs_cola']        = { type = 'drink', thirst = math.random(15, 25) },
    ['bs_sprunk']      = { type = 'drink', thirst = math.random(15, 25) },
    ['bs_shake']       = { type = 'drink', thirst = math.random(15, 25) },
}

-- Map blip for the Burger Shot location
Config.BlipSettings = {
    Enabled  = true,
    Position = vector3(-1183.8, -887.87, 13.86),
    Name     = 'Burger Shot',
    Sprite   = 106,
    Scale    = 0.6,
    Colour   = 1,
}

-- Boss banking integration
Config.Banking = function(society, amount)
    return exports['qb-banking']:AddMoney(society, amount)
end
```

## Menu and Storage

<Accordion title="Menu items">
  sh-burgershot ships with a full menu across three categories. Prices are set per item in `shared/config.lua`.

  | Category | Items                                                 | Price Range |
  | -------- | ----------------------------------------------------- | ----------- |
  | Burgers  | Bleeder, Torpedo, Money Shot, Heartstopper, Meat Free | $10–$20     |
  | Sides    | Fries, Onion Rings (Rimjob), Cream Pie                | $10–$20     |
  | Drinks   | Cola, Sprunk, Shake                                   | $10–$20     |
</Accordion>

<Accordion title="Storage types">
  The restaurant uses four distinct storage containers, each with configurable slot counts and weight limits set in `shared/config.lua`:

  * **Fridge** — refrigerated ingredient storage (default: 20 slots)
  * **Food Storage** — dry goods and packaging (default: 20 slots)
  * **Employee Trays** — personal holding for in-progress orders (default: 5 slots)
  * **Bags** — portable carry storage for deliveries (default: 5 slots)
</Accordion>

<Accordion title="Ingredient store">
  Raw ingredients are purchased from the in-restaurant store at \$2 each. Available ingredients include buns, uncooked meat, plant-based meat, lettuce, tomato, potato, dough, pastry, soda, syrup, ice cream, and milk.
</Accordion>

## Translations

All player-facing UI text is centralised in `shared/translation.lua`. Edit this file to change notification messages, menu labels, and button text without touching any other file. This makes sh-burgershot straightforward to localise into any language.
