# QBCore Installation

{% embed url="<https://github.com/ahmetkavl/kvlstore-qbtarget>" %}

## 🛠️ QBCore Installation Guide

Follow these steps to install KVL GoDeliver on your QBCore server.

### 📋 Requirements

Ensure you have the following resources installed:

* Framework: `QBCore Framework`
* Target: `qb-target` (or `ox_target`)
* Menu: `qb-menu`
* Inventory: `qb-inventory` (or compatible inventories like `ps-inventory`, `lj-inventory`)

### 🚀 Step 1: Download & Install

1. Download the `kvl-godeliver` resource from Keymaster.
2. Extract the folder into your server's `resources` directory.
3. Important: Rename the folder to exactly `kvl-godeliver` (remove any version tags).

### 📦 Step 2: Register Items

You need to add the delivery items to your core so they can be stored and used.

1. Open the file: `[qb]/qb-core/shared/items.lua`.
2. Paste the following code at the bottom of the file (before the closing bracket `}`):

Lua

```
-- KVL GoDeliver Items
['tablet_kurye'] = { name = 'tablet_kurye', label = 'Courier Tablet', weight = 100, type = 'item', image = 'tablet_kurye.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'Tablet used to manage courier jobs.' },
['burgershot_bag'] = { name = 'burgershot_bag', label = 'Burgershot Bag', weight = 100, type = 'item', image = 'burgershot_bag.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = nil },
['pizzathis_box'] = { name = 'pizzathis_box', label = 'Pizza Box', weight = 100, type = 'item', image = 'pizzathis_box.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = nil },
['cluckinbell_bag'] = { name = 'cluckinbell_bag', label = 'CluckinBell Bag', weight = 100, type = 'item', image = 'cluckinbell_bag.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = nil },
['beanmachine_cup'] = { name = 'beanmachine_cup', label = 'Bean Machine Cup', weight = 100, type = 'item', image = 'beanmachine_cup.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = nil },

-- Fragile & Special Items
['electronics_tv'] = { name = 'electronics_tv', label = 'Television', weight = 8000, type = 'item', image = 'electronics_tv.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Contains sensitive components. Handle with care.' },
['glassware_vase'] = { name = 'glassware_vase', label = 'Vase', weight = 8000, type = 'item', image = 'glassware_vase.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Fragile item. Handle with care.' },
['electronics_pc'] = { name = 'electronics_pc', label = 'Computer Case', weight = 8000, type = 'item', image = 'electronics_pc.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Contains sensitive components. Handle with care.' },
['antique_clock'] = { name = 'antique_clock', label = 'Antique Wall Clock', weight = 3500, type = 'item', image = 'antique_clock.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'A very valuable and fragile antique clock.' },
['furniture_mirror'] = { name = 'furniture_mirror', label = 'Large Mirror', weight = 6000, type = 'item', image = 'furniture_mirror.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Large surface area, easily breakable.' },
['grocery_wine'] = { name = 'grocery_wine', label = 'Crate of Wine', weight = 4000, type = 'item', image = 'grocery_wine.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Expensive wine bottles. Do not let them clash.' },
['medical_glassware'] = { name = 'medical_glassware', label = 'Laboratory Supplies', weight = 1000, type = 'item', image = 'medical_glassware.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Sterile and fragile glassware. Carry with extreme care!' },
['art_sculpture'] = { name = 'art_sculpture', label = 'Small Sculpture', weight = 7000, type = 'item', image = 'art_sculpture.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Unique art piece. Do not scratch or break.' },
['cold_package'] = { name = 'cold_package', label = 'Cold Package', weight = 7000, type = 'item', image = 'cold_package.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'A package that must be delivered on time.' },
['important_documents'] = { name = 'important_documents', label = 'Important Documents', weight = 500, type = 'item', image = 'important_documents.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'An envelope requiring urgent delivery.' },
['suspicious_package'] = { name = 'suspicious_package', label = 'Suspicious Package', weight = 2000, type = 'item', image = 'suspicious_package.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Better not to ask what is inside.' },
['broken_parts_box'] = { name = 'broken_parts_box', label = 'Broken Parts Box', weight = 7000, type = 'item', image = 'broken_parts_box.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Looks heavy and greasy.' },
```

### 🖼️ Step 3: Setup Images

You need to place the item images into your inventory resource so they appear in-game.

1. Navigate to `kvl-godeliver/images/`.
2. Copy ALL .png files.
3. Paste them into your inventory images folder.
   * Standard Path: `[qb]/qb-inventory/html/images/`
   * *(Or `ps-inventory/html/images/`, `lj-inventory/html/images/` depending on what you use)*

Here is the QBCore Installation Guide in English, ready for your GitBook or documentation page.

***

## 🛠️ QBCore Installation Guide

Follow these steps to install KVL GoDeliver on your QBCore server.

### 📋 Requirements

Ensure you have the following resources installed:

* Framework: `QBCore Framework`
* Target: `qb-target` (or `ox_target`)
* Menu: `qb-menu`
* Inventory: `qb-inventory` (or compatible inventories like `ps-inventory`, `lj-inventory`)

***

### 🚀 Step 1: Download & Install

1. Download the `kvl-godeliver` resource from Keymaster.
2. Extract the folder into your server's `resources` directory.
3. Important: Rename the folder to exactly `kvl-godeliver` (remove any version tags).

***

### 📦 Step 2: Register Items

You need to add the delivery items to your core so they can be stored and used.

1. Open the file: `[qb]/qb-core/shared/items.lua`.
2. Paste the following code at the bottom of the file (before the closing bracket `}`):

Lua

```
-- KVL GoDeliver Items
['tablet_kurye'] = { name = 'tablet_kurye', label = 'Courier Tablet', weight = 100, type = 'item', image = 'tablet_kurye.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'Tablet used to manage courier jobs.' },
['burgershot_bag'] = { name = 'burgershot_bag', label = 'Burgershot Bag', weight = 100, type = 'item', image = 'burgershot_bag.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = nil },
['pizzathis_box'] = { name = 'pizzathis_box', label = 'Pizza Box', weight = 100, type = 'item', image = 'pizzathis_box.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = nil },
['cluckinbell_bag'] = { name = 'cluckinbell_bag', label = 'CluckinBell Bag', weight = 100, type = 'item', image = 'cluckinbell_bag.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = nil },
['beanmachine_cup'] = { name = 'beanmachine_cup', label = 'Bean Machine Cup', weight = 100, type = 'item', image = 'beanmachine_cup.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = nil },

-- Fragile & Special Items
['electronics_tv'] = { name = 'electronics_tv', label = 'Television', weight = 8000, type = 'item', image = 'electronics_tv.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Contains sensitive components. Handle with care.' },
['glassware_vase'] = { name = 'glassware_vase', label = 'Vase', weight = 8000, type = 'item', image = 'glassware_vase.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Fragile item. Handle with care.' },
['electronics_pc'] = { name = 'electronics_pc', label = 'Computer Case', weight = 8000, type = 'item', image = 'electronics_pc.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Contains sensitive components. Handle with care.' },
['antique_clock'] = { name = 'antique_clock', label = 'Antique Wall Clock', weight = 3500, type = 'item', image = 'antique_clock.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'A very valuable and fragile antique clock.' },
['furniture_mirror'] = { name = 'furniture_mirror', label = 'Large Mirror', weight = 6000, type = 'item', image = 'furniture_mirror.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Large surface area, easily breakable.' },
['grocery_wine'] = { name = 'grocery_wine', label = 'Crate of Wine', weight = 4000, type = 'item', image = 'grocery_wine.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Expensive wine bottles. Do not let them clash.' },
['medical_glassware'] = { name = 'medical_glassware', label = 'Laboratory Supplies', weight = 1000, type = 'item', image = 'medical_glassware.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Sterile and fragile glassware. Carry with extreme care!' },
['art_sculpture'] = { name = 'art_sculpture', label = 'Small Sculpture', weight = 7000, type = 'item', image = 'art_sculpture.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Unique art piece. Do not scratch or break.' },
['cold_package'] = { name = 'cold_package', label = 'Cold Package', weight = 7000, type = 'item', image = 'cold_package.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'A package that must be delivered on time.' },
['important_documents'] = { name = 'important_documents', label = 'Important Documents', weight = 500, type = 'item', image = 'important_documents.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'An envelope requiring urgent delivery.' },
['suspicious_package'] = { name = 'suspicious_package', label = 'Suspicious Package', weight = 2000, type = 'item', image = 'suspicious_package.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Better not to ask what is inside.' },
['broken_parts_box'] = { name = 'broken_parts_box', label = 'Broken Parts Box', weight = 7000, type = 'item', image = 'broken_parts_box.png', unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Looks heavy and greasy.' },
```

***

### 🖼️ Step 3: Setup Images

You need to place the item images into your inventory resource so they appear in-game.

1. Navigate to `kvl-godeliver/html/img/`.
2. Copy ALL .png files.
3. Paste them into your inventory images folder.
   * Standard Path: `[qb]/qb-inventory/html/images/`
   * *(Or `ps-inventory/html/images/`, `lj-inventory/html/images/` depending on what you use)*

***

### ⚙️ Step 4: Configuration

Open `config.lua` in the script folder and ensure the framework is set correctly.

```
Config = {}
Config.Language = 'en' -- Options: 'tr' or 'en'

Config.Framework = 'QBCore'
Config.Target = 'qb-target' -- or 'ox_target' if you use ox_target on QBCore
```

### ✅ Step 5: Start the Script

1. Add the following line to your `server.cfg` file:

   ```
   ensure kvl-godeliver
   ```
2. Restart your server. *(Note: Since you modified `qb-core/shared/items.lua`, a full server restart is required for the items to be recognized.)*


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kavl.gitbook.io/kvl-store/scripts/godeliver/qbcore-installation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
