# Installation

{% hint style="danger" %}
Do not skim the instructions. You need to follow every step of the Install Guide to make sure you're installing the script correctly
{% endhint %}

## <sub>Dependency Installation</sub>

### <sub>Jim\_Bridge</sub>

{% hint style="info" %}
This is required for the script to function, it won't work without it
{% endhint %}

{% stepper %}
{% step %}
### <sub>Download</sub>

Get it free from github - [https://github.com/jimathy/jim\_bridge](https://github.com/jimathy/jim_bridge)
{% endstep %}

{% step %}
### Extract

Extract `jim_bridge` and make sure `-main` is removed from the script folder name
{% endstep %}

{% step %}
### Install

Place the extracted `jim_bridge` folder into `/resources/[standalone]`&#x20;
{% endstep %}

{% step %}
### Done


{% endstep %}
{% endstepper %}

***

## <sub>Framework Installation</sub>

{% tabs %}
{% tab title="ESX" %}
### Add the script to the server resources

* It is highly recommend to put this script folder in a new folder called `[jim]`
* Then add `ensure [jim]` **AFTER** your other scripts in your server.cfg

***

### Ensure List

GO TO YOUR `server.cfg`

{% hint style="warning" %}
The ORDER of the load order is important, check information [here](https://jixelpatterns.gitbook.io/docs/troubleshooting/common-issues#load-order)
{% endhint %}

### Resources (EXAMPLE)

```markdown
# Default & Standalone Resources
# ------------------------------
ensure chat
ensure hardcap
ensure oxmysql
start ox_lib

# ESX Legacy Core
# ----------
ensure [core]
ensure [esx_addons]
start ox_inventory
start ox_target
ensure [standalone] # Place `jim_bridge` here

# ESX Addons
# ----------

# Other
ensure [jimextras]  # Place `jim-payments` / `jim-consumables` / `jim-jobgarage` / `jim-djbooth` here
ensure [jim]        # Place all other jim scripts here
```

{% hint style="warning" %}
**IF YOU ALREADY HAVE A \[jim] FOLDER, PUT IT IN THAT FOLDER YOU DO NOT NEED TO CREATE A NEW ONE.**
{% endhint %}

***

### [Jim-Payments](https://github.com/jimathy/jim-payments) (Required/Optional)

* This is the default system for payments in the script but can easily be changed in `client.lua`
* When triggered gets a list of the nearest players and lets you choose which one to charge
* I class it as `optional` because you don't specifically need it if you have another you want to use.

***

### [Jim-Consumables](https://github.com/jimathy/jim-consumables) (Optional)

* If `jim-consumables` is installed, the script will attempt to reroute consumables
* The server side will automatically add the items to `jim-consumables` (edit any values you wish there)
* When used the item will trigger the `jim-script:client:consume` event which detects wether to use built in event's or `jim-consuambles` (if found)
{% endtab %}

{% tab title="QBCore" %}
### Add the script to the server resources

* It is highly recommend to put this script folder in a new folder called `[jim]`
* Then add `ensure [jim]` **AFTER** your other scripts in your server.cfg

***

### Ensure List

GO TO YOUR `server.cfg`

{% hint style="warning" %}
The ORDER of the load order is important, check information here
{% endhint %}

### Resources (EXAMPLE)

```markdown
# QBCore & Extra stuff
ensure qb-core
ensure [qb]
ensure [standalone] # Place `jim_bridge` here
ensure [voice]
ensure [defaultmaps]


# Extra Jim Stuff
ensure [jimextras]  # Place `jim-payments` / `jim-consumables` / `jim-jobgarage` / `jim-djbooth` here
ensure [jim]        # Place all other jim scripts here
```

{% hint style="warning" %}
**IF YOU ALREADY HAVE A \[jim] FOLDER, PUT IT IN THAT FOLDER YOU DO NOT NEED TO CREATE A NEW ONE.**
{% endhint %}

***

### [Jim-Payments](https://github.com/jimathy/jim-payments) (Required/Optional)

* This is the default system for payments in the script but can easily be changed in `client.lua`
* When triggered gets a list of the nearest players and lets you choose which one to charge
* I class it as `optional` because you don't specifically need it if you have another you want to use.

***

### [Jim-Consumables](https://github.com/jimathy/jim-consumables) (Optional)

* If `jim-consumables` is installed, the script will attempt to reroute consumables
* The server side will automatically add the items to `jim-consumables` (edit any values you wish there)
* When used the item will trigger the `jim-script:client:consume` event which detects wether to use built in event's or `jim-consuambles` (if found)

***
{% endtab %}

{% tab title="QBOX" %}
### Add the script to the server resources

* It is highly recommend to put this script folder in a new folder called `[jim]`
* Then add `ensure [jim]` **AFTER** your other scripts in your server.cfg

***

### Ensure List

GO TO YOUR `server.cfg`

{% hint style="warning" %}
The ORDER of the load order is important, check information here
{% endhint %}

### Resources (EXAMPLE)

```markdown
# Qbox & Extra stuff
ensure ox_lib
ensure qbx_core
ensure ox_target
ensure [ox]
ensure [qbx]
ensure [standalone] # Place `jim_bridge` here
ensure [voice]

ensure [npwd-apps]
ensure qbx_npwd
ensure npwd

# Extra Jim Stuff
ensure [jimextras]  # Place `jim-payments` / `jim-consumables` / `jim-jobgarage` / `jim-djbooth` here
ensure [jim]        # Place all other jim scripts here
```

{% hint style="warning" %}
**IF YOU ALREADY HAVE A \[jim] FOLDER, PUT IT IN THAT FOLDER YOU DO NOT NEED TO CREATE A NEW ONE.**
{% endhint %}

***

### [Jim-Payments](https://github.com/jimathy/jim-payments) (Required/Optional)

* This is the default system for payments in the script but can easily be changed in `client.lua`
* When triggered gets a list of the nearest players and lets you choose which one to charge
* I class it as `optional` because you don't specifically need it if you have another you want to use.

***

### [Jim-Consumables](https://github.com/jimathy/jim-consumables) (Optional)

* If `jim-consumables` is installed, the script will attempt to reroute consumables
* The server side will automatically add the items to `jim-consumables` (edit any values you wish there)
* When used the item will trigger the `jim-script:client:consume` event which detects wether to use built in event's or `jim-consuambles` (if found)

***
{% endtab %}

{% tab title="OX_Core" %}
### Add the script to the server resources

* It is highly recommend to put this script folder in a new folder called `[jim]`
* Then add `ensure [jim]` **AFTER** your other scripts in your server.cfg

***

### Ensure List

GO TO YOUR `server.cfg`&#x20;

{% hint style="warning" %}
The ORDER of the load order is important, check information here
{% endhint %}

### Resources (EXAMPLE)

```markdown
start chat
start sessionmanager
start pe-basicloading
start bob74_ipl
start pma-voice
start oxmysql
start ox_lib
start ox_core
start ox_target
start illenium-appearance
start ox_inventory
ensure [standalone] # Place `jim_bridge` here

# Extra Jim Stuff
ensure [jimextras]  # Place `jim-payments` / `jim-consumables` / `jim-jobgarage` / `jim-djbooth` here
ensure [jim]        # Place all other jim scripts here

# Extra Other Scripts Here
```

{% hint style="warning" %}
**IF YOU ALREADY HAVE A \[jim] FOLDER, PUT IT IN THAT FOLDER YOU DO NOT NEED TO CREATE A NEW ONE.**
{% endhint %}

***

### [Jim-Payments](https://github.com/jimathy/jim-payments) (Required/Optional)

* This is the default system for payments in the script but can easily be changed in `client.lua`
* When triggered gets a list of the nearest players and lets you choose which one to charge
* I class it as `optional` because you don't specifically need it if you have another you want to use.

***

### [Jim-Consumables](https://github.com/jimathy/jim-consumables) (Optional)

* If `jim-consumables` is installed, the script will attempt to reroute consumables
* The server side will automatically add the items to `jim-consumables` (edit any values you wish there)
* When used the item will trigger the `jim-script:client:consume` event which detects wether to use built in event's or `jim-consuambles` (if found)
{% endtab %}
{% endtabs %}

## Job Installation

{% tabs %}
{% tab title="ESX" %}
Import the `esx_jobs.sql` into your database to add the jobs and their grades

```sql
INSERT IGNORE INTO `account_roles` (`name`) VALUES
('novice'),
('experienced'),
('advanced'),
('manager'),
('owner');

INSERT IGNORE INTO `ox_groups` ( `name`, `label`, `colour`, `hasAccount`) VALUES
( 'burgershot', 'Burgershot', NULL, 1 );

INSERT IGNORE INTO `ox_group_grades` (`group`, `grade`, `label`, `accountRole`) VALUES
('burgershot', 0, 'Recruit', NULL),
('burgershot', 1, 'Novice', 'novice'),
('burgershot', 2, 'Experienced', 'experienced'),
('burgershot', 3, 'Advanced', 'advanced'),
('burgershot', 4, 'Manager', 'manager'),
('burgershot', 5, 'Owner', 'owner');
```
{% endtab %}

{% tab title="QBCore" %}
Add the lines from `qb_jobs.txt` to your `qb-core > shared > jobs.lua`

```lua
['burgershot'] = {
    label = 'Burgershot',
    defaultDuty = true,
    grades = {
        ['0'] = { name = 'Recruit', payment = 50 },
        ['1'] = { name = 'Novice', payment = 75 },
        ['2'] = { name = 'Experienced', payment = 100 },
        ['3'] = { name = 'Advanced', payment = 125 },
        ['4'] = { name = 'Manager', isboss = true, payment = 150 },
    },
},
```
{% endtab %}

{% tab title="QBOX" %}
Add the lines from `qb_jobs.txt` to your `qbx_core > shared > jobs.lua`

```lua
['burgershot'] = {
    label = 'Burgershot',
    defaultDuty = true,
    grades = {
        [0] = { name = 'Recruit', payment = 50 },
        [1] = { name = 'Novice', payment = 75 },
        [2] = { name = 'Experienced', payment = 100 },
        [3] = { name = 'Advanced', payment = 125 },
        [4] = { name = 'Manager', isboss = true, payment = 150 },
    },
},
```
{% endtab %}

{% tab title="OX_Core" %}
Import the `ox_jobs.sql` into your database to add the jobs and their grades

```sql
INSERT INTO `ox_groups` ( `name`, `label`, `grades`, `hasAccount`, `adminGrade`, `colour` ) VALUES
    ( 'burgershot', 'Burgershot', '["Recruit", "Novice", "Experienced", "Advanced", "Manager"]', '0', 1, NULL )
;
```
{% endtab %}
{% endtabs %}

## Item Installation

{% tabs %}
{% tab title="QB-Inv" %}
{% hint style="warning" %}
These items work for both old and new `qb-inventory`
{% endhint %}

### Item Images

Add the images from `_install > images` to your inventory folder&#x20;

* eg. `qb-inventory > html > images`

### Item Data

If using `qb-inventory` or similar, add the lines from `qb_items.txt` to your `qb-core > shared > items.lua`

```lua
-- JIM-BURGERSHOT --
potato    = { name = 'potato', label = 'Potatoes', weight = 500, type = 'item', image = 'potatoes.png', unique = false, useable = false, shouldClose = false, description = 'Bag of potatoes.' },
slicedpotato    = { name = 'slicedpotato', label = 'Sliced Potatoes', weight = 500, type = 'item', image = 'burger-slicedpotato.png', unique = false, useable = false, shouldClose = false, description = 'Sliced fresh potatoes.' },
slicedonion    = { name = 'slicedonion', label = 'Sliced Onions', weight = 500, type = 'item', image = 'burger-slicedonion.png', unique = false, useable = false, shouldClose = false, description = 'Crispy onion slices.' },
icecream    = { name = 'icecream', label = 'Ice Cream', weight = 500, type = 'item', image = 'burger-icecream.png', unique = false, useable = false, shouldClose = false, description = 'Chilled and creamy dessert.' },
milk    = { name = 'milk', label = 'Milk', weight = 500, type = 'item', image = 'burger-milk.png', unique = false, useable = true, shouldClose = true, description = 'Carton of fresh milk.' },
lettuce    = { name = 'lettuce', label = 'Lettuce', weight = 100, type = 'item', image = 'lettuce.png', unique = false, useable = false, shouldClose = false, description = 'Fresh leafy lettuce.' },
onion    = { name = 'onion', label = 'Onion', weight = 500, type = 'item', image = 'burger-onion.png', unique = false, useable = false, shouldClose = false, description = 'A whole raw onion.' },
frozennugget    = { name = 'frozennugget', label = 'Frozen Nuggets', weight = 500, type = 'item', image = 'burger-frozennugget.png', unique = false, useable = false, shouldClose = false, description = 'Bag of frozen chicken nuggets.' },
cheddar    = { name = 'cheddar', label = 'Cheddar Slice', weight = 500, type = 'item', image = 'cheddar.png', unique = false, useable = false, shouldClose = false, description = 'A single slice of cheddar cheese.' },
burgerbun    = { name = 'burgerbun', label = 'Burger Bun', weight = 100, type = 'item', image = 'burgerbun.png', unique = false, useable = false, shouldClose = false, description = 'Soft bun for burgers.' },
burgerpatty    = { name = 'burgerpatty', label = 'Burger Patty', weight = 500, type = 'item', image = 'burgerpatty.png', unique = false, useable = false, shouldClose = false, description = 'Raw beef patty for grilling.' },
burgermeat    = { name = 'burgermeat', label = 'Burger Meat', weight = 500, type = 'item', image = 'burgermeat.png', unique = false, useable = false, shouldClose = false, description = 'Cooked burger meat patty.' },
milkshake    = { name = 'milkshake', label = 'Milkshake', weight = 500, type = 'item', image = 'burger-milkshake.png', unique = false, useable = true, shouldClose = true, description = 'Thick and sweet milkshake.' },
shotnuggets    = { name = 'shotnuggets', label = 'Shot Nuggets', weight = 200, type = 'item', image = 'burger-shotnuggets.png', unique = false, useable = true, shouldClose = true, description = 'BurgerShot chicken nuggets.' },
shotrings    = { name = 'shotrings', label = 'Ring Shots', weight = 200, type = 'item', image = 'burger-shotrings.png', unique = false, useable = true, shouldClose = true, description = 'BurgerShot onion rings.' },
heartstopper    = { name = 'heartstopper', label = 'HeartStopper', weight = 200, type = 'item', image = 'burger-heartstopper.png', unique = false, useable = true, shouldClose = true, description = 'Massive heart-stopping burger.' },
shotfries    = { name = 'shotfries', label = 'Shot Fries', weight = 200, type = 'item', image = 'burger-fries.png', unique = false, useable = true, shouldClose = true, description = 'Golden BurgerShot fries.' },
moneyshot    = { name = 'moneyshot', label = 'Money Shot', weight = 200, type = 'item', image = 'burger-moneyshot.png', unique = false, useable = true, shouldClose = true, description = 'BurgerShot’s signature burger.' },
meatfree    = { name = 'meatfree', label = 'Meat Free', weight = 200, type = 'item', image = 'burger-meatfree.png', unique = false, useable = true, shouldClose = true, description = 'Plant-based burger option.' },
bleeder    = { name = 'bleeder', label = 'The Bleeder', weight = 200, type = 'item', image = 'burger-bleeder.png', unique = false, useable = true, shouldClose = true, description = 'Spicy burger with a kick.' },
bscoffee    = { name = 'bscoffee', label = 'BurgerShot Coffee', weight = 200, type = 'item', image = 'burger-coffee.png', unique = false, useable = true, shouldClose = true, description = 'Hot BurgerShot coffee.' },
bscoke    = { name = 'bscoke', label = 'BurgerShot Coke', weight = 200, type = 'item', image = 'burger-softdrink.png', unique = false, useable = true, shouldClose = true, description = 'Chilled cola beverage.' },
torpedo    = { name = 'torpedo', label = 'Torpedo', weight = 200, type = 'item', image = 'burger-torpedo.png', unique = false, useable = true, shouldClose = true, description = 'Long sub-style burger.' },
rimjob    = { name = 'rimjob', label = 'Rim Job', weight = 200, type = 'item', image = 'burger-rimjob.png', unique = false, useable = true, shouldClose = true, description = 'BurgerShot donut treat.' },
creampie    = { name = 'creampie', label = 'Creampie', weight = 200, type = 'item', image = 'burger-creampie.png', unique = false, useable = true, shouldClose = true, description = 'Classic apple pie dessert.' },
cheesewrap    = { name = 'cheesewrap', label = 'BS Cheese Wrap', weight = 150, type = 'item', image = 'burger-chickenwrap.png', unique = false, useable = true, shouldClose = true, description = 'Cheesy chicken wrap.' },
chickenwrap    = { name = 'chickenwrap', label = 'BS Goat Cheese Wrap', weight = 150, type = 'item', image = 'burger-goatwrap.png', unique = false, useable = true, shouldClose = true, description = 'Wrap filled with goat cheese.' },
murderbag    = { name = 'murderbag', label = 'Murder Bag', weight = 0, type = 'item', image = 'burgerbag.png', unique = true, useable = true, shouldClose = true, description = 'A surprise bag full of burgers.' },
```
{% endtab %}

{% tab title="OX_Inv" %}
{% hint style="warning" %}
This applies to any framework using `ox_inventory`
{% endhint %}

{% hint style="warning" %}
Currently while using `ESX` my scripts only support `ox_inventory`
{% endhint %}

### Item Images

Copy and paste the images from `_install > images` to your inventory folder&#x20;

* eg. `ox_inventory > web > images`

### Item Data

Add the `ox_items.txt` to your `ox_inventory > data > items.lua`

```lua
-- JIM-BURGERSHOT --
potato = { label = 'Potatoes', weight = 500, stack = true, close = false, description = 'Bag of potatoes.',
    client = { image = 'potatoes.png', event = "jim-burgershot:client:Consume", }
},
onion = { label = 'Onion', weight = 500, stack = true, close = false, description = 'A whole raw onion.',
    client = { image = 'burger-onion.png', event = "jim-burgershot:client:Consume", }
},
lettuce = { label = 'Lettuce', weight = 100, stack = true, close = false, description = 'Fresh leafy lettuce.',
    client = { image = 'lettuce.png', event = "jim-burgershot:client:Consume", }
},
milk = { label = 'Milk', weight = 500, stack = true, close = true, description = 'Carton of fresh milk.',
    client = { image = 'burger-milk.png', event = "jim-burgershot:client:Consume", }
},
-- Prepared Ingredients
slicedpotato = { label = 'Sliced Potatoes', weight = 500, stack = true, close = false, description = 'Sliced fresh potatoes.',
    client = { image = 'burger-slicedpotato.png', event = "jim-burgershot:client:Consume", }
},
slicedonion = { label = 'Sliced Onions', weight = 500, stack = true, close = false, description = 'Crispy onion slices.',
    client = { image = 'burger-slicedonion.png', event = "jim-burgershot:client:Consume", }
},
cheddar = { label = 'Cheddar Slice', weight = 500, stack = true, close = false, description = 'A single slice of cheddar cheese.',
    client = { image = 'cheddar.png', event = "jim-burgershot:client:Consume", }
},
burgerbun = { label = 'Burger Bun', weight = 100, stack = true, close = false, description = 'Soft bun for burgers.',
    client = { image = 'burgerbun.png', event = "jim-burgershot:client:Consume", }
},
burgerpatty = { label = 'Burger Patty', weight = 500, stack = true, close = false, description = 'Raw beef patty for grilling.',
    client = { image = 'burgerpatty.png', event = "jim-burgershot:client:Consume", }
},
burgermeat = { label = 'Burger Meat', weight = 500, stack = true, close = false, description = 'Cooked burger meat patty.',
    client = { image = 'burgermeat.png', event = "jim-burgershot:client:Consume", }
},
frozennugget = { label = 'Frozen Nuggets', weight = 500, stack = true, close = false, description = 'Bag of frozen chicken nuggets.',
    client = { image = 'burger-frozennugget.png', event = "jim-burgershot:client:Consume", }
},
-- Menu: Burgers
heartstopper = { label = 'HeartStopper', weight = 200, stack = true, close = true, description = 'Massive heart-stopping burger.',
    client = { image = 'burger-heartstopper.png', event = "jim-burgershot:client:Consume", }
},
moneyshot = { label = 'Money Shot', weight = 200, stack = true, close = true, description = 'BurgerShot’s signature burger.',
    client = { image = 'burger-moneyshot.png', event = "jim-burgershot:client:Consume", }
},
meatfree = { label = 'Meat Free', weight = 200, stack = true, close = true, description = 'Plant-based burger option.',
    client = { image = 'burger-meatfree.png', event = "jim-burgershot:client:Consume", }
},
bleeder = { label = 'The Bleeder', weight = 200, stack = true, close = true, description = 'Spicy burger with a kick.',
    client = { image = 'burger-bleeder.png', event = "jim-burgershot:client:Consume", }
},
torpedo = { label = 'Torpedo', weight = 200, stack = true, close = true, description = 'Long sub-style burger.',
    client = { image = 'burger-torpedo.png', event = "jim-burgershot:client:Consume", }
},
-- Sides
shotnuggets = { label = 'Shot Nuggets', weight = 200, stack = true, close = true, description = 'BurgerShot chicken nuggets.',
    client = { image = 'burger-shotnuggets.png', event = "jim-burgershot:client:Consume", }
},
shotrings = { label = 'Ring Shots', weight = 200, stack = true, close = true, description = 'BurgerShot onion rings.',
    client = { image = 'burger-shotrings.png', event = "jim-burgershot:client:Consume", }
},
shotfries = { label = 'Shot Fries', weight = 200, stack = true, close = true, description = 'Golden BurgerShot fries.',
    client = { image = 'burger-fries.png', event = "jim-burgershot:client:Consume", }
},
-- Wraps
cheesewrap = { label = 'BS Cheese Wrap', weight = 150, stack = true, close = true, description = 'Cheesy chicken wrap.',
    client = { image = 'burger-chickenwrap.png', event = "jim-burgershot:client:Consume", }
},
chickenwrap = { label = 'BS Goat Cheese Wrap', weight = 150, stack = true, close = true, description = 'Wrap filled with goat cheese.',
    client = { image = 'burger-goatwrap.png', event = "jim-burgershot:client:Consume", }
},
-- Drinks
bscoffee = { label = 'BurgerShot Coffee', weight = 200, stack = true, close = true, description = 'Hot BurgerShot coffee.',
    client = { image = 'burger-coffee.png', event = "jim-burgershot:client:Consume", }
},
bscoke = { label = 'BurgerShot Coke', weight = 200, stack = true, close = true, description = 'Chilled cola beverage.',
    client = { image = 'burger-softdrink.png', event = "jim-burgershot:client:Consume", }
},
milkshake = { label = 'Milkshake', weight = 500, stack = true, close = true, description = 'Thick and sweet milkshake.',
    client = { image = 'burger-milkshake.png', event = "jim-burgershot:client:Consume", }
},
-- Desserts
rimjob = { label = 'Rim Job', weight = 200, stack = true, close = true, description = 'BurgerShot donut treat.',
    client = { image = 'burger-rimjob.png', event = "jim-burgershot:client:Consume", }
},
creampie = { label = 'Creampie', weight = 200, stack = true, close = true, description = 'Classic apple pie dessert.',
    client = { image = 'burger-creampie.png', event = "jim-burgershot:client:Consume", }
},
icecream = { label = 'Ice Cream', weight = 500, stack = true, close = false, description = 'Chilled and creamy dessert.',
    client = { image = 'burger-icecream.png', event = "jim-burgershot:client:Consume", }
},

-- Specials
murderbag = { label = 'Murder Bag', weight = 0, stack = false, close = true, description = 'A surprise bag full of burgers.',
    client = { image = 'burgerbag.png', }
},
```
{% endtab %}
{% endtabs %}
