# Welcome

## What we do at **ak4yScripts**

At ak4yScripts, we specialize in creating unique scripts for FiveM. Since 2018, we have been offering a wide variety of carefully designed and unprecedented products to enrich the gameplay on your server. Our products include everything from immersive role-playing elements to performance optimizations and creative features. We pride ourselves on outstanding customer support, ensuring that our scripts are seamlessly integrated into your server.

## Detailed configuration files

Our detailed and simple Config files make it easy to install, customize and run our Scripts.

{% hint style="info" %}
Connect with us on [<mark style="color:blue;">**Discord**</mark> ](https://discord.gg/kWwM3Bx)or check out or [<mark style="color:red;">**YouTube**</mark> ](https://www.youtube.com/channel/UCUysXNEX_NKglMKYeDLk6_g)channel or our [<mark style="color:yellow;">**Tebex Store**</mark>](https://ak4y.tebex.io/)
{% endhint %}

***

## Note on Resale and Profit Generation

It is important to note that reselling, redistributing or profiting in any way from our products is strictly prohibited. Such actions violate our terms and conditions and may lead to immediate revocation of your license. We reserve the right to take further legal action if necessary.

{% hint style="danger" %}
**Disclaimer:** We would like to make it clear that we are not affiliated with or endorsed by Rockstar Games. We are an independent organization focused on creating add-ons and scripts for the FiveM platform within Grand Theft Auto V. Our work is developed to enhance the gameplay experience for FiveM players and is in no way officially affiliated with Rockstar Games.
{% endhint %}

***

{% embed url="<https://www.youtube.com/channel/UCUysXNEX_NKglMKYeDLk6_g>" %}


# Discord Customer Role

### How to get a Customer Role <a href="#customer" id="customer"></a>

1. When you join [ak4y scripts](https://discord.com/invite/kWwM3Bx) Discord, you can claim your purchase to automatically get your customer roles - this allows you to open support tickets and get support. Use the bot commands below on the [#tebex-claim](https://discord.com/channels/760247009323253820/1012611207020163173) discord channel.
2. **How can I find Tebex-id?**

   You can find your tebex transaction id in the emails from Tebex. You may need to check your emails spam inbox or [here.](https://checkout.tebex.io/payment-history/login)
3. **How to get authorization?**

   type `/claim` in [#**tebex-claim**](https://discord.com/channels/760247009323253820/1012611207020163173) and have the <mark style="color:red;">**@Customer role**</mark>.

### **If you can't get your Customer Role**

1. You can get the role directly from us by creating a ticket on the [#general-ticket ](https://discord.com/channels/760247009323253820/1010310785857224855)channel on our Discord server.
2. Write that you are requesting the Customer role as the reason for the ticket, fill in the tbx id (transaction id) and mail address sections completely.


# Tebex Script Integration

## What is Tebex Integration?

Some of our scripts allow you to set up your own [tebex ](https://www.tebex.io/)store and automatically sell extra features like coupon codes, credits, etc. to your players. You can start using this feature of the scripts by making the integration.

## How to do Tebex Integration?

### Game server setup in Tebex

1. Go to [Tebex's website](https://www.tebex.io/) and sign up.
2. Open your [dashboard ](https://server.tebex.io/dashboard)after sign up.
3. Click on '[Game Server](https://server.tebex.io/game-servers)' from Dashboard menus.
4. Click on the '[Connect a game server](https://server.tebex.io/game-servers/create)' button and then select the 'PLUGIN' option from the page that opens and continue.
5. Fill in the name of your game server and select the all packages option. Save and close.

   <figure><img src="/files/Ls0QBiH1oWrGljMbWOYw" alt=""><figcaption></figcaption></figure>
6. Copy the secret key given to you by tebex from the screen that appears after installation.

   <figure><img src="/files/UOHhRVbmeOHO8hG72lFe" alt=""><figcaption></figcaption></figure>
7. From your server files, open server.cfg and paste the secret key you copied in step 1 where your license keys are located as in the example below. (Don't forget to put the 'sv\_tebexSecret' tag at the beginning of the secret key)

   <figure><img src="/files/7qTUEzKnIxh6UYq5OE0k" alt=""><figcaption></figcaption></figure>

### Package Integration

1. Open the Tebex dashboard, and click on '[packages](https://server.tebex.io/packages)' on the left menu.
2. Click on 'add new' at the top right and select 'packages' from the drop-down menu just below it.
3. In this section; after setting the properties such as name, price, description, image as you wish, click on the 'Game Server Command' button in the 'Configure what your customers should receive upon purchasing this package' section at the bottom

   <figure><img src="/files/CXPkwXsbG3RHmOYoR7pV" alt=""><figcaption></figcaption></figure>
4. In the section that opens, select your game server that is connected to the tebex you want to sell from the field under the 'Game Server' heading.
5. Click on the 'add command' button at the bottom right.
6. In the 'Enter the command' section, paste the code in the tebexInfo file in the script you purchased from us and edit it according to your own wishes.

   <figure><img src="/files/OT8ZNvVBBJgcQhznMXiO" alt=""><figcaption></figcaption></figure>
7. Select the option just to the left of the code section as 'When the package is purchased'.
8. Click on the small settings icon on the right side.![](/files/fb72PXx8Zc5rnex1EN7A)
9. In the section that opens, change 'Require Player To Be Online' to 'Execute the command even if the player is offline' and save.

   <figure><img src="/files/JDzXIJPisBYcD8GdUyjH" alt=""><figcaption></figcaption></figure>
10. Your Tebex sales integration is complete! Now, when the package you have created is purchased by a player, the transaction id given after the purchase can be used by your player in the redeem code field!


# Setting Steam Api Key

### To get a Steam API key, you can follow these steps:

1. The first step is to go to the [Steam Developer portal](https://steamcommunity.com/dev), If your steam account is not open in the browser; Click on the "Go to Registration page" button at the bottom left of the page and either create an account or log in with an existing one.&#x20;
2. After logging in, you can type localhost in the domain section where the api key will be used.
3. Follow all the steps correctly and you will have your Api Key!

### Integrating your api key into your server

1. Enter the server.cfg of your Fivem server.
2. Paste the following code into the field where you set the license key of your server.
3. And replace yourApiKey with your Steam Api key.

`set steam_webApiKey "yourApiKey"`

## Finally, restart your server to activate your api key!


# CFX Auth System

### **Where I will find my resources?**

You can find all your new bought resources in Keymaster [Granted Assets](https://keymaster.fivem.net/asset-grants)

<figure><img src="/files/naUkvgaAkRAfZgmVtnvC" alt=""><figcaption></figcaption></figure>

### **I cannot find my resources**

You probably buy our resources with different CFX account, then you need to transfer them to the account that you are using for keys to your server. Use guide bellow

### How to transfer to another account?

**Please note that you can only make a one-time transfer.**

1. First step, you need to login to your [fivem keymaster ](https://keymaster.fivem.net/login)after we successfully got into the account, we are going to look [for this page ](https://keymaster.fivem.net/asset-grants)that is called **"Purchased assets"**
2. There you're going to see this list of bought resources
3. Here our point of interested is going to be the button called **"Transfer to another account"**
4. So we're going to click on the button and it will lead us to this page
5. Just enter the user name who you wish to transfer the script and thats it.

<figure><img src="/files/POQAxosx8wQldGACzRpE" alt=""><figcaption></figcaption></figure>


# Lost Transaction ID

If you lost your **Transaction ID** that starts with tbx- You do not have to worry. You can look up into all your purchased scripts via tebex checkout page.

{% embed url="<https://checkout.tebex.io/payment-history/login>" %}

### Enter your e-mail address in the section on the page that appears.

<figure><img src="/files/r5U9c7dRJ4PAav5oqt3J" alt=""><figcaption><p>Enter your e-mail address in the section on the page that appears.</p></figcaption></figure>

###

### An e-mail will be sent by Tebex to access your transaction ids

<figure><img src="/files/rBQuwLQ6BD38Lmn3lhdl" alt=""><figcaption><p>An e-mail will be sent by Tebex to access your transaction ids</p></figcaption></figure>

### And here is your transaction id!

<figure><img src="/files/il8pSwqgJl1XAuV1oWwQ" alt=""><figcaption></figcaption></figure>


# Escrow/Open Source

{% embed url="<https://forum.cfx.re/t/introducing-asset-escrow-for-your-resources/4777151>" %}

### Open Source

1. All files are accessible (client, server, html, css, javascript).
2. There are no encrypted files.
3. Script sharing cannot be done.

### Escrow

1. All files of the script are encrypted with cfx.re encryption system.
2. You can make all edits to the script only from the Config files.
   1. You can access the config files from the "Scripts" section on the left side.


# You lack the required entitlement

Try restarting your server and make sure your server license key is correct. If you bought the resource on the wrong account, you can transfer it to another account on keymaster.


# ak4y-vipSystemv2


# Manage Categories

## Remove Category

Just delete the line in the shared\_scripts header in fxmanifest that is the same as the folder name

<figure><img src="/files/qoVv6vnT2iXnJsTNfW3f" alt=""><figcaption></figcaption></figure>

In the picture above, the "Vehicle Category" has been completely removed from the menu!


# Config


# Translate

```lua
AK4Y.Translate = {
    main1 = "DONATE",
    main2 = "SHOP",
    exit = "Exit",
    plateChange = "PLATE CHANGE",
    numberChange = "NUMBER CHANGE",
    enterPlate = "ENTER PLATE",
    plateDescription = "You can change your plate number with this feature.",
    enterNumber = "ENTER NUMBER",
    numberDescription = "You can change your phone number with this feature.",
    cancelText = "Cancel",
    changeText = "CHANGE",
    discText = "DISC",
    bundlesText = "BUNDLES",
    weaponText = "Weapons",
    itemsText = "Items",
    vehiclesText = "Vehicles",
    moneysText = "Moneys",
    buyPackText = "Buy Pack",
    donateBuyMenu = "DONATE BUY MENU",
    wantToBuy = "DO YOU WANT TO BUY?",
    buyDescription = "You can buy this item with the price of",
    customPlateText = "Custom Plate",
    helloText = "Hello",
    congratulationsText = "Congratulations",
    congratulationsDescription = "Lorem ipsum dolor sit amet consectetur. Ac velit fames egestas turpis lectus. Cursus cursus.",
    informationText = "Information",
    informationDescription = "Lorem ipsum dolor sit amet consectetur.",
    boughtInformationDescription = "Lorem ipsum dolor sit amet consectetur.",
    collectText = "Collect",
    bundleListText = "BUNDLE LIST",
    packListText = "PACK LIST",
    contentsText = "Contents;",
    packPreviewText = "Pack Preview",
    testText = "Test",
    itemsText = "Items",
    houseListText = "HOUSE LIST",
    vehicleListText = "VEHICLE LIST",
    customizationListText = "CUSTOMIZATION LIST",
    itemListText = "ITEM LIST",
    itemQuantityText = "Item Quantity",
    doYouNeedText = "Do you NEED",
    buyCoinText = "BUY COIN",
    openMenuText = "Open Menu",
    dealsText = "DEALS",
    productsText = "PRODUCTS",
    hotDealsText = "HOT DEALS",
    coinRedeemCodeText = "COIN REDEEM CODE",
    enterCodeText = "Enter Code",
    redeemCodeEnterText = "Redeem Code Enter",
    enterText = "Enter",
    filterText = "Filter (Scroll)",
    redeemInformationText = "Lorem ipsum dolor sit amet consectetur.",
    youDontHaveEnoughCoinText = "You dont have enough coin.",
    priceHasChangedText = "Price has changed.",
    plateLengthError = "Plate number must be Min: 6 - Max: 8 characters.",
    numberLengthError = "Phone number must be Min: 6 - Max: 8 characters.",
    testDriveStarted = "Test Drive Started",
    testDriveEnded = "Test Drive Ended",
    testDriveRemaining = "Test Drive Remaining: ",
    youHaveToBeInVehicle = "You have to be in a vehicle.",
    phoneNumberChanged = "Phone number changed.",
    redeemSuccessText = "Redeem Success",
    codeNotFoundText = "Code not found.",
    locationMarked = "Location marked.",
    plateHasOwnerText = "This plate has an owner.",
    soFarFromTestDriveArea = "You are so far from the test drive area.",
}
```


# General Settings

```lua
Settings = {} -- don't touch this

Settings.Debug = false -- This will print debug messages to the console.
Settings.DebugPrint = function(...)
    print("[ak4y DEBUG]:", ...)
end

Settings.Framework = "qb" -- "esx" or "qb"
Settings.Mysql = "oxmysql" -- "mysql-async" or "oxmysql" or "ghmattimysql"

Settings.Phone = "qb-phone" -- "qb-phone" or "gksphone" or "gcphone"
Settings.PhoneCustomElse = false -- Read the text under, if you make it true you should follow those steps. Otherwise it should remain false
-- If you have a problem with phone number customization, check the query on utils > server.lua [line 238] and edit it to your liking.


Settings.openWithCommand = true -- This will open the menu with a command. If you want to open the menu with a command set this to true.
Settings.openCommand = "donateMenu" -- This is the command that will open the menu. If you have openWithCommand set to true, you can change this to whatever you want. 

Settings.CashOrBank = "bank" -- "cash" or "bank" 

Settings.VehicleStored = 0 -- JUST FOR ESX 

-- item types should be same as your database table names
Settings.SqlVehicleType = "vehicle" -- This is the table name in your database for vehicles. If you want to change the table name, you can change this to whatever you want.
Settings.SqlAirType = "air" -- This is the table name in your database for aircraft. If you want to change the table name, you can change this to whatever you want.
Settings.SqlBoatType = "boat" -- This is the table name in your database for boats. If you want to change the table name, you can change this to whatever you want.

Settings.testDriveBlip = true -- This will show a blip on the map for the test drive location. If you want to show a blip set this to true.
Settings.testDriveBlipText = "Test Drive" -- This is the text that will be displayed on the blip. If you have testDriveBlip set to true, you can change this to whatever you want.
Settings.testDriveDrawText = "You can start the test drive from the Donate Menu" -- This is the text that will be displayed when the player is near the test drive location. If you want to change the test drive text, you can change this to whatever you want.
Settings.testDriveTime = 30 -- This is the time in second that the player will have to test drive the vehicle. If you want to change the test drive time, you can change this to whatever you want.
Settings.testDriveCoord = vector3(1219.88, -2934.43, 5.87) -- This is the coordinates that the player will be teleported to when they test drive the vehicle. If you want to change the test drive coordinates, you can change this to whatever you want.
Settings.testDriveCarSpawn = vector4(1216.51, -2918.03, 5.87, 37.31) -- This is the coordinates that the player will be teleported to when they test drive the vehicle. If you want to change the test drive coordinates, you can change this to whatever you want.

Settings.GiveAddKeys = true -- This will give the player keys when they buy a vehicle. If you want to give keys set this to true.
Settings.GiveAddKeysFunction = function(newPlate)
    -- This is the function that will give the player keys. If you have GiveAddKeys set to true, you can change this to whatever you want.
    TriggerEvent("vehiclekeys:client:SetOwner", newPlate)
end
```


# Special Offer Category

```lua
AK4Y.specialOffer = {
    id = 1,
	label = "SPECIAL OFFER",
	itemName = "special_offer", -- dont change
	description = "Lorem ipsum text description",
	itemType = "bundle", -- dont change
	pageValue = "specialOffer", -- dont CHANGE
	giveItems = { 
		{ label = "Zentorno", itemName = "zentorno", itemCount = 1, itemType = "vehicle", garage = "pillboxgarage", itemImg = "./itemImages/zentorno.png" },                    
        { label = "Pistol", itemName = "weapon_pistol", itemCount = 1, itemType = "weapon", itemImg = "./itemImages/weapon_pistol.png" },
        { label = "Bandage", itemName = "bandage", itemCount = 1, itemType = "item", itemImg = "./itemImages/bandage.png" },
        { label = "Money ($10.000)", itemName = "money", itemCount = 10000, itemType = "money", itemImg = "./itemImages/dirtymoney.png"},
    },
	price = 1000, -- price without discount
	discount = {
		state = true, -- true or false
		newPrice = 600, -- price with discount
	},
}
```


# Hot Deals Category

```lua
-- CANT MORE THAN 3 ITEMS

AK4Y.hotDeals = {
    {
        hotItemPageValue = "vehicle-menu",
        hotItemId = 5 -- unique id of the item in the page
    },
    {
        hotItemPageValue = "item-menu",
        hotItemId = 7 -- unique id of the item in the page
    },
    {
        hotItemPageValue = "money-menu",
        hotItemId = 6 -- unique id of the item in the page
    },
}
```


# Buy Coin Category

```lua
AK4Y.buyCoin = {
    {
        coin = 500,
        price = 10,
        itemImg = "./img/coinSide/coin1bg.png",
        tebexPage = "https://ak4y.tebex.io/",
        discount = {
            state = true,
            newPrice = 5,
        },
    },
    {
        coin = 1000,
        price = 20,
        itemImg = "./img/coinSide/coin2bg.png",
        tebexPage = "https://ak4y.tebex.io/",
        discount = {
            state = false,
            newPrice = 10,
        },
    },
    {
        coin = 2000,
        price = 10,
        itemImg = "./img/coinSide/coin3bg.png",
        tebexPage = "https://ak4y.tebex.io/",
        discount = {
            state = false,
            newPrice = 5,
        },
    },
    {
        coin = 3000,
        price = 10,
        itemImg = "./img/coinSide/coin4bg.png",
        tebexPage = "https://ak4y.tebex.io/",
        discount = {
            state = false,
            newPrice = 5,
        },
    },
    {
        coin = 5000,
        price = 10,
        itemImg = "./img/coinSide/coin5bg.png",
        tebexPage = "https://ak4y.tebex.io/",
        discount = {
            state = false,
            newPrice = 5,
        },
    },
    {
        coin = 10000,
        price = 10,
        itemImg = "./img/coinSide/coin6bg.png",
        tebexPage = "https://ak4y.tebex.io/package/6257252",
        discount = {
            state = false,
            newPrice = 5,
        },
    },
}
```


# Bundle Category

```lua
local preCategory = {
    label = "Bundle",
    pageValue = "bundle-menu",
    categoryType = "bundle",
    items = {
        {
            id = 1, -- Should be unique 
            label = "Player Starter Pack", -- Display name
            itemType = "bundle", -- Type of item (JUST BUNDLE)
            giveItems = { -- item types: "vehicle", "item", "money", "weapon"
                { label = "Zentorno", itemName = "zentorno", itemCount = 1, itemType = "vehicle", garage = "pillboxgarage", itemImg = "./itemImages/zentorno.png" },
                { label = "Zentorno", itemName = "zentorno", itemCount = 1, itemType = "vehicle", garage = "pillboxgarage", itemImg = "./itemImages/zentorno.png" },
                { label = "Zentorno", itemName = "zentorno", itemCount = 1, itemType = "vehicle", garage = "pillboxgarage", itemImg = "./itemImages/zentorno.png" },
                            
                { label = "Pistol", itemName = "weapon_pistol", itemCount = 1, itemType = "weapon", itemImg = "./itemImages/weapon_pistol.png" },
                { label = "Pistol", itemName = "weapon_pistol", itemCount = 1, itemType = "weapon", itemImg = "./itemImages/weapon_pistol.png" },
                { label = "Pistol", itemName = "weapon_pistol", itemCount = 1, itemType = "weapon", itemImg = "./itemImages/weapon_pistol.png" },
            
                { label = "Bandage", itemName = "bandage", itemCount = 1, itemType = "item", itemImg = "./itemImages/bandage.png" },
                { label = "Bandage", itemName = "bandage", itemCount = 1, itemType = "item", itemImg = "./itemImages/bandage.png" },
                { label = "Bandage", itemName = "bandage", itemCount = 1, itemType = "item", itemImg = "./itemImages/bandage.png" },

                { label = "Money ($10.000)", itemName = "money", itemCount = 10000, itemType = "money", itemImg = "./itemImages/dirtymoney.png"},
                { label = "Money ($10.000)", itemName = "money", itemCount = 10000, itemType = "money", itemImg = "./itemImages/dirtymoney.png"},
            },
            price = 1000, -- Price (Without discount)
            description = "This is a starter pack for new players, it includes weapons, vehicles, and more!",
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 950, -- New price (if discount is active)
            },
        },
    },
},
```


# Customize Category

```lua
local preCategory = {
    label = "Customize",
    pageValue = "customize-menu",
    categoryType = "customize",
    items = {
        {
            id = 1, -- should be unique
            price = 1000, -- Price (Without discount)
            label = "Plate Change", -- Display name
            itemType = "plate", -- Dont change for plate customizations.
            itemImg = "./itemImages/plate.png", -- Item image
            discount = { state = false, newPrice = 0 }, -- If you want to discount, set it to true
        },
        {
            id = 2, -- should be unique
            price = 1500, -- Price (Without discount)
            label = "Number Change", -- Display name
            itemType = "number", -- Dont change for number customizations.
            itemImg = "./itemImages/phone.png", -- Item image
            discount = { state = false, newPrice = 0 }, -- If you want to discount, set it to true
        },
    },
},

```


# House Category

```lua
local preCategory = {
    label = "House",
    pageValue = "house-menu",
    categoryType = "house",
    items = {
        {
            id = 1,
            label = "House (1)",
            itemType = "house",
            price = 1000,
            filter = "Luxury",
            locationText = "Hyper Street 4518 / Los Santos",
            houseInfoText = "510m2",
            description = "This is a description for house 1",
            coords = {x = 1342.72, y = -596.97, z = 74.5},
            afterPurchaseTrigger = {
                clientOrServer = "server",
                trigger = "yourhouse:buy:event",
                parameters = {
                    id = "1",
                },
            },
            discount = {
                state = true,
                newPrice = 500,
            },
            itemImg = "./itemImages/house1.png",
        },
       
    },
},

```


# Job Category

```lua
local preCategory = {
    label = "Job",
    pageValue = "job-menu",
    categoryType = "item",
    items = {
        {
            id = 1,
            label = "Police Job (Rookie)", -- label
            itemName = "police", -- This is the job name
            jobGrade = 1, -- This is the job grade
            itemType = "job", -- Dont change this
            price = 1000, -- This is the price
            filter = "Whitelist", -- This is the filter
            description = "You are the officer now!", -- This is the description
            discount = {
                state = true,
                newPrice = 900,
            },
            itemImg = "./itemImages/policeImage.png",
        },
        {
            id = 2,
            label = "Police Job (Commander)", -- label
            itemName = "police", -- This is the job name
            jobGrade = 5, -- This is the job grade
            itemType = "job", -- Dont change this
            price = 2500, -- This is the price
            filter = "Whitelist", -- This is the filter
            description = "You are the Commander now!", -- This is the description
            discount = {
                state = true,
                newPrice = 2300,
            },
            itemImg = "./itemImages/policeImage.png",
        },
        {
            id = 3,
            label = "Ambulance Job", -- label
            itemName = "ambulance", -- This is the job name
            jobGrade = 1, -- This is the job grade
            itemType = "job", -- Dont change this
            price = 1000, -- This is the price
            filter = "Whitelist", -- This is the filter
            description = "You are the Doctor now!", -- This is the description
            discount = {
                state = true,
                newPrice = 900,
            },
            itemImg = "./itemImages/doctorJob.png",
        },
        {
            id = 4,
            label = "Miner Job", -- label
            itemName = "miner", -- This is the job name
            jobGrade = 1, -- This is the job grade
            itemType = "job", -- Dont change this
            price = 500, -- This is the price
            filter = "Whitelist", -- This is the filter
            description = "You are the Miner now!", -- This is the description
            discount = {
                state = false,
                newPrice = 900,
            },
            itemImg = "./itemImages/minerJob.png",
        },
    },
},


```


# Vehicle Category

```lua
local preCategory = {
    label = "Vehicle", -- Category Label
    pageValue = "vehicle-menu", -- DONT Change page value (This is the page name value) ("vehicle-menu" for vehicle menu)
    categoryType = "vehicle", -- Dont change this value
    items = {
        {
            id = 1, -- Should be unique
            label = "Adder", -- Display name
            itemName = "adder", -- Item name ( Spawn name for vehicle )
            filter = "Super", -- Filter name
            itemType = "vehicle", -- Item type || vehicle, air, boat...
            itemCount = 1, -- Just 1 for vehicle
            garage = "pillboxgarage", -- Garage name (When you buy this vehicle, it will be stored in this garage)
            price = 1000, -- Price (Without discount)
            testable = true, -- If you want to test this vehicle, set it to true
            graph = { -- Graphical settings...
                { label = "Engine", stat = 95, fa = "fa-solid fa-gauge-simple-high" }, 
                { label = "Brakes", stat = 80, fa = "fa-solid fa-angles-down" },
                { label = "Suspansion", stat = 35, fa = "fa-solid fa-car-rear" },
            },
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 800, -- New price (if discount is active)
            },
            itemImg = "./itemImages/adder.png", -- Item image
        },
        {
            id = 2, -- Should be unique 
            label = "Baller 3", -- Display name
            itemName = "baller3", -- Item name ( Spawn name for vehicle )
            filter = "SUV", -- Filter name
            itemType = "vehicle", -- Item type || vehicle, air, boat...
            itemCount = 1, -- Just 1 for vehicle
            garage = "pillboxgarage", -- Garage name (When you buy this vehicle, it will be stored in this garage)
            price = 350, -- Price (Without discount)
            testable = true, -- If you want to test this vehicle, set it to true
            graph = { -- Graphical settings...
                { label = "Engine", stat = 70, fa = "fa-solid fa-gauge-simple-high" }, 
                { label = "Brakes", stat = 70, fa = "fa-solid fa-angles-down" },
                { label = "Suspansion", stat = 80, fa = "fa-solid fa-car-rear" },
            },
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 300, -- New price (if discount is active)
            },
            itemImg = "./itemImages/baller3.png", -- Item image
        },
        {
            id = 3, -- Should be unique 
            label = "Zentorno", -- Display name
            itemName = "zentorno", -- Item name ( Spawn name for vehicle )
            filter = "Super", -- Filter name
            itemType = "vehicle", -- Item type || vehicle, air, boat...
            itemCount = 1, -- Just 1 for vehicle
            garage = "pillboxgarage", -- Garage name (When you buy this vehicle, it will be stored in this garage)
            price = 950, -- Price (Without discount)
            testable = true, -- If you want to test this vehicle, set it to true
            graph = { -- Graphical settings...
                { label = "Engine", stat = 90, fa = "fa-solid fa-gauge-simple-high" }, 
                { label = "Brakes", stat = 75, fa = "fa-solid fa-angles-down" },
                { label = "Suspansion", stat = 30, fa = "fa-solid fa-car-rear" },
            },
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 800, -- New price (if discount is active)
            },
            itemImg = "./itemImages/zentorno.png", -- Item image
        },
        {
            id = 4, -- Should be unique 
            label = "superd", -- Display name
            itemName = "superd", -- Item name ( Spawn name for vehicle )
            filter = "Sedan", -- Filter name
            itemType = "vehicle", -- Item type || vehicle, air, boat...
            itemCount = 1, -- Just 1 for vehicle
            garage = "pillboxgarage", -- Garage name (When you buy this vehicle, it will be stored in this garage)
            price = 700, -- Price (Without discount)
            testable = true, -- If you want to test this vehicle, set it to true
            graph = { -- Graphical settings...
                { label = "Engine", stat = 50, fa = "fa-solid fa-gauge-simple-high" }, 
                { label = "Brakes", stat = 35, fa = "fa-solid fa-angles-down" },
                { label = "Suspansion", stat = 85, fa = "fa-solid fa-car-rear" },
            },
            discount = { -- Discount settings...
                state = false, -- If you want to discount, set it to true
                newPrice = 800, -- New price (if discount is active)
            },
            itemImg = "./itemImages/superd.png", -- Item image
        },
        {
            id = 5, -- Should be unique 
            label = "T20", -- Display name
            itemName = "t20", -- Item name ( Spawn name for vehicle )
            filter = "Super", -- Filter name
            itemType = "vehicle", -- Item type || vehicle, air, boat...
            itemCount = 1, -- Just 1 for vehicle
            garage = "pillboxgarage", -- Garage name (When you buy this vehicle, it will be stored in this garage)
            price = 1500, -- Price (Without discount)
            testable = true, -- If you want to test this vehicle, set it to true
            graph = { -- Graphical settings...
                { label = "Engine", stat = 100, fa = "fa-solid fa-gauge-simple-high" }, 
                { label = "Brakes", stat = 70, fa = "fa-solid fa-angles-down" },
                { label = "Suspansion", stat = 50, fa = "fa-solid fa-car-rear" },
            },
            discount = { -- Discount settings...
                state = false, -- If you want to discount, set it to true
                newPrice = 800, -- New price (if discount is active)
            },
            itemImg = "./itemImages/t20.png", -- Item image
        },
        {
            id = 6, -- Should be unique 
            label = "Comet 2", -- Display name
            itemName = "comet2", -- Item name ( Spawn name for vehicle )
            filter = "Super", -- Filter name
            itemType = "vehicle", -- Item type || vehicle, air, boat...
            itemCount = 1, -- Just 1 for vehicle
            garage = "pillboxgarage", -- Garage name (When you buy this vehicle, it will be stored in this garage)
            price = 900, -- Price (Without discount)
            testable = true, -- If you want to test this vehicle, set it to true
            graph = { -- Graphical settings...
                { label = "Engine", stat = 75, fa = "fa-solid fa-gauge-simple-high" }, 
                { label = "Brakes", stat = 70, fa = "fa-solid fa-angles-down" },
                { label = "Suspansion", stat = 50, fa = "fa-solid fa-car-rear" },
            },
            discount = { -- Discount settings...
                state = false, -- If you want to discount, set it to true
                newPrice = 800, -- New price (if discount is active)
            },
            itemImg = "./itemImages/comet2.png", -- Item image
        },
        {
            id = 6, -- Should be unique 
            label = "Diablous", -- Display name
            itemName = "diablous", -- Item name ( Spawn name for vehicle )
            filter = "Motocycle", -- Filter name
            itemType = "vehicle", -- Item type || vehicle, air, boat... (if motocycle, set it to vehicle)
            itemCount = 1, -- Just 1 for vehicle
            garage = "pillboxgarage", -- Garage name (When you buy this vehicle, it will be stored in this garage)
            price = 300, -- Price (Without discount)
            testable = true, -- If you want to test this vehicle, set it to true
            graph = { -- Graphical settings...
                { label = "Engine", stat = 75, fa = "fa-solid fa-gauge-simple-high" }, 
                { label = "Brakes", stat = 70, fa = "fa-solid fa-angles-down" },
                { label = "Suspansion", stat = 20, fa = "fa-solid fa-car-rear" },
            },
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 250, -- New price (if discount is active)
            },
            itemImg = "./itemImages/diablous.png", -- Item image
        },
        {
            id = 7, -- Should be unique 
            label = "Double", -- Display name
            itemName = "double", -- Item name ( Spawn name for vehicle )
            filter = "Motocycle", -- Filter name
            itemType = "vehicle", -- Item type || vehicle, air, boat... (if motocycle, set it to vehicle)
            itemCount = 1, -- Just 1 for vehicle
            garage = "pillboxgarage", -- Garage name (When you buy this vehicle, it will be stored in this garage)
            price = 300, -- Price (Without discount)
            testable = true, -- If you want to test this vehicle, set it to true
            graph = { -- Graphical settings...
                { label = "Engine", stat = 75, fa = "fa-solid fa-gauge-simple-high" }, 
                { label = "Brakes", stat = 70, fa = "fa-solid fa-angles-down" },
                { label = "Suspansion", stat = 20, fa = "fa-solid fa-car-rear" },
            },
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 250, -- New price (if discount is active)
            },
            itemImg = "./itemImages/double.png", -- Item image
        },
        {
            id = 8, -- Should be unique 
            label = "FMJ", -- Display name
            itemName = "fmj", -- Item name ( Spawn name for vehicle )
            filter = "Super", -- Filter name
            itemType = "vehicle", -- Item type || vehicle, air, boat... (if motocycle, set it to vehicle)
            itemCount = 1, -- Just 1 for vehicle
            garage = "pillboxgarage", -- Garage name (When you buy this vehicle, it will be stored in this garage)
            price = 1650, -- Price (Without discount)
            testable = true, -- If you want to test this vehicle, set it to true
            graph = { -- Graphical settings...
                { label = "Engine", stat = 100, fa = "fa-solid fa-gauge-simple-high" }, 
                { label = "Brakes", stat = 70, fa = "fa-solid fa-angles-down" },
                { label = "Suspansion", stat = 20, fa = "fa-solid fa-car-rear" },
            },
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 1500, -- New price (if discount is active)
            },
            itemImg = "./itemImages/fmj.png", -- Item image
        },
        {
            id = 9, -- Should be unique 
            label = "Bison 2", -- Display name
            itemName = "bison2", -- Item name ( Spawn name for vehicle )
            filter = "Offroad", -- Filter name
            itemType = "vehicle", -- Item type || vehicle, air, boat... (if motocycle, set it to vehicle)
            itemCount = 1, -- Just 1 for vehicle
            garage = "pillboxgarage", -- Garage name (When you buy this vehicle, it will be stored in this garage)
            price = 500, -- Price (Without discount)
            testable = true, -- If you want to test this vehicle, set it to true
            graph = { -- Graphical settings...
                { label = "Engine", stat = 30, fa = "fa-solid fa-gauge-simple-high" }, 
                { label = "Brakes", stat = 30, fa = "fa-solid fa-angles-down" },
                { label = "Suspansion", stat = 50, fa = "fa-solid fa-car-rear" },
            },
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 450, -- New price (if discount is active)
            },
            itemImg = "./itemImages/bison2.png", -- Item image
        },
        {
            id = 10, -- Should be unique 
            label = "Dubsta 2", -- Display name
            itemName = "dubsta2", -- Item name ( Spawn name for vehicle )
            filter = "Offroad", -- Filter name
            itemType = "vehicle", -- Item type || vehicle, air, boat... (if motocycle, set it to vehicle)
            itemCount = 1, -- Just 1 for vehicle
            garage = "pillboxgarage", -- Garage name (When you buy this vehicle, it will be stored in this garage)
            price = 500, -- Price (Without discount)
            testable = true, -- If you want to test this vehicle, set it to true
            graph = { -- Graphical settings...
                { label = "Engine", stat = 50, fa = "fa-solid fa-gauge-simple-high" }, 
                { label = "Brakes", stat = 30, fa = "fa-solid fa-angles-down" },
                { label = "Suspansion", stat = 50, fa = "fa-solid fa-car-rear" },
            },
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 450, -- New price (if discount is active)
            },
            itemImg = "./itemImages/dubsta2.png", -- Item image
        },
        {
            id = 11, -- Should be unique 
            label = "Volatus", -- Display name
            itemName = "volatus", -- Item name ( Spawn name for vehicle )
            filter = "Helicopter", -- Filter name
            itemType = "air", -- Item type || vehicle, air, boat... (if motocycle, set it to vehicle)
            itemCount = 1, -- Just 1 for vehicle
            garage = "pillboxgarage", -- Garage name (When you buy this vehicle, it will be stored in this garage)
            price = 3000, -- Price (Without discount)
            testable = true, -- If you want to test this vehicle, set it to true
            graph = { -- Graphical settings...
                { label = "Engine", stat = 100, fa = "fa-solid fa-gauge-simple-high" }, 
                { label = "Brakes", stat = 80, fa = "fa-solid fa-angles-down" },
                { label = "Suspansion", stat = 0, fa = "fa-solid fa-car-rear" },
            },
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 2500, -- New price (if discount is active)
            },
            itemImg = "./itemImages/volatus.png", -- Item image
        },
        {
            id = 12, -- Should be unique 
            label = "Swift 2", -- Display name
            itemName = "swift2", -- Item name ( Spawn name for vehicle )
            filter = "Helicopter", -- Filter name
            itemType = "air", -- Item type || vehicle, air, boat... (if motocycle, set it to vehicle)
            itemCount = 1, -- Just 1 for vehicle
            garage = "pillboxgarage", -- Garage name (When you buy this vehicle, it will be stored in this garage)
            price = 3000, -- Price (Without discount)
            testable = true, -- If you want to test this vehicle, set it to true
            graph = { -- Graphical settings...
                { label = "Engine", stat = 100, fa = "fa-solid fa-gauge-simple-high" }, 
                { label = "Brakes", stat = 80, fa = "fa-solid fa-angles-down" },
                { label = "Suspansion", stat = 0, fa = "fa-solid fa-car-rear" },
            },
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 2500, -- New price (if discount is active)
            },
            itemImg = "./itemImages/swift2.png", -- Item image
        },
        {
            id = 13, -- Should be unique 
            label = "Miljet", -- Display name
            itemName = "miljet", -- Item name ( Spawn name for vehicle )
            filter = "Airplane", -- Filter name
            itemType = "air", -- Item type || vehicle, air, boat... (if motocycle, set it to vehicle)
            itemCount = 1, -- Just 1 for vehicle
            garage = "pillboxgarage", -- Garage name (When you buy this vehicle, it will be stored in this garage)
            price = 8000, -- Price (Without discount)
            testable = true, -- If you want to test this vehicle, set it to true
            graph = { -- Graphical settings...
                { label = "Engine", stat = 100, fa = "fa-solid fa-gauge-simple-high" }, 
                { label = "Brakes", stat = 80, fa = "fa-solid fa-angles-down" },
                { label = "Suspansion", stat = 0, fa = "fa-solid fa-car-rear" },
            },
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 7500, -- New price (if discount is active)
            },
            itemImg = "./itemImages/miljet.png", -- Item image
        },
        {
            id = 14, -- Should be unique 
            label = "Seabreeze", -- Display name
            itemName = "seabreeze", -- Item name ( Spawn name for vehicle )
            filter = "Airplane", -- Filter name
            itemType = "air", -- Item type || vehicle, air, boat... (if motocycle, set it to vehicle)
            itemCount = 1, -- Just 1 for vehicle
            garage = "pillboxgarage", -- Garage name (When you buy this vehicle, it will be stored in this garage)
            price = 5000, -- Price (Without discount)
            testable = true, -- If you want to test this vehicle, set it to true
            graph = { -- Graphical settings...
                { label = "Engine", stat = 70, fa = "fa-solid fa-gauge-simple-high" }, 
                { label = "Brakes", stat = 50, fa = "fa-solid fa-angles-down" },
                { label = "Suspansion", stat = 0, fa = "fa-solid fa-car-rear" },
            },
            discount = { -- Discount settings...
                state = false, -- If you want to discount, set it to true
                newPrice = 7500, -- New price (if discount is active)
            },
            itemImg = "./itemImages/seabreeze.png", -- Item image
        },
        {
            id = 15, -- Should be unique 
            label = "Chimera", -- Display name
            itemName = "chimera", -- Item name ( Spawn name for vehicle )
            filter = "Motocycle", -- Filter name
            itemType = "vehicle", -- Item type || vehicle, air, boat... (if motocycle, set it to vehicle)
            itemCount = 1, -- Just 1 for vehicle
            garage = "pillboxgarage", -- Garage name (When you buy this vehicle, it will be stored in this garage)
            price = 600, -- Price (Without discount)
            testable = true, -- If you want to test this vehicle, set it to true
            graph = { -- Graphical settings...
                { label = "Engine", stat = 70, fa = "fa-solid fa-gauge-simple-high" }, 
                { label = "Brakes", stat = 50, fa = "fa-solid fa-angles-down" },
                { label = "Suspansion", stat = 35, fa = "fa-solid fa-car-rear" },
            },
            discount = { -- Discount settings...
                state = false, -- If you want to discount, set it to true
                newPrice = 7500, -- New price (if discount is active)
            },
            itemImg = "./itemImages/chimera.png", -- Item image
        },
        {
            id = 16, -- Should be unique 
            label = "Coquette", -- Display name
            itemName = "coquette", -- Item name ( Spawn name for vehicle )
            filter = "Sport", -- Filter name
            itemType = "vehicle", -- Item type || vehicle, air, boat... (if motocycle, set it to vehicle)
            itemCount = 1, -- Just 1 for vehicle
            garage = "pillboxgarage", -- Garage name (When you buy this vehicle, it will be stored in this garage)
            price = 600, -- Price (Without discount)
            testable = true, -- If you want to test this vehicle, set it to true
            graph = { -- Graphical settings...
                { label = "Engine", stat = 65, fa = "fa-solid fa-gauge-simple-high" }, 
                { label = "Brakes", stat = 50, fa = "fa-solid fa-angles-down" },
                { label = "Suspansion", stat = 35, fa = "fa-solid fa-car-rear" },
            },
            discount = { -- Discount settings...
                state = false, -- If you want to discount, set it to true
                newPrice = 7500, -- New price (if discount is active)
            },
            itemImg = "./itemImages/coquette.png", -- Item image
        },
        {
            id = 17, -- Should be unique 
            label = "Drafter", -- Display name
            itemName = "drafter", -- Item name ( Spawn name for vehicle )
            filter = "Sport", -- Filter name
            itemType = "vehicle", -- Item type || vehicle, air, boat... (if motocycle, set it to vehicle)
            itemCount = 1, -- Just 1 for vehicle
            garage = "pillboxgarage", -- Garage name (When you buy this vehicle, it will be stored in this garage)
            price = 600, -- Price (Without discount)
            testable = true, -- If you want to test this vehicle, set it to true
            graph = { -- Graphical settings...
                { label = "Engine", stat = 65, fa = "fa-solid fa-gauge-simple-high" }, 
                { label = "Brakes", stat = 65, fa = "fa-solid fa-angles-down" },
                { label = "Suspansion", stat = 40, fa = "fa-solid fa-car-rear" },
            },
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 550, -- New price (if discount is active)
            },
            itemImg = "./itemImages/drafter.png", -- Item image
        },
    },
}


```


# Item Category

```lua
local preCategory =  {
    label = "Item",
    pageValue = "item-menu",
    categoryType = "item",
    items = {
        {
            id = 1, -- should be unique
            label = "Acid", -- item label 
            itemName = "acid", -- item name (used for giving item)
            itemType = "item", -- item type (item, weapon, etc)
            itemCount = 1, -- how many items should be given
            price = 100, -- item price (without discount)
            filter = "Drug", -- item filter (used for filtering items)
            description = "Acid is a powerful drug that is known for its hallucinogenic effects. It is commonly used recreationally for its mind-altering properties. Use with caution and always follow safety guidelines.",
            discount = { -- discount state and new price
                state = true, -- discount state
                newPrice = 95, -- new price (will be calculated with discount percentage if discount is active)
            },
            itemImg = "./itemImages/acid.png", -- item image path
        },
        {
            id = 2, -- should be unique
            label = "Advanced Tool Kit", -- item label ,
            itemName = "advancedkit", -- item name (used for giving item))
            itemType = "item", -- item type (item, weapon, etc)
            itemCount = 1, -- how many items should be given
            price = 80, -- item price (without discount)
            filter = "Tool", -- item filter (used for filtering items)
            description = "The Advanced Tool Kit is a high-quality tool kit that is designed for professional use. It contains a wide range of tools that are essential for any mechanic or handyman. The Advanced Tool Kit is perfect for anyone who needs a reliable and durable tool kit that can handle any job.",
            discount = { -- discount state and new price
                state = true, -- discount state
                newPrice = 70, -- new price (will be calculated with discount percentage if discount is active)
            },
            itemImg = "./itemImages/advancedkit.png", -- item image path
        },
        {
            id = 3, -- should be unique
            label = "Bandage", -- item label 
            itemName = "bandage", -- item name (used for giving item))
            itemType = "item", -- item type (item, weapon, etc)
            itemCount = 1, -- how many items should be given
            price = 80, -- item price (without discount)
            filter = "Medical", -- item filter (used for filtering items)
            description = "The Bandage is a simple medical item that is used to stop bleeding and promote healing. It is an essential item for anyone who is involved in combat or other dangerous activities. The Bandage is easy to use and can be applied quickly in an emergency.",
            discount = { -- discount state and new price
                state = true, -- discount state
                newPrice = 70, -- new price (will be calculated with discount percentage if discount is active)
            },
            itemImg = "./itemImages/bandage.png", -- item image path
        },
        {
            id = 4, -- should be unique
            label = "Binoculars", -- item label 
            itemName = "binoculars", -- item name (used for giving item))
            itemType = "item", -- item type (item, weapon, etc)
            itemCount = 1, -- how many items should be given
            price = 80, -- item price (without discount)
            filter = "Tool", -- item filter (used for filtering items)
            description = "The Binoculars are a high-quality pair of binoculars that are perfect for birdwatching, hunting, and other outdoor activities. They are lightweight, durable, and easy to use, making them the perfect accessory for any outdoor enthusiast. The Binoculars are also great for surveillance and other security-related tasks.",
            discount = { -- discount state and new price
                state = true, -- discount state
                newPrice = 70, -- new price (will be calculated with discount percentage if discount is active)
            },
            itemImg = "./itemImages/binoculars.png", -- item image path
        },
        {
            id = 5, -- should be unique
            label = "Bitcoin", -- item label 
            itemName = "bitcoin", -- item name (used for giving item))
            itemType = "item", -- item type (item, weapon, etc)
            itemCount = 1, -- how many items should be given
            price = 110, -- item price (without discount)
            filter = "Currency", -- item filter (used for filtering items)
            description = "Bitcoin is a digital currency that is used for online transactions. It is a decentralized currency that is not controlled by any government or financial institution. Bitcoin is a popular choice for online purchases and is accepted by many online retailers. It is also used as an investment and is traded on various online exchanges.",
            discount = { -- discount state and new price
                state = false, -- discount state
                newPrice = 70, -- new price (will be calculated with discount percentage if discount is active)
            },
            itemImg = "./itemImages/bitcoin.png", -- item image path
        },
        {
            id = 6, -- should be unique
            label = "Master Card", -- item label 
            itemName = "creditcard_master", -- item name (used for giving item))
            itemType = "item", -- item type (item, weapon, etc)
            itemCount = 1, -- how many items should be given
            price = 110, -- item price (without discount)
            filter = "Currency", -- item filter (used for filtering items)
            description = "Master Card is a digital currency that is used for online transactions. It is a decentralized currency that is not controlled by any government or financial institution. Master Card is a popular choice for online purchases and is accepted by many online retailers. It is also used as an investment and is traded on various online exchanges.",
            discount = { -- discount state and new price
                state = false, -- discount state
                newPrice = 70, -- new price (will be calculated with discount percentage if discount is active)
            },
            itemImg = "./itemImages/creditcard_master.png", -- item image path
        },
        {
            id = 7, -- should be unique
            label = "Drone", -- item label 
            itemName = "drone", -- item name (used for giving item))
            itemType = "item", -- item type (item, weapon, etc)
            itemCount = 1, -- how many items should be given
            price = 150, -- item price (without discount)
            filter = "Tech", -- item filter (used for filtering items)
            description = "The Drone is a high-quality remote-controlled drone that is perfect for aerial photography, surveillance, and other applications. It is easy to fly and has a range of advanced features that make it ideal for both beginners and experienced users. The Drone is also great for recreational use and can provide hours of entertainment for the whole family.",
            discount = { -- discount state and new price
                state = false, -- discount state
                newPrice = 70, -- new price (will be calculated with discount percentage if discount is active)
            },
            itemImg = "./itemImages/drone.png", -- item image path
        },
        {
            id = 8, -- should be unique
            label = "First Aid Kit", -- item label 
            itemName = "firstaid", -- item name (used for giving item))
            itemType = "item", -- item type (item, weapon, etc)
            itemCount = 1, -- how many items should be given
            price = 80, -- item price (without discount)
            filter = "Medical", -- item filter (used for filtering items)
            description = "The First Aid Kit is a comprehensive medical kit that is designed for emergency situations. It contains a wide range of medical supplies that are essential for treating injuries and illnesses. The First Aid Kit is perfect for anyone who needs a reliable and durable medical kit that can handle any emergency.",
            discount = { -- discount state and new price
                state = false, -- discount state
                newPrice = 70, -- new price (will be calculated with discount percentage if discount is active)
            },
            itemImg = "./itemImages/firstaid.png", -- item image path
        },
        {
            id = 9, -- should be unique
            label = "Hacking Device", -- item label 
            itemName = "hackingdevice-1", -- item name (used for giving item))
            itemType = "item", -- item type (item, weapon, etc)
            itemCount = 1, -- how many items should be given
            price = 180, -- item price (without discount)
            filter = "Tech", -- item filter (used for filtering items)
            description = "The Hacking Device is a high-quality device that is designed for hacking into computer systems and networks. It is perfect for anyone who needs to bypass security measures and gain access to restricted information. The Hacking Device is easy to use and has a range of advanced features that make it ideal for both beginners and experienced users.",
            discount = { -- discount state and new price
                state = false, -- discount state
                newPrice = 70, -- new price (will be calculated with discount percentage if discount is active)
            },
            itemImg = "./itemImages/hackingdevice-1.png", -- item image path
        },
        {
            id = 10, -- should be unique
            label = "Joint", -- item label 
            itemName = "joint", -- item name (used for giving item))
            itemType = "item", -- item type (item, weapon, etc)
            itemCount = 1, -- how many items should be given
            price = 80, -- item price (without discount)
            filter = "Drug", -- item filter (used for filtering items)
            description = "The Joint is a popular drug that is known for its relaxing and euphoric effects. It is commonly used recreationally for its calming properties. The Joint is perfect for anyone who needs to unwind and relax after a long day. Use with caution and always follow safety guidelines.",
            discount = { -- discount state and new price
                state = true, -- discount state
                newPrice = 70, -- new price (will be calculated with discount percentage if discount is active)
            },
            itemImg = "./itemImages/joint.png", -- item image path
        },
        {
            id = 11, -- should be unique
            label = "Nightvision Goggles -- item label ",
            itemName = "nightvision", -- item name (used for giving item))
            itemType = "item", -- item type (item, weapon, etc)
            itemCount = 1, -- how many items should be given
            price = 80, -- item price (without discount)
            filter = "Tech", -- item filter (used for filtering items)
            description = "The Nightvision Goggles are a high-quality pair of night vision goggles that are perfect for surveillance, hunting, and other applications. They are lightweight, durable, and easy to use, making them the perfect accessory for any outdoor enthusiast. The Nightvision Goggles are also great for security-related tasks and can provide a tactical advantage in low-light conditions.",
            discount = { -- discount state and new price
                state = true, -- discount state
                newPrice = 70, -- new price (will be calculated with discount percentage if discount is active)
            },
            itemImg = "./itemImages/nightvision.png", -- item image path
        },
        {
            id = 12, -- should be unique
            label = "Parachute", -- item label 
            itemName = "parachute_blue", -- item name (used for giving item))
            itemType = "item", -- item type (item, weapon, etc)
            itemCount = 1, -- how many items should be given
            price = 65, -- item price (without discount)
            filter = "Tool", -- item filter (used for filtering items)
            description = "The Parachute is a high-quality parachute that is perfect for skydiving, base jumping, and other aerial activities. It is lightweight, durable, and easy to use, making it the perfect accessory for any thrill-seeker. The Parachute is also great for emergency situations and can provide a safe landing in the event of an accident.",
            discount = { -- discount state and new price
                state = true, -- discount state
                newPrice = 40, -- new price (will be calculated with discount percentage if discount is active)
            },
            itemImg = "./itemImages/parachute_blue.png", -- item image path
        },
        {
            id = 13, -- should be unique
            label = "Steroids", -- item label 
            itemName = "steroids", -- item name (used for giving item))
            itemType = "item", -- item type (item, weapon, etc)
            itemCount = 1, -- how many items should be given
            price = 110, -- item price (without discount)
            filter = "Drug", -- item filter (used for filtering items)
            description = "Steroids are a powerful drug that is known for its muscle-building effects. They are commonly used by athletes and bodybuilders to increase strength and endurance. Steroids are perfect for anyone who wants to improve their physical performance and achieve their fitness goals. Use with caution and always follow safety guidelines.",
            discount = { -- discount state and new price
                state = true, -- discount state
                newPrice = 85, -- new price (will be calculated with discount percentage if discount is active)
            },
            itemImg = "./itemImages/steroids.png", -- item image path
        },
    },
},


```


# Money Category

<pre class="language-lua"><code class="lang-lua">local preCategory = {
    label = "Money",
    pageValue = "money-menu",
    categoryType = "item",
    
    items = {
        {
            id = 1,
            label = "$10.000",
            itemName = "cash",
            itemType = "money",
            itemCount = 10000,
            price = 100,
            filter = "Money",
            description = "You are rich now!",
            discount = {
                state = true,
                newPrice = 95,
            },
            itemImg = "./itemImages/dirtymoney.png",
        },
        {
            id = 2,
            label = "$20.000",
            itemName = "cash",
            itemType = "money",
            itemCount = 20000,
            price = 200,
            filter = "Money",
            description = "You are rich now!",
            discount = {
                state = true,
                newPrice = 190,
            },
            itemImg = "./itemImages/dirtymoney.png",
        },
        {
            id = 3,
            label = "$30.000",
            itemName = "cash",
            itemType = "money",
            itemCount = 30000,
            price = 300,
            filter = "Money",
            description = "You are rich now!",
            discount = {
                state = true,
                newPrice = 285,
            },
            itemImg = "./itemImages/dirtymoney.png",
        },
        {
            id = 4,
            label = "$40.000",
            itemName = "cash",
            itemType = "money",
            itemCount = 40000,
            price = 400,
            filter = "Money",
            description = "You are rich now!",
            discount = {
                state = true,
                newPrice = 380,
            },
            itemImg = "./itemImages/dirtymoney.png",
        },
        {
            id = 5,
            label = "$50.000",
            itemName = "cash",
            itemType = "money",
            itemCount = 50000,
            price = 500,
            filter = "Money",
            description = "You are rich now!",
            discount = {
                state = true,
                newPrice = 475,
            },
            itemImg = "./itemImages/dirtymoney.png",
        },
        {
            id = 6,
            label = "$60.000",
            itemName = "cash",
            itemType = "money",
            itemCount = 60000,
            price = 600,
            filter = "Money",
            description = "You are rich now!",
            discount = {
                state = true,
                newPrice = 570,
            },
            itemImg = "./itemImages/dirtymoney.png",
        },
        {
            id = 7,
            label = "$70.000",
            itemName = "cash",
            itemType = "money",
            itemCount = 70000,
            price = 700,
            filter = "Money",
            description = "You are rich now!",
            discount = {
                state = true,
                newPrice = 650,
            },
            itemImg = "./itemImages/dirtymoney.png",
        },
        {
            id = 8,
            label = "$80.000",
            itemName = "cash",
            itemType = "money",
            itemCount = 80000,
            price = 800,
            filter = "Money",
            description = "You are rich now!",
            discount = {
                state = true,
                newPrice = 730,
            },
            itemImg = "./itemImages/dirtymoney.png",
        },
        {
            id = 9,
            label = "$90.000",
            itemName = "cash",
            itemType = "money",
            itemCount = 90000,
            price = 900,
            filter = "Money",
            description = "You are rich now!",
            discount = {
                state = true,
                newPrice = 800,
            },
            itemImg = "./itemImages/dirtymoney.png",
        },
        {
            id = 10,
            label = "$100.000",
            itemName = "cash",
            itemType = "money",
            itemCount = 100000,
            price = 1000,
            filter = "Money",
            description = "You are rich now!",
            discount = {
                state = true,
                newPrice = 875,
            },
            itemImg = "./itemImages/dirtymoney.png",
        },
    },
},
<strong>
</strong>

</code></pre>


# Weapon Category

```lua
local preCategory = {
    label = "Weapon", 
    pageValue = "weapon-menu",
    categoryType = "item",
    items = {
        {
            id = 1, -- Should be unique 
            label = "AP Pistol", -- Display name
            itemName = "weapon_appistol", -- Item name (giving item)
            itemType = "weapon", -- Type of item (if your item is a weapon, then you should set it to weapon)
            filter = "Pistol", -- Filter name
            itemCount = 1, -- How many items should be given
            price = 750, -- Price (Without discount)
            description = "This is a powerful AP Pistol that can be used for various purposes.", -- Description
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 700, -- New price (if discount is active)
            },
            itemImg = "./itemImages/weapon_appistol.png", -- Item image
        },
        {
            id = 2, -- Should be unique 
            label = "Combat Pistol", -- Display name
            itemName = "weapon_combatpistol", -- Item name (giving item)
            itemType = "weapon", -- Type of item (if your item is a weapon, then you should set it to weapon)
            filter = "Pistol", -- Filter name
            itemCount = 1, -- How many items should be given
            price = 1000, -- Price (Without discount)
            description = "The Combat Pistol is a popular choice among law enforcement officers for its reliability and accuracy.", -- Description
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 950, -- New price (if discount is active)
            },
            itemImg = "./itemImages/weapon_combatpistol.png", -- Item image
        },
        {
            id = 3, -- Should be unique 
            label = "Pistol", -- Display name
            itemName = "weapon_pistol", -- Item name (giving item)
            itemType = "weapon", -- Type of item (if your item is a weapon, then you should set it to weapon)
            filter = "Pistol", -- Filter name
            itemCount = 1, -- How many items should be given
            price = 550, -- Price (Without discount)
            description = "The Pistol is a simple and reliable firearm that is commonly used for self-defense and target shooting.", -- Description
            discount = { -- Discount settings...
                state = false, -- If you want to discount, set it to true
                newPrice = 500, -- New price (if discount is active)
            },
            itemImg = "./itemImages/weapon_pistol.png", -- Item image
        },
        {
            id = 4, -- Should be unique 
            label = "SNS Pistol", -- Display name
            itemName = "weapon_snspistol", -- Item name (giving item)
            itemType = "weapon", -- Type of item (if your item is a weapon, then you should set it to weapon)
            filter = "Pistol", -- Filter name
            itemCount = 1, -- How many items should be given
            price = 450, -- Price (Without discount)
            description = "This is a small weapon.", -- Description
            discount = { -- Discount settings...
                state = false, -- If you want to discount, set it to true
                newPrice = 500, -- New price (if discount is active)
            },
            itemImg = "./itemImages/weapon_snspistol.png", -- Item image
        },
        {
            id = 5, -- Should be unique 
            label = "Mini SMG", -- Display name
            itemName = "weapon_minismg", -- Item name (giving item)
            itemType = "weapon", -- Type of item (if your item is a weapon, then you should set it to weapon)
            filter = "SMG", -- Filter name
            itemCount = 1, -- How many items should be given
            price = 1000, -- Price (Without discount)
            description = "The Mini SMG is a compact and lightweight submachine gun that excels in close-quarters combat. Its high rate of fire and maneuverability make it a popular choice for covert operations and tight spaces.", -- Description
            discount = { -- Discount settings...
                state = false, -- If you want to discount, set it to true
                newPrice = 500, -- New price (if discount is active)
            },
            itemImg = "./itemImages/weapon_minismg.png", -- Item image
        },
        {
            id = 6, -- Should be unique 
            label = "SMG", -- Display name
            itemName = "weapon_smg", -- Item name (giving item)
            itemType = "weapon", -- Type of item (if your item is a weapon, then you should set it to weapon)
            filter = "SMG", -- Filter name
            itemCount = 1, -- How many items should be given
            price = 1550, -- Price (Without discount)
            description = "The SMG is a powerful submachine gun that offers high firepower and accuracy. It is commonly used in close-quarters combat and excels in suppressing enemies.", -- Description
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 1500, -- New price (if discount is active)
            },
            itemImg = "./itemImages/weapon_smg.png", -- Item image
        },
        {
            id = 7, -- Should be unique 
            label = "Knife", -- Display name
            itemName = "weapon_knife", -- Item name (giving item)
            itemType = "weapon", -- Type of item (if your item is a weapon, then you should set it to weapon)
            filter = "Melee", -- Filter name
            itemCount = 1, -- How many items should be given
            price = 300, -- Price (Without discount)
            description = "This is a simple and straightforward knife that is commonly used for various tasks such as cutting, slicing, and stabbing. It is a versatile tool that can be used in both everyday situations and survival scenarios.", -- Description
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 250, -- New price (if discount is active)
            },
            itemImg = "./itemImages/weapon_knife.png", -- Item image
        },
        {
            id = 8, -- Should be unique 
            label = "Nightstick", -- Display name
            itemName = "weapon_nightstick", -- Item name (giving item)
            itemType = "weapon", -- Type of item (if your item is a weapon, then you should set it to weapon)
            filter = "Melee", -- Filter name
            itemCount = 1, -- How many items should be given
            price = 300, -- Price (Without discount)
            description = "The Nightstick is a versatile melee weapon commonly used by law enforcement officers. It is a compact and lightweight baton that can be used for self-defense and subduing suspects. Its sturdy construction and ergonomic design make it an effective tool in close-quarters combat.", -- Description
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 250, -- New price (if discount is active)
            },
            itemImg = "./itemImages/weapon_nightstick.png", -- Item image
        },
        {
            id = 9, -- Should be unique 
            label = "Wrench", -- Display name
            itemName = "weapon_wrench", -- Item name (giving item)
            itemType = "weapon", -- Type of item (if your item is a weapon, then you should set it to weapon)
            filter = "Melee", -- Filter name
            itemCount = 1, -- How many items should be given
            price = 300, -- Price (Without discount)
            description = "The Wrench is a versatile tool commonly used for mechanical repairs and maintenance. It is a sturdy and durable handheld tool that can be used to tighten or loosen nuts, bolts, and other fasteners. Its compact size and ergonomic design make it easy to use in tight spaces. Whether you're a professional mechanic or a DIY enthusiast, the Wrench is an essential tool for any toolbox.", -- Description
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 250, -- New price (if discount is active)
            },
            itemImg = "./itemImages/weapon_wrench.png", -- Item image
        },
        {
            id = 10, -- Should be unique 
            label = "Grenade", -- Display name
            itemName = "weapon_grenade", -- Item name (giving item)
            itemType = "weapon", -- Type of item (if your item is a weapon, then you should set it to weapon)
            filter = "Explosion", -- Filter name
            itemCount = 1, -- How many items should be given
            price = 1700, -- Price (Without discount)
            description = "The Grenade is a powerful explosive device that can be thrown to cause significant damage to enemies and structures. It is commonly used in combat situations to clear out enemy positions or create diversions. The Grenade's explosive power and versatility make it a valuable tool for both offensive and defensive strategies.", -- Description
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 1500, -- New price (if discount is active)
            },
            itemImg = "./itemImages/weapon_grenade.png", -- Item image
        },
        {
            id = 11, -- Should be unique 
            label = "Armor", -- Display name
            itemName = "Armor", -- Item name (giving item)
            itemType = "item", -- Type of item (if your item is a weapon, then you should set it to weapon)
            filter = "Defence", -- Filter name
            itemCount = 1, -- How many items should be given
            price = 200, -- Price (Without discount)
            description = "The Grenade is a powerful explosive device that can be thrown to cause significant damage to enemies and structures. It is commonly used in combat situations to clear out enemy positions or create diversions. The Grenade's explosive power and versatility make it a valuable tool for both offensive and defensive strategies.", -- Description
            discount = { -- Discount settings...
                state = true, -- If you want to discount, set it to true
                newPrice = 180, -- New price (if discount is active)
            },
            itemImg = "./itemImages/armor.png", -- Item image
        },
    },
},


```


# Triggers

## Open Menu Trigger

**Client Side**

```
ak4y-vipSystemv2:openMenu
```

**Example**:&#x20;

```lua
TriggerEvent('ak4y-vipSystemv2:openMenu')
```


# Admin Commands

## Give Coin

<pre class="language-lua"><code class="lang-lua"><strong>/addvipcredit {userId} {creditAmount}
</strong></code></pre>

## Remove Coin

<pre class="language-lua"><code class="lang-lua"><strong>/removevipcredit {userId} {creditAmount}
</strong></code></pre>


# ak4y-aquapark\_restaurant


# Config


# Order Config Set (price/exp/recipe)

{% hint style="info" %}
Each recipe in the script has a price and an exp value.\
Recipes are generated randomly, and correctly delivered orders earn the worker money and experience based on the order contents.
{% endhint %}

## Change price information

1. Open the config folder inside the ak4y-aquapark\_restaurant file and start editing the **order\_config.lua** file.
2. We will make changes to the RECIPES = {} table, which begins with the code on line 160; all recipes and contents are located within this table.

{% hint style="danger" %}
Only drink recipes are in a separate table; DRINK\_RECIPES (in the same file)
{% endhint %}

## Find the recipe you want to change in the Recipes table (e.g., pizza\_margherita)

***

### Example of changing the recipe's monetary gain and experience gain;

<pre class="language-lua"><code class="lang-lua">RECIPES = {
    pizza_margherita = {
        type = "pizza",
        name = "Margherita Pizza", 
        label = "Margherita Pizza", 
        ----
        ----
        <a data-footnote-ref href="#user-content-fn-1">price = 25</a>, -- The change you make in this section will apply if any order contains this recipe. If the order delivered to the customer is correct, the amount will be added to the preparer's earnings.
        ----
        ----
        <a data-footnote-ref href="#user-content-fn-2">exp = 15</a>, -- Any changes made in this section will apply to orders containing this recipe. If the order is correct when delivered to the customer, the preparer will receive additional experience.
        ----
        ----
        image = "./pizza.png",
        category = "pizza",
        recipe = {
            sos = 1,         
            peynir = 1,      
        }
    },
}
</code></pre>

***

### Example of changing the requirements of the recipe;

```lua
RECIPES = {
    pizza_margherita = {
        type = "pizza",
        name = "Margherita Pizza", 
        label = "Margherita Pizza", 
        price = 25,
        exp = 15,
        category = "pizza",
        ----
        ----
        recipe = {
            sos = 1, -- How many of these ingredients should be on the pizza for this recipe?       
            peynir = 1, -- How many of these ingredients should be on the pizza for this recipe? 
            -- you can add more here...
        }
        ----
        ----
    },
}
```

### Add new ingredients to the recipe;

Place the appropriate ingredient from the ingredients below into the recipe = {} table for the item you selected, and write the amount of that ingredient you want to add to the recipe next to it!

{% hint style="warning" %}
You can only put pizza ingredients on pizzas and hamburger ingredients on hamburgers!
{% endhint %}

Ingredient List

* **Pizza:** sos - peynir - mushroom - pepper - olive - onion - salam - corn - tomato - pastirma
* **Burger:** meat\_cooked - chicken\_cooked - lettuce - tomato - cheese - onion&#x20;

{% hint style="success" %}
**After making changes to your recipes, don't forget to update the recipe tablet in the game as well! Your players might see incorrect recipes!**
{% endhint %}

***

### Modify the contents of the recipe book in the game

1. #### To modify the contents of the recipe book in the game, we will make changes to the RECIPE\_BOOK\_CONFIG = {} table within the order\_config.lua file.
2. The **items = {**} table within RECIPE\_BOOK\_CONFIG is the part we need!
3. You can apply the recipe changes you've made to the Necessary Ingredients and Prep Steps shown in the table below. You can also make them visible to your players on the game tablet!

<pre class="language-lua"><code class="lang-lua">RECIPE_BOOK_CONFIG = {
    ...
    ...
<strong>    items = {
</strong>            -- 🍕 PIZZA RECIPES
            {
                uniqueId = 1,
                recipeKey = "pizza_margherita", -- Link to RECIPES
                label = "Margherita Pizza",
                difficulty = "Easy",
                cookTime = "8 Min",
                categoryId = 1, -- pizza
                img = "pizza.png",
                selected = false,
                ----
                ----
                neccesaryIngredients = {
                    "Pizza Dough",
                    "Tomato Sauce",
                    "Mozzarella Cheese"
                },
                prepSteps = {
                    { step = 1, label = "Roll out pizza dough" },
                    { step = 2, label = "Take dough to preparation counter" },
                    { step = 3, label = "Spread tomato sauce evenly" },
                    { step = 4, label = "Add mozzarella cheese" },
                    { step = 5, label = "Bake in oven for 3 minutes" },
                    { step = 6, label = "Remove from oven and serve" }
                }
                ----
                ----
            },
        },
    }
</code></pre>

[^1]: The change you make in this section will apply if any order contains this recipe. If the order delivered to the customer is correct, the amount will be added to the preparer's earnings.

[^2]: ```
    Any changes made in this section will apply to orders containing this recipe. If the order is correct when delivered to the customer, the preparer will receive additional experience.
    ```


# Install Script

## 1-) Download the script

You must download the script you purchased via Keymaster;

* ak4y-core
* ak4y-aquaparkprop
* ak4y\_aquapark\_restaurant&#x20;

You will download 3 different files. You must download these files individually from [Keymaster](https://keymaster.fivem.net/asset-grants).

***

## 2-) Installing the script

### Open server.cfg and paste the following code block after the core files (qb, esx, qbox core).

```
ensure AuraStudio-Aquapark
ensure ak4y-core
ensure ak4y-aquaparkprop
ensure ak4y-aquapark_restaurant
```

{% hint style="warning" %}
The order in Server.cfg is important. First core, then props, then the script should be started!
{% endhint %}

***

### Now, based on the inventory you are currently using, load the items you need to load into your inventory.

{% tabs %}
{% tab title="ESX Inventory" %}

```sql
INSERT INTO items (name, label, weight, rare, can_remove) VALUES
('aquapark_ticket', 'Aquapark Ticket', 10, 0, 1);
```

{% endtab %}

{% tab title="OX Inventory" %}

```lua
['aquapark_ticket'] = {
        label = 'Aquapark Ticket',
        description = 'A ticket for the Aquapark Slides.',
        stack = false,
        weight = 10,
},
```

{% endtab %}

{% tab title="QB-Inventory" %}

```lua
aquapark_ticket = {
    name = 'aquapark_ticket',
    label = 'Aquapark Ticket',
    weight = 10,                 
    type = 'item',
    image = 'aquapark_ticket.png',
    unique = true,                   
    useable = true,
    shouldClose = true,
    description = 'A ticket for the Aquapark Slides.',
},

```

{% endtab %}
{% endtabs %}

### Then paste the following item image into the section of your inventory where the item images are located.

{% hint style="danger" %}
The file name should be **aquapark\_ticket.png**
{% endhint %}

<figure><img src="/files/JJfYCqslAbLu9Tyu7DRk" alt=""><figcaption></figcaption></figure>

***

### Open the database application you use for SQL installation.

Create the following SQL table in your database.

```sql

CREATE TABLE IF NOT EXISTS `ak4y_aquapark` (
  `identifier` varchar(255) DEFAULT NULL,
  `experience` int(11) DEFAULT NULL,
  `totalEarnings` int(11) DEFAULT NULL,
  `completedJobs` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;

```

***


# ak4y-hudv1


# Build For Open Source

## Install Node.js

{% hint style="info" %}
When you make changes to the javascript code, you need to get a build of the code, for this you need to have Node.js installed on your computer.
{% endhint %}

Download Node.js directly from the link below and install everything on your computer.

{% embed url="<https://nodejs.org/en>" %}

***

## How to build?

1. Go to the directory of your script via CMD ( Example Command: 'cd c:\user\directory' ) <img src="/files/Wr7xAe5XgXY16OmSkI0e" alt="How to go to the Directory via CMD?" data-size="original">
2. After reaching the directory where our script is located; we install the necessary modules to the package. ( Example Command: 'npm install --force' / you should definitely use the --force tag.  )       ![](/files/ATURBYOuoSaayZxcrtY0)
3. After finishing the package installation process, you should type '**npm run build**' in the console to get a build.

{% hint style="danger" %}
If you have already completed step 2 in the directory you are in, you can skip step 2 in your next build process and access the directory directly with cd and then you can get the build with the npm run build command.
{% endhint %}

***


# Setup Script

## Let's download the requirements

Download xsound from the link below and put it in the section where your server's scripts are located.

{% embed url="<https://github.com/Xogy/xsound>" %}

## Hunger and thirst needs

You should set edible and drinkable medicines via esx\_status or qb-smallresources scripts. Hud will automatically pull your values.

{% hint style="warning" %}
For the esx framework, you should use the esx\_status script for things like hunger and thirst to work on your server. For the QBCore framework, the qb-smallresources script must be installed on your server. Make sure these scripts are installed
{% endhint %}

***

## Script installation

1. Paste the script you downloaded from Keymaster into the packages folder where your server files are located.
2. Check the default settings of hud via Config
   1. If you are using a custom fuel script, set Config.UseCustomFuel to true and edit the contents of the Config.CustomFuel function just below.
   2. Edit the url of the Config.ServerLogo variable to change your Server Logo.
   3. Edit the Config.Inventory variable for interactions with your inventory
   4. If you want the photo of the weapon you have on the watermark to appear without errors; edit the contents of the Config.InventoryImagePath function. ( nui:// inv script name / image folder / )
   5. Select your default notify structure via the Config.NotifyEvent variable according to the infrastructure you are using
3. If you wish, you can integrate your custom notify script via Config.Notify function
4. After all checks, ensure xsound and ak4y-hudv1 scripts via server.cfg

{% hint style="danger" %}
Remember! The script will not work correctly if it is restarted in-game. You must exit and enter the game after the script is restarted.
{% endhint %}


# Config

```lua
Config = {}

Config.SpeedType = "KMH" -- KMH or MPH
Config.NitroKey = "X"
Config.SeatBeltKey = "B"
Config.MinimapJustInVehicle = false -- If you want to show minimap only when player is in vehicle, set this to true
Config.HudCommand = "hud"
Config.FixedSizeNuiWarning = true

Config.SpeedMultiplier = Config.SpeedType == "KMH" and 3.6 or 2.236936
Config.NitroItem = "nitrous"
Config.RemoveNitroOnMilliseconds = 1


Config.UseCustomFuel = false -- If you want to use custom fuel script, set this to true and set the export name below
Config.CustomFuel = function(vehicle)
    return exports['LegacyFuel']:GetFuel(vehicle)
end


Config.ServerLogo = 'https://files.catbox.moe/406f5v.png'
Config.Inventory = "esx" -- esx, qb, ox is available.
Config.InventoryImagePath = function()
    if (Config.Inventory == "qb") then
        return 'nui://qb-inventory/html/images/'
    elseif (Config.Inventory == "esx") then
        return 'nui://esx_inventoryhud/html/img/items'
    elseif (Config.Inventory == "ox") then
        return 'nui://ox_inventory/web/images/'
    else
        return '' -- You can fill this with your inventoryhud image path.
    end
end
Config.NotifyEvent = "esx" -- esx, qb, ox is available if you using different script for notify, you can leave it blank. (dont forget add the export of notify below.)


---@class NotifyType: string | "info" | "success" | "error" | "warning"
Config.Notify = function(title, message, type_, length, icon)
    if Config.NotifyEvent == 'esx' then
        TriggerEvent('esx:showNotification', message)
    elseif Config.NotifyEvent == 'qb' then
        
        TriggerEvent('QBCore:Notify', message, type_, length)
    elseif Config.NotifyEvent == 'ox' then
        TriggerEvent("ox_lib:notify", {
            title = title,
            description = message,
            type = type_,
            duration = length,
            icon = icon 
        })
    else
        -- You can paste your notification export or something.
        print(('Notification: [%s] %s'):format(title, message))
    end
end

Config.StressNotify = true
Config.MinStressToBlur = 50
Config.WhitelistedWeaponStress = { -- Weapons that won't stress
    `weapon_petrolcan`,
    `weapon_hazardcan`,
    `weapon_fireextinguisher`,
    `weapon_candycane`,
    `weapon_flashlight`,
    `weapon_ball`,
    `weapon_acidpackage`,
    `weapon_snowball`,
    `weapon_fertilizercan`,
    `gadget_parachute`,
    `weapon_flare`,
}

Config.AddStress = {
    ["on_shoot"] = {
        min = 1,
        max = 2,
        enable = true,
        chance = 20, -- Change to get stressed
    },
    ["on_fastdrive"] = {
        min = 1,
        max = 3,
        enable = true,
        minSpeed = 110, -- Minimum speed to get stressed
        chance = 50, -- Change to get stressed
    },
}

Config.RemoveStress = {
    ["on_eat"] = {
        min = 5,
        max = 10,
        enable = true,
    },
    ["on_drink"] = {
        min = 5,
        max = 10,
        enable = true,

    },
    ["on_swim"] = {
        min = 5,
        max = 10,
        enable = true,

    },
    ["on_run"] = {
        min = 5,
        max = 10,
        enable = true,
    }
}

Config.Locale = "en"
Translations = {
  ["en"] = {
      ["NITRO"] = "Nitro",
      ["RUN_OUT_OF_NITRO"] = "Your nitro has run out!",
      ["NO_NITRO"] = "You don't have any nitro!",
      ["CANT_INSTALL_IN_CAR"] = "You can't install nitro while sitting in a car",
      ["FILLED_UP_NITRO"] = "You have filled up your nitro!",
      ["NO_CAR"] = "You are not near a vehicle!",
      ["STRESS"] = "Stress",
      ["YOUR_STRESS"] = "Your stress is %s",
  },
  ["de"] = {
      ["NITRO"] = "Nitro",
      ["RUN_OUT_OF_NITRO"] = "Dein Nitro ist aufgebraucht!",
      ["NO_NITRO"] = "Du hast kein Nitro!",
      ["CANT_INSTALL_IN_CAR"] = "Du kannst Nitro nicht installieren, während du im Auto sitzt",
      ["FILLED_UP_NITRO"] = "Du hast dein Nitro aufgefüllt!",
      ["NO_CAR"] = "Du bist nicht in der Nähe eines Fahrzeugs!",
      ["STRESS"] = "Stress",
      ["YOUR_STRESS"] = "Dein Stress beträgt %s",
  },
  ["fr"] = {
      ["NITRO"] = "Nitro",
      ["RUN_OUT_OF_NITRO"] = "Votre nitro est épuisé!",
      ["NO_NITRO"] = "Vous n'avez pas de nitro!",
      ["CANT_INSTALL_IN_CAR"] = "Vous ne pouvez pas installer du nitro en étant assis dans une voiture",
      ["FILLED_UP_NITRO"] = "Vous avez rempli votre nitro!",
      ["NO_CAR"] = "Vous n'êtes pas près d'un véhicule!",
      ["STRESS"] = "Stress",
      ["YOUR_STRESS"] = "Votre stress est de %s",
  },
  ["es"] = {
      ["NITRO"] = "Nitro",
      ["RUN_OUT_OF_NITRO"] = "¡Tu nitro se ha agotado!",
      ["NO_NITRO"] = "¡No tienes nitro!",
      ["CANT_INSTALL_IN_CAR"] = "No puedes instalar nitro mientras estás sentado en un coche",
      ["FILLED_UP_NITRO"] = "¡Has llenado tu nitro!",
      ["NO_CAR"] = "¡No estás cerca de un vehículo!",
      ["STRESS"] = "Estrés",
      ["YOUR_STRESS"] = "Tu nivel de estrés es %s",
  },
  ["pt"] = {
      ["NITRO"] = "Nitro",
      ["RUN_OUT_OF_NITRO"] = "Seu nitro acabou!",
      ["NO_NITRO"] = "Você não tem nitro!",
      ["CANT_INSTALL_IN_CAR"] = "Você não pode instalar nitro sentado em um carro",
      ["FILLED_UP_NITRO"] = "Você encheu seu nitro!",
      ["NO_CAR"] = "Você não está perto de um veículo!",
      ["STRESS"] = "Estresse",
      ["YOUR_STRESS"] = "Seu nível de estresse é %s",
  }
}

```


# Exports

## Client Side

{% hint style="info" %}
You should use all of these exports in your client-side files.
{% endhint %}

**Get Vehicle Nitro**

```lua
exports['ak4y-hud']:GetNitro()
```

***

**Get Player Stress**

```lua
exports["ak4y-hud"]:GetStress()
```

**Hide / Show Hud**

***

```lua
-- Show Hud
exports["ak4y-hud"]:toggleHud(true)

-- Hide Hud
exports["ak4y-hud"]:toggleHud(false)
```


# ak4y-football


# Known Errors

### If you get the following error when you try to open the menu;

{% hint style="success" %}

### Set your steam api key in server.cfg and restart the server.

{% endhint %}

<figure><img src="/files/DrvjZadQdwFCjKpEI9CA" alt=""><figcaption></figcaption></figure>


# Setting Up

This section explains how to install the ak4y-football script on your server.

The script has 4 main files (script file, outfit file, animation file and map file)

There is also an independent supporting script that is required for the script to work. ( polyzone )

***

## (1) - Keymaster

You can access these main base files by searching for football in the search section under Keymaster > Granted Assets tab.

{% hint style="success" %}
You must **download all the files** on the keymaster one by one.
{% endhint %}

> [Click and go to the keymaster](https://keymaster.fivem.net/asset-grants?search=football)

<figure><img src="/files/cpOfm61Vhf2VjzfmWkQh" alt=""><figcaption></figcaption></figure>

***

## (2) - GitHub

You need to download the supporting file PolyZone from Github.

> [ Click And Download](https://github.com/mkafrin/PolyZone/releases)

{% hint style="danger" %}
You must download it with the .zip extension (PolyZone.zip). You should not download the source code.
{% endhint %}

<figure><img src="/files/6xT5J86HnoIz0mFj6l8O" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/9u3xLrVEWmeKiQuTrayr" alt=""><figcaption></figcaption></figure>

***

## (3) - File operation

### After downloading all the files;

* **1-)** Create a folder named <mark style="color:blue;">**\[football]**</mark> inside the **resources folder in the file where your server is located**

<figure><img src="/files/9u3xLrVEWmeKiQuTrayr" alt=""><figcaption></figcaption></figure>

* **2-)** Put all downloaded files into the \[football] folder as shown in the image below.

<figure><img src="/files/LWkAEDvfr3zORnAon5hl" alt=""><figcaption></figcaption></figure>

* **3-)** <mark style="color:red;">Insert the .sql file</mark> in the ak4y-football folder into your database.
* **4-)** Initialize the \[football] folder in server.cfg with the following code

> ensure \[football]

<figure><img src="/files/ChG4uX1Oq2S4XWkKIlCE" alt=""><figcaption></figcaption></figure>


# Config

{% tabs %}
{% tab title="ESX/QB" %}

```lua
AK4Y = {}

-- qb / oldqb | qb = export system | oldqb = triggerevent system
-- esx / errorEsx | esx = export system | errorEsx = if you have any error in f8 console
AK4Y.Framework = "qb" 
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async

AK4Y.BallModel = "p_ld_soc_ball_01" -- https://wiki.rage.mp/index.php?title=Objects
AK4Y.BallSpawnCoord = vector3(771.28, -233.44, 65.32) -- x,y,z
AK4Y.FootballAreaCoords = vector3(786.38, -245.04, 66.11) -- x,y,z
AK4Y.FootballerNpcCoords = vector4(813.65, -244.89, 66.21, 104.8) -- x,y,z,h
AK4Y.MaleClothingNumber = 442
AK4Y.FemaleClothingNumber = 473 
AK4Y.KickTime = 60000 -- player can not join the match for 60 seconds after kick
AK4Y.JoinPaymentMethod = "bank" -- cash / bank
AK4Y.CancelMatchAfterCreate = 320 -- second | if you dont start the match in 5 minutes, match will be canceled

AK4Y.GoalEffect = {
	Active = true, -- true / false
	Dict ="proj_indep_firework_v2" , -- https://vespura.com/fivem/particle-list/
	Name = "scr_firework_indep_repeat_burst_rwb",  --https://vespura.com/fivem/particle-list/
}

AK4Y.AddActionScore = {
	score = 10, -- score / goal
	shoot = 1, -- shoot 
	saveGoal = 3, -- save goal -- eklenecek
	goalToMyTeam = -15, -- goal to my team
}

AK4Y.Buttons = {
	["shoot"] = 38,
	["shootdowner"] = 52,
	["throwBall"] = 306,
	["dropBall"] = 301,
	["jumpUpLeft"] = 117,
	["jumpUpRight"] = 118,
	["jumpDownLeft"] = 124,
	["jumpDownRight"] = 125,
	["holdball"] = 110,
	["slideButton"] = 23,
	["rainbowButton"] = 47,
} 

AK4Y.FootballerNpcSettings = {
	pedName = "ig_mrk",
	pedHash = 0xEDDCAB6D,
	h = 112.38,
}

AK4Y.createSettings = {
    matchCreatePrice = 2000, -- match create price
    matchCreatePriceType = "cash", -- cash / bank
}

AK4Y.createBetSettings = {
    minBet = 1000, -- min bet amount
    maxBet = 100000, -- max bet amount
}

AK4Y.playerBetSettings = {
    minBet = 1000, -- min bet amount
    maxBet = 100000, -- max bet amount
}

AK4Y.matchCoords = {
    redTeam = { 
        { position = "goalKeeper", label = "Goalkeeper", cloth = 6, x = 741.28, y = -218.9, z = 65.11, h = 239.31 },
        { position = "leftDefender", label = "Left Defender", cloth = 7, x = 753.41, y = -214.03, z = 65.11, h = 239.31 },
        { position = "rightDefender", label = "Right Defender", cloth = 8, x = 744.74, y = -231.59, z = 65.12, h = 239.31 },
        { position = "middleDefender", label = "Middle Defender", cloth = 9, x = 753.55, y = -224.94, z = 65.12, h = 239.31 },
        { position = "leftForward", label = "Left Forward", cloth = 10, x = 767.03, y = -221.31, z = 65.12, h = 239.31 },
        { position = "rightForward", label = "Right Forward", cloth = 11, x = 758.87, y = -238.73, z = 65.11, h = 239.31 },
    },
    blueTeam = {
        { position = "goalKeeper", label = "Goalkeeper", cloth = 0, x = 801.23, y = -248.54, z = 65.11, h = 64.30 },
        { position = "leftDefender", label = "Left Defender", cloth = 1, x = 789.73, y = -253.52, z = 65.11, h = 64.30 },
        { position = "rightDefender", label = "Right Defender", cloth = 2, x = 798.9, y = -236.77, z = 65.12, h = 64.30 },
        { position = "middleDefender", label = "Middle Defender", cloth = 3, x = 790.97, y = -243.59, z = 65.12, h = 64.30 },
        { position = "leftForward", label = "Left Forward", cloth = 4, x = 775.3, y = -246.77, z = 65.12, h = 64.30 },
        { position = "rightForward", label = "Right Forward", cloth = 5, x = 783.72, y = -229.55, z = 65.11, h = 64.30 },
    },
	afterGoal = { 
		pos1 = { x = 769.65, y = -236.52, z = 66.11, h = 331.09 },
		pos2 = { x = 772.25, y = -230.92, z = 66.11, h = 153.36 },
	}
}

AK4Y.matchTimeSelects = {
    { time = 5, label = "5 Minute" }, -- time = minute
    { time = 10, label = "10 Minute" }, 
    { time = 15, label = "15 Minute" },
    { time = 20, label = "20 Minute" },
}

AK4Y.activeInfos = {
    { text = "Active Lorem ipsum dolor sit amet consectetur. Tincidunt leo sednunc, quisque." },
}

AK4Y.Language = {
    generalTitle = "AK4Y.RP", 
	generalTitle2 = "FOOTBALL",
	popUpTitle = "AK4Y-FOOTBALL",
	createMatchTitle = "Create Match",
	createSubText = "Create a match with your own settings.",
	wantLeavePopUpTitle = "Are you sure you want to leave the match?",
	wantLeavePopUpDescription = "If you leave the match, you wont lose your bet.",
	wantToCancelTheMatchPopUpTitle = "Are you sure you want to cancel the match?",
	wantToCancelTheMatchPopUpDescription = "If you cancel the match, you will lose your money.",
	wantStartMatchTitle = "Start Match",
	wantToStartMatch = "Are you sure you want to start the match?",
	placeBetRedTeamButton = "Place Bet (Red)",
	placeBetBlueTeamButton = "Place Bet (Blue)",
	youWantTakeBet = "Do you want to take the bet?",
	youWantTakeBetDescription = "If you win the bet, you win 2x your stake! If you lose, you lose all your money...",
	cancelButtonText = "Cancel",
	acceptButtonText = "Accept",
	emptySlotText = "Empty Slot",
	openLobbyMenu = "Open Lobby Menu",
	cannotMoveText = "You cannot move because the game has not started.",
	activeText = "Active",
	matchesText = "Matches",
	teamText = "TEAM",
	scoreText = "Score",
	rankText = "Rank",
	nameText = "Name",
	scoreText = "Score",
	matchText = "Match",
	createText = "Create",
	goalsText = "Goals",
	ShotsText = "Shots",
	pingText = "Ping",
	footballTitle = "FOOTBALL",
	leaderBoardText = "LEADERBOARD",
	goaaaalText = "Goaaaal",
	lobbyMenuText = "LOBBY MENU",
	informationText = "Information",
	informationDescription = "Lorem ipsum dolor sit amet consectetur. Tincidunt leo sednunc, quisque.",
	bettingText = "BETTING",
	teamNameText = "Team Name",
	countOfViewerText = "Count of Viewer",
	viewersText = "Viewers",
	waitingForTheMatchText = "Waiting for the match to start.",
	startTheMatchText = "Start the match",
	bettingPopUpTitle1 = "CREATE",
	bettingPopUpTitle2 = "BETTING",
	enterTheBetAmountText = "Enter the bet amount;",
	startBetText = "Start Bet",
	footbalManagerTitle1 = "FOOTBALL",
	footbalManagerTitle2 = "MANAGER",
	createAFootbalMatchText = "CREATE A FOOTBALL MATCH",
	selectMatchTimeText = "Select Match Time",
	selectMatchModeText = "Select Match Mode",
	matchBettingText = "Match Betting",
	setBetText = "Set Bet",
	somebodyPlayingFootballNowTitle = "SOMEBODY PLAYING FOOTBALL NOW",
	noteText = "Note",
	continueMatchDescription = "lorem ipsum dolor sit amet consectetur. Tincidunt leo sednunc, quisque.",
	footballBettingText = "Football Betting;",
	createBetText = "Create Bet",
	versusText = "VS",
	placeBetForRedTeamText = "Place Bet (Red)",
	placeBetForBlueTeamText = "Place Bet (Blue)",
	matchModeText = "Match Mode", 
	matchJoinPriceText = "Match Join Price",
	joinMatchText = "Join Match",
	freeText = "Free",
	youWinText = "YOU WIN ",
	youLoseText = "YOU LOSE",
	youDrawText = "DRAW",
	continueText = "CONTINUE",
 	endMatchText = "END MATCH",
	isWinnerText = "IS WINNER", 
}

AK4Y.KeyBoardInfos = {
	{ key = "E", label = "Shoot (Upper)", pos = "all" },
	{ key = "Q", label = "Shoot (Lower)", pos = "all" },
	{ key = "F", label = "Slide", pos = "all" },
	{ key = "G", label = "Rainbow", pos = "all" },
	-- { key = "N", label = "Reaction Menu", pos = "all" },
	{ key = "CAPS", label = "Scoreboard", pos = "all" },
	{ key = "NUMPAD9", label = "Jump Up Left", pos = "goalKeeper" },
	{ key = "NUMPAD7", label = "Jump Up Right", pos = "goalKeeper" },
	{ key = "NUMPAD6", label = "Jump Down Left", pos = "goalKeeper" },
	{ key = "NUMPAD4", label = "Jump Down Right", pos = "goalKeeper" },
	{ key = "NUMPAD5", label = "Hold Ball", pos = "goalKeeper" },
	{ key = "N", label = "Throw Ball", pos = "goalKeeper" },
	{ key = "M", label = "Drop Ball", pos = "goalKeeper" },
}

AK4Y.DrawText = {
	plyInPos = "There\'s a player in position: ",
	joinAs = "[~g~E~w~] Join as ",
	ownerNotMatch = "You can't join the match because the owner is not in the match",
	cantJnMatchFor = "You can't join the match for ",	
	seconds = " seconds",
	balanceTeam = "You need to balance the teams",
	eachTeam = "You need at least 1 player in each team",
	dntHaveEngMoney = "You don't have enough money",
	thisBetNotAv = "This bet is not available",
	youCantBetOwn = "You can't bet on your own bet",
	youDraw = "You draw ",
	matchCancelled = "Match cancelled!",
	youJned = "You joined!",
	posFull = "This position is full",
}
```

{% endtab %}
{% endtabs %}


# ak4y-caseOpening


# Config

{% tabs %}
{% tab title="ESX" %}

```lua
AK4Y = {}

AK4Y.Framework = "esx" -- esx / newEsx | newEsx = export system | esx = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async
AK4Y.OpenCommand = "caseOpening"

AK4Y.WeaponsAreItem = false -- If your weapons are item then you should set this TRUE.

AK4Y.NeededPlayTime = 60 -- MINUTES
AK4Y.PlayTimeRewardType = "GOLDCOIN" -- GOLDCOIN OR SILVERCOIN
AK4Y.PlayTimeRewardCoin = 10 

AK4Y.WebsiteLink = "https://www.google.com/"
AK4Y.DiscordLink = "https://discord.gg/ak4y/"

-- ITEM TYPES : "common", "uncommon", "rare", "mythical", "legendary"
AK4Y.LastItemCategories = {"uncommon", "rare", "mythical", "legendary"} -- When items of the type written on the left are won, they appear in the recently won items tab
AK4Y.ServerNotifyCategories = {"uncommon", "mythical", "legendary"} -- When items of the type written on the left are won, a notification is sent to the entire server

AK4Y.Translate = {
    title1 = "CASE",
    title2 = "OPENING",
    premium = "PREMIUM",
    standard = "STANDARD",
    cases = "CASES",
    website = "WEBSITE",
    discord = "DISCORD",
    premiumCases = "PREMIUM CASES",
    standardCases = "STANDARD CASES",
    openCase = "OPEN CASE",
    openFast = "OPEN FAST",
    coinShopTitle = "GC SHOP",
    new = "NEW",
    goBack = "GO BACK",
    caseItems = "CASE ITEMS",
    items = "ITEMS",
    congratulations = "CONGRATULATIONS",
    congDescription = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum assumenda, a minima reiciendis modi quo expedita dignissimos?",
    collect = "COLLECT",
    sell = "SELL",
    accept = "ACCEPT",
    creditLoaded = "Credit Successfully LOADED",
    failed = "FAILED",
    youDntHaveEnoughCredit = "YOU DONT HAVE ENOUGH CREDIT!",
}


-- giveItemType's = "item", "vehicle", "money"
-- items in the case should have a chance total of 100 !! IMPORTANT !! IMPORTANT !! IMPORTANT !!
AK4Y.PremiumCases = {
    {
        uniqueId = 1, -- IDs must be different and sequential
        label = "Phantom Case",
        price = 150, 
        priceType = "GC", -- GC OR SC
        caseTheme = "red", -- red, blue, orange, purple, green
        caseType = "premium", -- do not touch!
        isNew = true,
        items = { -- giveItemType's = "item", "vehicle", "money", "weapon"
                  -- items in the case should have a chance total of 100 !! IMPORTANT !! IMPORTANT !! IMPORTANT !!
            { itemName = "lockpick", label = "LOCKPICK", chance = 7.5, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/lockpick.png" },
            { itemName = "advancedlockpick", label = "LOCKPICK", chance = 7.5, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/advancedlockpick.png" },
            { itemName = "firstaid", label = "AID KIT", chance = 7.5, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/firstaid.png" },
            { itemName = "joint", label = "JOINT", chance = 7.5, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/joint.png" },
            { itemName = "pistol_ammo", label = "PISTOL AMMO", chance = 7.5, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/pistol_ammo.png" },
            { itemName = "radio", label = "RADIO", chance = 7.5, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/radio.png" },
            { itemName = "pistol_extendedclip", label = "EXTENDED CLIP", chance = 7.5, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/pistol_extendedclip.png" },
            { itemName = "security_card_02", label = "SECURITY CARD", chance = 7.5, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/security_card_02.png" },
            { itemName = "weapon_knife", label = "KNIFE", chance = 5, sellCredit = 40, itemType = "uncommon", itemCount = 1, giveItemType = "weapon", image = "./images/items/weapon_knife.png" },
            { itemName = "weapon_crowbar", label = "CROWBAR", chance = 5, sellCredit = 40, itemType = "uncommon", itemCount = 1, giveItemType = "weapon", image = "./images/items/weapon_crowbar.png" },
            { itemName = "weapon_knuckle", label = "KNUCKLE", chance = 5, sellCredit = 40, itemType = "uncommon", itemCount = 1, giveItemType = "weapon", image = "./images/items/weapon_knuckle.png" },
            { itemName = "armor", label = "ARMOR", chance = 5, sellCredit = 40, itemType = "uncommon", itemCount = 1, giveItemType = "item", image = "./images/items/armor.png" },
            { itemName = "weapon_combatpistol", label = "COMBAT PISTOL", chance = 5, sellCredit = 100, itemType = "rare", itemCount = 1, giveItemType = "weapon", image = "./images/items/weapon_combatpistol.png" },
            { itemName = "weapon_heavypistol", label = "HEAVY PISTOL", chance = 5, sellCredit = 100, itemType = "rare", itemCount = 1, giveItemType = "weapon", image = "./images/items/weapon_heavypistol.png" },
            { itemName = "weapon_appistol", label = "AP PISTOL", chance = 5, sellCredit = 100, itemType = "rare", itemCount = 1, giveItemType = "weapon", image = "./images/items/weapon_appistol.png" },
            { itemName = "weapon_smg", label = "SMG", chance = 2, sellCredit = 150, itemType = "mythical", itemCount = 1, giveItemType = "weapon", image = "./images/items/weapon_smg.png" },
            { itemName = "weapon_combatpdw", label = "COMBAT PDW", chance = 2, sellCredit = 150, itemType = "mythical", itemCount = 1, giveItemType = "weapon", image = "./images/items/weapon_combatpdw.png" },
            { itemName = "zentorno", label = "ZENTORNO", chance = 1, sellCredit = 250, itemType = "legendary", itemCount = 1, giveItemType = "vehicle", image = "./images/items/zentorno.png" },
        },
    },
    {
        uniqueId = 2, -- IDs must be different and sequential
        label = "Vehicle Case",
        price = 300,
        priceType = "GC", -- GC OR SC
        caseTheme = "orange", -- red, blue, orange, purple, green
        caseType = "premium",
        isNew = true, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "issi", label = "ISSI", chance = 10, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "vehicle", image = "./images/items/issi.png" },
            { itemName = "bf400", label = "BF400", chance = 10, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "vehicle", image = "./images/items/bf400.png" },
            { itemName = "sentinel", label = "SENTINEL", chance = 10, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "vehicle", image = "./images/items/sentinel.png" },
            { itemName = "blade", label = "BLADE", chance = 10, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "vehicle", image = "./images/items/blade.png" },
            { itemName = "baller", label = "BALLER", chance = 10, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "vehicle", image = "./images/items/baller.png" },
            { itemName = "asterope", label = "ASTEROPE", chance = 10, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "vehicle", image = "./images/items/asterope.png" },
            { itemName = "dominator", label = "DOMINATOR", chance = 7.5, sellCredit = 40, itemType = "uncommon", itemCount = 1, giveItemType = "vehicle", image = "./images/items/dominator.png" },
            { itemName = "voodoo", label = "VOODOO", chance = 7.5, sellCredit = 40, itemType = "uncommon", itemCount = 1, giveItemType = "vehicle", image = "./images/items/voodoo.png" },
            { itemName = "bati", label = "BATI", chance = 7.5, sellCredit = 40, itemType = "uncommon", itemCount = 1, giveItemType = "vehicle", image = "./images/items/bati.png" },
            { itemName = "elegy2", label = "ELEGY 2", chance = 5, sellCredit = 100, itemType = "rare", itemCount = 1, giveItemType = "vehicle", image = "./images/items/elegy2.png" },
            { itemName = "sultan", label = "SULTAN", chance = 5, sellCredit = 100, itemType = "rare", itemCount = 1, giveItemType = "vehicle", image = "./images/items/sultan.png" },
            { itemName = "hakuchou", label = "HAKUCHOU", chance = 2, sellCredit = 150, itemType = "mythical", itemCount = 1, giveItemType = "vehicle", image = "./images/items/hakuchou.png" },
            { itemName = "schlagen", label = "SCHLAGEN", chance = 2, sellCredit = 150, itemType = "mythical", itemCount = 1, giveItemType = "vehicle", image = "./images/items/schlagen.png" },
            { itemName = "kuruma", label = "KURUMA", chance = 2, sellCredit = 150, itemType = "mythical", itemCount = 1, giveItemType = "vehicle", image = "./images/items/KURUMA.png" },
            { itemName = "t20", label = "T20", chance = 1, sellCredit = 250, itemType = "legendary", itemCount = 1, giveItemType = "vehicle", image = "./images/items/t20.png" },
            { itemName = "zentorno", label = "ZENTORNO", chance = 0.5, sellCredit = 250, itemType = "legendary", itemCount = 1, giveItemType = "vehicle", image = "./images/items/zentorno.png" },
        },
    },
    {
        uniqueId = 3, -- IDs must be different and sequential
        label = "Money Case",
        price = 230,
        priceType = "GC", -- GC OR SC
        caseTheme = "green", -- red, blue, orange, purple, green
        caseType = "premium",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "money", label = "10.000$", chance = 15, sellCredit = 10, itemType = "common", itemCount = 10000, giveItemType = "money", image = "./images/items/money-1.png" },
            { itemName = "money", label = "12.000$", chance = 15, sellCredit = 10, itemType = "common", itemCount = 12000, giveItemType = "money", image = "./images/items/money-1.png" },
            { itemName = "money", label = "13.000$", chance = 15, sellCredit = 10, itemType = "common", itemCount = 13000, giveItemType = "money", image = "./images/items/money-1.png" },
            { itemName = "money", label = "14.000$", chance = 15, sellCredit = 10, itemType = "common", itemCount = 14000, giveItemType = "money", image = "./images/items/money-1.png" },
            { itemName = "money", label = "15.000$", chance = 10, sellCredit = 10, itemType = "uncommon", itemCount = 15000, giveItemType = "money", image = "./images/items/money-1.png" },
            { itemName = "money", label = "16.000$", chance = 10, sellCredit = 10, itemType = "uncommon", itemCount = 16000, giveItemType = "money", image = "./images/items/money-1.png" },
            { itemName = "money", label = "20.000$", chance = 5, sellCredit = 40, itemType = "rare", itemCount = 20000, giveItemType = "money", image = "./images/items/money-2.png" },
            { itemName = "money", label = "23.000$", chance = 5, sellCredit = 40, itemType = "rare", itemCount = 23000, giveItemType = "money", image = "./images/items/money-2.png" },
            { itemName = "money", label = "27.000$", chance = 5, sellCredit = 40, itemType = "rare", itemCount = 27000, giveItemType = "money", image = "./images/items/money-2.png" },
            { itemName = "money", label = "40.000$", chance = 2, sellCredit = 100, itemType = "mythical", itemCount = 40000, giveItemType = "money", image = "./images/items/money-3.png" },
            { itemName = "money", label = "50.000$", chance = 2, sellCredit = 100, itemType = "mythical", itemCount = 50000, giveItemType = "money", image = "./images/items/money-3.png" },
            { itemName = "money", label = "100.000$", chance = 1, sellCredit = 250, itemType = "legendary", itemCount = 100000, giveItemType = "money", image = "./images/items/money-4.png" },
        },
    },
    {
        uniqueId = 4, -- IDs must be different and sequential
        label = "Operation Case",
        price = 400,
        priceType = "GC", -- GC OR SC
        caseTheme = "blue", -- red, blue, orange, purple, green
        caseType = "premium",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 5, -- IDs must be different and sequential
        label = "Chrome Case",
        price = 500,
        priceType = "GC", -- GC OR SC
        caseTheme = "green", -- red, blue, orange, purple, green
        caseType = "premium",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 6, -- IDs must be different and sequential
        label = "Clutch Case",
        price = 600,
        priceType = "GC", -- GC OR SC
        caseTheme = "purple", -- red, blue, orange, purple, green
        caseType = "premium",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 7, -- IDs must be different and sequential
        label = "Gamma Case",
        price = 700,
        priceType = "GC", -- GC OR SC
        caseTheme = "blue", -- red, blue, orange, purple, green
        caseType = "premium",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 8, -- IDs must be different and sequential
        label = "Horizon Case",
        price = 800,
        priceType = "GC", -- GC OR SC
        caseTheme = "red", -- red, blue, orange, purple, green
        caseType = "premium",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
}

AK4Y.StandardCases = {
    {
        uniqueId = 1,
        label = "Standard Case (1)",
        price = 150,
        priceType = "SC", -- GC OR SC
        caseTheme = "nude",
        isNew = true, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 2,
        label = "Standard Case (2)",
        price = 150,
        priceType = "SC", -- GC OR SC
        caseTheme = "nude",
        isNew = true, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 3,
        label = "Standard Case (3)",
        price = 150,
        priceType = "SC", -- GC OR SC
        caseTheme = "nude",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 4,
        label = "Standard Case (4)",
        price = 150,
        priceType = "SC", -- GC OR SC
        caseTheme = "nude",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 5,
        label = "Standard Case (5)",
        price = 150,
        priceType = "SC", -- GC OR SC
        caseTheme = "nude",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 6,
        label = "Standard Case (6)",
        price = 150,
        priceType = "SC", -- GC OR SC
        caseTheme = "nude",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 7,
        label = "Standard Case (7)",
        price = 150,
        priceType = "SC", -- GC OR SC
        caseTheme = "nude",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
}

AK4Y.SellCoins = {
    {
        coinCount = 100,
        realPrice = 10,
        directLink = "https://www.google.com/1",
    },
    {
        coinCount = 200,
        realPrice = 20,
        directLink = "https://www.google.com/2",
    },
    {
        coinCount = 300,
        realPrice = 30,
        directLink = "https://www.google.com/3",
    },
    {
        coinCount = 400,
        realPrice = 40,
        directLink = "https://www.google.com/4",
    },
    {
        coinCount = 500,
        realPrice = 50,
        directLink = "https://www.google.com/5",
    },
    {
        coinCount = 600,
        realPrice = 60,
        directLink = "https://www.google.com/6",
    },
    {
        coinCount = 700,
        realPrice = 70,
        directLink = "https://www.google.com/7",
    },
    {
        coinCount = 1000,
        realPrice = 80,
        directLink = "https://ak4y.tebex.io/package/5348821",
    },   
}
```

{% endtab %}

{% tab title="QBCore" %}

```lua
AK4Y = {}

AK4Y.Framework = "qb" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async
AK4Y.OpenCommand = "caseOpening"
AK4Y.DefaultGarage = "pillboxgarage" -- purchased vehicles will be sent to this garage

AK4Y.NeededPlayTime = 60 -- MINUTES
AK4Y.PlayTimeRewardType = "GOLDCOIN" -- GOLDCOIN OR SILVERCOIN
AK4Y.PlayTimeRewardCoin = 10 

AK4Y.WebsiteLink = "https://www.google.com/"
AK4Y.DiscordLink = "https://discord.gg/ak4y/"

-- ITEM TYPES : "common", "uncommon", "rare", "mythical", "legendary"
AK4Y.LastItemCategories = {"uncommon", "rare", "mythical", "legendary"} -- When items of the type written on the left are won, they appear in the recently won items tab
AK4Y.ServerNotifyCategories = {"uncommon", "mythical", "legendary"} -- When items of the type written on the left are won, a notification is sent to the entire server

AK4Y.Translate = {
    title1 = "CASE",
    title2 = "OPENING",
    premium = "PREMIUM",
    standard = "STANDARD",
    cases = "CASES",
    website = "WEBSITE",
    discord = "DISCORD",
    premiumCases = "PREMIUM CASES",
    standardCases = "STANDARD CASES",
    openCase = "OPEN CASE",
    openFast = "OPEN FAST",
    coinShopTitle = "GC SHOP",
    new = "NEW",
    goBack = "GO BACK",
    caseItems = "CASE ITEMS",
    items = "ITEMS",
    congratulations = "CONGRATULATIONS",
    congDescription = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum assumenda, a minima reiciendis modi quo expedita dignissimos?",
    collect = "COLLECT",
    sell = "SELL",
    accept = "ACCEPT",
    creditLoaded = "Credit Successfully LOADED",
    failed = "FAILED",
    youDntHaveEnoughCredit = "YOU DONT HAVE ENOUGH CREDIT!",
}


-- giveItemType's = "item", "vehicle", "money"
-- items in the case should have a chance total of 100 !! IMPORTANT !! IMPORTANT !! IMPORTANT !!
AK4Y.PremiumCases = {
    {
        uniqueId = 1, -- IDs must be different and sequential
        label = "Phantom Case",
        price = 150, 
        priceType = "GC", -- GC OR SC
        caseTheme = "red", -- red, blue, orange, purple, green
        caseType = "premium", -- do not touch!
        isNew = true,
        items = { -- giveItemType's = "item", "vehicle", "money"
                  -- items in the case should have a chance total of 100 !! IMPORTANT !! IMPORTANT !! IMPORTANT !!
            { itemName = "lockpick", label = "LOCKPICK", chance = 7.5, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/lockpick.png" },
            { itemName = "advancedlockpick", label = "LOCKPICK", chance = 7.5, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/advancedlockpick.png" },
            { itemName = "firstaid", label = "AID KIT", chance = 7.5, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/firstaid.png" },
            { itemName = "joint", label = "JOINT", chance = 7.5, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/joint.png" },
            { itemName = "pistol_ammo", label = "PISTOL AMMO", chance = 7.5, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/pistol_ammo.png" },
            { itemName = "radio", label = "RADIO", chance = 7.5, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/radio.png" },
            { itemName = "pistol_extendedclip", label = "EXTENDED CLIP", chance = 7.5, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/pistol_extendedclip.png" },
            { itemName = "security_card_02", label = "SECURITY CARD", chance = 7.5, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/security_card_02.png" },
            { itemName = "weapon_knife", label = "KNIFE", chance = 5, sellCredit = 40, itemType = "uncommon", itemCount = 1, giveItemType = "item", image = "./images/items/weapon_knife.png" },
            { itemName = "weapon_crowbar", label = "CROWBAR", chance = 5, sellCredit = 40, itemType = "uncommon", itemCount = 1, giveItemType = "item", image = "./images/items/weapon_crowbar.png" },
            { itemName = "weapon_knuckle", label = "KNUCKLE", chance = 5, sellCredit = 40, itemType = "uncommon", itemCount = 1, giveItemType = "item", image = "./images/items/weapon_knuckle.png" },
            { itemName = "armor", label = "ARMOR", chance = 5, sellCredit = 40, itemType = "uncommon", itemCount = 1, giveItemType = "item", image = "./images/items/armor.png" },
            { itemName = "weapon_combatpistol", label = "COMBAT PISTOL", chance = 5, sellCredit = 100, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/weapon_combatpistol.png" },
            { itemName = "weapon_heavypistol", label = "HEAVY PISTOL", chance = 5, sellCredit = 100, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/weapon_heavypistol.png" },
            { itemName = "weapon_appistol", label = "AP PISTOL", chance = 5, sellCredit = 100, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/weapon_appistol.png" },
            { itemName = "weapon_smg", label = "SMG", chance = 2, sellCredit = 150, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/weapon_smg.png" },
            { itemName = "weapon_combatpdw", label = "COMBAT PDW", chance = 2, sellCredit = 150, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/weapon_combatpdw.png" },
            { itemName = "zentorno", label = "ZENTORNO", chance = 1, sellCredit = 250, itemType = "legendary", itemCount = 1, giveItemType = "vehicle", image = "./images/items/zentorno.png" },
        },
    },
    {
        uniqueId = 2, -- IDs must be different and sequential
        label = "Vehicle Case",
        price = 300,
        priceType = "GC", -- GC OR SC
        caseTheme = "orange", -- red, blue, orange, purple, green
        caseType = "premium",
        isNew = true, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "issi", label = "ISSI", chance = 10, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "vehicle", image = "./images/items/issi.png" },
            { itemName = "bf400", label = "BF400", chance = 10, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "vehicle", image = "./images/items/bf400.png" },
            { itemName = "sentinel", label = "SENTINEL", chance = 10, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "vehicle", image = "./images/items/sentinel.png" },
            { itemName = "blade", label = "BLADE", chance = 10, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "vehicle", image = "./images/items/blade.png" },
            { itemName = "baller", label = "BALLER", chance = 10, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "vehicle", image = "./images/items/baller.png" },
            { itemName = "asterope", label = "ASTEROPE", chance = 10, sellCredit = 15, itemType = "common", itemCount = 1, giveItemType = "vehicle", image = "./images/items/asterope.png" },
            { itemName = "dominator", label = "DOMINATOR", chance = 7.5, sellCredit = 40, itemType = "uncommon", itemCount = 1, giveItemType = "vehicle", image = "./images/items/dominator.png" },
            { itemName = "voodoo", label = "VOODOO", chance = 7.5, sellCredit = 40, itemType = "uncommon", itemCount = 1, giveItemType = "vehicle", image = "./images/items/voodoo.png" },
            { itemName = "bati", label = "BATI", chance = 7.5, sellCredit = 40, itemType = "uncommon", itemCount = 1, giveItemType = "vehicle", image = "./images/items/bati.png" },
            { itemName = "elegy2", label = "ELEGY 2", chance = 5, sellCredit = 100, itemType = "rare", itemCount = 1, giveItemType = "vehicle", image = "./images/items/elegy2.png" },
            { itemName = "sultan", label = "SULTAN", chance = 5, sellCredit = 100, itemType = "rare", itemCount = 1, giveItemType = "vehicle", image = "./images/items/sultan.png" },
            { itemName = "hakuchou", label = "HAKUCHOU", chance = 2, sellCredit = 150, itemType = "mythical", itemCount = 1, giveItemType = "vehicle", image = "./images/items/hakuchou.png" },
            { itemName = "schlagen", label = "SCHLAGEN", chance = 2, sellCredit = 150, itemType = "mythical", itemCount = 1, giveItemType = "vehicle", image = "./images/items/schlagen.png" },
            { itemName = "kuruma", label = "KURUMA", chance = 2, sellCredit = 150, itemType = "mythical", itemCount = 1, giveItemType = "vehicle", image = "./images/items/KURUMA.png" },
            { itemName = "t20", label = "T20", chance = 1, sellCredit = 250, itemType = "legendary", itemCount = 1, giveItemType = "vehicle", image = "./images/items/t20.png" },
            { itemName = "zentorno", label = "ZENTORNO", chance = 0.5, sellCredit = 250, itemType = "legendary", itemCount = 1, giveItemType = "vehicle", image = "./images/items/zentorno.png" },
        },
    },
    {
        uniqueId = 3, -- IDs must be different and sequential
        label = "Money Case",
        price = 230,
        priceType = "GC", -- GC OR SC
        caseTheme = "green", -- red, blue, orange, purple, green
        caseType = "premium",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "money", label = "10.000$", chance = 15, sellCredit = 10, itemType = "common", itemCount = 10000, giveItemType = "money", image = "./images/items/money-1.png" },
            { itemName = "money", label = "12.000$", chance = 15, sellCredit = 10, itemType = "common", itemCount = 12000, giveItemType = "money", image = "./images/items/money-1.png" },
            { itemName = "money", label = "13.000$", chance = 15, sellCredit = 10, itemType = "common", itemCount = 13000, giveItemType = "money", image = "./images/items/money-1.png" },
            { itemName = "money", label = "14.000$", chance = 15, sellCredit = 10, itemType = "common", itemCount = 14000, giveItemType = "money", image = "./images/items/money-1.png" },
            { itemName = "money", label = "15.000$", chance = 10, sellCredit = 10, itemType = "uncommon", itemCount = 15000, giveItemType = "money", image = "./images/items/money-1.png" },
            { itemName = "money", label = "16.000$", chance = 10, sellCredit = 10, itemType = "uncommon", itemCount = 16000, giveItemType = "money", image = "./images/items/money-1.png" },
            { itemName = "money", label = "20.000$", chance = 5, sellCredit = 40, itemType = "rare", itemCount = 20000, giveItemType = "money", image = "./images/items/money-2.png" },
            { itemName = "money", label = "23.000$", chance = 5, sellCredit = 40, itemType = "rare", itemCount = 23000, giveItemType = "money", image = "./images/items/money-2.png" },
            { itemName = "money", label = "27.000$", chance = 5, sellCredit = 40, itemType = "rare", itemCount = 27000, giveItemType = "money", image = "./images/items/money-2.png" },
            { itemName = "money", label = "40.000$", chance = 2, sellCredit = 100, itemType = "mythical", itemCount = 40000, giveItemType = "money", image = "./images/items/money-3.png" },
            { itemName = "money", label = "50.000$", chance = 2, sellCredit = 100, itemType = "mythical", itemCount = 50000, giveItemType = "money", image = "./images/items/money-3.png" },
            { itemName = "money", label = "100.000$", chance = 1, sellCredit = 250, itemType = "legendary", itemCount = 100000, giveItemType = "money", image = "./images/items/money-4.png" },
        },
    },
    {
        uniqueId = 4, -- IDs must be different and sequential
        label = "Operation Case",
        price = 400,
        priceType = "GC", -- GC OR SC
        caseTheme = "blue", -- red, blue, orange, purple, green
        caseType = "premium",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 5, -- IDs must be different and sequential
        label = "Chrome Case",
        price = 500,
        priceType = "GC", -- GC OR SC
        caseTheme = "green", -- red, blue, orange, purple, green
        caseType = "premium",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 6, -- IDs must be different and sequential
        label = "Clutch Case",
        price = 600,
        priceType = "GC", -- GC OR SC
        caseTheme = "purple", -- red, blue, orange, purple, green
        caseType = "premium",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 7, -- IDs must be different and sequential
        label = "Gamma Case",
        price = 700,
        priceType = "GC", -- GC OR SC
        caseTheme = "blue", -- red, blue, orange, purple, green
        caseType = "premium",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 8, -- IDs must be different and sequential
        label = "Horizon Case",
        price = 800,
        priceType = "GC", -- GC OR SC
        caseTheme = "red", -- red, blue, orange, purple, green
        caseType = "premium",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
}

AK4Y.StandardCases = {
    {
        uniqueId = 1,
        label = "Standard Case (1)",
        price = 150,
        priceType = "SC", -- GC OR SC
        caseTheme = "nude",
        isNew = true, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 2,
        label = "Standard Case (2)",
        price = 150,
        priceType = "SC", -- GC OR SC
        caseTheme = "nude",
        isNew = true, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 3,
        label = "Standard Case (3)",
        price = 150,
        priceType = "SC", -- GC OR SC
        caseTheme = "nude",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 4,
        label = "Standard Case (4)",
        price = 150,
        priceType = "SC", -- GC OR SC
        caseTheme = "nude",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 5,
        label = "Standard Case (5)",
        price = 150,
        priceType = "SC", -- GC OR SC
        caseTheme = "nude",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 6,
        label = "Standard Case (6)",
        price = 150,
        priceType = "SC", -- GC OR SC
        caseTheme = "nude",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
    {
        uniqueId = 7,
        label = "Standard Case (7)",
        price = 150,
        priceType = "SC", -- GC OR SC
        caseTheme = "nude",
        isNew = false, -- If you set it true, the case will be labeled "new"
        items = {
            { itemName = "weapon_pistol", label = "ITEM 1", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 2", chance = 30, sellCredit = 10, itemType = "common", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 3", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 4", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 5", chance = 10, sellCredit = 15, itemType = "rare", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 6", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 7", chance = 4.5, sellCredit = 20, itemType = "mythical", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
            { itemName = "weapon_pistol", label = "ITEM 8", chance = 0.5, sellCredit = 25, itemType = "legendary", itemCount = 1, giveItemType = "item", image = "./images/items/item.png" },
        },
    },
}

AK4Y.SellCoins = {
    {
        coinCount = 100,
        realPrice = 10,
        directLink = "https://www.google.com/1",
    },
    {
        coinCount = 200,
        realPrice = 20,
        directLink = "https://www.google.com/2",
    },
    {
        coinCount = 300,
        realPrice = 30,
        directLink = "https://www.google.com/3",
    },
    {
        coinCount = 400,
        realPrice = 40,
        directLink = "https://www.google.com/4",
    },
    {
        coinCount = 500,
        realPrice = 50,
        directLink = "https://www.google.com/5",
    },
    {
        coinCount = 600,
        realPrice = 60,
        directLink = "https://www.google.com/6",
    },
    {
        coinCount = 700,
        realPrice = 70,
        directLink = "https://www.google.com/7",
    },
    {
        coinCount = 1000,
        realPrice = 80,
        directLink = "https://ak4y.tebex.io/package/5348821",
    },
    
}


```

{% endtab %}
{% endtabs %}


# ak4y-battlepass


# Config

{% tabs %}
{% tab title="ESX" %}

```lua
AK4Y = {}

AK4Y.Framework = "esx" -- esx or newEsx
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async
AK4Y.UseTebexForPremiumCodes = false
AK4Y.RequiredXpForNextLevel = 1000 
AK4Y.BPEndDate = {day = 1, month = 1, year = 2023} -- Make sure your server is dated correctly
AK4Y.DailyTasksResetPeriod = 3 -- DAY

AK4Y.Language = {
    ["openSpamProtectNotif"] = "You cannot open the menu right now please wait a bit.",
    ["title1"] = "AK4Y",
    ["title2"] = "BATTLE PASS",
    ["collectedText"] = "COLLECTED",
    ["dailyText"] = "DAILY",
    ["remainingText"] = "Remaining",
    ["dayText"] = "Day",
    ["accountTypeText"] = "Account Type :",
    ["premiumBuyButtonText"] = "PREMIUM BUY",
    ["redeemInfoText"] = "You can activate it by entering your premium code at the top.",
    ["premiumCodeTitle1"] = "ENTER YOUR",
    ["premiumCodeTitle2"] = "PREMIUM",
    ["premiumCodeTitle3"] = "CODE:",
    ["acceptButtonText"] = "ACCEPT",
    ["premiumTasksText1"] = "STABLE",
    ["premiumTasksText2"] = "Missions",
    ["upgradeAccountCongratTitle"] = "CONGRATULATIONS!",
    ["upgradeAccountText"] = "Your account has been upgraded to PREMIUM",
    ["piece"] = " pc.",
    ["moneySymbol"] = "$",
}

-- STANDART TASKS
AK4Y.BattlePassTasks = {
    {taskId = 1, requiredcount = 2, rewardXP = 1500, taskTitle = "Type 'tasktry' in chat", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 2, requiredcount = 50, rewardXP = 200, taskTitle = "Do Mining", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 3, requiredcount = 8, rewardXP = 300, taskTitle = "Get Involved in a House Robbery", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 4, requiredcount = 20, rewardXP = 400, taskTitle = "Catch 20 Fish", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 5, requiredcount = 10, rewardXP = 500, taskTitle = "Kill 10 NPC", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 6, requiredcount = 5, rewardXP = 600, taskTitle = "Steal 5 Police Car", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 7, requiredcount = 20, rewardXP = 700, taskTitle = "Do sports on the GYM", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 8, requiredcount = 10, rewardXP = 800, taskTitle = "Hunt Deer", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 9, requiredcount = 8, rewardXP = 300, taskTitle = "Get Involved in a House Robbery", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 10, requiredcount = 20, rewardXP = 400, taskTitle = "Catch 20 Fish", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 11, requiredcount = 10, rewardXP = 500, taskTitle = "Kill 10 NPC", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 12, requiredcount = 5, rewardXP = 600, taskTitle = "Steal 5 Police Car", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 13, requiredcount = 20, rewardXP = 700, taskTitle = "Do sports on the GYM", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 14, requiredcount = 10, rewardXP = 800, taskTitle = "Hunt Deer", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
}

-- STABLE TASKS
AK4Y.DailyPremiumTasks = {
    {taskId = 1, requiredcount = 1, rewardXP = 500, taskTitle = "Rob the Central Bank", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 2, requiredcount = 2, rewardXP = 500, taskTitle = "Type 'stabletry' in chat", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 3, requiredcount = 5, rewardXP = 500, taskTitle = "Craft Weapon", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 4, requiredcount = 1, rewardXP = 500, taskTitle = "Rob the Central Bank", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 5, requiredcount = 2, rewardXP = 500, taskTitle = "Type 'stabletry' in chat", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 6, requiredcount = 5, rewardXP = 500, taskTitle = "Craft Weapon", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
}

-- BATTLE PASS PRIZES
AK4Y.BattlePassItems = {
    { 
        taskId = 1,                                                  -- Vehicle rewards are saved in impounded vehicles.
        requiredLevel = 1,                                           -- type = item, money, weapon, vehicle | if your weapons are item. you should type item.
        rewards = {
            standart = {                                             -- unique = true : gives items one by one
                itemLabel = "Zentorno", itemName = "zentorno", type = "vehicle", count = 1, unique = false, image = "./images/zentorno.png"
            },
            premium = {
                itemLabel = "Warrener", itemName = "warrener", type = "vehicle", count = 1, unique = false, image = "./images/car.png"
            }
        }
    },
    {
        taskId = 2,
        requiredLevel = 2,
        rewards = {
            standart = {
                itemLabel = "Money", itemName = "cash", type = "money", count = 10, unique = false, image = "./images/moneyBag.png"
            },
            premium = {
                itemLabel = "Premium Money", itemName = "cash", type = "money", count = 1000, unique = false, image = "./images/moneyBag.png"
            }
        }
    },
    {
        taskId = 3,
        requiredLevel = 3,
        rewards = {
            standart = {
                itemLabel = "Water", itemName = "water", type = "item", count = 1, unique = false, image = "./images/water.png"
            },
            premium = {
                itemLabel = "Premium Money", itemName = "cash", type = "money", count = 1000, unique = false, image = "./images/moneyBag.png"
            }
        }
    },
    {
        taskId = 4,
        requiredLevel = 4,
        rewards = {
            standart = {
                itemLabel = "Money", itemName = "cash", type = "money", count = 10, unique = false, image = "./images/moneyBag.png"
            },
            premium = {
                itemLabel = "Premium Money", itemName = "cash", type = "money", count = 1000, unique = false, image = "./images/moneyBag.png"
            }
        }
    },
    {
        taskId = 5,
        requiredLevel = 5,
        rewards = {
            standart = {
                itemLabel = "Money", itemName = "cash", type = "money", count = 10, unique = false, image = "./images/moneyBag.png"
            },
            premium = {
                itemLabel = "Premium Money", itemName = "cash", type = "money", count = 1000, unique = false, image = "./images/moneyBag.png"
            }
        }
    },
    {
        taskId = 6,
        requiredLevel = 6,
        rewards = {
            standart = {
                itemLabel = "Money", itemName = "cash", type = "money", count = 10, unique = false, image = "./images/moneyBag.png"
            },
            premium = {
                itemLabel = "Premium Money", itemName = "cash", type = "money", count = 1000, unique = false, image = "./images/moneyBag.png"
            }
        }
    },

    {
        taskId = 7,
        requiredLevel = 7,
        rewards = {
            standart = {
                itemLabel = "Money", itemName = "cash", type = "money", count = 10, unique = false, image = "./images/moneyBag.png"
            },
            premium = {
                itemLabel = "Premium Money", itemName = "cash", type = "money", count = 1000, unique = false, image = "./images/moneyBag.png"
            }
        }
    },

    {
        taskId = 8,
        requiredLevel = 8,
        rewards = {
            standart = {
                itemLabel = "Money", itemName = "cash", type = "money", count = 10, unique = false, image = "./images/moneyBag.png"
            },
            premium = {
                itemLabel = "Premium Money", itemName = "cash", type = "money", count = 1000, unique = false, image = "./images/moneyBag.png"
            }
        }
    },
}
```

{% endtab %}

{% tab title="QBCore" %}

```lua
AK4Y = {}

AK4Y.Framework = "qb" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.CustomFramework = false -- dont change it if you dont know what you do
AK4Y.CustomExport = "qb-core" -- dont change it if you dont know what you do
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async
AK4Y.UseTebexForPremiumCodes = false
AK4Y.RequiredXpForNextLevel = 1000 
AK4Y.BPEndDate = {day = 1, month = 1, year = 2023} -- Make sure your server is dated correctly
AK4Y.DailyTasksResetPeriod = 3 -- DAY
AK4Y.OpenCommand = "battlepass"
AK4Y.DefaultGarage = 'pillboxgarage' -- Garage name where the vehicle will be sent after get reward

AK4Y.Language = {
    ["openSpamProtectNotif"] = "You cannot open the menu right now please wait a bit.",
    ["title1"] = "AK4Y",
    ["title2"] = "BATTLE PASS",
    ["collectedText"] = "COLLECTED",
    ["dailyText"] = "DAILY",
    ["remainingText"] = "Remaining",
    ["dayText"] = "Day",
    ["accountTypeText"] = "Account Type :",
    ["premiumBuyButtonText"] = "PREMIUM BUY",
    ["redeemInfoText"] = "You can activate it by entering your premium code at the top.",
    ["premiumCodeTitle1"] = "ENTER YOUR",
    ["premiumCodeTitle2"] = "PREMIUM",
    ["premiumCodeTitle3"] = "CODE:",
    ["acceptButtonText"] = "ACCEPT",
    ["premiumTasksText1"] = "STABLE",
    ["premiumTasksText2"] = "Missions",
    ["upgradeAccountCongratTitle"] = "CONGRATULATIONS!",
    ["upgradeAccountText"] = "Your account has been upgraded to PREMIUM",
    ["piece"] = " pc.",
    ["moneySymbol"] = "$",
}

-- STANDART TASKS
AK4Y.BattlePassTasks = {
    {taskId = 1, requiredcount = 2, rewardXP = 1500, taskTitle = "Type 'tasktry' in chat", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 2, requiredcount = 50, rewardXP = 200, taskTitle = "Do Mining", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 3, requiredcount = 8, rewardXP = 300, taskTitle = "Get Involved in a House Robbery", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 4, requiredcount = 20, rewardXP = 400, taskTitle = "Catch 20 Fish", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 5, requiredcount = 10, rewardXP = 500, taskTitle = "Kill 10 NPC", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 6, requiredcount = 5, rewardXP = 600, taskTitle = "Steal 5 Police Car", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 7, requiredcount = 20, rewardXP = 700, taskTitle = "Do sports on the GYM", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 8, requiredcount = 10, rewardXP = 800, taskTitle = "Hunt Deer", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 9, requiredcount = 8, rewardXP = 300, taskTitle = "Get Involved in a House Robbery", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 10, requiredcount = 20, rewardXP = 400, taskTitle = "Catch 20 Fish", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 11, requiredcount = 10, rewardXP = 500, taskTitle = "Kill 10 NPC", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 12, requiredcount = 5, rewardXP = 600, taskTitle = "Steal 5 Police Car", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 13, requiredcount = 20, rewardXP = 700, taskTitle = "Do sports on the GYM", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 14, requiredcount = 10, rewardXP = 800, taskTitle = "Hunt Deer", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
}

-- STABLE TASKS
AK4Y.DailyPremiumTasks = {
    {taskId = 1, requiredcount = 1, rewardXP = 500, taskTitle = "Rob the Central Bank", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 2, requiredcount = 2, rewardXP = 500, taskTitle = "Type 'stabletry' in chat", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 3, requiredcount = 5, rewardXP = 500, taskTitle = "Craft Weapon", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 4, requiredcount = 1, rewardXP = 500, taskTitle = "Rob the Central Bank", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 5, requiredcount = 2, rewardXP = 500, taskTitle = "Type 'stabletry' in chat", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
    {taskId = 6, requiredcount = 5, rewardXP = 500, taskTitle = "Craft Weapon", taskDescription = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor."},
}

-- BATTLE PASS PRIZES
AK4Y.BattlePassItems = {
    {
        taskId = 1,
        requiredLevel = 1,                                           -- type = item, money, weapon, vehicle | if your weapons are item. you should type item.
        rewards = {
            standart = {                                             -- unique = true : gives items one by one
                itemLabel = "Zentorno", itemName = "zentorno", type = "vehicle", count = 1, unique = false, image = "./images/zentorno.png"
            },
            premium = {
                itemLabel = "Money", itemName = "cash", type = "money", count = 1000, unique = false, image = "./images/moneyBag.png"
            }
        }
    },
    {
        taskId = 2,
        requiredLevel = 2,
        rewards = {
            standart = {
                itemLabel = "Water", itemName = "water", type = "money", count = 10, unique = false, image = "./images/water.png"
            },
            premium = {
                itemLabel = "Premium Money", itemName = "cash", type = "money", count = 1000, unique = false, image = "./images/moneyBag.png"
            }
        }
    },
    {
        taskId = 3,
        requiredLevel = 3,
        rewards = {
            standart = {
                itemLabel = "Money", itemName = "cash", type = "money", count = 10, unique = false, image = "./images/moneyBag.png"
            },
            premium = {
                itemLabel = "Premium Money", itemName = "cash", type = "money", count = 1000, unique = false, image = "./images/moneyBag.png"
            }
        }
    },
    {
        taskId = 4,
        requiredLevel = 4,
        rewards = {
            standart = {
                itemLabel = "Money", itemName = "cash", type = "money", count = 10, unique = false, image = "./images/moneyBag.png"
            },
            premium = {
                itemLabel = "Premium Money", itemName = "cash", type = "money", count = 1000, unique = false, image = "./images/moneyBag.png"
            }
        }
    },
    {
        taskId = 5,
        requiredLevel = 5,
        rewards = {
            standart = {
                itemLabel = "Money", itemName = "cash", type = "money", count = 10, unique = false, image = "./images/moneyBag.png"
            },
            premium = {
                itemLabel = "Premium Money", itemName = "cash", type = "money", count = 1000, unique = false, image = "./images/moneyBag.png"
            }
        }
    },
    {
        taskId = 6,
        requiredLevel = 6,
        rewards = {
            standart = {
                itemLabel = "Money", itemName = "cash", type = "money", count = 10, unique = false, image = "./images/moneyBag.png"
            },
            premium = {
                itemLabel = "Premium Money", itemName = "cash", type = "money", count = 1000, unique = false, image = "./images/moneyBag.png"
            }
        }
    },

    {
        taskId = 7,
        requiredLevel = 7,
        rewards = {
            standart = {
                itemLabel = "Money", itemName = "cash", type = "money", count = 10, unique = false, image = "./images/moneyBag.png"
            },
            premium = {
                itemLabel = "Premium Money", itemName = "cash", type = "money", count = 1000, unique = false, image = "./images/moneyBag.png"
            }
        }
    },

    {
        taskId = 8,
        requiredLevel = 8,
        rewards = {
            standart = {
                itemLabel = "Money", itemName = "cash", type = "money", count = 10, unique = false, image = "./images/moneyBag.png"
            },
            premium = {
                itemLabel = "Premium Money", itemName = "cash", type = "money", count = 1000, unique = false, image = "./images/moneyBag.png"
            }
        }
    },
}
```

{% endtab %}
{% endtabs %}


# ak4y-vipSystem


# Config

{% tabs %}
{% tab title="ESX" %}

```lua
AK4Y = {}

AK4Y.Framework = "esx" -- esx or newEsx
AK4Y.Mysql = "mysql-async" -- Check fxmanifest.lua when you change it! |  oxmysql / mysql-async
AK4Y.OpenMenuCommand = "donate" -- code to open the donate menu
AK4Y.WeaponType = "item" -- weapon or item
AK4Y.CustomPlatePriceOnBuyVehicle = 20 -- Customization price at the time of vehicle purchase
AK4Y.Phone = "gcphone" -- gcphone or qb-phone
AK4Y.MinCharForPhoneNumber = 1 -- Minimum number of characters required for a special number
AK4Y.MinCharForPlate = 1 -- Minimum number of characters required for a custom plate
AK4Y.MaxCharForPhoneNumber = 7 -- Minimum number of characters required for a special number
AK4Y.MaxCharForPlate = 8 -- Minimum number of characters required for a custom plate
AK4Y.DefaultGarage = 'pillboxgarage' -- Garage name where the vehicle will be sent after purchase
AK4Y.WeaponType = "item" -- item or weapon
AK4Y.UseTebex = false -- Do you use tebex to sell code?

AK4Y.GiveAddKeys = true -- Automatic key issuance after changing the license plate of the vehicle
AK4Y.GiveAddKeysFunction = function(newPlate)
    TriggerEvent("vehiclekeys:client:SetOwner", newPlate)
end

AK4Y.ClientNotify = function(text, NotifType)
    QBCore.Functions.Notify(text, NotifType)
end

AK4Y.Translate = {
    title1 = "AK4Y",
    title2 = "DONATE",

    speed = "km/h",
    credit = "CR",

    customizeTitle = "Customize",
    customizeInfo = "You have to in your car which is want to customize.",

    thanksForPurchasing = "Thanks for purchasing!",

    buyCreditButton = "BUY CREDIT",
    approveButton = "APPROVE",
    buyButtonText = "BUY",

    redeemCodeTitle1 = "REDEEM",
    redeemCodeTitle2 = "CODE",
    redeemCodeDesc = "Lorem ipsum",
    redeemCodeBelow = "YOU CAN ENTER TE CODE BELOW",

    carDoYouNeedTitle1 = "DO YOU NEED",
    carDoYouNeedTitle2 = "A CAR?",
    carButtonBelow = "YOU CAN VIEW IT BY CLICKING THE BUTTON BELOW",
    carAreaDesc = "THEN YOU CAN BROWSE THE CARS BY CLICKING THE BUTTON BELOW.",
    carButtonText = "CAR",
    carButtonInfo = "CLICK THE BUTTON TO SEE THE WEAPONS",
    
    otherInfo = "Click for details",
    otherButton = "OTHER",
    otherDesc = "You can go to the customization menu by clicking the button above.",

    moneyInfo = "Click for details",
    moneyButtonText = "MONEY",
    moneyDesc = "You can go to the money purchase menu by clicking the button above.",

    gunTitle1 = "DO YOU NEED",
    gunTitle2 = "A GUN?",
    gunInfo = "YOU CAN VIEW IT BY CLICKING THE BUTTON BELOW",
    gunDesc = "THEN YOU CAN BROWSE THE WEAPONS BY CLICKING THE BUTTON BELOW.",
    gunButtonText = "GUN",
    gunTinyInfo = "CLICK THE BUTTON TO SEE WEAPONS.",

    vehBuyCustomPlateText = "Do you want a custom plate? <span id='cstmPltPrice'></span>",
    customPlateText = "Enter your custom plate (Max 6 char.)",
    privNumberText = "Enter your private number (Max 7 char.)<br>You will drop on game after purchasing!",
    dontHaveEnoughtCredit = "You dont have enough credit!",
    minimumChar = "Minimum Char: ",
    MaximumChar = " Maximum Char: ",
    typeNumber = "You have to type number!",
    errorDuringPurchase = "An error occurred during purchase",
    insideVehicle = "To buy this customization, you must be inside the vehicle!",

    openSpam = "Wait a while to open the menu again",
    spamNotify = "Spam protection, try again",
}

AK4Y.BuyCredits = {
    [1] = {
        title = "100$",
        image = "./images/firstBoxCash.png",
        credit = "300 CR",
        extraCredit = "+60 Bonus CR",
        link = "https://www.buy-code-link.com",
    },
    [2] = {
        title = "200$",
        image = "./images/secondBoxCash.png",
        credit = "500 CR",
        extraCredit = "+100 Bonus CR",
        link = "https://www.buy-code-link.com",
    },
    [3] = {
        title = "1000$",
        image = "./images/thirtBoxCash.png",
        credit = "2000 CR",
        extraCredit = "+500 Bonus CR",
        link = "https://www.buy-code-link.com",
    },
    [4] = {
        title = "500$",
        image = "./images/fourBoxCash.png",
        credit = "1000 CR",
        extraCredit = "+250 Bonus CR",
        link = "https://www.buy-code-link.com",
    },
}

-- Do not add new categories
-- If you want to remove a category, you can put it in the comment line
-- If you put a category in the comment line, put the products sold in that category in the comment line
-- you should not change categoryId
AK4Y.Categories = {
    { label = "VEHICLE", categoryId = "vehicle" },
    { label = "AIR", categoryId = "helicopters" },
    { label = "ITEMS", categoryId = "items" },
    { label = "WEAPON", categoryId = "weapon" },
    { label = "MONEY", categoryId = "money" },
    { label = "CUSTOMIZE", categoryId = "other" },
}

AK4Y.Vehicles = {
    {
        id = 1,
        spawnName = "zentorno", -- Spawn code of the vehicle that will be given when the product is received
        brand = "AUDI",
        model = "RS Q8",
        year = "2022 MODEL",
        costCredit = 2450, -- The price to be paid for the product
        topSpeed = 250, -- Top speed of the product
        topSpeedGraph = 90, -- Percentage of product top speed
        brakingPower = 50, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "car", -- do not change
        carImage = "./images/audi.png",
    },
    {
        id = 2,
        spawnName = "zentorno", -- Spawn code of the vehicle that will be given when the product is received
        brand = "AUDI",
        model = "RS Q8",
        year = "2022 MODEL",
        costCredit = 2300, -- The price to be paid for the product
        topSpeed = 250, -- Top speed of the product
        topSpeedGraph = 90, -- Percentage of product top speed
        brakingPower = 50, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "car", -- do not change
        carImage = "./images/audi.png",
    },
    {
        id = 3,
        spawnName = "zentorno", -- Spawn code of the vehicle that will be given when the product is received
        brand = "AUDI",
        model = "RS Q8",
        year = "2022 MODEL",
        costCredit = 2200, -- The price to be paid for the product
        topSpeed = 250, -- Top speed of the product
        topSpeedGraph = 90, -- Percentage of product top speed
        brakingPower = 50, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "car", -- do not change
        carImage = "./images/audi.png",
    },
    {
        id = 4,
        spawnName = "zentorno", -- Spawn code of the vehicle that will be given when the product is received
        brand = "AUDI",
        model = "RS Q8",
        year = "2022 MODEL",
        costCredit = 2850, -- The price to be paid for the product
        topSpeed = 250, -- Top speed of the product
        topSpeedGraph = 90, -- Percentage of product top speed
        brakingPower = 50, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "car", -- do not change
        carImage = "./images/audi.png",
    },
    {
        id = 5,
        spawnName = "zentorno", -- Spawn code of the vehicle that will be given when the product is received
        brand = "AUDI",
        model = "RS Q8",
        year = "2022 MODEL",
        costCredit = 2450, -- The price to be paid for the product
        topSpeed = 250, -- Top speed of the product
        topSpeedGraph = 90, -- Percentage of product top speed
        brakingPower = 50, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "car", -- do not change
        carImage = "./images/audi.png",
    },
    {
        id = 6,
        spawnName = "zentorno", -- Spawn code of the vehicle that will be given when the product is received
        brand = "AUDI",
        model = "RS Q8",
        year = "2022 MODEL",
        costCredit = 2300, -- The price to be paid for the product
        topSpeed = 250, -- Top speed of the product
        topSpeedGraph = 90, -- Percentage of product top speed
        brakingPower = 50, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "car", -- do not change
        carImage = "./images/audi.png",
    },
    {
        id = 7,
        spawnName = "zentorno", -- Spawn code of the vehicle that will be given when the product is received
        brand = "AUDI",
        model = "RS Q8",
        year = "2022 MODEL",
        costCredit = 2200, -- The price to be paid for the product
        topSpeed = 250, -- Top speed of the product
        topSpeedGraph = 90, -- Percentage of product top speed
        brakingPower = 50, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "car", -- do not change
        carImage = "./images/audi.png",
    },
    {
        id = 8,
        spawnName = "zentorno", -- Spawn code of the vehicle that will be given when the product is received
        brand = "AUDI",
        model = "RS Q8",
        year = "2022 MODEL",
        costCredit = 2850, -- The price to be paid for the product
        topSpeed = 250, -- Top speed of the product
        topSpeedGraph = 90, -- Percentage of product top speed
        brakingPower = 50, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "car", -- do not change
        carImage = "./images/audi.png",
    },
}

AK4Y.Helicopters = {
    {
        id = 1,
        spawnName = "frogger", -- Spawn code of the vehicle that will be given when the product is received
        brand = "AUDI",
        model = "RS Q8",
        year = "2022 MODEL",
        costCredit = 2850, -- The price to be paid for the product
        topSpeed = 250, -- Top speed of the product
        topSpeedGraph = 90, -- Percentage of product top speed
        brakingPower = 50, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "air", -- do not change
        carImage = "./images/helicopter.png",
    },
    {
        id = 2,
        spawnName = "frogger", -- Spawn code of the vehicle that will be given when the product is received
        brand = "AUDI",
        model = "RS Q8",
        year = "2022 MODEL",
        costCredit = 2850, -- The price to be paid for the product
        topSpeed = 250, -- Top speed of the product
        topSpeedGraph = 90, -- Percentage of product top speed
        brakingPower = 50, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "air", -- do not change
        carImage = "./images/helicopter.png",
    },
}

AK4Y.Items = {
    { 
        id = 1,
        itemName = "water",
        itemCount = 5,
        label = "Water",
        costCredit = 1000, 
        image = "./images/phone.png",
    },
}


AK4Y.Weapons = {
    { 
        id = 1,
        weaponName = "weapon_pistol",
        label = "HEAVY SHOTGUN",
        costCredit = 2550, 
        image = "./images/guns.png",
    },
    { 
        id = 2,
        weaponName = "weapon_pistol",
        label = "HEAVY SHOTGUN",
        costCredit = 2530, 
        image = "./images/guns.png",
    },
    { 
        id = 3,
        weaponName = "weapon_pistol",
        label = "HEAVY SHOTGUN",
        costCredit = 2150, 
        image = "./images/guns.png",
    },
    { 
        id = 4,
        weaponName = "weapon_pistol",
        label = "HEAVY SHOTGUN",
        costCredit = 2570, 
        image = "./images/guns.png",
    },
    
}

AK4Y.Money = {
    {
        id = 1,
        label = "100.000 DOLLAR",
        costCredit = 100, -- Credit to be paid for the product
        inGameMoney = 100000, -- In-game money to be given to the character after purchase
        image = "./images/moneyImage.png",
    },
    {
        id = 2,
        label = "200.000 DOLLAR",
        costCredit = 200, -- Credit to be paid for the product
        inGameMoney = 200000, -- In-game money to be given to the character after purchase
        image = "./images/moneyImage.png",
    },
    {
        id = 3,
        label = "300.000 DOLLAR",
        costCredit = 300, -- Credit to be paid for the product
        inGameMoney = 300000, -- In-game money to be given to the character after purchase
        image = "./images/moneyImage.png",
    },
    {
        id = 4,
        label = "400.000 DOLLAR",
        costCredit = 400, -- Credit to be paid for the product
        inGameMoney = 400000, -- In-game money to be given to the character after purchase
        image = "./images/moneyImage.png",
    },
}


-- do not change
-- do not change
-- If you want to close it, put it in the comment line
AK4Y.Customize = {
    {id = 1, label = "PRIVATE PHONE NUMBER", costCredit = 50, IType = "privNumber", image = "./images/phone.png"},
    {id = 2, label = "PLATE CUSTOMIZATION", costCredit = 50, IType = "customPlate", image = "./images/platee.png"}
}


```

{% endtab %}

{% tab title="QBCore" %}

```lua
AK4Y = {}

AK4Y.Framework = "qb" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! |  oxmysql / mysql-async
AK4Y.OpenMenuCommand = "donate" -- code to open the donate menu
AK4Y.WeaponType = "item" -- weapon or item
AK4Y.CustomPlatePriceOnBuyVehicle = 20 -- Customization price at the time of vehicle purchase
AK4Y.Phone = "qb-phone" -- gcphone or qb-phone
AK4Y.MinCharForPhoneNumber = 1 -- Minimum number of characters required for a special number
AK4Y.MinCharForPlate = 1 -- Minimum number of characters required for a custom plate
AK4Y.MaxCharForPhoneNumber = 7 -- Minimum number of characters required for a special number
AK4Y.MaxCharForPlate = 8 -- Minimum number of characters required for a custom plate
AK4Y.DefaultGarage = 'pillboxgarage' -- Garage name where the vehicle will be sent after purchase
AK4Y.WeaponType = "item" -- item or weapon
AK4Y.UseTebex = false -- Do you use tebex to sell code?

AK4Y.GiveAddKeys = true -- Automatic key issuance after changing the license plate of the vehicle
AK4Y.GiveAddKeysFunction = function(newPlate)
    TriggerEvent("vehiclekeys:client:SetOwner", newPlate)
end

AK4Y.ClientNotify = function(text, NotifType)
    QBCore.Functions.Notify(text, NotifType)
end

AK4Y.Translate = {
    title1 = "AK4Y",
    title2 = "DONATE",

    speed = "km/h",
    credit = "CR",

    customizeTitle = "Customize",
    customizeInfo = "You have to in your car which is want to customize.",

    thanksForPurchasing = "Thanks for purchasing!",

    buyCreditButton = "BUY CREDIT",
    approveButton = "APPROVE",
    buyButtonText = "BUY",

    redeemCodeTitle1 = "REDEEM",
    redeemCodeTitle2 = "CODE",
    redeemCodeDesc = "Lorem ipsum",
    redeemCodeBelow = "YOU CAN ENTER TE CODE BELOW",

    carDoYouNeedTitle1 = "DO YOU NEED",
    carDoYouNeedTitle2 = "A CAR?",
    carButtonBelow = "YOU CAN VIEW IT BY CLICKING THE BUTTON BELOW",
    carAreaDesc = "THEN YOU CAN BROWSE THE CARS BY CLICKING THE BUTTON BELOW.",
    carButtonText = "CAR",
    carButtonInfo = "CLICK THE BUTTON TO SEE THE WEAPONS",
    
    otherInfo = "Click for details",
    otherButton = "OTHER",
    otherDesc = "You can go to the customization menu by clicking the button above.",

    moneyInfo = "Click for details",
    moneyButtonText = "MONEY",
    moneyDesc = "You can go to the money purchase menu by clicking the button above.",

    gunTitle1 = "DO YOU NEED",
    gunTitle2 = "A GUN?",
    gunInfo = "YOU CAN VIEW IT BY CLICKING THE BUTTON BELOW",
    gunDesc = "THEN YOU CAN BROWSE THE WEAPONS BY CLICKING THE BUTTON BELOW.",
    gunButtonText = "GUN",
    gunTinyInfo = "CLICK THE BUTTON TO SEE WEAPONS.",

    vehBuyCustomPlateText = "Do you want a custom plate? <span id='cstmPltPrice'></span>",
    customPlateText = "Enter your custom plate (Max 6 char.)",
    privNumberText = "Enter your private number (Max 7 char.)<br>You will drop on game after purchasing!",
    dontHaveEnoughtCredit = "You dont have enough credit!",
    minimumChar = "Minimum Char: ",
    MaximumChar = " Maximum Char: ",
    typeNumber = "You have to type number!",
    errorDuringPurchase = "An error occurred during purchase",
    insideVehicle = "To buy this customization, you must be inside the vehicle!",

    openSpam = "Wait a while to open the menu again",
    spamNotify = "Spam protection, try again",
}

AK4Y.BuyCredits = {
    [1] = {
        title = "100$",
        image = "./images/firstBoxCash.png",
        credit = "300 CR",
        extraCredit = "+60 Bonus CR",
        link = "https://www.buy-code-link.com",
    },
    [2] = {
        title = "200$",
        image = "./images/secondBoxCash.png",
        credit = "500 CR",
        extraCredit = "+100 Bonus CR",
        link = "https://www.buy-code-link.com",
    },
    [3] = {
        title = "1000$",
        image = "./images/thirtBoxCash.png",
        credit = "2000 CR",
        extraCredit = "+500 Bonus CR",
        link = "https://ak4y.tebex.io/package/5286285",
    },
    [4] = {
        title = "500$",
        image = "./images/fourBoxCash.png",
        credit = "1000 CR",
        extraCredit = "+250 Bonus CR",
        link = "https://www.buy-code-link.com",
    },
}

-- Do not add new categories
-- If you want to remove a category, you can put it in the comment line
-- If you put a category in the comment line, put the products sold in that category in the comment line
-- you should not change categoryId
AK4Y.Categories = {
    { label = "VEHICLE", categoryId = "vehicle" },
    { label = "AIR", categoryId = "helicopters" },
    { label = "ITEMS", categoryId = "items" },
    { label = "WEAPON", categoryId = "weapon" },
    { label = "MONEY", categoryId = "money" },
    { label = "CUSTOMIZE", categoryId = "other" },
}

AK4Y.Vehicles = {
    {
        id = 1,
        spawnName = "zentorno", -- Spawn code of the vehicle that will be given when the product is received
        brand = "Zentorno",
        model = "",
        year = "2022 MODEL",
        costCredit = 2450, -- The price to be paid for the product
        topSpeed = 310, -- Top speed of the product
        topSpeedGraph = 90, -- Percentage of product top speed
        brakingPower = 50, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "car", -- do not change
        carImage = "./images/Zentorno.png",
    },
    {
        id = 2,
        spawnName = "zentorno", -- Spawn code of the vehicle that will be given when the product is received
        brand = "AUDI",
        model = "RS Q8",
        year = "2022 MODEL",
        costCredit = 2300, -- The price to be paid for the product
        topSpeed = 250, -- Top speed of the product
        topSpeedGraph = 90, -- Percentage of product top speed
        brakingPower = 50, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "car", -- do not change
        carImage = "./images/audi.png",
    },
    {
        id = 3,
        spawnName = "zentorno", -- Spawn code of the vehicle that will be given when the product is received
        brand = "AUDI",
        model = "RS Q8",
        year = "2022 MODEL",
        costCredit = 2200, -- The price to be paid for the product
        topSpeed = 250, -- Top speed of the product
        topSpeedGraph = 90, -- Percentage of product top speed
        brakingPower = 50, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "car", -- do not change
        carImage = "./images/audi.png",
    },
    {
        id = 4,
        spawnName = "zentorno", -- Spawn code of the vehicle that will be given when the product is received
        brand = "AUDI",
        model = "RS Q8",
        year = "2022 MODEL",
        costCredit = 2850, -- The price to be paid for the product
        topSpeed = 250, -- Top speed of the product
        topSpeedGraph = 90, -- Percentage of product top speed
        brakingPower = 50, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "car", -- do not change
        carImage = "./images/audi.png",
    },
    {
        id = 5,
        spawnName = "zentorno", -- Spawn code of the vehicle that will be given when the product is received
        brand = "AUDI",
        model = "RS Q8",
        year = "2022 MODEL",
        costCredit = 2450, -- The price to be paid for the product
        topSpeed = 250, -- Top speed of the product
        topSpeedGraph = 90, -- Percentage of product top speed
        brakingPower = 50, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "car", -- do not change
        carImage = "./images/audi.png",
    },
    {
        id = 6,
        spawnName = "zentorno", -- Spawn code of the vehicle that will be given when the product is received
        brand = "AUDI",
        model = "RS Q8",
        year = "2022 MODEL",
        costCredit = 2300, -- The price to be paid for the product
        topSpeed = 250, -- Top speed of the product
        topSpeedGraph = 90, -- Percentage of product top speed
        brakingPower = 50, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "car", -- do not change
        carImage = "./images/audi.png",
    },
    {
        id = 7,
        spawnName = "zentorno", -- Spawn code of the vehicle that will be given when the product is received
        brand = "AUDI",
        model = "RS Q8",
        year = "2022 MODEL",
        costCredit = 2200, -- The price to be paid for the product
        topSpeed = 250, -- Top speed of the product
        topSpeedGraph = 90, -- Percentage of product top speed
        brakingPower = 50, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "car", -- do not change
        carImage = "./images/audi.png",
    },
    {
        id = 8,
        spawnName = "zentorno", -- Spawn code of the vehicle that will be given when the product is received
        brand = "AUDI",
        model = "RS Q8",
        year = "2022 MODEL",
        costCredit = 2850, -- The price to be paid for the product
        topSpeed = 250, -- Top speed of the product
        topSpeedGraph = 90, -- Percentage of product top speed
        brakingPower = 50, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "car", -- do not change
        carImage = "./images/audi.png",
    },
}

AK4Y.Helicopters = {
    {
        id = 1,
        spawnName = "frogger", -- Spawn code of the vehicle that will be given when the product is received
        brand = "Frogger",
        model = "",
        year = "2022 MODEL",
        costCredit = 2850, -- The price to be paid for the product
        topSpeed = 250, -- Top speed of the product
        topSpeedGraph = 60, -- Percentage of product top speed
        brakingPower = 30, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "air", -- do not change
        carImage = "./images/helicopter.png",
    },
    {
        id = 2,
        spawnName = "frogger", -- Spawn code of the vehicle that will be given when the product is received
        brand = "AUDI",
        model = "RS Q8",
        year = "2022 MODEL",
        costCredit = 2850, -- The price to be paid for the product
        topSpeed = 250, -- Top speed of the product
        topSpeedGraph = 90, -- Percentage of product top speed
        brakingPower = 50, -- Percentage of braking power of the product
        robustness = 90, -- Percentage of product robustness
        vehType = "air", -- do not change
        carImage = "./images/helicopter.png",
    },
}

AK4Y.Items = {
    { 
        id = 1,
        itemName = "water",
        itemCount = 5,
        label = "Water",
        costCredit = 1000, 
        image = "./images/phone.png",
    },
}

AK4Y.Weapons = {
    { 
        id = 1,
        weaponName = "weapon_heavyshotgun",
        label = "HEAVY SHOTGUN",
        costCredit = 2550, 
        image = "./images/guns.png",
    },
    { 
        id = 2,
        weaponName = "weapon_pistol",
        label = "HEAVY SHOTGUN",
        costCredit = 2530, 
        image = "./images/guns.png",
    },
    { 
        id = 3,
        weaponName = "weapon_pistol",
        label = "HEAVY SHOTGUN",
        costCredit = 2150, 
        image = "./images/guns.png",
    },
    { 
        id = 4,
        weaponName = "weapon_pistol",
        label = "HEAVY SHOTGUN",
        costCredit = 2570, 
        image = "./images/guns.png",
    },
}

AK4Y.Money = {
    {
        id = 1,
        label = "100.000 DOLLAR",
        costCredit = 100, -- Credit to be paid for the product
        inGameMoney = 100000, -- In-game money to be given to the character after purchase
        image = "./images/moneyImage.png",
    },
    {
        id = 2,
        label = "200.000 DOLLAR",
        costCredit = 200, -- Credit to be paid for the product
        inGameMoney = 200000, -- In-game money to be given to the character after purchase
        image = "./images/moneyImage.png",
    },
    {
        id = 3,
        label = "300.000 DOLLAR",
        costCredit = 300, -- Credit to be paid for the product
        inGameMoney = 300000, -- In-game money to be given to the character after purchase
        image = "./images/moneyImage.png",
    },
    {
        id = 4,
        label = "400.000 DOLLAR",
        costCredit = 400, -- Credit to be paid for the product
        inGameMoney = 400000, -- In-game money to be given to the character after purchase
        image = "./images/moneyImage.png",
    },
}


-- do not change
-- do not change
-- If you want to close it, put it in the comment line
AK4Y.Customize = {
    {id = 1, label = "PRIVATE PHONE NUMBER", costCredit = 50, IType = "privNumber", image = "./images/phone.png"},
    {id = 2, label = "PLATE CUSTOMIZATION", costCredit = 50, IType = "customPlate", image = "./images/platee.png"}
}


```

{% endtab %}
{% endtabs %}


# ak4y-playtimeshop


# Config

{% tabs %}
{% tab title="ESX" %}

```lua
AK4Y = {}

AK4Y.Framework = "esx" -- esx / newEsx | newEsx = export system | esx = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async
AK4Y.OpenCommand = "playtimeShop"
AK4Y.WeaponsAreItem = false
AK4Y.RewardCoin = 25
AK4Y.NeededPlayTime = 120 -- Minutes

AK4Y.Language = {
    title1 = "AK4Y",
    title2 = "Playtime",
    coin = "COIN",
    nextReward = "FOR THE NEXT COIN REWARD",
    exit = "EXIT",
    reward = "REWARD :",
    title3 = "TOP",
    title4 = "PLAYERS",
    title5 = "PLAYTIME",
    title6 = "SHOP",
    cancel = "CANCEL",
    buy = "BUY",
    accept = "ACCEPT",
    realCurrency = "$",
    nextPage = "NEXT PAGE",
    previousPage = "PREVIOUS PAGE",
    succesfully = "SUCCESSFULLY",
    purchased = "PURCHASED",
    invalidCode = "INVALID CODE!",
    thxForPurch = "Thanks for purchasing!",
    top = "TOP",
    youDntHvEngMoney = "YOU DONT HAVE ENOUGH MONEY!",
    text6 = "6",
}

AK4Y.Categories = {
    { category = "items", icon = "fa-solid fa-cookie-bite", items = {} }, -- do not touch items section..
    { category = "weapons", icon = "fa-solid fa-gun", items = {} }, -- do not touch items section..
    { category = "vehicles", icon = "fa-solid fa-car", items = {} }, -- do not touch items section..
}

-- YOU SHOULD SET ITEMS! THESE ARE JUST EXAMPLE!
-- itemType : vehicle, weapon, item, money
AK4Y.Items = {
    { id = 1, itemName = "weapon_heavypistol", label = "HEAVY PISTOL", price = 50, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_heavypistol.png" },
    { id = 2, itemName = "weapon_combatpistol", label = "COMBAT PISTOL", price = 70, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_combatpistol.png" },
    { id = 3, itemName = "weapon_appistol", label = "AP PISTOL", price = 150, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_appistol.png" },
    { id = 4, itemName = "weapon_advancedrifle", label = "ADVANCED RIFLE", price = 60, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_advancedrifle.png" },
    { id = 5, itemName = "weapon_smg", label = "SMG", price = 100, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_smg.png" },
    { id = 6, itemName = "weapon_specialcarbine", label = "SPECIAL CARBINE", price = 40, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_specialcarbine.png" },
    { id = 7, itemName = "weapon_specialcarbine_mk2", label = "SPECIAL CARBINE MK2", price = 35, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_specialcarbine_mk2.png" },
    { id = 8, itemName = "weapon_heavyshotgun", label = "HEAVY SHOTGUN", price = 65, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_heavyshotgun.png" },
    { id = 9, itemName = "weapon_combatpdw", label = "COMBAT PDW", price = 85, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_combatpdw.png" },
    { id = 10, itemName = "weapon_assaultrifle", label = "ASSAULT RIFLE", price = 110, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_assaultrifle.png" },
    { id = 11, itemName = "weapon_carbinerifle", label = "CARBINE RIFLE", price = 135, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_carbinerifle.png" },
    { id = 12, itemName = "weapon_bullpuprifle", label = "BULLPUP RIFLE", price = 125, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_bullpuprifle.png" },
    { id = 13, itemName = "weapon_crowbar", label = "CROWBAR", price = 70, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_crowbar.png" },
    { id = 14, itemName = "weapon_knife", label = "KNIFE", price = 95, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_knife.png" },
    { id = 15, itemName = "weapon_knuckle", label = "KNUCKLE", price = 65, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_knuckle.png" },
    { id = 16, itemName = "weapon_grenade", label = "GRENADE", price = 45, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_grenade.png" },

    { id = 17, itemName = "water", label = "WATER", price = 25, count = 1, itemType = "item", category = "items", image = "./images/advancedkit.png" },
    { id = 18, itemName = "advancedlockpick", label = "ADVANCED LOCKPICK", price = 45, count = 1, itemType = "item", category = "items", image = "./images/advancedlockpick.png" },
    { id = 19, itemName = "armor", label = "ARMOR", price = 35, count = 1, itemType = "item", category = "items", image = "./images/armor.png" },
    { id = 20, itemName = "joint", label = "JOINT", price = 55, count = 1, itemType = "item", category = "items", image = "./images/joint.png" },
    { id = 21, itemName = "visacard", label = "VISA CARD", price = 95, count = 1, itemType = "item", category = "items", image = "./images/visacard.png" },
    { id = 22, itemName = "mastercard", label = "MASTER CARD", price = 75, count = 1, itemType = "item", category = "items", image = "./images/mastercard.png" },
    { id = 23, itemName = "usb_device", label = "USB DEVICE", price = 35, count = 1, itemType = "item", category = "items", image = "./images/usb_device.png" },
    { id = 24, itemName = "casinochips", label = "CASINO CHIPS", price = 15, count = 1, itemType = "item", category = "items", image = "./images/casinochips.png" },
    { id = 25, itemName = "firework3", label = "FIREWORK", price = 70, count = 1, itemType = "item", category = "items", image = "./images/firework3.png" },
    { id = 26, itemName = "cocaine_baggy", label = "COCAINE BAGGY", price = 35, count = 1, itemType = "item", category = "items", image = "./images/cocaine_baggy.png" },
    { id = 27, itemName = "pistol_ammo", label = "PISTOL AMMO", price = 15, count = 1, itemType = "item", category = "items", image = "./images/pistol_ammo.png" },
    { id = 28, itemName = "pistol_suppressor", label = "PISTOL SUPPRESSOR", price = 65, count = 1, itemType = "item", category = "items", image = "./images/pistol_suppressor.png" },
    { id = 29, itemName = "radio", label = "RADIO", price = 95, count = 1, itemType = "item", category = "items", image = "./images/radio.png" },

    { id = 30, itemName = "zentorno", label = "ZENTORNO", price = 150, count = 1, itemType = "vehicle", category = "vehicles", image = "./images/zentorno.png" },
    { id = 31, itemName = "kuruma", label = "KURUMA", price = 100, count = 1, itemType = "vehicle", category = "vehicles", image = "./images/kuruma.png" },
}

AK4Y.CoinList = {
    { coinCount = 300, realPrice = 30, link = "https://www.yourTebexLink.com/crediAmountPage.html", image = "./images/coin.png" },
    { coinCount = 100, realPrice = 50, link = "https://www.yourTebexLink.com/crediAmountPage.html", image = "./images/coin.png" },
    { coinCount = 700, realPrice = 70, link = "https://www.yourTebexLink.com/crediAmountPage.html", image = "./images/coin.png" },
    { coinCount = 900, realPrice = 90, link = "https://www.yourTebexLink.com/crediAmountPage.html", image = "./images/coin.png" },
    { coinCount = 1200, realPrice = 120, link = "https://www.yourTebexLink.com/crediAmountPage.html", image = "./images/coin.png" },
    { coinCount = 1500, realPrice = 150, link = "https://www.yourTebexLink.com/crediAmountPage.html", image = "./images/coin.png" },
}
```

{% endtab %}

{% tab title="QBCore" %}

```lua
AK4Y = {}

AK4Y.Framework = "qb" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async
AK4Y.OpenCommand = "playtimeShop"
AK4Y.DefaultGarage = "pillboxgarage" -- purchased vehicles will be sent to this garage
AK4Y.RewardCoin = 25
AK4Y.NeededPlayTime = 120 -- Minutes

AK4Y.Language = {
    title1 = "AK4Y",
    title2 = "Playtime",
    coin = "COIN",
    nextReward = "FOR THE NEXT COIN REWARD",
    exit = "EXIT",
    reward = "REWARD :",
    title3 = "TOP",
    title4 = "PLAYERS",
    title5 = "PLAYTIME",
    title6 = "SHOP",
    cancel = "CANCEL",
    buy = "BUY",
    accept = "ACCEPT",
    realCurrency = "$",
    nextPage = "NEXT PAGE",
    previousPage = "PRIVIOUS PAGE",
    succesfully = "SUCCESSFULLY",
    purchased = "PURCHASED",
    invalidCode = "INVALID CODE!",
    thxForPurch = "Thanks for purchasing!",
    top = "TOP",
    youDntHvEngMoney = "YOU DONT HAVE ENOUGH MONEY!",
    text6 = "6",
}

AK4Y.Categories = {
    { category = "items", icon = "fa-solid fa-cookie-bite", items = {} }, -- do not touch items section..
    { category = "weapons", icon = "fa-solid fa-gun", items = {} }, -- do not touch items section..
    { category = "vehicles", icon = "fa-solid fa-car", items = {} }, -- do not touch items section..
}

-- itemType : vehicle, weapon, item, money
AK4Y.Items = {
    { id = 1, itemName = "weapon_heavypistol", label = "HEAVY PISTOL", price = 50, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_heavypistol.png" },
    { id = 2, itemName = "weapon_combatpistol", label = "COMBAT PISTOL", price = 70, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_combatpistol.png" },
    { id = 3, itemName = "weapon_appistol", label = "AP PISTOL", price = 150, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_appistol.png" },
    { id = 4, itemName = "weapon_advancedrifle", label = "ADVANCED RIFLE", price = 60, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_advancedrifle.png" },
    { id = 5, itemName = "weapon_smg", label = "SMG", price = 100, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_smg.png" },
    { id = 6, itemName = "weapon_specialcarbine", label = "SPECIAL CARBINE", price = 40, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_specialcarbine.png" },
    { id = 7, itemName = "weapon_specialcarbine_mk2", label = "SPECIAL CARBINE MK2", price = 35, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_specialcarbine_mk2.png" },
    { id = 8, itemName = "weapon_heavyshotgun", label = "HEAVY SHOTGUN", price = 65, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_heavyshotgun.png" },
    { id = 9, itemName = "weapon_combatpdw", label = "COMBAT PDW", price = 85, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_combatpdw.png" },
    { id = 10, itemName = "weapon_assaultrifle", label = "ASSAULT RIFLE", price = 110, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_assaultrifle.png" },
    { id = 11, itemName = "weapon_carbinerifle", label = "CARBINE RIFLE", price = 135, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_carbinerifle.png" },
    { id = 12, itemName = "weapon_bullpuprifle", label = "BULLPUP RIFLE", price = 125, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_bullpuprifle.png" },
    { id = 13, itemName = "weapon_crowbar", label = "CROWBAR", price = 70, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_crowbar.png" },
    { id = 14, itemName = "weapon_knife", label = "KNIFE", price = 95, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_knife.png" },
    { id = 15, itemName = "weapon_knuckle", label = "KNUCKLE", price = 65, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_knuckle.png" },
    { id = 16, itemName = "weapon_grenade", label = "GRENADE", price = 45, count = 1, itemType = "weapon", category = "weapons", image = "./images/weapon_grenade.png" },

    { id = 17, itemName = "advancedkit", label = "ADVANCED KIT", price = 25, count = 1, itemType = "item", category = "items", image = "./images/advancedkit.png" },
    { id = 18, itemName = "advancedlockpick", label = "ADVANCED LOCKPICK", price = 45, count = 1, itemType = "item", category = "items", image = "./images/advancedlockpick.png" },
    { id = 19, itemName = "armor", label = "ARMOR", price = 35, count = 1, itemType = "item", category = "items", image = "./images/armor.png" },
    { id = 20, itemName = "joint", label = "JOINT", price = 55, count = 1, itemType = "item", category = "items", image = "./images/joint.png" },
    { id = 21, itemName = "visacard", label = "VISA CARD", price = 95, count = 1, itemType = "item", category = "items", image = "./images/visacard.png" },
    { id = 22, itemName = "mastercard", label = "MASTER CARD", price = 75, count = 1, itemType = "item", category = "items", image = "./images/mastercard.png" },
    { id = 23, itemName = "usb_device", label = "USB DEVICE", price = 35, count = 1, itemType = "item", category = "items", image = "./images/usb_device.png" },
    { id = 24, itemName = "casinochips", label = "CASINO CHIPS", price = 15, count = 1, itemType = "item", category = "items", image = "./images/casinochips.png" },
    { id = 25, itemName = "firework3", label = "FIREWORK", price = 70, count = 1, itemType = "item", category = "items", image = "./images/firework3.png" },
    { id = 26, itemName = "cocaine_baggy", label = "COCAINE BAGGY", price = 35, count = 1, itemType = "item", category = "items", image = "./images/cocaine_baggy.png" },
    { id = 27, itemName = "pistol_ammo", label = "PISTOL AMMO", price = 15, count = 1, itemType = "item", category = "items", image = "./images/pistol_ammo.png" },
    { id = 28, itemName = "pistol_suppressor", label = "PISTOL SUPPRESSOR", price = 65, count = 1, itemType = "item", category = "items", image = "./images/pistol_suppressor.png" },
    { id = 29, itemName = "radio", label = "RADIO", price = 95, count = 1, itemType = "item", category = "items", image = "./images/radio.png" },

    { id = 30, itemName = "zentorno", label = "ZENTORNO", price = 150, count = 1, itemType = "vehicle", category = "vehicles", image = "./images/zentorno.png" },
    { id = 31, itemName = "kuruma", label = "KURUMA", price = 100, count = 1, itemType = "vehicle", category = "vehicles", image = "./images/kuruma.png" },
}

AK4Y.CoinList = {
    { coinCount = 300, realPrice = 30, link = "https://www.yourTebexLink.com/crediAmountPage.html", image = "./images/coin.png" },
    { coinCount = 100, realPrice = 50, link = "https://www.yourTebexLink.com/crediAmountPage.html", image = "./images/coin.png" },
    { coinCount = 700, realPrice = 70, link = "https://www.yourTebexLink.com/crediAmountPage.html", image = "./images/coin.png" },
    { coinCount = 900, realPrice = 90, link = "https://www.yourTebexLink.com/crediAmountPage.html", image = "./images/coin.png" },
    { coinCount = 1200, realPrice = 120, link = "https://www.yourTebexLink.com/crediAmountPage.html", image = "./images/coin.png" },
    { coinCount = 1500, realPrice = 150, link = "https://www.yourTebexLink.com/crediAmountPage.html", image = "./images/coin.png" },
}
```

{% endtab %}
{% endtabs %}


# ak4y-blackmarket


# Config

{% tabs %}
{% tab title="ESX" %}

```lua
AK4Y = {}

AK4Y.Framework = "esx" -- esx / newEsx | newEsx = export system | esx = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async
AK4Y.TaskResetPeriod = 1 -- DAY (Tasks are reset and become available again)
AK4Y.WeaponsAreItem = false -- If your weapons are item then you should set this TRUE.

AK4Y.Translate = {
    male = "MALE",
    female = "FEMALE",
}

AK4Y.Blackmarkets = {
    {
        pedName = "AK4Y", 
        pedHash = 0x855E36A3, -- https://wiki.rage.mp/index.php?title=Peds
        pedCoord = vector3(606.67, -463.62, 23.74), -- ped coord
        h = 351, -- ped heading
        drawText = "Nervous-Looking Man",
        authorizedJobs = {"all"}, -- if you type all then all players will have access
        -- authorizedJobs = {"gang1", "gang2"}, -- If you want to integrate the job, this is the example.
        blipSettings = { -- https://docs.fivem.net/docs/game-references/blips/
            blip = false,
            blipName = "Blackmarket",
            blipIcon = 68,
            blipColour = 3,
        },
    },
    -- {
    --     pedName = "AK4Y", 
    --     pedHash = 0x855E36A3, -- https://wiki.rage.mp/index.php?title=Peds
    --     pedCoord = vector3(600.11, -462.05, 24.38),
    --     drawText = "Nervous-Looking Man",
    --     authorizedJobs = {"gang1", "gang2"}
    --     h = 351,
    --     blipSettings = { -- https://docs.fivem.net/docs/game-references/blips/
    --         blip = false,
    --         blipName = "Blackmarket",
    --         blipIcon = 68,
    --         blipColour = 3,
    --     },
    -- },
}

AK4Y.Categories = {
    { category = "weapon", label = "WEAPON" },
    { category = "item", label = "ITEM" },
    { category = "vehicles", label = "VEHICLES" },
    -- { category = "knife", label = "KNIFE" },
    -- { category = "rig", label = "RIG" },
}

-- type: "ITEM", "WEAPON", "MONEY", "VEHICLE"
AK4Y.CategoryItems = {
    { id = 1, category = "weapon", itemName = "weapon_heavypistol", type = "WEAPON", label = "HEAVY PISTOL", price = 1100, count = 1, level = 1, image = "./images/weapon_heavypistol.png" },
    { id = 2, category = "weapon", itemName = "weapon_appistol", type = "WEAPON", label = "AP PISTOL", price = 1500, count = 1, level = 1, image = "./images/weapon_appistol.png" },
    { id = 3, category = "weapon", itemName = "weapon_combatpistol", type = "WEAPON", label = "COMBAT PISTOL", price = 1800, count = 1, level = 2, image = "./images/weapon_combatpistol.png" },
    { id = 4, category = "weapon", itemName = "weapon_heavyshotgun", type = "WEAPON", label = "HEAVY SHOTGUN", price = 1200, count = 1, level = 3, image = "./images/weapon_heavyshotgun.png" },
    { id = 5, category = "weapon", itemName = "weapon_combatpdw", type = "WEAPON", label = "COMBAT PDW", price = 1700, count = 1, level = 4, image = "./images/weapon_combatpdw.png" },
    { id = 6, category = "weapon", itemName = "weapon_smg", type = "WEAPON", label = "SMG", price = 1300, count = 1, level = 5, image = "./images/weapon_smg.png" },
    { id = 7, category = "weapon", itemName = "weapon_advancedrifle", type = "WEAPON", label = "ADVANCED RIFLE", price = 1400, count = 1, level = 11, image = "./images/weapon_advancedrifle.png" },
    { id = 8, category = "weapon", itemName = "weapon_assaultrifle", type = "WEAPON", label = "ASSAULT RIFLE", price = 1600, count = 1, level = 12, image = "./images/weapon_assaultrifle.png" },
    { id = 9, category = "weapon", itemName = "weapon_carbinerifle", type = "WEAPON", label = "CARBINE RIFLE", price = 1400, count = 1, level = 13, image = "./images/carbinerifle.png" },
    { id = 10, category = "item", itemName = "pistol_ammo", type = "ITEM", label = "PISTOL AMMO", price = 1200, count = 1, level = 3, image = "./images/pistol_ammo.png" },
    { id = 11, category = "item", itemName = "security_card_02", type = "ITEM", label = "SECURITY CARD", price = 1200, count = 1, level = 5, image = "./images/security_card_02.png" },
    { id = 12, category = "item", itemName = "weed_baggy", type = "ITEM", label = "WEED BAGGY", price = 1200, count = 1, level = 10, image = "./images/weed_baggy.png" },
    { id = 13, category = "vehicles", itemName = "zentorno", type = "VEHICLE", label = "ZENTORNO", price = 1300, count = 1, level = 5, image = "./images/zentorno.png" },
    { id = 14, category = "vehicles", itemName = "kuruma", type = "VEHICLE", label = "KURUMA", price = 1300, count = 1, level = 10, image = "./images/kuruma.png" },
}

-- These tasks are examples, you should integrate tasks according to your own server package and taste.
-- Don't worry, this process is quite simple, there is an example task integration and explanation in example.lua.
AK4Y.Tasks = {
    {taskId = 1, requiredcount = 2, rewardXP = 1500, taskTitle = "Type 'tasktry' in chat", taskDescription = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit quibusdam accusamus tempora officia perspiciatis.Veritatis dolorum dolore, amet corporis maiores tempore quaerat similique possimus, ipsam modi id labore sed sequi cumerror recusandae? Ipsum, fugiat."},
    {taskId = 2, requiredcount = 50, rewardXP = 200, taskTitle = "Do a carjacking", taskDescription = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit quibusdam accusamus tempora officia perspiciatis.Veritatis dolorum dolore, amet corporis maiores tempore quaerat similique possimus, ipsam modi id labore sed sequi cumerror recusandae? Ipsum, fugiat."},
    {taskId = 3, requiredcount = 8, rewardXP = 300, taskTitle = "Get Involved in a House Robbery", taskDescription = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit quibusdam accusamus tempora officia perspiciatis.Veritatis dolorum dolore, amet corporis maiores tempore quaerat similique possimus, ipsam modi id labore sed sequi cumerror recusandae? Ipsum, fugiat."},
    {taskId = 4, requiredcount = 20, rewardXP = 400, taskTitle = "Do a bank robbery", taskDescription = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit quibusdam accusamus tempora officia perspiciatis.Veritatis dolorum dolore, amet corporis maiores tempore quaerat similique possimus, ipsam modi id labore sed sequi cumerror recusandae? Ipsum, fugiat."},
    {taskId = 5, requiredcount = 10, rewardXP = 500, taskTitle = "Kill 10 NPC", taskDescription = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit quibusdam accusamus tempora officia perspiciatis.Veritatis dolorum dolore, amet corporis maiores tempore quaerat similique possimus, ipsam modi id labore sed sequi cumerror recusandae? Ipsum, fugiat."},
    {taskId = 6, requiredcount = 5, rewardXP = 600, taskTitle = "Steal 5 Police Car", taskDescription = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit quibusdam accusamus tempora officia perspiciatis.Veritatis dolorum dolore, amet corporis maiores tempore quaerat similique possimus, ipsam modi id labore sed sequi cumerror recusandae? Ipsum, fugiat."},
    {taskId = 7, requiredcount = 20, rewardXP = 700, taskTitle = "Rob 5 people", taskDescription = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit quibusdam accusamus tempora officia perspiciatis.Veritatis dolorum dolore, amet corporis maiores tempore quaerat similique possimus, ipsam modi id labore sed sequi cumerror recusandae? Ipsum, fugiat."},
    {taskId = 8, requiredcount = 10, rewardXP = 800, taskTitle = "Sample task", taskDescription = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit quibusdam accusamus tempora officia perspiciatis.Veritatis dolorum dolore, amet corporis maiores tempore quaerat similique possimus, ipsam modi id labore sed sequi cumerror recusandae? Ipsum, fugiat."},
}
```

{% endtab %}

{% tab title="QBCore" %}

```lua
AK4Y = {}

AK4Y.Framework = "qb" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async
AK4Y.TaskResetPeriod = 1 -- DAY (Tasks are reset and become available again)
AK4Y.WeaponsAreItem = true -- If your weapons are item then you should set this TRUE.
AK4Y.DefaultGarage = "pillboxgarage" -- purchased vehicles will be sent to this garage

AK4Y.Translate = {
    male = "MALE",
    female = "FEMALE",
}

AK4Y.Blackmarkets = {
    {
        pedName = "AK4Y", 
        pedHash = 0x855E36A3, -- https://wiki.rage.mp/index.php?title=Peds
        pedCoord = vector3(606.67, -463.62, 23.74), -- ped coord
        h = 351, -- ped heading
        drawText = "Nervous-Looking Man",
        authorizedJobs = {"all"}, -- if you type all then all players will have access
        -- authorizedJobs = {"gang1", "gang2"}, -- If you want to integrate the job, this is the example.
        blipSettings = { -- https://docs.fivem.net/docs/game-references/blips/
            blip = false,
            blipName = "Blackmarket",
            blipIcon = 68,
            blipColour = 3,
        },
    },
    -- {
    --     pedName = "AK4Y", 
    --     pedHash = 0x855E36A3, -- https://wiki.rage.mp/index.php?title=Peds
    --     pedCoord = vector3(600.11, -462.05, 24.38),
    --     drawText = "Nervous-Looking Man",
    --     authorizedJobs = {"gang1", "gang2"}
    --     h = 351,
    --     blipSettings = { -- https://docs.fivem.net/docs/game-references/blips/
    --         blip = false,
    --         blipName = "Blackmarket",
    --         blipIcon = 68,
    --         blipColour = 3,
    --     },
    -- },
}

AK4Y.Categories = {
    { category = "weapon", label = "WEAPON" },
    { category = "item", label = "ITEM" },
    { category = "vehicles", label = "VEHICLES" },
    -- { category = "knife", label = "KNIFE" },
    -- { category = "rig", label = "RIG" },
}

-- type: "ITEM", "WEAPON", "MONEY", "VEHICLE"
AK4Y.CategoryItems = {
    { id = 1, category = "weapon", itemName = "weapon_heavypistol", type = "WEAPON", label = "HEAVY PISTOL", price = 1100, count = 1, level = 1, image = "./images/weapon_heavypistol.png" },
    { id = 2, category = "weapon", itemName = "weapon_appistol", type = "WEAPON", label = "AP PISTOL", price = 1500, count = 1, level = 1, image = "./images/weapon_appistol.png" },
    { id = 3, category = "weapon", itemName = "weapon_combatpistol", type = "WEAPON", label = "COMBAT PISTOL", price = 1800, count = 1, level = 2, image = "./images/weapon_combatpistol.png" },
    { id = 4, category = "weapon", itemName = "weapon_heavyshotgun", type = "WEAPON", label = "HEAVY SHOTGUN", price = 1200, count = 1, level = 3, image = "./images/weapon_heavyshotgun.png" },
    { id = 5, category = "weapon", itemName = "weapon_combatpdw", type = "WEAPON", label = "COMBAT PDW", price = 1700, count = 1, level = 4, image = "./images/weapon_combatpdw.png" },
    { id = 6, category = "weapon", itemName = "weapon_smg", type = "WEAPON", label = "SMG", price = 1300, count = 1, level = 5, image = "./images/weapon_smg.png" },
    { id = 7, category = "weapon", itemName = "weapon_advancedrifle", type = "WEAPON", label = "ADVANCED RIFLE", price = 1400, count = 1, level = 11, image = "./images/weapon_advancedrifle.png" },
    { id = 8, category = "weapon", itemName = "weapon_assaultrifle", type = "WEAPON", label = "ASSAULT RIFLE", price = 1600, count = 1, level = 12, image = "./images/weapon_assaultrifle.png" },
    { id = 9, category = "weapon", itemName = "weapon_carbinerifle", type = "WEAPON", label = "CARBINE RIFLE", price = 1400, count = 1, level = 13, image = "./images/carbinerifle.png" },
    { id = 10, category = "item", itemName = "pistol_ammo", type = "ITEM", label = "PISTOL AMMO", price = 1200, count = 1, level = 3, image = "./images/pistol_ammo.png" },
    { id = 11, category = "item", itemName = "security_card_02", type = "ITEM", label = "SECURITY CARD", price = 1200, count = 1, level = 5, image = "./images/security_card_02.png" },
    { id = 12, category = "item", itemName = "weed_baggy", type = "ITEM", label = "WEED BAGGY", price = 1200, count = 1, level = 10, image = "./images/weed_baggy.png" },
    { id = 13, category = "vehicles", itemName = "zentorno", type = "VEHICLE", label = "ZENTORNO", price = 1300, count = 1, level = 5, image = "./images/zentorno.png" },
    { id = 14, category = "vehicles", itemName = "kuruma", type = "VEHICLE", label = "KURUMA", price = 1300, count = 1, level = 10, image = "./images/kuruma.png" },
}

-- These tasks are examples, you should integrate tasks according to your own server package and taste.
-- Don't worry, this process is quite simple, there is an example task integration and explanation in example.lua.
AK4Y.Tasks = {
    {taskId = 1, requiredcount = 2, rewardXP = 1500, taskTitle = "Type 'tasktry' in chat", taskDescription = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit quibusdam accusamus tempora officia perspiciatis.Veritatis dolorum dolore, amet corporis maiores tempore quaerat similique possimus, ipsam modi id labore sed sequi cumerror recusandae? Ipsum, fugiat."},
    {taskId = 2, requiredcount = 50, rewardXP = 200, taskTitle = "Do a carjacking", taskDescription = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit quibusdam accusamus tempora officia perspiciatis.Veritatis dolorum dolore, amet corporis maiores tempore quaerat similique possimus, ipsam modi id labore sed sequi cumerror recusandae? Ipsum, fugiat."},
    {taskId = 3, requiredcount = 8, rewardXP = 300, taskTitle = "Get Involved in a House Robbery", taskDescription = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit quibusdam accusamus tempora officia perspiciatis.Veritatis dolorum dolore, amet corporis maiores tempore quaerat similique possimus, ipsam modi id labore sed sequi cumerror recusandae? Ipsum, fugiat."},
    {taskId = 4, requiredcount = 20, rewardXP = 400, taskTitle = "Do a bank robbery", taskDescription = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit quibusdam accusamus tempora officia perspiciatis.Veritatis dolorum dolore, amet corporis maiores tempore quaerat similique possimus, ipsam modi id labore sed sequi cumerror recusandae? Ipsum, fugiat."},
    {taskId = 5, requiredcount = 10, rewardXP = 500, taskTitle = "Kill 10 NPC", taskDescription = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit quibusdam accusamus tempora officia perspiciatis.Veritatis dolorum dolore, amet corporis maiores tempore quaerat similique possimus, ipsam modi id labore sed sequi cumerror recusandae? Ipsum, fugiat."},
    {taskId = 6, requiredcount = 5, rewardXP = 600, taskTitle = "Steal 5 Police Car", taskDescription = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit quibusdam accusamus tempora officia perspiciatis.Veritatis dolorum dolore, amet corporis maiores tempore quaerat similique possimus, ipsam modi id labore sed sequi cumerror recusandae? Ipsum, fugiat."},
    {taskId = 7, requiredcount = 20, rewardXP = 700, taskTitle = "Rob 5 people", taskDescription = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit quibusdam accusamus tempora officia perspiciatis.Veritatis dolorum dolore, amet corporis maiores tempore quaerat similique possimus, ipsam modi id labore sed sequi cumerror recusandae? Ipsum, fugiat."},
    {taskId = 8, requiredcount = 10, rewardXP = 800, taskTitle = "Sample task", taskDescription = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit quibusdam accusamus tempora officia perspiciatis.Veritatis dolorum dolore, amet corporis maiores tempore quaerat similique possimus, ipsam modi id labore sed sequi cumerror recusandae? Ipsum, fugiat."},
}
```

{% endtab %}
{% endtabs %}


# ak4y-dailymissions


# Config

{% tabs %}
{% tab title="ESX" %}

```lua
AK4Y = {}

AK4Y.Framework = "esx" -- esx / newEsx | newEsx = export system | esx = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async
AK4Y.StandartTaskDay = 1 -- ALL TASKS ARE ONE DAY
AK4Y.MenuCommand = "dailyTask" -- open menu command

AK4Y.Language = {
    title1 = "AK4Y",
    title2 = "DAILY TASK",
    description = "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet nihil praesentium voluptatum enim expedita unde dolore mollitia officia! Rem amet vel iure optio maxime similique.",
    cancelMission = "CANCEL MISSION",
    remaining = "REMAINING TIME",
    received = "Award Received.",
    error = "An error occured during task purchase",
    reward = "REWARD :",
    lock = "LOCK",
    taskStartPrice = "TASK START PRICE",
    getReward = "GET REWARD",
}

AK4Y.Tasks = {
    {
        taskId = 1,
        name = "Stay in play for 1 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 1 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 30000,
        taskPrice = 15000,
        neededPlayTime = 60, -- MINUTES
        image = "./images/Group10.png",
    },
    {
        taskId = 2,
        name = "Stay in play for 2 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 2 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 40000,
        taskPrice = 20000,
        neededPlayTime = 120, -- MINUTES
        image = "./images/Group11.png",
    },
    {
        taskId = 3,
        name = "Stay in play for 3 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 3 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 50000,
        taskPrice = 25000,
        neededPlayTime = 180, -- MINUTES
        image = "./images/Group12.png",
    },
    {
        taskId = 4,
        name = "Stay in play for 4 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 4 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 60000,
        taskPrice = 30000,
        neededPlayTime = 240, -- MINUTES
        image = "./images/Group13.png",
    },
    {
        taskId = 5,
        name = "Stay in play for 5 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 5 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 70000,
        taskPrice = 35000,
        neededPlayTime = 300, -- MINUTES
        image = "./images/Group14.png",
    },
    {
        taskId = 6,
        name = "Stay in play for 6 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 6 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 80000,
        taskPrice = 40000,
        neededPlayTime = 360, -- MINUTES
        image = "./images/Group16.png",
    },
    {
        taskId = 7,
        name = "Stay in play for 7 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 7 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 90000,
        taskPrice = 45000,
        neededPlayTime = 420, -- MINUTES
        image = "./images/Group17.png",
    },
    {
        taskId = 8,
        name = "Stay in play for 8 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 8 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 100000,
        taskPrice = 50000,
        neededPlayTime = 480, -- MINUTES
        image = "./images/Group18.png",
    },
    {
        taskId = 9,
        name = "Stay in play for 9 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 9 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 200000,
        taskPrice = 75000,
        neededPlayTime = 540, -- MINUTES
        image = "./images/Group19.png",
    },
}
```

{% endtab %}

{% tab title="QBCore" %}

```lua
AK4Y = {}

AK4Y.Framework = "qb" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async
AK4Y.StandartTaskDay = 1 -- ALL TASKS ARE ONE DAY
AK4Y.MenuCommand = "dailyTask" -- open menu command

AK4Y.Language = {
    title1 = "AK4Y",
    title2 = "DAILY TASK",
    description = "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet nihil praesentium voluptatum enim expedita unde dolore mollitia officia! Rem amet vel iure optio maxime similique.",
    cancelMission = "CANCEL MISSION",
    remaining = "REMAINING TIME",
    received = "Award Received.",
    error = "An error occured during task purchase",
    reward = "REWARD :",
    lock = "LOCK",
    taskStartPrice = "TASK START PRICE",
    getReward = "GET REWARD",
}

AK4Y.Tasks = {
    {
        taskId = 1,
        name = "Stay in play for 1 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 1 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 30000,
        taskPrice = 15000,
        neededPlayTime = 60, -- MINUTES
        image = "./images/Group10.png",
    },
    {
        taskId = 2,
        name = "Stay in play for 2 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 2 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 40000,
        taskPrice = 20000,
        neededPlayTime = 120, -- MINUTES
        image = "./images/Group11.png",
    },
    {
        taskId = 3,
        name = "Stay in play for 3 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 3 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 50000,
        taskPrice = 25000,
        neededPlayTime = 180, -- MINUTES
        image = "./images/Group12.png",
    },
    {
        taskId = 4,
        name = "Stay in play for 4 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 4 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 60000,
        taskPrice = 30000,
        neededPlayTime = 240, -- MINUTES
        image = "./images/Group13.png",
    },
    {
        taskId = 5,
        name = "Stay in play for 5 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 5 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 70000,
        taskPrice = 35000,
        neededPlayTime = 300, -- MINUTES
        image = "./images/Group14.png",
    },
    {
        taskId = 6,
        name = "Stay in play for 6 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 6 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 80000,
        taskPrice = 40000,
        neededPlayTime = 360, -- MINUTES
        image = "./images/Group16.png",
    },
    {
        taskId = 7,
        name = "Stay in play for 7 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 7 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 90000,
        taskPrice = 45000,
        neededPlayTime = 420, -- MINUTES
        image = "./images/Group17.png",
    },
    {
        taskId = 8,
        name = "Stay in play for 8 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 8 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 100000,
        taskPrice = 50000,
        neededPlayTime = 480, -- MINUTES
        image = "./images/Group18.png",
    },
    {
        taskId = 9,
        name = "Stay in play for 9 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 9 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 200000,
        taskPrice = 75000,
        neededPlayTime = 540, -- MINUTES
        image = "./images/Group19.png",
    },
}
```

{% endtab %}
{% endtabs %}


# ak4y-advancedFishing


# Config

{% tabs %}
{% tab title="ESX" %}

```lua
AK4Y = {}

AK4Y.Framework = "esx" -- esx / newEsx | newEsx = export system | esx = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async
AK4Y.StandartTaskDay = 1 -- ALL TASKS ARE ONE DAY
AK4Y.MenuCommand = "dailyTask" -- open menu command

AK4Y.Language = {
    title1 = "AK4Y",
    title2 = "DAILY TASK",
    description = "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet nihil praesentium voluptatum enim expedita unde dolore mollitia officia! Rem amet vel iure optio maxime similique.",
    cancelMission = "CANCEL MISSION",
    remaining = "REMAINING TIME",
    received = "Award Received.",
    error = "An error occured during task purchase",
    reward = "REWARD :",
    lock = "LOCK",
    taskStartPrice = "TASK START PRICE",
    getReward = "GET REWARD",
}

AK4Y.Tasks = {
    {
        taskId = 1,
        name = "Stay in play for 1 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 1 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 30000,
        taskPrice = 15000,
        neededPlayTime = 60, -- MINUTES
        image = "./images/Group10.png",
    },
    {
        taskId = 2,
        name = "Stay in play for 2 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 2 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 40000,
        taskPrice = 20000,
        neededPlayTime = 120, -- MINUTES
        image = "./images/Group11.png",
    },
    {
        taskId = 3,
        name = "Stay in play for 3 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 3 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 50000,
        taskPrice = 25000,
        neededPlayTime = 180, -- MINUTES
        image = "./images/Group12.png",
    },
    {
        taskId = 4,
        name = "Stay in play for 4 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 4 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 60000,
        taskPrice = 30000,
        neededPlayTime = 240, -- MINUTES
        image = "./images/Group13.png",
    },
    {
        taskId = 5,
        name = "Stay in play for 5 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 5 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 70000,
        taskPrice = 35000,
        neededPlayTime = 300, -- MINUTES
        image = "./images/Group14.png",
    },
    {
        taskId = 6,
        name = "Stay in play for 6 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 6 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 80000,
        taskPrice = 40000,
        neededPlayTime = 360, -- MINUTES
        image = "./images/Group16.png",
    },
    {
        taskId = 7,
        name = "Stay in play for 7 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 7 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 90000,
        taskPrice = 45000,
        neededPlayTime = 420, -- MINUTES
        image = "./images/Group17.png",
    },
    {
        taskId = 8,
        name = "Stay in play for 8 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 8 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 100000,
        taskPrice = 50000,
        neededPlayTime = 480, -- MINUTES
        image = "./images/Group18.png",
    },
    {
        taskId = 9,
        name = "Stay in play for 9 hour",
        description = "After purchasing the mission, you need to stay in the game for a total of 9 hour within 1 day. If you fail, the money you invested will be lost.",
        reward = 200000,
        taskPrice = 75000,
        neededPlayTime = 540, -- MINUTES
        image = "./images/Group19.png",
    },
}
```

{% endtab %}

{% tab title="QBCore" %}

```lua
Config = {}

Config.Framework = "qb" -- "qb" / "oldqb" : qb = export system , oldqb = triggerevent system
Config.sql = "oxmysql" -- dont forget to change fxmanifest.lua! |ghmattimysql - oxmysql - mysql-async

Config.Settings = {
    ["canOpenWithCommand"] = true, -- CAN THE MENU BE OPENED BY COMMAND
    ["menuOpenCommand"] = "fishmenu", 
    ["addXP"] = {min = 20, max = 100}, -- The amount of xp to be given after fishing
    ["addxpafterXcatch"] = 3, -- How many successful catch after exp awards will be given
    ["needxpforlevelup"] = 500, -- How Many xp needed to level up
    ["addTrashWithoutBait"] = 1, -- HOW MANY MORE TRASH ITEMS WILL APPEAR WITHOUT FISH Bait
    ["rodBrokeChanceWhenUpgrade"] = 20, -- WHAT IS THE CHANCE OF BREAKING THE FISHING ROD DURING LEVEL UPGRADING?
    ["eatBaitChance"] = 20, -- WHAT PERCENTAGE CHANCE THAT THE BAIT WILL DISAPPEAR AFTER FISHING
    ["illegalBaitName"] = "illegal", -- TYPE OF BAIT REQUIRED TO CATCH ILLEGAL FISH
    ["tasksResetDay"] = 3, -- HOW MANY DAYS AFTER THE TASK IS RECEIVED WILL IT BE RESET (EVEN IF 1 TASK IS RECEIVED, ALL TASKS WILL BE DELETED AFTER THE WRITTEN DAY)
}

Config.Language = {
    ["eatBaitText"] = "You've lost your fish bait.",
    ["catchFish"] = "You got caught!",
    ["youCantFishHere"] = "You can't fish here!",
    ["somethingStoppingFish"] = "Something's stopping you from fishing",
    ["movementOnRod"] = "There's movement on your fishing rod!",
    ["missedFish"] = "You missed the fish",
    ["noLeftBait"] = "No bait left at the end of the fishing rod!",
    ["fishingHBStopped"] = "Fishing has been stopped",
    ["illegalCant"] = "You can't catch illegal fish in this area!",
    ["useBaitNotFishing"] = "You must have the fishing rod in your hand to bait the bait!",
    ["youDontHaveItemUPGRADE"] = "You do not have the necessary item for the upgrade!",
    ["upgradedRod"] = "Your fishing rod has been upgraded to the next level!",
    ["brokenRod"] = "Your fishing rod is broken!",
    ["youDontHave"] = "You don't have!",
    ["youDontHaveMoney"] = "You don't have enough money!",
    ["youDontHaveEnoughSpace"] = "You don't have enough space to carry the item!",
    ["youDontHaveWantSell"] = "You don't have the item you want to sell!",
    ["succesBuy"] = "You bought: ",
    ["succesSold"] = "You Sold: ",
}

Config.Customize = {
    title = "AK4Y FISH PASS",
    fishAreaTitle = "Fishes",
    taskAreaTitle = "Your Tasks",
    currentXP = "Current XP:",
    requiredXP = "Required XP:",
}

Config.FishLevels = { -- ALL FISH THAT CAN BE KEPT ATTACHED IN THE FISHING SYSTEM AND FISH LEVELS (THIS AREA NOT FISHINGROD LEVEL) (ALL FISH MUST BE ATTACHED)
    ["anchovy"] = 1,
    ["smallbluefish"] = 2,
    ["bluefish"] = 5,
    ["bonitosfish"] = 9,
    ["garfish"] = 11,
    ["perch"] = 13,
    ["carettacaretta"] = 15,
    ["pantfish"] = 18,
    ["sharkfish"] = 20,
    ["whitepearl"] = 1,
    ["bluepearl"] = 1,
    ["redpearl"] = 1,
    ["greenpearl"] = 1,
    ["yellowpearl"] = 1,
}

Config.fishingRods = { -- FISHING RODS, ITEM NAMES AND LEVELS
    {itemName = "fishingrod1", level = 1},
    {itemName = "fishingrod2", level = 2},
    {itemName = "fishingrod3", level = 3},
    {itemName = "fishingrod4", level = 4},
    {itemName = "fishingrod5", level = 5},
}

Config.fishBaits = { -- FISH BAITS AND FEED TYPES
    {itemName = "fishbait", baitType = "fish", label = "Fish Bait"},
    {itemName = "illegalFishBait", baitType = "illegal", label = "Illegal Fish Bait"},
}

-- MUST START WITH TABLE 1 - TABLE 1 ACTUALLY POINTS TO LEVEL 2 FISHING ROD
Config.upgradeRodPrices = { -- PRICE LIST FOR FISHING ROD UPGRADE
    [1] = 500, -- LEVEL 2 
    [2] = 1000, -- LEVEL 3
    [3] = 1500, -- LEVEL 4 
    [4] = 2000, -- LEVEL 5
}

Config.fishMenuArea = { -- GO NEXT TO IT AND PRESS E TO OPEN THE /FISH MENU
    {
        pedName = "AKAY", 
        pedHash = 0x0B881AEE, 
        pedCoord = vector3(-1818.09, -1215.68, 12.017),
        drawText = "[E] - Fisher Man",
        h = 54,
        blipSettings = { -- https://docs.fivem.net/docs/game-references/blips/
            blip = false,
            blipName = "Fisher Man",
            blipIcon = 68,
            blipColour = 3,
        },
    },
    {
        pedName = "AKAY", 
        pedHash = 0x0B881AEE, 
        pedCoord = vector3(-3055.97, 16.07758, 4.4954),
        drawText = "[E] - Fisher Man",
        h = 230,
        blipSettings = { -- https://docs.fivem.net/docs/game-references/blips/
            blip = false,
            blipName = "Fisher Man",
            blipIcon = 68,
            blipColour = 3,
        },
    },
}

Config.upgradeRodArea = { -- ROD LEVEL UPGRADE AREAS
    {
        pedName = "AKAY", 
        pedHash = 0x1EEC7BDC, 
        pedCoord = vector3(-1820.26, -1220.52, 12.017), 
        drawText = "[E] - Upgrade Rod",
        h = 54,
        blipSettings = { -- https://docs.fivem.net/docs/game-references/blips/
            blip = false,
            blipName = "Upgrade Rod",
            blipIcon = 68,
            blipColour = 3,
        },
    },
    {
        pedName = "AKAY", 
        pedHash = 0x1EEC7BDC, 
        pedCoord = vector3(-3058.65, 12.83765, 4.4954), 
        drawText = "[E] - Upgrade Rod",
        h = 230,
        blipSettings = { -- https://docs.fivem.net/docs/game-references/blips/
            blip = false,
            blipName = "Upgrade Rod",
            blipIcon = 68,
            blipColour = 3,
        },
    },
}

Config.marketArea = { -- MARKET AREAS (BUYING AND SELLING)
    {
        pedName = "AKAY", 
        pedHash = 0xAE5BE23A, 
        pedCoord = vector3(-1814.30, -1213.02, 12.017), 
        drawText = "[E] - Fish Shop",
        h = 54,
        blipSettings = { -- https://docs.fivem.net/docs/game-references/blips/
            blip = false,
            blipName = "Fish Shop",
            blipIcon = 68,
            blipColour = 3,
        },
    },
    {
        pedName = "AKAY", 
        pedHash = 0xAE5BE23A, 
        pedCoord = vector3(-3061.26, 9.376700, 4.4954), 
        drawText = "[E] - Fish Shop",
        h = 230,
        blipSettings = { -- https://docs.fivem.net/docs/game-references/blips/
            blip = false,
            blipName = "Fish Shop",
            blipIcon = 68,
            blipColour = 3,
        },
    },
}

Config.buyMarketItems = { -- LIST OF ITEMS SOLD IN THE FISH MARKET (BUY MENU)
    {itemId = 1, itemName = "fishingrod1", itemLabel = "Fishingrod 1Lv.", itemPrice = 50, image = './css/imgs/fishingrod.png'},
    {itemId = 2, itemName = "fishbait", itemLabel = "Fish Bait", itemPrice = 5, image = './css/imgs/fishbait.png'},
    {itemId = 3, itemName = "illegalFishBait", itemLabel = "Illegal Fish Bait", itemPrice = 30, image = './css/imgs/illegalFishBait.png'},
}

Config.Zones = { -- FISHING AREAS
    { -- Motel
        coords = vector3(-1857.24, -1225.67, 13.017), -- FISHING AREA COORDINATES
        radius = 150, -- RADIUS LEVEL OF THE ABOVE COORDINATE 
        blipSettings = { -- https://docs.fivem.net/docs/game-references/blips/
            blip = false,
            blipAlpha = true,
            blipName = "Fish Area",
            blipIcon = 68,
            blipColour = 3,
            blipAlphaColour = 2,
        },
        trashChance = 15, -- WHAT PERCENTAGE OF TRASH ITEMS WILL BE GIVEN WHILE FISHING IN THIS COORDINATE
        rareChance = 5, -- WHAT PERCENTAGE OF VALUABLE ITEMS WILL BE GIVEN WHEN FISHING IN THIS COORDINATE
        illegal = false, -- CAN AN ILLEGAL ITEM BE HELD IN THIS COORDINATE?
        items = { -- ITEMS THAT WILL APPEAR WHILE FISHING IN THIS COORDINATION
            trashItems = {"fishbait", "fish"}, -- TRASH ITEMS
            rare = { -- RARE ITEMS
                rodLevel = {
                    [1] = {"whitepearl"}, -- WHAT CAN BE CAUGHT WITH 1 LEVEL FISHING ROD
                    [2] = {"whitepearl", "bluepearl"}, -- WHAT CAN BE CAUGHT WITH 2 LEVEL FISHING ROD
                    [3] = {"whitepearl", "bluepearl","redpearl"}, -- WHAT CAN BE CAUGHT WITH 3 LEVEL FISHING ROD
                    [4] = {"whitepearl", "bluepearl","redpearl","yellowpearl"}, -- WHAT CAN BE CAUGHT WITH 4 LEVEL FISHING ROD
                    [5] = {"whitepearl", "bluepearl","redpearl","yellowpearl","greenpearl"}, -- WHAT CAN BE CAUGHT WITH 5 LEVEL FISHING ROD
                },
            },
            normal = { -- NORMAL ITEMS 
                rodLevel = {
                    [1] = {"anchovy"}, -- WHAT CAN BE CAUGHT WITH 1 LEVEL FISHING ROD
                    [2] = {"anchovy", "smallbluefish"}, -- WHAT CAN BE CAUGHT WITH 2 LEVEL FISHING ROD 
                    [3] = {"anchovy", "smallbluefish", "bluefish","bonitosfish"}, -- WHAT CAN BE CAUGHT WITH 3 LEVEL FISHING ROD
                    [4] = {"anchovy", "smallbluefish", "bluefish","bonitosfish","garfish"}, -- WHAT CAN BE CAUGHT WITH 4 LEVEL FISHING ROD
                    [5] = {"anchovy", "smallbluefish", "bluefish","bonitosfish","garfish","perch"}, -- WHAT CAN BE CAUGHT WITH 5 LEVEL FISHING ROD
                },
            },
            illegal = { -- ILLEGAL ITEMS
                rodLevel = {
                    [1] = {"anchovy"}, -- WHAT CAN BE CAUGHT WITH 1 LEVEL FISHING ROD
                    [2] = {"anchovy", "smallbluefish"}, -- WHAT CAN BE CAUGHT WITH 2 LEVEL FISHING ROD
                    [3] = {"anchovy", "smallbluefish", "bluefish","bonitosfish"}, -- WHAT CAN BE CAUGHT WITH 3 LEVEL FISHING ROD
                    [4] = {"carettacaretta", "pantolobaligi"}, -- WHAT CAN BE CAUGHT WITH 4 LEVEL FISHING ROD
                    [5] = {"carettacaretta", "pantolobaligi","sharkfish"}, -- WHAT CAN BE CAUGHT WITH 5 LEVEL FISHING ROD
                },
            },
        },
    }, 

    { -- ILLEGAL AREA
        coords = vector3(-3747.00, -1919.14, -0.234), -- FISHING AREA COORDINATES
        radius = 300, -- RADIUS LEVEL OF THE ABOVE COORDINATE 
        blipSettings = { -- https://docs.fivem.net/docs/game-references/blips/
            blip = true,
            blipAlpha = true,
            blipName = "Illegal Fish Area",
            blipIcon = 68,
            blipColour = 3,
            blipAlphaColour = 49,
        },
        trashChance = 70, -- WHAT PERCENTAGE OF TRASH ITEMS WILL BE GIVEN WHILE FISHING IN THIS COORDINATE
        rareChance = 15, -- WHAT PERCENTAGE OF VALUABLE ITEMS WILL BE GIVEN WHEN FISHING IN THIS COORDINATE
        illegal = true, -- CAN AN ILLEGAL ITEM BE HELD IN THIS COORDINATE?
        items = { -- ITEMS THAT WILL APPEAR WHILE FISHING IN THIS COORDINATION
            trashItems = {"illegalFishBait","fish"}, -- TRASH ITEMS
            rare = { -- RARE ITEMS
                rodLevel = {
                    [1] = {"whitepearl"}, -- WHAT CAN BE CAUGHT WITH 1 LEVEL FISHING ROD
                    [2] = {"whitepearl", "bluepearl"}, -- WHAT CAN BE CAUGHT WITH 2 LEVEL FISHING ROD
                    [3] = {"whitepearl", "bluepearl","redpearl"}, -- WHAT CAN BE CAUGHT WITH 3 LEVEL FISHING ROD
                    [4] = {"whitepearl", "bluepearl","redpearl","yellowpearl"}, -- WHAT CAN BE CAUGHT WITH 4 LEVEL FISHING ROD
                    [5] = {"whitepearl", "bluepearl","redpearl","yellowpearl","greenpearl"}, -- WHAT CAN BE CAUGHT WITH 5 LEVEL FISHING ROD
                },
            },
            normal = { -- NORMAL ITEMS 
                rodLevel = {
                    [1] = {"anchovy"}, -- WHAT CAN BE CAUGHT WITH 1 LEVEL FISHING ROD
                    [2] = {"anchovy", "smallbluefish"}, -- WHAT CAN BE CAUGHT WITH 2 LEVEL FISHING ROD 
                    [3] = {"anchovy", "smallbluefish", "bluefish","bonitosfish"}, -- WHAT CAN BE CAUGHT WITH 3 LEVEL FISHING ROD
                    [4] = {"anchovy", "smallbluefish", "bluefish","bonitosfish","garfish"}, -- WHAT CAN BE CAUGHT WITH 4 LEVEL FISHING ROD
                    [5] = {"anchovy", "smallbluefish", "bluefish","bonitosfish","garfish","perch"}, -- WHAT CAN BE CAUGHT WITH 5 LEVEL FISHING ROD
                },
            },
            illegal = { -- ILLEGAL ITEMS
                rodLevel = {
                    [1] = {"anchovy"}, -- WHAT CAN BE CAUGHT WITH 1 LEVEL FISHING ROD
                    [2] = {"anchovy", "smallbluefish"}, -- WHAT CAN BE CAUGHT WITH 2 LEVEL FISHING ROD
                    [3] = {"anchovy", "smallbluefish", "bluefish","bonitosfish"}, -- WHAT CAN BE CAUGHT WITH 3 LEVEL FISHING ROD
                    [4] = {"carettacaretta", "pantolobaligi"}, -- WHAT CAN BE CAUGHT WITH 4 LEVEL FISHING ROD
                    [5] = {"carettacaretta", "pantolobaligi","sharkfish"}, -- WHAT CAN BE CAUGHT WITH 5 LEVEL FISHING ROD
                },
            },
        },
    },
}

Config.Tasks = { -- TASKS APPEARING ON THE FISH MENU
    {
        taskId = 1, -- TASK NUMBER (ALL TASKS MUST BE NUMBERED DIFFERENTLY AND SEQUENTIALLY)
        taskName = "Catch 40 Small Bluefish", -- NAME OF THE TASK AS IT APPEARS IN THE MENU
        itemName = "smallbluefish", -- ITEM OF TASK
        moneyRewards = 2000, -- TASK'S PRIZE MONEY
        xpRewards = 500, -- TASK'S XP REWARD
        requiredCount = 40, -- NUMBER OF FISH CATCHES REQUIRED TO COMPLETE THE TASK
        taskDescription = "Receive your reward after successfully completing the mission.",
    },
    {
        taskId = 2, -- TASK NUMBER (ALL TASKS MUST BE NUMBERED DIFFERENTLY AND SEQUENTIALLY)
        taskName = "Catch 30 Bluefish", -- NAME OF THE TASK AS IT APPEARS IN THE MENU
        itemName = "bluefish", -- ITEM OF TASK
        moneyRewards = 3000, -- TASK'S PRIZE MONEY
        xpRewards = 500, -- TASK'S XP REWARD
        requiredCount = 30, -- NUMBER OF FISH CATCHES REQUIRED TO COMPLETE THE TASK
        taskDescription = "Receive your reward after successfully completing the mission.",
    },
    {
        taskId = 3, -- TASK NUMBER (ALL TASKS MUST BE NUMBERED DIFFERENTLY AND SEQUENTIALLY)
        taskName = "Catch 20 Bonitos", -- NAME OF THE TASK AS IT APPEARS IN THE MENU
        itemName = "bonitosfish", -- ITEM OF TASK
        moneyRewards = 4000, -- TASK'S PRIZE MONEY
        xpRewards = 500, -- TASK'S XP REWARD
        requiredCount = 20, -- NUMBER OF FISH CATCHES REQUIRED TO COMPLETE THE TASK
        taskDescription = "Receive your reward after successfully completing the mission.",
    },
    {
        taskId = 4, -- TASK NUMBER (ALL TASKS MUST BE NUMBERED DIFFERENTLY AND SEQUENTIALLY)
        taskName = "Catch 15 Garfish", -- NAME OF THE TASK AS IT APPEARS IN THE MENU
        itemName = "garfish", -- ITEM OF TASK
        moneyRewards = 5000, -- TASK'S PRIZE MONEY
        xpRewards = 500, -- TASK'S XP REWARD
        requiredCount = 15, -- NUMBER OF FISH CATCHES REQUIRED TO COMPLETE THE TASK
        taskDescription = "Receive your reward after successfully completing the mission.",
    },
    {
        taskId = 5, -- TASK NUMBER (ALL TASKS MUST BE NUMBERED DIFFERENTLY AND SEQUENTIALLY)
        taskName = "Catch 10 Perch", -- NAME OF THE TASK AS IT APPEARS IN THE MENU
        itemName = "perch", -- ITEM OF TASK
        moneyRewards = 6000, -- TASK'S PRIZE MONEY
        xpRewards = 500, -- TASK'S XP REWARD
        requiredCount = 10, -- NUMBER OF FISH CATCHES REQUIRED TO COMPLETE THE TASK
        taskDescription = "Receive your reward after successfully completing the mission.",
    },
    {
        taskId = 6, -- TASK NUMBER (ALL TASKS MUST BE NUMBERED DIFFERENTLY AND SEQUENTIALLY)
        taskName = "Catch 20 Shark", -- NAME OF THE TASK AS IT APPEARS IN THE MENU
        itemName = "sharkfish", -- ITEM OF TASK
        moneyRewards = 15000, -- TASK'S PRIZE MONEY
        xpRewards = 500, -- TASK'S XP REWARD
        requiredCount = 20, -- NUMBER OF FISH CATCHES REQUIRED TO COMPLETE THE TASK
        taskDescription = "Receive your reward after successfully completing the mission.",
    },
}

Config.Fishes = { -- /FISH MENU SETTINGS
    {
        id = 1, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        fishName = "Anchovy", -- THE APPARENT NAME OF THE FISH
        itemName = "anchovy", -- ITEM NAME OF THE FISH
        requiredLevel = 1, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        requiredRodLvl = 1, -- FISHING ROD LEVEL AND ABOVE THAT SHOULD BE USED TO CATCH THE FISH
        fishPrice = 10, -- SALE PRICE OF FISH
        onFishMenu = true, -- /FISH APPEARS OR DOES NOT APPEAR ON THE MENU - TRUE: APPEARS _ FALSE: DOES NOT APPEAR
        fishType = "Legal", -- TYPE OF FISH
        image = "./css/imgs/anchovyMiddle.png", -- PICTURE OF THE FISH ON THE FISH MENU
        description = "You can catch this fish on the pier, you need a fishing rod of level 1 or higher to catch the fish!"
    },
    {
        id = 2, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        fishName = "Small Bluefish", -- THE APPARENT NAME OF THE FISH
        itemName = "smallbluefish", -- ITEM NAME OF THE FISH
        requiredLevel = 2, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        requiredRodLvl = 2, -- FISHING ROD LEVEL AND ABOVE THAT SHOULD BE USED TO CATCH THE FISH
        fishPrice = 10, -- SALE PRICE OF FISH
        onFishMenu = true, -- /FISH APPEARS OR DOES NOT APPEAR ON THE MENU - TRUE: APPEARS _ FALSE: DOES NOT APPEAR
        fishType = "Legal", -- TYPE OF FISH
        image = "./css/imgs/smallbluefishMiddle.png", -- PICTURE OF THE FISH ON THE FISH MENU
        description = "You can catch this fish on the pier, you need a fishing rod of level 2 or higher to catch the fish!"
    },
    {
        id = 3, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        fishName = "Bluefish", -- THE APPARENT NAME OF THE FISH
        itemName = "bluefish", -- ITEM NAME OF THE FISH
        requiredLevel = 5, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        requiredRodLvl = 3, -- FISHING ROD LEVEL AND ABOVE THAT SHOULD BE USED TO CATCH THE FISH
        fishPrice = 10, -- SALE PRICE OF FISH
        onFishMenu = true, -- /FISH APPEARS OR DOES NOT APPEAR ON THE MENU - TRUE: APPEARS _ FALSE: DOES NOT APPEAR
        fishType = "Legal", -- TYPE OF FISH
        image = "./css/imgs/bluefishMiddle.png", -- PICTURE OF THE FISH ON THE FISH MENU
        description = "You can catch this fish on the pier, you need a fishing rod of level 3 or higher to catch the fish!"
    },
    {
        id = 4, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        fishName = "Bonitos", -- THE APPARENT NAME OF THE FISH
        itemName = "bonitosfish", -- ITEM NAME OF THE FISH
        requiredLevel = 9, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        requiredRodLvl = 3, -- FISHING ROD LEVEL AND ABOVE THAT SHOULD BE USED TO CATCH THE FISH
        fishPrice = 10, -- SALE PRICE OF FISH
        onFishMenu = true, -- /FISH APPEARS OR DOES NOT APPEAR ON THE MENU - TRUE: APPEARS _ FALSE: DOES NOT APPEAR
        fishType = "Legal", -- TYPE OF FISH
        image = "./css/imgs/bonitosfishMiddle.png", -- PICTURE OF THE FISH ON THE FISH MENU
        description = "You can catch this fish on the pier, you need a fishing rod of level 3 or higher to catch the fish!"
    },
    {
        id = 5, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        fishName = "Garfish", -- THE APPARENT NAME OF THE FISH
        itemName = "garfish", -- ITEM NAME OF THE FISH
        requiredLevel = 11, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        requiredRodLvl = 4, -- FISHING ROD LEVEL AND ABOVE THAT SHOULD BE USED TO CATCH THE FISH
        fishPrice = 10, -- SALE PRICE OF FISH
        onFishMenu = true, -- /FISH APPEARS OR DOES NOT APPEAR ON THE MENU - TRUE: APPEARS _ FALSE: DOES NOT APPEAR
        fishType = "Legal", -- TYPE OF FISH
        image = "./css/imgs/garfishMiddle.png", -- PICTURE OF THE FISH ON THE FISH MENU
        description = "You can catch this fish on the pier, you need a fishing rod of level 4 or higher to catch the fish!"
    },
    {
        id = 6, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        fishName = "Perch", -- THE APPARENT NAME OF THE FISH
        itemName = "perch", -- ITEM NAME OF THE FISH
        requiredLevel = 13, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        requiredRodLvl = 5, -- FISHING ROD LEVEL AND ABOVE THAT SHOULD BE USED TO CATCH THE FISH
        fishPrice = 10, -- SALE PRICE OF FISH
        onFishMenu = true, -- /FISH APPEARS OR DOES NOT APPEAR ON THE MENU - TRUE: APPEARS _ FALSE: DOES NOT APPEAR
        fishType = "Legal", -- TYPE OF FISH
        image = "./css/imgs/perchMiddle.png", -- PICTURE OF THE FISH ON THE FISH MENU
        description = "You can catch this fish on the pier, you need a fishing rod of level 5 or higher to catch the fish!"
    },
    {
        id = 7, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        fishName = "Caretta Caretta", -- THE APPARENT NAME OF THE FISH
        itemName = "carettacaretta", -- ITEM NAME OF THE FISH
        requiredLevel = 15, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        requiredRodLvl = 4, -- FISHING ROD LEVEL AND ABOVE THAT SHOULD BE USED TO CATCH THE FISH
        fishPrice = 10, -- SALE PRICE OF FISH
        onFishMenu = true, -- /FISH APPEARS OR DOES NOT APPEAR ON THE MENU - TRUE: APPEARS _ FALSE: DOES NOT APPEAR
        fishType = "Illegal", -- TYPE OF FISH
        image = "./css/imgs/carettaMiddle.png", -- PICTURE OF THE FISH ON THE FISH MENU
        description = "You can catch this fish offshore, to catch this fish you need a fishing rod of level 4 and above!"
    },
    {
        id = 8, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        fishName = "Pant Fish", -- THE APPARENT NAME OF THE FISH
        itemName = "pantfish", -- ITEM NAME OF THE FISH
        requiredLevel = 18, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        requiredRodLvl = 4, -- FISHING ROD LEVEL AND ABOVE THAT SHOULD BE USED TO CATCH THE FISH
        fishPrice = 10, -- SALE PRICE OF FISH
        onFishMenu = true, -- /FISH APPEARS OR DOES NOT APPEAR ON THE MENU - TRUE: APPEARS _ FALSE: DOES NOT APPEAR
        fishType = "Illegal", -- TYPE OF FISH
        image = "./css/imgs/pantfishMiddle.png", -- PICTURE OF THE FISH ON THE FISH MENU
        description = "You can catch this fish offshore, to catch this fish you need a fishing rod of level 4 and above!"
    },
    {
        id = 9, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        fishName = "Shark", -- THE APPARENT NAME OF THE FISH
        itemName = "sharkfish", -- ITEM NAME OF THE FISH
        requiredLevel = 20, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        requiredRodLvl = 5, -- FISHING ROD LEVEL AND ABOVE THAT SHOULD BE USED TO CATCH THE FISH
        fishPrice = 10, -- SALE PRICE OF FISH
        onFishMenu = true, -- /FISH APPEARS OR DOES NOT APPEAR ON THE MENU - TRUE: APPEARS _ FALSE: DOES NOT APPEAR
        fishType = "Illegal", -- TYPE OF FISH
        image = "./css/imgs/sharkMiddle.png", -- PICTURE OF THE FISH ON THE FISH MENU
        description = "You can catch this fish offshore, to catch this fish you need a fishing rod of level 5 and above!"
    },      
}

Config.sellMenuItems = { -- FISH ON THE FISH SALE MENU
    {
        id = 1, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        requiredLevel = 1, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        fishName = "Tiny Fish", -- THE APPARENT NAME OF THE FISH
        itemName = "fish", -- ITEM NAME OF THE FISH
        fishPrice = 40, -- SALE PRICE OF FISH
        shopImage = "./css/imgs/fish.png", -- PICTURE OF THE FISH ON THE SALES MENU
    },
    {
        id = 2, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        requiredLevel = 1, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        fishName = "Anchovy", -- THE APPARENT NAME OF THE FISH
        itemName = "anchovy", -- ITEM NAME OF THE FISH
        fishPrice = 60, -- SALE PRICE OF FISH
        shopImage = "./css/imgs/anchovy.png", -- PICTURE OF THE FISH ON THE SALES MENU
    },
    {
        id = 3, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        requiredLevel = 2, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        fishName = "Small Bluefish", -- THE APPARENT NAME OF THE FISH
        itemName = "smallbluefish", -- ITEM NAME OF THE FISH
        fishPrice = 80, -- SALE PRICE OF FISH
        shopImage = "./css/imgs/smallbluefish.png", -- PICTURE OF THE FISH ON THE SALES MENU
    },
    {
        id = 4, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        requiredLevel = 5, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        fishName = "Bluefish", -- THE APPARENT NAME OF THE FISH
        itemName = "bluefish", -- ITEM NAME OF THE FISH
        fishPrice = 100, -- SALE PRICE OF FISH
        shopImage = "./css/imgs/bluefish.png", -- PICTURE OF THE FISH ON THE SALES MENU
    },
    {
        id = 5, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        requiredLevel = 9, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        fishName = "Bonitos", -- THE APPARENT NAME OF THE FISH
        itemName = "bonitosfish", -- ITEM NAME OF THE FISH
        fishPrice = 120, -- SALE PRICE OF FISH
        shopImage = "./css/imgs/bonitosfish.png", -- PICTURE OF THE FISH ON THE SALES MENU
    },
    {
        id = 6, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        requiredLevel = 11, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        fishName = "Garfish", -- THE APPARENT NAME OF THE FISH
        itemName = "garfish", -- ITEM NAME OF THE FISH
        fishPrice = 140, -- SALE PRICE OF FISH
        shopImage = "./css/imgs/garfish.png", -- PICTURE OF THE FISH ON THE SALES MENU
    },
    {
        id = 7, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        requiredLevel = 13, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        fishName = "Perch", -- THE APPARENT NAME OF THE FISH
        itemName = "perch", -- ITEM NAME OF THE FISH
        fishPrice = 160, -- SALE PRICE OF FISH
        shopImage = "./css/imgs/perch.png", -- PICTURE OF THE FISH ON THE SALES MENU
    },
    {
        id = 8, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        requiredLevel = 15, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        fishName = "Caretta Caretta", -- THE APPARENT NAME OF THE FISH
        itemName = "carettacaretta", -- ITEM NAME OF THE FISH
        fishPrice = 220, -- SALE PRICE OF FISH
        shopImage = "./css/imgs/carettacaretta.png", -- PICTURE OF THE FISH ON THE SALES MENU
    },
    {
        id = 9, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        requiredLevel = 18, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        fishName = "Pant Fish", -- THE APPARENT NAME OF THE FISH
        itemName = "pantfish", -- ITEM NAME OF THE FISH
        fishPrice = 250, -- SALE PRICE OF FISH
        shopImage = "./css/imgs/pantfish.png", -- PICTURE OF THE FISH ON THE SALES MENU
    },
    {
        id = 10, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        requiredLevel = 20, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        fishName = "Shark", -- THE APPARENT NAME OF THE FISH
        itemName = "sharkfish", -- ITEM NAME OF THE FISH
        fishPrice = 300, -- SALE PRICE OF FISH
        shopImage = "./css/imgs/sharkfish.png", -- PICTURE OF THE FISH ON THE SALES MENU
    },
    {
        id = 11, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        requiredLevel = 1, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        fishName = "White Pearl", -- THE APPARENT NAME OF THE FISH
        itemName = "whitepearl", -- ITEM NAME OF THE FISH
        fishPrice = 200, -- SALE PRICE OF FISH
        shopImage = "./css/imgs/whitepearl.png", -- PICTURE OF THE FISH ON THE SALES MENU
    },    
    {
        id = 12, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        requiredLevel = 1, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        fishName = "Blue Pearl", -- THE APPARENT NAME OF THE FISH
        itemName = "bluepearl", -- ITEM NAME OF THE FISH
        fishPrice = 270, -- SALE PRICE OF FISH
        shopImage = "./css/imgs/bluepearl.png", -- PICTURE OF THE FISH ON THE SALES MENU
    },   
    {
        id = 13, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        requiredLevel = 1, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        fishName = "Red Pearl", -- THE APPARENT NAME OF THE FISH
        itemName = "redpearl", -- ITEM NAME OF THE FISH
        fishPrice = 340, -- SALE PRICE OF FISH
        shopImage = "./css/imgs/redpearl.png", -- PICTURE OF THE FISH ON THE SALES MENU
    },   
    {
        id = 14, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        requiredLevel = 1, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        fishName = "Yellow Pearl", -- THE APPARENT NAME OF THE FISH
        itemName = "yellowpearl", -- ITEM NAME OF THE FISH
        fishPrice = 410, -- SALE PRICE OF FISH
        shopImage = "./css/imgs/yellowpearl.png", -- PICTURE OF THE FISH ON THE SALES MENU
    },
    {
        id = 15, -- FISH ID (ID OF ALL FISH MUST BE DIFFERENT AND SEQUENTIAL)
        requiredLevel = 1, -- DESIRED LEVEL TO KEEP THE FISH (DON'T FORGET TO CHANGE FROM Config.FishLevels)
        fishName = "Green Pearl", -- THE APPARENT NAME OF THE FISH
        itemName = "greenpearl", -- ITEM NAME OF THE FISH
        fishPrice = 480, -- SALE PRICE OF FISH
        shopImage = "./css/imgs/greenpearl.png", -- PICTURE OF THE FISH ON THE SALES MENU
    }, 
}
```

{% endtab %}
{% endtabs %}


# ak4y-pauseMenu


# Config

{% tabs %}
{% tab title="ESX" %}

```lua
AK4Y = {}

AK4Y.Framework = "esx" -- esx or newEsx
AK4Y.ServerWait = 1 * 60000 -- 5 min 
AK4Y.ClientWait = 5 * 60000 -- 5 min 

AK4Y.DiscordURL = "https://www.discord.gg/ak4y"
AK4Y.InstagramURL = "https://www.instagram.com/"
AK4Y.YoutubeURL = "https://www.youtube.com/"

AK4Y.Translate = {
    discord = "DISCORD",
    settings = "SETTINGS",
    resume = "RESUME",
    map = "MAP",
    exit = "EXIT",
    gender = "GENDER",
    male = "Male",
    female = "Female",
    job = "JOB",
    cash = "CASH",
    bank = "BANK",
    money = "MONEY :",
    miniGames = "MINI GAMES",
    miniGamesDesc = "Lorem ipsum, dolot sit amet censectetur adipisicing elit. Culpa, dicta!",
    server = "SERVER",
    online = "ONLINE :",
    you = "You",
    tube = "Tube",
    instagram = "Instagram",
	wantExit = "DO YOU WANT TO EXIT ?",
    cancelButton = "CANCEL",
    exitButton = "EXIT",
}
```

{% endtab %}

{% tab title="QBCore" %}

```lua
AK4Y = {}

AK4Y.Framework = "qb" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.ServerWait = 1 * 60000 -- 5 min 
AK4Y.ClientWait = 5 * 60000 -- 5 min 

AK4Y.DiscordURL = "https://www.discord.gg/ak4y"
AK4Y.InstagramURL = "https://www.instagram.com/"
AK4Y.YoutubeURL = "https://www.youtube.com/"

AK4Y.Translate = {
    discord = "DISCORD",
    settings = "SETTINGS",
    resume = "RESUME",
    map = "MAP",
    exit = "EXIT",
    gender = "GENDER",
    male = "Male",
    female = "Female",
    job = "JOB",
    cash = "CASH",
    bank = "BANK",
    money = "MONEY :",
    miniGames = "MINI GAMES",
    miniGamesDesc = "Lorem ipsum, dolot sit amet censectetur adipisicing elit. Culpa, dicta!",
    server = "SERVER",
    online = "ONLINE :",
    you = "You",
    tube = "Tube",
    instagram = "Instagram",
    wantExit = "DO YOU WANT TO EXIT ?",
    cancelButton = "CANCEL",
    exitButton = "EXIT",
}
```

{% endtab %}
{% endtabs %}


# ak4y-dailyRewards


# Config

{% tabs %}
{% tab title="ESX" %}

```lua
AK4Y = {}

AK4Y.Framework = "esx" -- esx or newEsx
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async

AK4Y.OpenCommand = "dailyRewards"
AK4Y.PlayTime = true -- Does the player have to stay in the game for a certain amount of time to get the award?
AK4Y.Time = 30 * 60000 -- 30 min
AK4Y.AFKCheck = true -- if the player is afk for 10 minutes, the time he/she should have stayed in the game is reset
AK4Y.WeaponsAreItem = false -- if your weapons are item then set it true else set it false
AK4Y.StartDay = { day = 19, month = 9, year = 2022 } -- This is the start of the awards, this is Day 1 - Prizes increase day by day from this date

AK4Y.Notify = function(text)
    ESX.ShowNotification(text)
end

-- Item types: "item", "money", "vehicle", "weapon"
AK4Y.Rewards = {
    { day = 1, itemName = "zentorno", itemLabel = "Zentorno", itemCount = 1, itemType = "vehicle", unique = false, image = "./images/zentorno.png" },
    { day = 2, itemName = "WEAPON_MOLOTOV", itemLabel = "Molotov", itemCount = 1, itemType = "item", unique = true, image = "./images/WEAPON_MOLOTOV.png" },
    { day = 3, itemName = "skateboard", itemLabel = "Skateboard", itemCount = 1, itemType = "money", unique = false, image = "./images/kaykay.png" },
    { day = 4, itemName = "condom", itemLabel = "Condom", itemCount = 3, itemType = "item", unique = false, image = "./images/kondom.png" },
    { day = 5, itemName = "drone_flyer_7", itemLabel = "Drone", itemCount = 1, itemType = "item", unique = false, image = "./images/drone_flyer_7.png" },
    { day = 6, itemName = "clip", itemLabel = "Pistol Ammo", itemCount = 5, itemType = "item", unique = false, image = "./images/clip.png" },
    { day = 7, itemName = "WEAPON_GLOCK", itemLabel = "Glock 19", itemCount = 1, itemType = "item", unique = false, image = "./images/WEAPON_GLOCK.png" },
    { day = 8, itemName = "lockpick", itemLabel = "Lockpick", itemCount = 5, itemType = "item", unique = false, image = "./images/lockpick2.png" },
    { day = 9, itemName = "meth", itemLabel = "meth", itemCount = 25, itemType = "item", unique = false, image = "./images/meth.png" },
    { day = 10, itemName = "smg_ammo", itemLabel = "SMG Ammo", itemCount = 5, itemType = "item", unique = false, image = "./images/smg_ammo.png" },
    { day = 11, itemName = "zentorno", itemLabel = "Zentorno", itemCount = 1, itemType = "vehicle", unique = false, image = "./images/zentorno.png" },
    { day = 12, itemName = "WEAPON_MOLOTOV", itemLabel = "Molotov", itemCount = 1, itemType = "item", unique = true, image = "./images/WEAPON_MOLOTOV.png" },
    { day = 13, itemName = "skateboard", itemLabel = "Skateboard", itemCount = 1, itemType = "money", unique = false, image = "./images/kaykay.png" },
    { day = 14, itemName = "condom", itemLabel = "Condom", itemCount = 3, itemType = "item", unique = false, image = "./images/kondom.png" },
    { day = 15, itemName = "drone_flyer_7", itemLabel = "Drone", itemCount = 1, itemType = "item", unique = false, image = "./images/drone_flyer_7.png" },
    { day = 16, itemName = "clip", itemLabel = "Pistol Ammo", itemCount = 5, itemType = "item", unique = false, image = "./images/clip.png" },
    { day = 17, itemName = "WEAPON_GLOCK", itemLabel = "Glock 19", itemCount = 1, itemType = "item", unique = false, image = "./images/WEAPON_GLOCK.png" },
    { day = 18, itemName = "lockpick", itemLabel = "Lockpick", itemCount = 5, itemType = "item", unique = false, image = "./images/lockpick2.png" },
    { day = 19, itemName = "meth", itemLabel = "meth", itemCount = 25, itemType = "item", unique = false, image = "./images/meth.png" },
    { day = 20, itemName = "smg_ammo", itemLabel = "SMG Ammo", itemCount = 5, itemType = "item", unique = false, image = "./images/smg_ammo.png" },
    { day = 21, itemName = "zentorno", itemLabel = "Zentorno", itemCount = 1, itemType = "vehicle", unique = false, image = "./images/zentorno.png" },
    { day = 22, itemName = "WEAPON_MOLOTOV", itemLabel = "Molotov", itemCount = 1, itemType = "item", unique = true, image = "./images/WEAPON_MOLOTOV.png" },
    { day = 23, itemName = "skateboard", itemLabel = "Skateboard", itemCount = 1, itemType = "money", unique = false, image = "./images/kaykay.png" },
    { day = 24, itemName = "condom", itemLabel = "Condom", itemCount = 3, itemType = "item", unique = false, image = "./images/kondom.png" },
    { day = 25, itemName = "drone_flyer_7", itemLabel = "Drone", itemCount = 1, itemType = "item", unique = false, image = "./images/drone_flyer_7.png" },
    { day = 26, itemName = "clip", itemLabel = "Pistol Ammo", itemCount = 5, itemType = "item", unique = false, image = "./images/clip.png" },
    { day = 27, itemName = "WEAPON_GLOCK", itemLabel = "Glock 19", itemCount = 1, itemType = "item", unique = false, image = "./images/WEAPON_GLOCK.png" },
    { day = 28, itemName = "lockpick", itemLabel = "Lockpick", itemCount = 5, itemType = "item", unique = false, image = "./images/lockpick2.png" },
    { day = 29, itemName = "meth", itemLabel = "meth", itemCount = 25, itemType = "item", unique = false, image = "./images/meth.png" },
    { day = 30, itemName = "smg_ammo", itemLabel = "SMG Ammo", itemCount = 5, itemType = "item", unique = false, image = "./images/smg_ammo.png" },
}

AK4Y.Language = {
    title1 = "AK4Y",
    title2 = "DAILY REWARDS",
    leftDesc = "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Vitae ea neque ipsam, voluptas commodi aperiam repellat laborum omnis architecto, ducimus consequatur nesciunt facilis.",
    nextReward = "FOR THE NEXT REWARD",
    collected = "COLLECTED",
    afk = "Due to prolonged inactivity, the time you need to stay in the game to receive the daily reward has been reset to zero",
    afkWarn = "If you remain inactive, the time you need to stay in the game to receive the daily reward will reset to zero",
}

```

{% endtab %}

{% tab title="QBCore" %}

```lua
AK4Y = {}

AK4Y.Framework = "qb" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async

AK4Y.OpenCommand = "dailyRewards"
AK4Y.PlayTime = true -- Does the player have to stay in the game for a certain amount of time to get the award?
AK4Y.Time = 30 * 60000 -- 30 min
AK4Y.AFKCheck = true -- if the player is afk for 10 minutes, the time he/she should have stayed in the game is reset
AK4Y.DefaultGarage = 'pillboxgarage' -- Garage name where the vehicle will be sent after get reward
AK4Y.StartDay = { day = 19, month = 9, year = 2022 } -- This is the start of the awards, this is Day 1 - Prizes increase day by day from this date

AK4Y.Notify = function(text)
    ESX.ShowNotification(text)
end

-- Item types: "item", "money", "vehicle"
AK4Y.Rewards = {
    { day = 1, itemName = "zentorno", itemLabel = "Zentorno", itemCount = 1, itemType = "vehicle", unique = false, image = "./images/zentorno.png" },
    { day = 2, itemName = "WEAPON_MOLOTOV", itemLabel = "Molotov", itemCount = 1, itemType = "item", unique = true, image = "./images/WEAPON_MOLOTOV.png" },
    { day = 3, itemName = "skateboard", itemLabel = "Skateboard", itemCount = 1, itemType = "money", unique = false, image = "./images/kaykay.png" },
    { day = 4, itemName = "condom", itemLabel = "Condom", itemCount = 3, itemType = "item", unique = false, image = "./images/kondom.png" },
    { day = 5, itemName = "drone_flyer_7", itemLabel = "Drone", itemCount = 1, itemType = "item", unique = false, image = "./images/drone_flyer_7.png" },
    { day = 6, itemName = "clip", itemLabel = "Pistol Ammo", itemCount = 5, itemType = "item", unique = false, image = "./images/clip.png" },
    { day = 7, itemName = "WEAPON_GLOCK", itemLabel = "Glock 19", itemCount = 1, itemType = "item", unique = false, image = "./images/WEAPON_GLOCK.png" },
    { day = 8, itemName = "lockpick", itemLabel = "Lockpick", itemCount = 5, itemType = "item", unique = false, image = "./images/lockpick2.png" },
    { day = 9, itemName = "meth", itemLabel = "meth", itemCount = 25, itemType = "item", unique = false, image = "./images/meth.png" },
    { day = 10, itemName = "smg_ammo", itemLabel = "SMG Ammo", itemCount = 5, itemType = "item", unique = false, image = "./images/smg_ammo.png" },
    { day = 11, itemName = "zentorno", itemLabel = "Zentorno", itemCount = 1, itemType = "vehicle", unique = false, image = "./images/zentorno.png" },
    { day = 12, itemName = "WEAPON_MOLOTOV", itemLabel = "Molotov", itemCount = 1, itemType = "item", unique = true, image = "./images/WEAPON_MOLOTOV.png" },
    { day = 13, itemName = "skateboard", itemLabel = "Skateboard", itemCount = 1, itemType = "money", unique = false, image = "./images/kaykay.png" },
    { day = 14, itemName = "condom", itemLabel = "Condom", itemCount = 3, itemType = "item", unique = false, image = "./images/kondom.png" },
    { day = 15, itemName = "drone_flyer_7", itemLabel = "Drone", itemCount = 1, itemType = "item", unique = false, image = "./images/drone_flyer_7.png" },
    { day = 16, itemName = "clip", itemLabel = "Pistol Ammo", itemCount = 5, itemType = "item", unique = false, image = "./images/clip.png" },
    { day = 17, itemName = "WEAPON_GLOCK", itemLabel = "Glock 19", itemCount = 1, itemType = "item", unique = false, image = "./images/WEAPON_GLOCK.png" },
    { day = 18, itemName = "lockpick", itemLabel = "Lockpick", itemCount = 5, itemType = "item", unique = false, image = "./images/lockpick2.png" },
    { day = 19, itemName = "meth", itemLabel = "meth", itemCount = 25, itemType = "item", unique = false, image = "./images/meth.png" },
    { day = 20, itemName = "smg_ammo", itemLabel = "SMG Ammo", itemCount = 5, itemType = "item", unique = false, image = "./images/smg_ammo.png" },
    { day = 21, itemName = "zentorno", itemLabel = "Zentorno", itemCount = 1, itemType = "vehicle", unique = false, image = "./images/zentorno.png" },
    { day = 22, itemName = "WEAPON_MOLOTOV", itemLabel = "Molotov", itemCount = 1, itemType = "item", unique = true, image = "./images/WEAPON_MOLOTOV.png" },
    { day = 23, itemName = "skateboard", itemLabel = "Skateboard", itemCount = 1, itemType = "money", unique = false, image = "./images/kaykay.png" },
    { day = 24, itemName = "condom", itemLabel = "Condom", itemCount = 3, itemType = "item", unique = false, image = "./images/kondom.png" },
    { day = 25, itemName = "drone_flyer_7", itemLabel = "Drone", itemCount = 1, itemType = "item", unique = false, image = "./images/drone_flyer_7.png" },
    { day = 26, itemName = "clip", itemLabel = "Pistol Ammo", itemCount = 5, itemType = "item", unique = false, image = "./images/clip.png" },
    { day = 27, itemName = "WEAPON_GLOCK", itemLabel = "Glock 19", itemCount = 1, itemType = "item", unique = false, image = "./images/WEAPON_GLOCK.png" },
    { day = 28, itemName = "lockpick", itemLabel = "Lockpick", itemCount = 5, itemType = "item", unique = false, image = "./images/lockpick2.png" },
    { day = 29, itemName = "meth", itemLabel = "meth", itemCount = 25, itemType = "item", unique = false, image = "./images/meth.png" },
    { day = 30, itemName = "smg_ammo", itemLabel = "SMG Ammo", itemCount = 5, itemType = "item", unique = false, image = "./images/smg_ammo.png" },
}

AK4Y.Language = {
    title1 = "AK4Y",
    title2 = "DAILY REWARDS",
    leftDesc = "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Vitae ea neque ipsam, voluptas commodi aperiam repellat laborum omnis architecto, ducimus consequatur nesciunt facilis.",
    nextReward = "FOR THE NEXT REWARD",
    collected = "COLLECTED",
}

```

{% endtab %}
{% endtabs %}


# ak4y-jobSelector


# Config

{% tabs %}
{% tab title="ESX" %}

```lua
AK4Y = {}

AK4Y.Framework = "newEsx" -- esx / newEsx | newEsx = export system | esx = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async
AK4Y.NeededXP = 1000

AK4Y.TebexLink = "https://www.google.com/" -- should be https


AK4Y.JobSelectorArea = {
    {
        pedName = "AKAY", 
        pedHash = 0x909D9E7F, 
        pedCoord = vector3(-268.53, -962.47, 30.22), 
        drawText = "[E] - Job Selector",
        h = 273,
        blipSettings = { -- https://docs.fivem.net/docs/game-references/blips/
            blip = true,
            blipName = "City Hall",
            blipIcon = 68,
            blipColour = 3,
        },
    },
}


AK4Y.Jobs = {
    {
        uniqueId = 1,
        jobName = "police",
        jobGrade = 1,
        label = "POLICE",
        requiredLevel = 1,
        icon = "fa-solid fa-taxi", -- https://fontawesome.com/icons
        jobDescription = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Atque nihil, repellendus quis explicabo veniam ab, placeatmaiores deserunt officia, mollitia beatae pariatur odio culpa quo harum velit sunt suscipit voluptates?",
        background = "./images/taxijob.png",
        miniInfos = {
            "5-10 Minutes Work Time",
            "500-1000 Dollars Eranings",
        }
    },
    {
        uniqueId = 2,
        jobName = "bus",
        jobGrade = 1,
        label = "BUS DRIVER",
        requiredLevel = 1,
        icon = "fa-solid fa-bus", -- https://fontawesome.com/icons
        jobDescription = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Atque nihil, repellendus quis explicabo veniam ab, placeatmaiores deserunt officia, mollitia beatae pariatur odio culpa quo harum velit sunt suscipit voluptates?",
        background = "/html/images/busdriver.png",
        miniInfos = {
            "10-20 Minutes Work Time",
            "1500-2500 Dollars Eranings",
        }
    },
    {
        uniqueId = 3,
        jobName = "trucker",
        jobGrade = 1,
        label = "TRUCKER",
        requiredLevel = 2,
        icon = "fa-solid fa-truck", -- https://fontawesome.com/icons
        jobDescription = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Atque nihil, repellendus quis explicabo veniam ab, placeatmaiores deserunt officia, mollitia beatae pariatur odio culpa quo harum velit sunt suscipit voluptates?",
        background = "/html/images/truckerjob.png",
        miniInfos = {
            "5-10 Minutes Work Time",
            "500-1000 Dollars Eranings",
        }
    },
    {
        uniqueId = 4,
        jobName = "garbage",
        jobGrade = 1,
        label = "COLLECTOR",
        requiredLevel = 2,
        icon = "fa-solid fa-trash", -- https://fontawesome.com/icons
        jobDescription = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Atque nihil, repellendus quis explicabo veniam ab, placeatmaiores deserunt officia, mollitia beatae pariatur odio culpa quo harum velit sunt suscipit voluptates?",
        background = "/html/images/garbage.png",
        miniInfos = {
            "5-10 Minutes Work Time",
            "500-1000 Dollars Eranings",
        }
    },
    {
        uniqueId = 5,
        jobName = "hotdog",
        jobGrade = 1,
        label = "HOTDOG SALER",
        requiredLevel = 3,
        icon = "fa-solid fa-hotdog", -- https://fontawesome.com/icons
        jobDescription = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Atque nihil, repellendus quis explicabo veniam ab, placeatmaiores deserunt officia, mollitia beatae pariatur odio culpa quo harum velit sunt suscipit voluptates?",
        background = "/html/images/hotdog.png",
        miniInfos = {
            "5-10 Minutes Work Time",
            "500-1000 Dollars Eranings",
        }
    },
    {
        uniqueId = 6,
        jobName = "reporter",
        jobGrade = 1,
        label = "JOURNALIST",
        requiredLevel = 4,
        icon = "fa-solid fa-camera", -- https://fontawesome.com/icons
        jobDescription = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Atque nihil, repellendus quis explicabo veniam ab, placeatmaiores deserunt officia, mollitia beatae pariatur odio culpa quo harum velit sunt suscipit voluptates?",
        background = "/html/images/reporter.png",
        miniInfos = {
            "5-10 Minutes Work Time",
            "500-1000 Dollars Eranings",
        }
    },
    {
        uniqueId = 7,
        jobName = "lawyer",
        jobGrade = 1,
        label = "Associate",
        requiredLevel = 5,
        icon = "fa-solid fa-gavel", -- https://fontawesome.com/icons
        jobDescription = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Atque nihil, repellendus quis explicabo veniam ab, placeatmaiores deserunt officia, mollitia beatae pariatur odio culpa quo harum velit sunt suscipit voluptates?",
        background = "/html/images/lawyer.png",
        miniInfos = {
            "5-10 Minutes Work Time",
            "500-1000 Dollars Eranings",
        }
    },
    {
        uniqueId = 8,
        jobName = "realestate",
        jobGrade = 1,
        label = "Real Estate",
        requiredLevel = 6,
        icon = "fa-solid fa-house-user", -- https://fontawesome.com/icons
        jobDescription = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Atque nihil, repellendus quis explicabo veniam ab, placeatmaiores deserunt officia, mollitia beatae pariatur odio culpa quo harum velit sunt suscipit voluptates?",
        background = "/html/images/realestate.png",
        miniInfos = {
            "5-10 Minutes Work Time",
            "500-1000 Dollars Eranings",
        }
    },
}

AK4Y.Language = {
    startNow = "START NOW",
    insufficientLevel = "INSUFFICIENT LEVEL",
    currentJob = "THE CURRENT JOB:",
    levelBuy = "LEVEL BUY",
    requiredEXP = "REQUIRED EXP",
    lvl = "LVL",
    level = "LEVEL",
    start = "START",
    redeemCode = "REDEEM CODE",
    accept = "ACCEPT",
    dontHave = "DON'T YOU HAVE A REDEEM CODE?",
    buyCode = "BUY CODE",
    succesfully = "SUCCESSFULLY",
    selected = "SELECTED",
    loaded = "LOADED",
}
```

{% endtab %}

{% tab title="QBCore" %}

```lua
AK4Y = {}

AK4Y.Framework = "qb" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async
AK4Y.NeededXP = 1000

AK4Y.TebexLink = "https://www.google.com/" -- should be https

AK4Y.JobSelectorArea = {
    {
        pedName = "AKAY", 
        pedHash = 0x909D9E7F, 
        pedCoord = vector3(-268.53, -962.47, 30.22), 
        drawText = "[E] - Job Selector",
        h = 273,
        blipSettings = { -- https://docs.fivem.net/docs/game-references/blips/
            blip = true,
            blipName = "City Hall",
            blipIcon = 68,
            blipColour = 3,
        },
    },
}


AK4Y.Jobs = {
    {
        uniqueId = 1,
        jobName = "taxi",
        jobGrade = 1,
        label = "TAXI DRIVER",
        requiredLevel = 1,
        icon = "fa-solid fa-taxi", -- https://fontawesome.com/icons
        jobDescription = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Atque nihil, repellendus quis explicabo veniam ab, placeatmaiores deserunt officia, mollitia beatae pariatur odio culpa quo harum velit sunt suscipit voluptates?",
        background = "./images/taxijob.png",
        miniInfos = {
            "5-10 Minutes Work Time",
            "500-1000 Dollars Eranings",
        }
    },
    {
        uniqueId = 2,
        jobName = "bus",
        jobGrade = 1,
        label = "BUS DRIVER",
        requiredLevel = 1,
        icon = "fa-solid fa-bus", -- https://fontawesome.com/icons
        jobDescription = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Atque nihil, repellendus quis explicabo veniam ab, placeatmaiores deserunt officia, mollitia beatae pariatur odio culpa quo harum velit sunt suscipit voluptates?",
        background = "/html/images/busdriver.png",
        miniInfos = {
            "10-20 Minutes Work Time",
            "1500-2500 Dollars Eranings",
        }
    },
    {
        uniqueId = 3,
        jobName = "trucker",
        jobGrade = 1,
        label = "TRUCKER",
        requiredLevel = 2,
        icon = "fa-solid fa-truck", -- https://fontawesome.com/icons
        jobDescription = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Atque nihil, repellendus quis explicabo veniam ab, placeatmaiores deserunt officia, mollitia beatae pariatur odio culpa quo harum velit sunt suscipit voluptates?",
        background = "/html/images/truckerjob.png",
        miniInfos = {
            "5-10 Minutes Work Time",
            "500-1000 Dollars Eranings",
        }
    },
    {
        uniqueId = 4,
        jobName = "garbage",
        jobGrade = 1,
        label = "COLLECTOR",
        requiredLevel = 2,
        icon = "fa-solid fa-trash", -- https://fontawesome.com/icons
        jobDescription = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Atque nihil, repellendus quis explicabo veniam ab, placeatmaiores deserunt officia, mollitia beatae pariatur odio culpa quo harum velit sunt suscipit voluptates?",
        background = "/html/images/garbage.png",
        miniInfos = {
            "5-10 Minutes Work Time",
            "500-1000 Dollars Eranings",
        }
    },
    {
        uniqueId = 5,
        jobName = "hotdog",
        jobGrade = 1,
        label = "HOTDOG SALER",
        requiredLevel = 3,
        icon = "fa-solid fa-hotdog", -- https://fontawesome.com/icons
        jobDescription = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Atque nihil, repellendus quis explicabo veniam ab, placeatmaiores deserunt officia, mollitia beatae pariatur odio culpa quo harum velit sunt suscipit voluptates?",
        background = "/html/images/hotdog.png",
        miniInfos = {
            "5-10 Minutes Work Time",
            "500-1000 Dollars Eranings",
        }
    },
    {
        uniqueId = 6,
        jobName = "reporter",
        jobGrade = 1,
        label = "JOURNALIST",
        requiredLevel = 4,
        icon = "fa-solid fa-camera", -- https://fontawesome.com/icons
        jobDescription = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Atque nihil, repellendus quis explicabo veniam ab, placeatmaiores deserunt officia, mollitia beatae pariatur odio culpa quo harum velit sunt suscipit voluptates?",
        background = "/html/images/reporter.png",
        miniInfos = {
            "5-10 Minutes Work Time",
            "500-1000 Dollars Eranings",
        }
    },
    {
        uniqueId = 7,
        jobName = "lawyer",
        jobGrade = 1,
        label = "Associate",
        requiredLevel = 5,
        icon = "fa-solid fa-gavel", -- https://fontawesome.com/icons
        jobDescription = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Atque nihil, repellendus quis explicabo veniam ab, placeatmaiores deserunt officia, mollitia beatae pariatur odio culpa quo harum velit sunt suscipit voluptates?",
        background = "/html/images/lawyer.png",
        miniInfos = {
            "5-10 Minutes Work Time",
            "500-1000 Dollars Eranings",
        }
    },
    {
        uniqueId = 8,
        jobName = "realestate",
        jobGrade = 1,
        label = "Real Estate",
        requiredLevel = 6,
        icon = "fa-solid fa-house-user", -- https://fontawesome.com/icons
        jobDescription = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Atque nihil, repellendus quis explicabo veniam ab, placeatmaiores deserunt officia, mollitia beatae pariatur odio culpa quo harum velit sunt suscipit voluptates?",
        background = "/html/images/realestate.png",
        miniInfos = {
            "5-10 Minutes Work Time",
            "500-1000 Dollars Eranings",
        }
    },
}

AK4Y.Language = {
    startNow = "START NOW",
    insufficientLevel = "INSUFFICIENT LEVEL",
    currentJob = "THE CURRENT JOB:",
    levelBuy = "LEVEL BUY",
    requiredEXP = "REQUIRED EXP",
    lvl = "LVL",
    level = "LEVEL",
    start = "START",
    redeemCode = "REDEEM CODE",
    accept = "ACCEPT",
    dontHave = "DON'T YOU HAVE A REDEEM CODE?",
    buyCode = "BUY CODE",
    succesfully = "SUCCESSFULLY",
    selected = "SELECTED",
    loaded = "LOADED",
}
```

{% endtab %}
{% endtabs %}


# ak4y-advancedHunting


# Config

{% tabs %}
{% tab title="ESX" %}

````lua
```lua

AK4Y = {}

AK4Y.Framework = "newEsx" -- esx or newEsx
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async

AK4Y.UpdateXP = {min = 5, max = 10} --How many xp do you want to increase for collection
AK4Y.MaxLevel = 15
AK4Y.TaskResetPeriod = 1 -- DAY
AK4Y.PaymentMethod = "cash" -- "cash" or "bank"
AK4Y.NeededEXP = 1000 -- for level up
AK4Y.OnlyShootInZone = true
AK4Y.WeaponType = "item"

AK4Y.NPCAreas = {
    {
        pedName = "AKAY", 
        pedHash = 0x1EEC7BDC, 
        pedCoord = vector3(-679.14, 5834.51, 16.33), 
        drawText = "[E] - Hunting NPC",
        h = 132.41,
        blipSettings = { -- https://docs.fivem.net/docs/game-references/blips/
            blip = true,
            blipName = "Hunting NPC",
            blipIcon = 154,
            blipColour = 1,
        },
    }, 
}

AK4Y.WikiPage = {
    {
        starCount = 1, -- max 5
        areaTitle = "POULTRY",
        areaMiniTitle = "CHICKEN FARMING",
        areaDescription = "In this area; you can catch chickens. A good introduction to hunting!",
        allowedWeapons = {
            "-",
        },
        animals = {
            "CHICKEN"
        },
        areaCoords = vector3(1447.7864, 1066.3145, 114.33869),
        areaImage = "./images/chickenArea.png",
    },
    {
        starCount = 3, -- max 5
        areaTitle = "PIG HUNTER",
        areaMiniTitle = "Killer of pigs",
        areaDescription = "The next hunting point after poultry :D, Their meat is of high quality. It's a good profit!",
        allowedWeapons = {
            "KNIFE",
            "HUNTING RIFLE",
        },
        animals = {
            "PIG"
        },
        areaCoords = vector3(3681.69, 4520.4, 23.64),
        areaImage = "./images/area_1.png",
    },
    {
        starCount = 5, -- max 5
        areaTitle = "DEER HUNTING",
        areaMiniTitle = "The Last Point",
        areaDescription = "The ultimate in hunting! If you can catch something here, you're a real hunter! ",
        allowedWeapons = {
            "KNIFE",
            "HUNTING RIFLE",
        },
        animals = {
            "DEER"
        },
        areaCoords = vector3(-543.85, 5524.41, 61.03),
        areaImage = "./images/deerArea.png",
    },
}

AK4Y.MarketPage = {
    {
        uniqueId = 1,
        itemLabel = "HUNTING RIFLE",
        itemName = "weapon_sniperrifle",
        itemType = "item", -- item or weapon
        itemCount = 1,
        itemPrice = 500,
        itemImage = "./images/shotgunItem.png",
    },
    {
        uniqueId = 2,
        itemLabel = "HUNTING KNIFE",
        itemName = "hunting_knife",
        itemType = "item", -- item or weapon
        itemCount = 1,
        itemPrice = 100,
        itemImage = "./images/HuntingKnife.png",
    },
    {
        uniqueId = 3,
        itemLabel = "Poor Quality Deer Bait",
        itemName = "deer_bait",
        itemType = "item", -- item or weapon
        itemCount = 1,
        itemPrice = 10,
        itemImage = "./images/lowDeerBait.png",
    },
    {
        uniqueId = 4,
        itemLabel = "High Quality Deer Bait",
        itemName = "deer_bait2",
        itemType = "item", -- item or weapon
        itemCount = 1,
        itemPrice = 15,
        itemImage = "./images/highDeerBait.png",
    },
    {
        uniqueId = 5,
        itemLabel = "Poor Quality Pig Bait",
        itemName = "pig_bait",
        itemType = "item", -- item or weapon
        itemCount = 1,
        itemPrice = 7,
        itemImage = "./images/lowPigBait.png",
    },
    {
        uniqueId = 6,
        itemLabel = "High Quality Pig Bait",
        itemName = "pig_bait2",
        itemType = "item", -- item or weapon
        itemCount = 1,
        itemPrice = 9,
        itemImage = "./images/highPigBait.png",
    },
}

AK4Y.SellItems = {
    {
        uniqueId = 1,
        itemLabel = "Poor Quality Deer Meat",
        itemName = "deer_meat",
        itemStar = 4, -- MAX 5
        itemPrice = 200,
        itemImage = "./images/lowDeerMeat.png",
    },
    {
        uniqueId = 2,
        itemLabel = "High Quality Deer Meat",
        itemName = "deer_meat2",
        itemStar = 5, -- MAX 5
        itemPrice = 290,
        itemImage = "./images/highDeerMeat.png",
    },
    {
        uniqueId = 3,
        itemLabel = "Poor Quality Pig Meat",
        itemName = "pig_meat",
        itemStar = 2, -- MAX 5
        itemPrice = 120,
        itemImage = "./images/lowPigMeat.png",
    },
    {
        uniqueId = 4,
        itemLabel = "High Quality Pig Meat",
        itemName = "pig_meat2",
        itemStar = 3, -- MAX 5
        itemPrice = 170,
        itemImage = "./images/highPigMeat.png",
    },
    {
        uniqueId = 5,
        itemLabel = "Poor Quality Chicken Meat",
        itemName = "chicken_meat",
        itemStar = 0, -- MAX 5
        itemPrice = 40,
        itemImage = "./images/lowChickenMeat.png",
    },
    {
        uniqueId = 6,
        itemLabel = "High Quality Chicken Meat",
        itemName = "chicken_meat2",
        itemStar = 1, -- MAX 5
        itemPrice = 55,
        itemImage = "./images/highChickenMeat.png",
    },
}

AK4Y.Tasks = {
    {
        taskId = 1,
        taskTitle = "Cath 10 Chicken",
        taskDescription = "Cath 10 chicken and earn xp",
        rewardPrice = 10000,
        requiredCount = 10,
    },
    {
        taskId = 2,
        taskTitle = "Cut 10 Pig",
        taskDescription = "Cut 10 pig and earn xp",
        rewardPrice = 10000,
        requiredCount = 10,
    },
    {
        taskId = 3,
        taskTitle = "Cut 10 Deer",
        taskDescription = "Cut 10 deer and earn xp",
        rewardPrice = 10000,
        requiredCount = 10,
    },
    {
        taskId = 4,
        taskTitle = "Place 10 Pig Bait",
        taskDescription = "Place 10 pig bait and earn xp",
        rewardPrice = 10000,
        requiredCount = 10,
    },
    {
        taskId = 5,
        taskTitle = "Place 10 Deer Bait",
        taskDescription = "Place 10 deer bait and earn xp",
        rewardPrice = 10000,
        requiredCount = 10,
    },
    {
        taskId = 6,
        taskTitle = "Find 10 Rare Chicken Meat",
        taskDescription = "Find 10 rare chicken meat and earn xp",
        rewardPrice = 10000,
        requiredCount = 10,
    },
    {
        taskId = 7,
        taskTitle = "Find 10 Rare Pig Meat",
        taskDescription = "Find 10 rare chicken meat and earn xp",
        rewardPrice = 10000,
        requiredCount = 10,
    },
    {
        taskId = 8,
        taskTitle = "Find 10 Rare Deer Meat",
        taskDescription = "Find 10 rare chicken meat and earn xp",
        rewardPrice = 10000,
        requiredCount = 10,
    },
}

AK4Y.LevelPackages = {
    {
        packageId = 1,
        upLevel = 1,
        realPrice = 10,
        directLink = "https://www.google.com/",
    },
    {
        packageId = 2,
        upLevel = 2,
        realPrice = 20,
        directLink = "https://www.google.com/",
    },
    {
        packageId = 3,
        upLevel = 3,
        realPrice = 25,
        directLink = "https://www.google.com/",
    },
    {
        packageId = 4,
        upLevel = 4,
        realPrice = 30,
        directLink = "https://www.google.com/",
    },
    {
        packageId = 5,
        upLevel = 5,
        realPrice = 35,
        directLink = "https://www.google.com/",
    },
    {
        packageId = 6,
        upLevel = 6,
        realPrice = 40,
        directLink = "https://ak4y.tebex.io/package/5526695",
    },
}


function NOTIFY(message)
    ESX.ShowNotification(message)
end

function PlaceBait(baittype)
    -- baittype return placed bait type
    if baittype == "a_c_pig" then
        TriggerServerEvent('ak4y-advancedHunting:taskCountAdd', 4, 1)
    elseif baittype == "a_c_deer" then
        TriggerServerEvent('ak4y-advancedHunting:taskCountAdd', 5, 1)
    end
end

function CutAnimal(animal)
    -- animal return cutted animal hash
    print(animal)
    if animal == 1794449327 then
        TriggerServerEvent('ak4y-advancedHunting:taskCountAdd', 1, 1)
    elseif animal == -1323586730 then
        TriggerServerEvent('ak4y-advancedHunting:taskCountAdd', 2, 1)
    elseif animal == -664053099 then
        TriggerServerEvent('ak4y-advancedHunting:taskCountAdd', 3, 1)
    end
end

function EarnRareItem(animal)
    -- animal return earned rare item animal hash
    if animal == 1794449327 then
        TriggerServerEvent('ak4y-advancedHunting:taskCountAdd', 6, 1)
    elseif animal == -1323586730 then
        TriggerServerEvent('ak4y-advancedHunting:taskCountAdd', 7, 1)
    elseif animal == -664053099 then
        TriggerServerEvent('ak4y-advancedHunting:taskCountAdd', 8, 1)
    end
end

AK4Y.UnlimitedAmmoWeapons = {
    ["weapon_sniperrifle"] = true,
}

AK4Y.HuntLocations = {
    ["a_c_deer"] = {
        location = vector3(-543.85, 5524.41, 61.03),
        radius = 100.0,
        blipactive = true,
        blipColour = 1,
        blipAlpha = 50,
        BlipName = "Hunt Zone",
        BlipSprite = 141,
        BlipScale = 1.0,
        NeededLevel = 7,
        ["Allowed Weapons"] = {
            "weapon_sniperrifle",
        },
    },
    ["a_c_pig"] = {
        location = vector3(3681.69, 4520.4, 23.64),
        radius = 100.0,
        blipactive = true,
        blipColour = 1,
        BlipName = "Hunt Zone",
        BlipSprite = 141,
        BlipScale = 1.0,
        NeededLevel = 4,
        ["Allowed Weapons"] = {
            "weapon_sniperrifle",
        },
    },
}

AK4Y.CatchChicken = {
    location = vector3(1447.7864, 1066.3145, 114.33869),
    radius = 100.0,
    blipactive = true,
    blipColour = 1,
    blipAlpha = 50,
    BlipName = "Cath Chicken",
    BlipSprite = 141,
    BlipScale = 1.0,
}

AK4Y.AimBlockWeapons = {
    ["weapon_sniperrifle"] = true,
    ["weapon_pistol"] = true
}

AK4Y.AnimalItems = {
    ["a_c_deer"] = {
        hash = -664053099,
        BasicItem = "deer_meat",
        RareItem = "deer_meat2",
    },
    ["a_c_pig"] = {
        hash = -1323586730,
        BasicItem = "pig_meat",
        RareItem = "pig_meat2",
    },
    ["a_c_hen"] = {
        hash = 1794449327,
        BasicItem = "chicken_meat",
        RareItem = "chicken_meat2",
    },
}

AK4Y.ProgressTime = {
    ["a_c_deer"] = 10000,
    ["a_c_pig"] = 10000,
    ["a_c_hen"] = 10000,
    ["place_bait"] = 10000,
}

AK4Y.Languages = { --All notifications etc.
    ["bait_placed"] = "Bait Placed",
    ["not_in_zone_bait"] = "You are not in this bait zone",
    ["not_in_zone"] = "You are not in zone",
    ["wait"] = "You have to wait place another bait",
    ["wait"] = "a",
    ["far_from_animal"] = "You are so far from animal",
    ["player_in_close"] = "You can't do this while have a player in your around",
    ["cut_animal"] = "You have to cut animal",
    ["cancel"] = "Cancelled",
    ["shredded_meat"] = "shredded_meat",
    ["cant_cut_this_animal"] = "You can't cut this animal",
    ["not_look_animal"] = "You're not looking the animal",
    ["you_couldnt_catch"] = "You couldn't catch",
    ["need_level"] = "Your level in not yet the bait this animal.",
    ["cath_chicken"] = "[E] Catch Chicken",
    ["spam"] = "Do not spam",
    ["cant_shoot_out_of_zone"] = "You can't shoot when out of the zone",
    ["refill_ammo_in_zone"] = "Your ammo will be replenished when you enter the area",
}

AK4Y.HTMLTranslate = {
    ["generalTitleDescription"] = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Ullam ea cupiditate veritatis maiores iusto amet sint tempora, illo nostrum quia aspernatur dolorum libero alias dolor.",
    ["wiki"] = "WIKI",
    ["market"] = "MARKET",
    ["sales"] = "SALES",
    ["tasks"] = "TASKS",
    ["lvlBuy"] = "LVL BUY",
    ["weapon"] = "WEAPON",
    ["animals"] = "ANIMALS",
    ["exp"] = "EXP",
    ["chicken"] = "CHICKEN",
    ["chickenDescriptionProgressBar"] = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatem iure delectus excepturi eos, accusantium nisi!",
    ["deer"] = "DEER",
    ["deerDescriptionProgressBar"] = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatem iure delectus excepturi eos, accusantium nisi!",
    ["pig"] = "PIG",
    ["pigDescriptionProgressBar"] = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatem iure delectus excepturi eos, accusantium nisi!",
    ["hello"] = "Hello",
    ["level"] = "LEVEL",
    ["up"] = "UP",
    ["howAbout"] = "How about",
    ["buyingALevel"] = "buying a level?",
    ["levelBuy"] = "LEVEL BUY",
    ["setGps"] = "SET GPS",
    ["buy"] = "BUY",
    ["sell"] = "SELL",
    ["collected"] = "COLLECTED",
    ["reward"] = "REWARD",
    ["accept"] = "ACCEPT",
    ["cutting"] = "Cutting...",
 }
```
````

{% endtab %}

{% tab title="QBCore" %}

````lua
```lua

AK4Y = {}

AK4Y.Framework = "qb" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async

AK4Y.UpdateXP = {min = 5, max = 10} --How many xp do you want to increase for collection
AK4Y.MaxLevel = 15
AK4Y.TaskResetPeriod = 1 -- DAY
AK4Y.PaymentMethod = "cash" -- "cash" or "bank"
AK4Y.NeededEXP = 1000 -- for level up
AK4Y.OnlyShootInZone = true

AK4Y.NPCAreas = {
    {
        pedName = "AKAY", 
        pedHash = 0x1EEC7BDC, 
        pedCoord = vector3(-679.14, 5834.51, 16.33), 
        drawText = "[E] - Hunting NPC",
        h = 132.41,
        blipSettings = { -- https://docs.fivem.net/docs/game-references/blips/
            blip = true,
            blipName = "Hunting NPC",
            blipIcon = 154,
            blipColour = 1,
        },
    }, 
}

AK4Y.WikiPage = {
    {
        starCount = 1, -- max 5
        areaTitle = "POULTRY",
        areaMiniTitle = "CHICKEN FARMING",
        areaDescription = "In this area; you can catch chickens. A good introduction to hunting!",
        allowedWeapons = {
            "-",
        },
        animals = {
            "CHICKEN"
        },
        areaCoords = vector3(1447.7864, 1066.3145, 114.33869),
        areaImage = "./images/chickenArea.png",
    },
    {
        starCount = 3, -- max 5
        areaTitle = "PIG HUNTER",
        areaMiniTitle = "Killer of pigs",
        areaDescription = "The next hunting point after poultry :D, Their meat is of high quality. It's a good profit!",
        allowedWeapons = {
            "KNIFE",
            "HUNTING RIFLE",
        },
        animals = {
            "PIG"
        },
        areaCoords = vector3(3681.69, 4520.4, 23.64),
        areaImage = "./images/area_1.png",
    },
    {
        starCount = 5, -- max 5
        areaTitle = "DEER HUNTING",
        areaMiniTitle = "The Last Point",
        areaDescription = "The ultimate in hunting! If you can catch something here, you're a real hunter! ",
        allowedWeapons = {
            "KNIFE",
            "HUNTING RIFLE",
        },
        animals = {
            "DEER"
        },
        areaCoords = vector3(-543.85, 5524.41, 61.03),
        areaImage = "./images/deerArea.png",
    },
}

AK4Y.MarketPage = {
    {
        uniqueId = 1,
        itemLabel = "HUNTING RIFLE",
        itemName = "weapon_sniperrifle",
        itemType = "item", -- item or weapon
        itemCount = 1,
        itemPrice = 500,
        itemImage = "./images/shotgunItem.png",
    },
    {
        uniqueId = 2,
        itemLabel = "HUNTING KNIFE",
        itemName = "hunting_knife",
        itemType = "item", -- item or weapon
        itemCount = 1,
        itemPrice = 100,
        itemImage = "./images/HuntingKnife.png",
    },
    {
        uniqueId = 3,
        itemLabel = "Poor Quality Deer Bait",
        itemName = "deer_bait",
        itemType = "item", -- item or weapon
        itemCount = 1,
        itemPrice = 10,
        itemImage = "./images/lowDeerBait.png",
    },
    {
        uniqueId = 4,
        itemLabel = "High Quality Deer Bait",
        itemName = "deer_bait2",
        itemType = "item", -- item or weapon
        itemCount = 1,
        itemPrice = 15,
        itemImage = "./images/highDeerBait.png",
    },
    {
        uniqueId = 5,
        itemLabel = "Poor Quality Pig Bait",
        itemName = "pig_bait",
        itemType = "item", -- item or weapon
        itemCount = 1,
        itemPrice = 7,
        itemImage = "./images/lowPigBait.png",
    },
    {
        uniqueId = 6,
        itemLabel = "High Quality Pig Bait",
        itemName = "pig_bait2",
        itemType = "item", -- item or weapon
        itemCount = 1,
        itemPrice = 9,
        itemImage = "./images/highPigBait.png",
    },
}

AK4Y.SellItems = {
    {
        uniqueId = 1,
        itemLabel = "Poor Quality Deer Meat",
        itemName = "deer_meat",
        itemStar = 4, -- MAX 5
        itemPrice = 200,
        itemImage = "./images/lowDeerMeat.png",
    },
    {
        uniqueId = 2,
        itemLabel = "High Quality Deer Meat",
        itemName = "deer_meat2",
        itemStar = 5, -- MAX 5
        itemPrice = 290,
        itemImage = "./images/highDeerMeat.png",
    },
    {
        uniqueId = 3,
        itemLabel = "Poor Quality Pig Meat",
        itemName = "pig_meat",
        itemStar = 2, -- MAX 5
        itemPrice = 120,
        itemImage = "./images/lowPigMeat.png",
    },
    {
        uniqueId = 4,
        itemLabel = "High Quality Pig Meat",
        itemName = "pig_meat2",
        itemStar = 3, -- MAX 5
        itemPrice = 170,
        itemImage = "./images/highPigMeat.png",
    },
    {
        uniqueId = 5,
        itemLabel = "Poor Quality Chicken Meat",
        itemName = "chicken_meat",
        itemStar = 0, -- MAX 5
        itemPrice = 40,
        itemImage = "./images/lowChickenMeat.png",
    },
    {
        uniqueId = 6,
        itemLabel = "High Quality Chicken Meat",
        itemName = "chicken_meat2",
        itemStar = 1, -- MAX 5
        itemPrice = 55,
        itemImage = "./images/highChickenMeat.png",
    },
}

AK4Y.Tasks = {
    {
        taskId = 1,
        taskTitle = "Cath 10 Chicken",
        taskDescription = "Cath 10 chicken and earn xp",
        rewardPrice = 10000,
        requiredCount = 10,
    },
    {
        taskId = 2,
        taskTitle = "Cut 10 Pig",
        taskDescription = "Cut 10 pig and earn xp",
        rewardPrice = 10000,
        requiredCount = 10,
    },
    {
        taskId = 3,
        taskTitle = "Cut 10 Deer",
        taskDescription = "Cut 10 deer and earn xp",
        rewardPrice = 10000,
        requiredCount = 10,
    },
    {
        taskId = 4,
        taskTitle = "Place 10 Pig Bait",
        taskDescription = "Place 10 pig bait and earn xp",
        rewardPrice = 10000,
        requiredCount = 10,
    },
    {
        taskId = 5,
        taskTitle = "Place 10 Deer Bait",
        taskDescription = "Place 10 deer bait and earn xp",
        rewardPrice = 10000,
        requiredCount = 10,
    },
    {
        taskId = 6,
        taskTitle = "Find 10 Rare Chicken Meat",
        taskDescription = "Find 10 rare chicken meat and earn xp",
        rewardPrice = 10000,
        requiredCount = 10,
    },
    {
        taskId = 7,
        taskTitle = "Find 10 Rare Pig Meat",
        taskDescription = "Find 10 rare chicken meat and earn xp",
        rewardPrice = 10000,
        requiredCount = 10,
    },
    {
        taskId = 8,
        taskTitle = "Find 10 Rare Deer Meat",
        taskDescription = "Find 10 rare chicken meat and earn xp",
        rewardPrice = 10000,
        requiredCount = 10,
    },
}

AK4Y.LevelPackages = {
    {
        packageId = 1,
        upLevel = 1,
        realPrice = 10,
        directLink = "https://www.google.com/",
    },
    {
        packageId = 2,
        upLevel = 2,
        realPrice = 20,
        directLink = "https://www.google.com/",
    },
    {
        packageId = 3,
        upLevel = 3,
        realPrice = 25,
        directLink = "https://www.google.com/",
    },
    {
        packageId = 4,
        upLevel = 4,
        realPrice = 30,
        directLink = "https://www.google.com/",
    },
    {
        packageId = 5,
        upLevel = 5,
        realPrice = 35,
        directLink = "https://www.google.com/",
    },
    {
        packageId = 6,
        upLevel = 6,
        realPrice = 40,
        directLink = "https://ak4y.tebex.io/package/5526695",
    },
}


function NOTIFY(message)
    QBCore.Functions.Notify(message)
end

function PlaceBait(baittype)
    -- baittype return placed bait type
    if baittype == "a_c_pig" then
        TriggerServerEvent('ak4y-advancedHunting:taskCountAdd', 4, 1)
    elseif baittype == "a_c_deer" then
        TriggerServerEvent('ak4y-advancedHunting:taskCountAdd', 5, 1)
    end
end

function CutAnimal(animal)
    -- animal return cutted animal hash
    print(animal)
    if animal == 1794449327 then
        TriggerServerEvent('ak4y-advancedHunting:taskCountAdd', 1, 1)
    elseif animal == -1323586730 then
        TriggerServerEvent('ak4y-advancedHunting:taskCountAdd', 2, 1)
    elseif animal == -664053099 then
        TriggerServerEvent('ak4y-advancedHunting:taskCountAdd', 3, 1)
    end
end

function EarnRareItem(animal)
    -- animal return earned rare item animal hash
    if animal == 1794449327 then
        TriggerServerEvent('ak4y-advancedHunting:taskCountAdd', 6, 1)
    elseif animal == -1323586730 then
        TriggerServerEvent('ak4y-advancedHunting:taskCountAdd', 7, 1)
    elseif animal == -664053099 then
        TriggerServerEvent('ak4y-advancedHunting:taskCountAdd', 8, 1)
    end
end

AK4Y.UnlimitedAmmoWeapons = {
    ["weapon_sniperrifle"] = true,
}

AK4Y.HuntLocations = {
    ["a_c_deer"] = {
        location = vector3(-543.85, 5524.41, 61.03),
        radius = 100.0,
        blipactive = true,
        blipColour = 1,
        blipAlpha = 50,
        BlipName = "Hunt Zone",
        BlipSprite = 141,
        BlipScale = 1.0,
        NeededLevel = 7,
        ["Allowed Weapons"] = {
            "weapon_sniperrifle",
        },
    },
    ["a_c_pig"] = {
        location = vector3(3681.69, 4520.4, 23.64),
        radius = 100.0,
        blipactive = true,
        blipColour = 1,
        BlipName = "Hunt Zone",
        BlipSprite = 141,
        BlipScale = 1.0,
        NeededLevel = 4,
        ["Allowed Weapons"] = {
            "weapon_sniperrifle",
        },
    },
}

AK4Y.CatchChicken = {
    location = vector3(1447.7864, 1066.3145, 114.33869),
    radius = 100.0,
    blipactive = true,
    blipColour = 1,
    blipAlpha = 50,
    BlipName = "Cath Chicken",
    BlipSprite = 141,
    BlipScale = 1.0,
}

AK4Y.AimBlockWeapons = {
    ["weapon_sniperrifle"] = true,
    ["weapon_pistol"] = true
}

AK4Y.AnimalItems = {
    ["a_c_deer"] = {
        hash = -664053099,
        BasicItem = "deer_meat",
        RareItem = "deer_meat2",
    },
    ["a_c_pig"] = {
        hash = -1323586730,
        BasicItem = "pig_meat",
        RareItem = "pig_meat2",
    },
    ["a_c_hen"] = {
        hash = 1794449327,
        BasicItem = "chicken_meat",
        RareItem = "chicken_meat2",
    },
}

AK4Y.ProgressTime = {
    ["a_c_deer"] = 10000,
    ["a_c_pig"] = 10000,
    ["a_c_hen"] = 10000,
    ["place_bait"] = 10000,
}

AK4Y.Languages = { --All notifications etc.
    ["bait_placed"] = "Bait Placed",
    ["not_in_zone_bait"] = "You are not in this bait zone",
    ["not_in_zone"] = "You are not in zone",
    ["wait"] = "You have to wait place another bait",
    ["wait"] = "a",
    ["far_from_animal"] = "You are so far from animal",
    ["player_in_close"] = "You can't do this while have a player in your around",
    ["cut_animal"] = "You have to cut animal",
    ["cancel"] = "Cancelled",
    ["shredded_meat"] = "shredded_meat",
    ["cant_cut_this_animal"] = "You can't cut this animal",
    ["not_look_animal"] = "You're not looking the animal",
    ["you_couldnt_catch"] = "You couldn't catch",
    ["need_level"] = "Your level in not yet the bait this animal.",
    ["cath_chicken"] = "[E] Catch Chicken",
    ["spam"] = "Do not spam",
    ["cant_shoot_out_of_zone"] = "You can't shoot when out of the zone",
    ["refill_ammo_in_zone"] = "Your ammo will be replenished when you enter the area",
}

AK4Y.HTMLTranslate = {
    ["generalTitleDescription"] = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Ullam ea cupiditate veritatis maiores iusto amet sint tempora, illo nostrum quia aspernatur dolorum libero alias dolor.",
    ["wiki"] = "WIKI",
    ["market"] = "MARKET",
    ["sales"] = "SALES",
    ["tasks"] = "TASKS",
    ["lvlBuy"] = "LVL BUY",
    ["weapon"] = "WEAPON",
    ["animals"] = "ANIMALS",
    ["exp"] = "EXP",
    ["chicken"] = "CHICKEN",
    ["chickenDescriptionProgressBar"] = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatem iure delectus excepturi eos, accusantium nisi!",
    ["deer"] = "DEER",
    ["deerDescriptionProgressBar"] = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatem iure delectus excepturi eos, accusantium nisi!",
    ["pig"] = "PIG",
    ["pigDescriptionProgressBar"] = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatem iure delectus excepturi eos, accusantium nisi!",
    ["hello"] = "Hello",
    ["level"] = "LEVEL",
    ["up"] = "UP",
    ["howAbout"] = "How about",
    ["buyingALevel"] = "buying a level?",
    ["levelBuy"] = "LEVEL BUY",
    ["setGps"] = "SET GPS",
    ["buy"] = "BUY",
    ["sell"] = "SELL",
    ["collected"] = "COLLECTED",
    ["reward"] = "REWARD",
    ["accept"] = "ACCEPT",
    ["cutting"] = "Cutting...",
 }
```
````

{% endtab %}
{% endtabs %}


# ak4y-dice


# Config

{% tabs %}
{% tab title="ESX" %}

````lua
```lua
AK4Y = {}

AK4Y.Framework = "newEsx" -- esx / newEsx | newEsx = export system | esx = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async

AK4Y.OpenCommand = "diceMenu"

AK4Y.DiceOptions = {
    { optionId = 1, optionLabel = "1 Round", optionRound = 1 },
    { optionId = 2, optionLabel = "2 Round", optionRound = 2 },
    { optionId = 3, optionLabel = "3 Round", optionRound = 3 },
    { optionId = 4, optionLabel = "4 Round", optionRound = 4 },
    { optionId = 5, optionLabel = "5 Round", optionRound = 5 },
}

AK4Y.Translate = {
    plyWalkAway = "player walked away", 
    noNearby = "There's no one nearby",
    plyNotAvailable = "Player not available for betting",
    noMoneyOneSide = "One side has no money",
    ydntHvMoney = "You have no money to send an invitation",

}

AK4Y.Notify = function(text, typ, where)
    if where == "client" then 
        ESX.ShowNotification(text, typ)
    end
end
```
````

{% endtab %}

{% tab title="QBCore" %}

````lua
```lua
AK4Y = {}

AK4Y.Framework = "qb" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async

AK4Y.OpenCommandMenu = "diceMenu"

AK4Y.DiceOptions = {
    { optionId = 1, optionLabel = "1 Round", optionRound = 1 },
    { optionId = 2, optionLabel = "2 Round", optionRound = 2 },
    { optionId = 3, optionLabel = "3 Round", optionRound = 3 },
    { optionId = 4, optionLabel = "4 Round", optionRound = 4 },
    { optionId = 5, optionLabel = "5 Round", optionRound = 5 },
}

AK4Y.Translate = {
    plyWalkAway = "player walked away", 
    noNearby = "There's no one nearby",
    plyNotAvailable = "Player not available for betting",
    noMoneyOneSide = "One side has no money",
    ydntHvMoney = "You have no money to send an invitation",

}

AK4Y.Notify = function(text, typ, where)
    if where == "client" then 
        QBCore.Functions.Notify(text, typ)
    end
end
```
````

{% endtab %}
{% endtabs %}


# ak4y-dailyWheel


# Config

{% tabs %}
{% tab title="ESX" %}

````lua
```lua
AK4Y = {}

AK4Y.Framework = "newEsx" -- esx / newEsx | newEsx = export system | esx = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async

AK4Y.SpinCost = 2 -- CR
AK4Y.SpinPeriod = 24 -- HOURS 
AK4Y.TebexPageLink = "https://ak4y.tebex.io/category/qb-scripts/"

AK4Y.DefaultGarage = "pillboxgarage" -- purchased vehicles will be sent to this garage

AK4Y.CommandUse = true
AK4Y.OpenCommandMenu = "openMenu"

AK4Y.SpawnOpenMenu = true -- SHOULD THE MENU OPEN AUTOMATICALLY WHEN THE CHARACTER SPAWNS?

-------

-- OPEN MENU EVENT :  '    ak4y-dailyWheel:openMenu    ' (client side event) 
-- TriggerEvent('ak4y-dailyWheel:openMenu')

-------

--------------------------------------------------------------------------

-- MAX 8 ITEM IN TABLE
-- MAX 8 ITEM IN TABLE
-- MAX 8 ITEM IN TABLE

-- items in the table should have a chance total of 100 !! IMPORTANT !! IMPORTANT !! IMPORTANT !!
-- items in the table should have a chance total of 100 !! IMPORTANT !! IMPORTANT !! IMPORTANT !!
-- items in the table should have a chance total of 100 !! IMPORTANT !! IMPORTANT !! IMPORTANT !!

--- GiveItemTypes: "item" , "weapon", "vehicle", "money"
AK4Y.WheelItems = {
    { itemName = "armor", label = "Armor", chance = 20, itemCount = 1, giveItemType = "item", image = "./img/itemImages/armor.png" },
    { itemName = "money", label = "$10.000", chance = 10, itemCount = 10000, giveItemType = "money", image = "./img/itemImages/money.png" },
    { itemName = "weapon_snspistol", label = "PISTOL AMMO", chance = 5, itemCount = 1, giveItemType = "weapon", image = "./img/itemImages/weapon_snspistol.png" },
    { itemName = "bandage", label = "Bandage", chance = 10, itemCount = 1, giveItemType = "item", image = "./img/itemImages/bandage.png" },
    { itemName = "beer", label = "Beer", chance = 20, itemCount = 1, giveItemType = "item", image = "./img/itemImages/beer.png" },
    { itemName = "joint", label = "Joint", chance = 10, itemCount = 1, giveItemType = "item", image = "./img/itemImages/joint.png" },
    { itemName = "iphone", label = "iPhone", chance = 20, itemCount = 1, giveItemType = "item", image = "./img/itemImages/iphone.png" },
    { itemName = "zentorno", label = "Zentorno", chance = 5, itemCount = 1, giveItemType = "vehicle", image = "./img/itemImages/zentorno.png" },
}

---------------------------------------------------------------------------

AK4Y.Translate = {
    title1 = "AK4Y",
    title2 = "ROLEPLAY",
    lwTxt = "Lucky Wheel",
    ttlDesc = "Lorem ipsum dolor sit amet consectetur. Quam posuere sapien egestas varius elit tortor. Dolor feugiat et sapien.",
    spin = "SPIN",
    dlySpin = "Daily Spin",
    gtSpin = "GET SPIN", 
    redeemCode = "REDEEM CODE",
    enterCode = "ENTER CODE",
    ecButton = "Enter Code",
    noRedeemCd = "No redeem code?",
    byCodeButton = "BUY REDEEM CODE",
    infoTitle = "WARNING!",
    infoWrongCodeDesc = "The code is wrong!",
    infoYouDontHaveCoin = "You dont have enought coin!",
}


```
````

{% endtab %}

{% tab title="QBCore" %}

````lua
```lua
AK4Y = {}

AK4Y.Framework = "qb" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async

AK4Y.SpinCost = 2 -- CR
AK4Y.SpinPeriod = 24 -- HOURS 
AK4Y.TebexPageLink = "https://ak4y.tebex.io/package/5952791/"

AK4Y.DefaultGarage = "pillboxgarage" -- purchased vehicles will be sent to this garage

AK4Y.CommandUse = true
AK4Y.OpenCommandMenu = "openMenu"

AK4Y.SpawnOpenMenu = true -- SHOULD THE MENU OPEN AUTOMATICALLY WHEN THE CHARACTER SPAWNS?

-------

-- OPEN MENU EVENT :  '    ak4y-dailyWheel:openMenu    ' (client side event) 
-- TriggerEvent('ak4y-dailyWheel:openMenu')

-------

--------------------------------------------------------------------------

-- MAX 8 ITEM IN TABLE
-- MAX 8 ITEM IN TABLE
-- MAX 8 ITEM IN TABLE

-- items in the table should have a chance total of 100 !! IMPORTANT !! IMPORTANT !! IMPORTANT !!
-- items in the table should have a chance total of 100 !! IMPORTANT !! IMPORTANT !! IMPORTANT !!
-- items in the table should have a chance total of 100 !! IMPORTANT !! IMPORTANT !! IMPORTANT !!

--- GiveItemTypes: "item" , "weapon", "vehicle", "money"
AK4Y.WheelItems = {
    { itemName = "armor", label = "Armor", chance = 20, itemCount = 1, giveItemType = "item", image = "./img/itemImages/armor.png" },
    { itemName = "money", label = "$10.000", chance = 10, itemCount = 10000, giveItemType = "money", image = "./img/itemImages/money.png" },
    { itemName = "weapon_snspistol", label = "PISTOL AMMO", chance = 5, itemCount = 1, giveItemType = "weapon", image = "./img/itemImages/weapon_snspistol.png" },
    { itemName = "bandage", label = "Bandage", chance = 10, itemCount = 1, giveItemType = "item", image = "./img/itemImages/bandage.png" },
    { itemName = "beer", label = "Beer", chance = 20, itemCount = 1, giveItemType = "item", image = "./img/itemImages/beer.png" },
    { itemName = "joint", label = "Joint", chance = 10, itemCount = 1, giveItemType = "item", image = "./img/itemImages/joint.png" },
    { itemName = "iphone", label = "iPhone", chance = 20, itemCount = 1, giveItemType = "item", image = "./img/itemImages/iphone.png" },
    { itemName = "zentorno", label = "Zentorno", chance = 5, itemCount = 1, giveItemType = "vehicle", image = "./img/itemImages/zentorno.png" },
}

---------------------------------------------------------------------------

AK4Y.Translate = {
    title1 = "AK4Y",
    title2 = "ROLEPLAY",
    lwTxt = "Lucky Wheel",
    ttlDesc = "Lorem ipsum dolor sit amet consectetur. Quam posuere sapien egestas varius elit tortor. Dolor feugiat et sapien.",
    spin = "SPIN",
    dlySpin = "Daily Spin",
    gtSpin = "GET SPIN", 
    redeemCode = "REDEEM CODE",
    enterCode = "ENTER CODE",
    ecButton = "Enter Code",
    noRedeemCd = "No redeem code?",
    byCodeButton = "BUY REDEEM CODE",
    infoTitle = "WARNING!",
    infoWrongCodeDesc = "The code is wrong!",
    infoYouDontHaveCoin = "You dont have enought coin!",
}


```
````

{% endtab %}
{% endtabs %}


# ak4y-multicharacter


# Config

{% tabs %}
{% tab title="ESX" %}

````lua
```lua
AK4Y = {}

AK4Y.Framework = "newEsx" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async

AK4Y.MaxCharSlot = 4
AK4Y.DefaultOpenCharSlot = 2

AK4Y.Interior = vector3(406.74, -953.56, -99.0) -- Interior to load where characters are previewed
AK4Y.DefaultSpawn = vector3(-1035.71, -2731.87, 12.86) -- Default spawn coords if you have start apartments disabled
AK4Y.PedCoords = vector4(406.68, -953.71, -100.0, 334.91) -- Create preview ped at these coordinates
AK4Y.HiddenCoords = vector4(-812.23, 182.54, 76.74, 156.5) -- Hides your actual ped while you are in selection
AK4Y.CamCoords = vector4(407.59, -951.7, -99.0, 155.91) -- Camera coordinates for character preview screen

AK4Y.StarterItems = {
    {item = "water", amount = 1},
    {item = "burger", amount = 1},
    -- {item = "water", amount = 3},
    -- {item = "burger", amount = 3},
    -- {item = "phone", amount = 1},
}

AK4Y.PlayerLoaded = function(isNew)

end

AK4Y.TebexLink = "https://www.google.com/"
AK4Y.Translate = {
    title = "AK4Y",
    character = "CHARACTER",
    selector = "SELECTOR",
    firstDesc = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Egestas semper venenatis faucibus cras eleifend.",
    createCharacter = "CREATE CHARACTER",
    buySlot = "BUY SLOT",
    play = "PLAY",
    delete = "DELETE",
    male = "MALE",
    female = "FEMALE",
    dateOfBirth = "DATE OF BIRTH",
    height = "HEIGHT",
    job = "JOB",
    cash = "CASH",
    bank = "BANK",
    phoneNumber = "PHONE NUMBER",
    accountNumber = "ACCOUNT NUMBER",
    rightTitle1 = "CHARACTER",
    rightTitle2 = "CREATOR",
    rightDescription = "Lorem Ipsum dolor sit amet.",
    name = "NAME",
    surname = "SURNAME",
    create = "CREATE",
    slot = "SLOT",
    redeemCode = "REDEEM CODE",
    buyCode = "BUY CODE",
    cancel = "CANCEL",
    accept = "ACCEPT",
    characterInfo = "CHARACTER INFORMATION",
    loading = "LOADING!",
    plsWait = "Please wait while your character information is loading!",  
    doYouAgreeDelete = "DO YOU AGREE TO DELETE THE CHARACTER NAMED",
}

AK4Y.Default = {
    ["m"] = {
        mom = 43,
        dad = 29,
        face_md_weight = 61,
        skin_md_weight = 27,
        nose_1 = -5,
        nose_2 = 6,
        nose_3 = 5,
        nose_4 = 8,
        nose_5 = 10,
        nose_6 = 0,
        cheeks_1 = 2,
        cheeks_2 = -10,
        cheeks_3 = 6,
        lip_thickness = -2,
        jaw_1 = 0,
        jaw_2 = 0,
        chin_1 = 0,
        chin_2 = 0,
        chin_13 = 0,
        chin_4 = 0,
        neck_thickness = 0,
        hair_1 = 76,
        hair_2 = 0,
        hair_color_1 = 61,
        hair_color_2 = 29,
        tshirt_1 = 4,
        tshirt_2 = 2,
        torso_1 = 23,
        torso_2 = 2,
        decals_1 = 0,
        decals_2 = 0,
        arms = 1,
        arms_2 = 0,
        pants_1 = 28,
        pants_2 = 3,
        shoes_1 = 70,
        shoes_2 = 2,
        mask_1 = 0,
        mask_2 = 0,
        bproof_1 = 0,
        bproof_2 = 0,
        chain_1 = 22,
        chain_2 = 2,
        helmet_1 = -1,
        helmet_2 = 0,
        glasses_1 = 0,
        glasses_2 = 0,
        watches_1 = -1,
        watches_2 = 0,
        bracelets_1 = -1,
        bracelets_2 = 0,
        bags_1 = 0,
        bags_2 = 0,
        eye_color = 0,
        eye_squint = 0,
        eyebrows_2 = 0,
        eyebrows_1 = 0,
        eyebrows_3 = 0,
        eyebrows_4 = 0,
        eyebrows_5 = 0,
        eyebrows_6 = 0,
        makeup_1 = 0,
        makeup_2 = 0,
        makeup_3 = 0,
        makeup_4 = 0,
        lipstick_1 = 0,
        lipstick_2 = 0,
        lipstick_3 = 0,
        lipstick_4 = 0,
        ears_1 = -1,
        ears_2 = 0,
        chest_1 = 0,
        chest_2 = 0,
        chest_3 = 0,
        bodyb_1 = -1,
        bodyb_2 = 0,
        bodyb_3 = -1,
        bodyb_4 = 0,
        age_1 = 0,
        age_2 = 0,
        blemishes_1 = 0,
        blemishes_2 = 0,
        blush_1 = 0,
        blush_2 = 0,
        blush_3 = 0,
        complexion_1 = 0,
        complexion_2 = 0,
        sun_1 = 0,
        sun_2 = 0,
        moles_1 = 0,
        moles_2 = 0,
        beard_1 = 11,
        beard_2 = 10,
        beard_3 = 0,
        beard_4 = 0
    },
    ["f"] = {
        mom = 28,
        dad = 6,
        face_md_weight = 63,
        skin_md_weight = 60,
        nose_1 = -10,
        nose_2 = 4,
        nose_3 = 5,
        nose_4 = 0,
        nose_5 = 0,
        nose_6 = 0,
        cheeks_1 = 0,
        cheeks_2 = 0,
        cheeks_3 = 0,
        lip_thickness = 0,
        jaw_1 = 0,
        jaw_2 = 0,
        chin_1 = -10,
        chin_2 = 10,
        chin_13 = -10,
        chin_4 = 0,
        neck_thickness = -5,
        hair_1 = 43,
        hair_2 = 0,
        hair_color_1 = 29,
        hair_color_2 = 35,
        tshirt_1 = 111,
        tshirt_2 = 5,
        torso_1 = 25,
        torso_2 = 2,
        decals_1 = 0,
        decals_2 = 0,
        arms = 3,
        arms_2 = 0,
        pants_1 = 12,
        pants_2 = 2,
        shoes_1 = 20,
        shoes_2 = 10,
        mask_1 = 0,
        mask_2 = 0,
        bproof_1 = 0,
        bproof_2 = 0,
        chain_1 = 85,
        chain_2 = 0,
        helmet_1 = -1,
        helmet_2 = 0,
        glasses_1 = 33,
        glasses_2 = 12,
        watches_1 = -1,
        watches_2 = 0,
        bracelets_1 = -1,
        bracelets_2 = 0,
        bags_1 = 0,
        bags_2 = 0,
        eye_color = 8,
        eye_squint = -6,
        eyebrows_2 = 7,
        eyebrows_1 = 32,
        eyebrows_3 = 52,
        eyebrows_4 = 9,
        eyebrows_5 = -5,
        eyebrows_6 = -8,
        makeup_1 = 0,
        makeup_2 = 0,
        makeup_3 = 0,
        makeup_4 = 0,
        lipstick_1 = 0,
        lipstick_2 = 0,
        lipstick_3 = 0,
        lipstick_4 = 0,
        ears_1 = -1,
        ears_2 = 0,
        chest_1 = 0,
        chest_2 = 0,
        chest_3 = 0,
        bodyb_1 = -1,
        bodyb_2 = 0,
        bodyb_3 = -1,
        bodyb_4 = 0,
        age_1 = 0,
        age_2 = 0,
        blemishes_1 = 0,
        blemishes_2 = 0,
        blush_1 = 0,
        blush_2 = 0,
        blush_3 = 0,
        complexion_1 = 0,
        complexion_2 = 0,
        sun_1 = 0,
        sun_2 = 0,
        moles_1 = 12,
        moles_2 = 8,
        beard_1 = 0,
        beard_2 = 0,
        beard_3 = 0,
        beard_4 = 0
        }
}
```
````

{% endtab %}

{% tab title="QBCore" %}

````lua
```lua
AK4Y = {}

AK4Y.Framework = "qb" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async

AK4Y.CustomFrameWork = false
AK4Y.CustomFrameWorkExport = "qb-core"

AK4Y.TebexLink = "https://ak4y.tebex.io/package/5378984/"
AK4Y.Translate = {
    title = "AK4Y",
    character = "CHARACTER",
    selector = "SELECTOR",
    firstDesc = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Egestas semper venenatis faucibus cras eleifend.",
    createCharacter = "CREATE CHARACTER",
    buySlot = "BUY SLOT",
    play = "PLAY",
    delete = "DELETE",
    male = "MALE",
    female = "FEMALE",
    dateOfBirth = "DATE OF BIRTH",
    nationality = "NATIONALITY",
    job = "JOB",
    cash = "CASH",
    bank = "BANK",
    phoneNumber = "PHONE NUMBER",
    accountNumber = "ACCOUNT NUMBER",
    rightTitle1 = "CHARACTER",
    rightTitle2 = "CREATOR",
    rightDescription = "Lorem Ipsum dolor sit amet.",
    name = "NAME",
    surname = "SURNAME",
    create = "CREATE",
    slot = "SLOT",
    redeemCode = "REDEEM CODE",
    buyCode = "BUY CODE",
    cancel = "CANCEL",
    accept = "ACCEPT",
    characterInfo = "CHARACTER INFORMATION",
    loading = "LOADING!",
    plsWait = "Please wait while your character information is loading!",  
    doYouAgreeDelete = "DO YOU AGREE TO DELETE THE CHARACTER NAMED",
}

AK4Y.MaxCharSlot = 4
AK4Y.DefaultOpenCharSlot = 2

AK4Y.UseQbApartments = false

AK4Y.Interior = vector3(406.74, -953.56, -99.0) -- Interior to load where characters are previewed
AK4Y.DefaultSpawn = vector3(-1035.71, -2731.87, 12.86) -- Default spawn coords if you have start apartments disabled
AK4Y.PedCoords = vector4(406.68, -953.71, -100.0, 334.91) -- Create preview ped at these coordinates
AK4Y.HiddenCoords = vector4(-812.23, 182.54, 76.74, 156.5) -- Hides your actual ped while you are in selection
AK4Y.CamCoords = vector4(407.59, -951.7, -99.0, 155.91) -- Camera coordinates for character preview screen
AK4Y.EnableDeleteButton = true -- doesnt work now, i will release an update

AK4Y.DefaultNumberOfCharacters = 5 -- Define maximum amount of default characters (maximum 5 characters defined by default)
AK4Y.PlayersNumberOfCharacters = { -- Define maximum amount of player characters by rockstar license (you can find this license in your server's database in the player table)
    { license = "license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", numberOfChars = 2 },
}

AK4Y.StarterItems = {
    {item = "id_card", amount = 1},
    {item = "driver_license", amount = 1},
    -- {item = "water", amount = 3},
    -- {item = "burger", amount = 3},
    -- {item = "phone", amount = 1},
}

AK4Y.PlayerLoaded = function(citizenId)

end


```
````

{% endtab %}
{% endtabs %}


# ak4y-spawnSelector


# Config

{% tabs %}
{% tab title="ESX" %}

````lua
```lua
AK4Y = {}
AK4Y.Framework = "newEsx" -- esx / newEsx | newEsx = export system | esx = triggerevent system

AK4Y.Spawns = {
    ["motel"] = {
        uniqueId = "motel",
        coords = vector4(327.28, -209.68, 54.09, 161.59),
        title = "MOTEL",
        description = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque modi vel aliquid nisi natus. Dignissimos, enim saepe umquam repudiandae, optio earum recusandae consequatur voluptas expedita, corporis vero fuga eum nemo! Ea alias et error, sit atque id tempora quos minus beatae dolores odio voluptatum omnis facere, voluptas perspiciatis sunt dolorum?",
        miniInfo = "#1 SPAWN",
    },
    ["hospital"] = {
        uniqueId = "hospital",
        coords = vector4(288.0, -609.53, 43.35, 343.16),
        title = "HOSPITAL",
        description = "Lorem ipsum dolor sit adipisicing elit. earum recusandae consequatur voluptas expedita, corporis vero fuga eum nemo! Ea alias et error, sit atque id tempora quos minus beatae dolores odio voluptatum omnis facere, voluptas perspiciatis sunt dolorum?",
        miniInfo = "#2 SPAWN",
    },
    ["carShop"] = {
        uniqueId = "carShop",
        coords = vector4(-54.05, -1115.98, 26.44, 47.9),
        title = "CAR SHOP",
        description = "Lorem ipsum dolor sit saepe umquame arum recusandae saepe umquam, optio earum repudiandae, optio earum recusandae saepe umquam repudiandae, optio earum recusandaeconsequatur voluptas expedita, corporis vero fuga eum nemo! Ea alias et error, sit atque id tempora quos minus beatae dolores odio voluptatum omnis facere, voluptas perspiciatis sunt dolorum?",
        miniInfo = "#3 SPAWN",
    },
    ["pdDepartment"] = {
        uniqueId = "pdDepartment",
        coords = vector4(435.01, -974.54, 30.71, 99.05),
        title = "PD DEPARTMENT",
        description = "Lorem ipsum dolor sit amet repudiandae, optio earum recusandae consequatur voluptas expedita, corporis vero fuga eum nemo! Ea alias et error, sit atque id tempora quos minus beatae dolores odio voluptatum omnis facere, voluptas perspiciatis sunt dolorum?",
        miniInfo = "#4 SPAWN",
    },
    ["sdDepartment"] = {
        uniqueId = "sdDepartment",
        coords = vector4(1859.77, 3681.38, 33.78, 236.31),
        title = "SD DEPARTMENT",
        description = "Lorem ipsum dolor earum recusandae consequatur voluptas nemo! Ea quos minus beatae dolores facere, voluptas perspiciatis sunt dolorum?",
        miniInfo = "#5 SPAWN",
    },
}

AK4Y.Language = {
    ["location"] = "LOCATION",
    ["lastLocation"] = "LAST LOCATION",
}

function playerLoaded() -- it runs when player loaded
    TriggerServerEvent('QBCore:Server:OnPlayerLoaded')
    TriggerEvent('QBCore:Client:OnPlayerLoaded')
end
```
````

{% endtab %}

{% tab title="QBCore" %}

````lua
```lua
AK4Y = {}
AK4Y.Framework = "qb" -- qb / oldqb | qb = export system | oldqb = triggerevent system

AK4Y.Spawns = {
    ["motel"] = {
        uniqueId = "motel",
        coords = vector4(327.28, -209.68, 54.09, 161.59),
        title = "MOTEL",
        description = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque modi vel aliquid nisi natus. Dignissimos, enim saepe umquam repudiandae, optio earum recusandae consequatur voluptas expedita, corporis vero fuga eum nemo! Ea alias et error, sit atque id tempora quos minus beatae dolores odio voluptatum omnis facere, voluptas perspiciatis sunt dolorum?",
        miniInfo = "#1 SPAWN",
    },
    ["hospital"] = {
        uniqueId = "hospital",
        coords = vector4(288.0, -609.53, 43.35, 343.16),
        title = "HOSPITAL",
        description = "Lorem ipsum dolor sit adipisicing elit. earum recusandae consequatur voluptas expedita, corporis vero fuga eum nemo! Ea alias et error, sit atque id tempora quos minus beatae dolores odio voluptatum omnis facere, voluptas perspiciatis sunt dolorum?",
        miniInfo = "#2 SPAWN",
    },
    ["carShop"] = {
        uniqueId = "carShop",
        coords = vector4(-54.05, -1115.98, 26.44, 47.9),
        title = "CAR SHOP",
        description = "Lorem ipsum dolor sit saepe umquame arum recusandae saepe umquam, optio earum repudiandae, optio earum recusandae saepe umquam repudiandae, optio earum recusandaeconsequatur voluptas expedita, corporis vero fuga eum nemo! Ea alias et error, sit atque id tempora quos minus beatae dolores odio voluptatum omnis facere, voluptas perspiciatis sunt dolorum?",
        miniInfo = "#3 SPAWN",
    },
    ["pdDepartment"] = {
        uniqueId = "pdDepartment",
        coords = vector4(435.01, -974.54, 30.71, 99.05),
        title = "PD DEPARTMENT",
        description = "Lorem ipsum dolor sit amet repudiandae, optio earum recusandae consequatur voluptas expedita, corporis vero fuga eum nemo! Ea alias et error, sit atque id tempora quos minus beatae dolores odio voluptatum omnis facere, voluptas perspiciatis sunt dolorum?",
        miniInfo = "#4 SPAWN",
    },
    ["sdDepartment"] = {
        uniqueId = "sdDepartment",
        coords = vector4(1859.77, 3681.38, 33.78, 236.31),
        title = "SD DEPARTMENT",
        description = "Lorem ipsum dolor earum recusandae consequatur voluptas nemo! Ea quos minus beatae dolores facere, voluptas perspiciatis sunt dolorum?",
        miniInfo = "#5 SPAWN",
    },
}

AK4Y.Language = {
    ["location"] = "LOCATION",
    ["lastLocation"] = "LAST LOCATION",
}

function playerLoaded() -- it runs when player loaded
    TriggerServerEvent('QBCore:Server:OnPlayerLoaded')
    TriggerEvent('QBCore:Client:OnPlayerLoaded')
end
```
````

{% endtab %}
{% endtabs %}


# ak4y-kit


# Config

{% tabs %}
{% tab title="ESX" %}

````lua
```lua
AK4Y = {}
AK4Y.Framework = "newEsx" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async
AK4Y.OpenMenuCommand = "kit"
AK4Y.WeaponsAreItem = false -- if your weapons are item set it true


-- ITEM TYPES = "money", "item", "vehicle", "weapon"
AK4Y.DailyKit = {
    ["type"] = "daily", -- don't change! 
    ["kitName"] = "DAILY",
    ["description"] = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae deserunt adipisci eaque ab veritatis odio iusto quo nesciunt tempore, non eveniet, suscipit consectetur nobis voluptatibus.",
    ["membership"] = "Everyone", 
    ["collectPeriod"] = 24, -- HOURS
    ["items"] = {
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "cash", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "money", image = "./images/weapon_appistol.png" },
        { itemName = "cash", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "money", image = "./images/weapon_appistol.png" },
        { itemName = "zentorno", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "vehicle", image = "./images/weapon_appistol.png" },
        { itemName = "zentorno", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "vehicle", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
    }
}

AK4Y.GoldKit = {
    ["type"] = "gold", -- don't change! 
    ["kitName"] = "GOLD",
    ["description"] = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae deserunt adipisci eaque ab veritatis odio iusto quo nesciunt tempore, non eveniet, suscipit consectetur nobis voluptatibus.",
    ["membership"] = "GOLD", 
    ["collectPeriod"] = 10, -- HOURS
    ["tebexLink"] = "https://www.google.com/goldLink", -- tebex direct link
    ["items"] = {
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
    }
}

AK4Y.PlatinumKit = {
    ["type"] = "platinum", -- don't change! 
    ["kitName"] = "PLATINUM",
    ["description"] = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae deserunt adipisci eaque ab veritatis odio iusto quo nesciunt tempore, non eveniet, suscipit consectetur nobis voluptatibus.",
    ["membership"] = "PLATINUM", 
    ["collectPeriod"] = 7, -- HOURS
    ["tebexLink"] = "https://www.google.com/platinumLink", -- tebex direct link
    ["items"] = {
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
    }
}

AK4Y.DiamondKit = {
    ["type"] = "diamond", -- don't change! 
    ["kitName"] = "DIAMOND",
    ["description"] = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae deserunt adipisci eaque ab veritatis odio iusto quo nesciunt tempore, non eveniet, suscipit consectetur nobis voluptatibus.",
    ["membership"] = "DIAMOND", 
    ["collectPeriod"] = 5, -- HOURS
    ["tebexLink"] = "https://www.google.com/diamondLink", -- tebex direct link
    ["items"] = {
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
    }
}

AK4Y.Language = {
    ["title1"] = "PREMIUM",
    ["title2"] = "KIT SYSTEM",
    ["premiumTitle"] = "DO YOU WANT TO HAVE",
    ["premiumTitle2"] = "PREMIUM KITS?",
    ["premiumDescription"] = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatem commodi ducimus delectus! Mollitia ad aliquam ut minima labore.",
    ["acceptButton"] = "Accept",
    ["kit"] = "KIT",
    ["reviewButton"] = "Review Kit",
    ["everyText"] = "Every",
    ["hours"] = "hours",
    ["upgrade"] = "UPGRADE",
    ["collect"] = "Collect",
    ["back"] = "Back",
    ["exit"] = "exit",
    ["collected"] = "SUCCESSFULLY COLLECTED!",
    ["upgraded"] = "YOUR ACCOUNT HAS BEEN SUCCESSFULLY UPGRADED TO",
    ["passive"] = "Passive",
}
```
````

{% endtab %}

{% tab title="QBCore" %}

````lua
```lua
AK4Y = {}
AK4Y.Framework = "qb" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async
AK4Y.OpenMenuCommand = "kit"


-- ITEM TYPES = "money", "item", "vehicle"
AK4Y.DailyKit = {
    ["type"] = "daily", -- don't change! 
    ["kitName"] = "DAILY",
    ["description"] = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae deserunt adipisci eaque ab veritatis odio iusto quo nesciunt tempore, non eveniet, suscipit consectetur nobis voluptatibus.",
    ["membership"] = "Everyone", 
    ["collectPeriod"] = 24, -- HOURS
    ["items"] = {
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "cash", itemLabel = "EXAMPLE MONEY", itemCount = 1, itemType = "money", image = "./images/weapon_appistol.png" },
        { itemName = "cash", itemLabel = "EXAMPLE MONEY", itemCount = 1, itemType = "money", image = "./images/weapon_appistol.png" },
        { itemName = "zentorno", itemLabel = "EXAMPLE VEHICLE", itemCount = 1, itemType = "vehicle", image = "./images/weapon_appistol.png" },
        { itemName = "zentorno", itemLabel = "EXAMPLE VEHICLE", itemCount = 1, itemType = "vehicle", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
    }
}

AK4Y.GoldKit = {
    ["type"] = "gold", -- don't change! 
    ["kitName"] = "GOLD",
    ["description"] = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae deserunt adipisci eaque ab veritatis odio iusto quo nesciunt tempore, non eveniet, suscipit consectetur nobis voluptatibus.",
    ["membership"] = "GOLD", 
    ["collectPeriod"] = 10, -- HOURS
    ["tebexLink"] = "https://www.google.com/goldLink", -- tebex direct link
    ["items"] = {
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
    }
}

AK4Y.PlatinumKit = {
    ["type"] = "platinum", -- don't change! 
    ["kitName"] = "PLATINUM",
    ["description"] = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae deserunt adipisci eaque ab veritatis odio iusto quo nesciunt tempore, non eveniet, suscipit consectetur nobis voluptatibus.",
    ["membership"] = "PLATINUM", 
    ["collectPeriod"] = 7, -- HOURS
    ["tebexLink"] = "https://www.google.com/platinumLink", -- tebex direct link
    ["items"] = {
        { itemName = "weapon_appistol", itemLabel = "AP PISTOL", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_knife", itemLabel = "Knife", itemCount = 1, itemType = "item", image = "./images/weapon_knife.png" },
        { itemName = "cash", itemLabel = "$30.000", itemCount = 30000, itemType = "money", image = "./images/money-3.png" },
        { itemName = "security_card_02", itemLabel = "Security Card", itemCount = 1, itemType = "item", image = "./images/security_card_02.png" },
        { itemName = "joint", itemLabel = "Joint", itemCount = 1, itemType = "item", image = "./images/joint.png" },
        { itemName = "advancedlockpick", itemLabel = "Lockpick", itemCount = 1, itemType = "item", image = "./images/advancedlockpick.png" },
    }
}

AK4Y.DiamondKit = {
    ["type"] = "diamond", -- don't change! 
    ["kitName"] = "DIAMOND",
    ["description"] = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae deserunt adipisci eaque ab veritatis odio iusto quo nesciunt tempore, non eveniet, suscipit consectetur nobis voluptatibus.",
    ["membership"] = "DIAMOND", 
    ["collectPeriod"] = 5, -- HOURS
    ["tebexLink"] = "https://www.google.com/diamondLink", -- tebex direct link
    ["items"] = {
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
        { itemName = "weapon_appistol", itemLabel = "EXAMPLE ITEM", itemCount = 1, itemType = "item", image = "./images/weapon_appistol.png" },
    }
}

AK4Y.Language = {
    ["title1"] = "PREMIUM",
    ["title2"] = "KIT SYSTEM",
    ["premiumTitle"] = "DO YOU WANT TO HAVE",
    ["premiumTitle2"] = "PREMIUM KITS?",
    ["premiumDescription"] = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatem commodi ducimus delectus! Mollitia ad aliquam ut minima labore.",
    ["acceptButton"] = "Accept",
    ["kit"] = "KIT",
    ["reviewButton"] = "Review Kit",
    ["everyText"] = "Every",
    ["hours"] = "hours",
    ["upgrade"] = "UPGRADE",
    ["collect"] = "Collect",
    ["back"] = "Back",
    ["exit"] = "exit",
    ["collected"] = "SUCCESSFULLY COLLECTED!",
    ["upgraded"] = "YOUR ACCOUNT HAS BEEN SUCCESSFULLY UPGRADED TO",
    ["passive"] = "Passive",
}
```
````

{% endtab %}
{% endtabs %}


# ak4y-treasureHunting


# Config

{% tabs %}
{% tab title="ESX" %}

````lua
```lua
AK4Y = {}

AK4Y.Framework = "esx" -- esx / newEsx | newEsx = export system | esx = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async

AK4Y.OpenMenuCommand = "treasure"

AK4Y.AutoRerollTime = 1 * 60 * 60 -- 1 hours |>|<| 1 means = 1 hour

AK4Y.WeaponsAreItem = false -- true : if your weapons are item

AK4Y.RerollPrice = 5000
AK4Y.RerollPaymentType = "bank" -- money or bank

AK4Y.BlipName = "TREASURE"
AK4Y.BlipSize = 0.5
AK4Y.BlipType = 161
AK4Y.BlipColour = 5

AK4Y.DrawText = "[E] - Collect Treasure"

AK4Y.Locations = { -- YOU CAN ADD MORE LOCATIONS, THERE ARE JUST EXAMPLE :)
    { locationId = 1, coords = vector3(-601.83, -1039.32, 22.54), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046533710046040127/image.png" },
    { locationId = 2, coords = vector3(-845.32, -1088.41, 11.64), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046534205217189908/image.png" },
    { locationId = 3, coords = vector3(-696.22, -1386.85, 5.5), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046534604074537020/image.png" },
    { locationId = 4, coords = vector3(-326.21, -1295.86, 31.38), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046534854520623124/image.png" },
    { locationId = 5, coords = vector3(-688.71, -141.74, 37.83), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046535399104847943/image.png" },
    { locationId = 6, coords = vector3(572.18, 113.93, 98.41), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046535968905244884/image.png" },
    { locationId = 7, coords = vector3(1113.3, -645.08, 57.68), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046536515867639859/image.png" },
    { locationId = 8, coords = vector3(1082.64, -787.55, 58.33), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046536732226621440/image.png" },
    { locationId = 9, coords = vector3(1001.58, 101.38, 81.19), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046537059562688543/image.png" },
    { locationId = 10, coords = vector3(-975.88, 389.52, 74.73), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046537478842101780/image.png" },
    { locationId = 11, coords = vector3(-1354.07, -139.43, 49.57), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046537657192300584/image.png" },
    { locationId = 12, coords = vector3(-1977.17, -309.92, 38.1), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046537890353659904/image.png" },
}

-- giveItemType's = "item", "vehicle", "money", "weapon"
-- should have a chance total of 100 !! IMPORTANT !! IMPORTANT !! IMPORTANT !!
AK4Y.RandomRewardItems = {                
    { itemName = "lockpick", label = "LOCKPICK", chance = 7.5, itemCount = 1, giveItemType = "item" },
    { itemName = "advancedlockpick", label = "LOCKPICK", chance = 7.5, itemCount = 1, giveItemType = "item" },
    { itemName = "firstaid", label = "AID KIT", chance = 7.5, itemCount = 1, giveItemType = "item" },
    { itemName = "joint", label = "JOINT", chance = 7.5, itemCount = 1, giveItemType = "item" },
    { itemName = "pistol_ammo", label = "PISTOL AMMO", chance = 7.5, itemCount = 1, giveItemType = "item" },
    { itemName = "radio", label = "RADIO", chance = 7.5, itemCount = 1, giveItemType = "item" },
    { itemName = "pistol_extendedclip", label = "EXTENDED CLIP", chance = 7.5, itemCount = 1, giveItemType = "item" },
    { itemName = "security_card_02", label = "SECURITY CARD", chance = 7.5, itemCount = 1, giveItemType = "item" },
    { itemName = "weapon_knife", label = "KNIFE", chance = 5, itemCount = 1, giveItemType = "item" },
    { itemName = "weapon_crowbar", label = "CROWBAR", chance = 5, itemCount = 1, giveItemType = "item" },
    { itemName = "weapon_knuckle", label = "KNUCKLE", chance = 5, itemCount = 1, giveItemType = "item" },
    { itemName = "armor", label = "ARMOR", chance = 5, itemCount = 1, giveItemType = "item" },
    { itemName = "weapon_combatpistol", label = "COMBAT PISTOL", chance = 5, itemCount = 1, giveItemType = "item" },
    { itemName = "weapon_heavypistol", label = "HEAVY PISTOL", chance = 5, itemCount = 1, giveItemType = "item"},
    { itemName = "weapon_appistol", label = "AP PISTOL", chance = 5, itemCount = 1, giveItemType = "item" },
    { itemName = "weapon_smg", label = "SMG", chance = 2, sellCredit = 150, giveItemType = "item"},
    { itemName = "weapon_combatpdw", label = "COMBAT PDW", chance = 2, sellCredit = 150,  giveItemType = "item" },
    { itemName = "zentorno", label = "ZENTORNO", chance = 1, sellCredit = 250, giveItemType = "vehicle" },
}

AK4Y.Language = {
    received = "RECEIVED",
    treasury = "TREASURY",
    treasure = "TREASURE",
    location = "LOCATION",
    description = "When the time above resets, the treasure space currently shown to you will reset and you will need to find a new space. Therefore, you must go to this area and get the treasure reward before the time resets.",
    awardReceived = "AWARD RECEIVED",
    youWon = "YOU WON",
}
```
````

{% endtab %}

{% tab title="QBCore" %}

````lua
```lua
AK4Y = {}

AK4Y.Framework = "qb" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.Mysql = "oxmysql" -- Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async

AK4Y.OpenMenuCommand = "treasure"

AK4Y.AutoRerollTime = 1 * 60 * 60 -- 1 hours |>|<| 1 means = 1 hour

AK4Y.RerollPrice = 5000
AK4Y.RerollPaymentType = "bank" -- cash or bank

AK4Y.BlipName = "TREASURE"
AK4Y.BlipSize = 0.5
AK4Y.BlipType = 161
AK4Y.BlipColour = 5

AK4Y.DrawText = "[E] - Collect Treasure"

AK4Y.Locations = { -- YOU CAN ADD MORE LOCATIONS, THERE ARE JUST EXAMPLE :)
    { locationId = 1, coords = vector3(-601.83, -1039.32, 22.54), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046533710046040127/image.png" },
    { locationId = 2, coords = vector3(-845.32, -1088.41, 11.64), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046534205217189908/image.png" },
    { locationId = 3, coords = vector3(-696.22, -1386.85, 5.5), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046534604074537020/image.png" },
    { locationId = 4, coords = vector3(-326.21, -1295.86, 31.38), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046534854520623124/image.png" },
    { locationId = 5, coords = vector3(-688.71, -141.74, 37.83), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046535399104847943/image.png" },
    { locationId = 6, coords = vector3(572.18, 113.93, 98.41), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046535968905244884/image.png" },
    { locationId = 7, coords = vector3(1113.3, -645.08, 57.68), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046536515867639859/image.png" },
    { locationId = 8, coords = vector3(1082.64, -787.55, 58.33), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046536732226621440/image.png" },
    { locationId = 9, coords = vector3(1001.58, 101.38, 81.19), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046537059562688543/image.png" },
    { locationId = 10, coords = vector3(-975.88, 389.52, 74.73), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046537478842101780/image.png" },
    { locationId = 11, coords = vector3(-1354.07, -139.43, 49.57), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046537657192300584/image.png" },
    { locationId = 12, coords = vector3(-1977.17, -309.92, 38.1), image = "https://cdn.discordapp.com/attachments/1020357813106642964/1046537890353659904/image.png" },
}

-- giveItemType's = "item", "vehicle", "money" 
-- should have a chance total of 100 !! IMPORTANT !! IMPORTANT !! IMPORTANT !!
AK4Y.RandomRewardItems = {                
    { itemName = "lockpick", label = "LOCKPICK", chance = 7.5, itemCount = 1, giveItemType = "item" },
    { itemName = "advancedlockpick", label = "LOCKPICK", chance = 7.5, itemCount = 1, giveItemType = "item" },
    { itemName = "firstaid", label = "AID KIT", chance = 7.5, itemCount = 1, giveItemType = "item" },
    { itemName = "joint", label = "JOINT", chance = 7.5, itemCount = 1, giveItemType = "item" },
    { itemName = "pistol_ammo", label = "PISTOL AMMO", chance = 7.5, itemCount = 1, giveItemType = "item" },
    { itemName = "radio", label = "RADIO", chance = 7.5, itemCount = 1, giveItemType = "item" },
    { itemName = "pistol_extendedclip", label = "EXTENDED CLIP", chance = 7.5, itemCount = 1, giveItemType = "item" },
    { itemName = "security_card_02", label = "SECURITY CARD", chance = 7.5, itemCount = 1, giveItemType = "item" },
    { itemName = "weapon_knife", label = "KNIFE", chance = 5, itemCount = 1, giveItemType = "item" },
    { itemName = "weapon_crowbar", label = "CROWBAR", chance = 5, itemCount = 1, giveItemType = "item" },
    { itemName = "weapon_knuckle", label = "KNUCKLE", chance = 5, itemCount = 1, giveItemType = "item" },
    { itemName = "armor", label = "ARMOR", chance = 5, itemCount = 1, giveItemType = "item" },
    { itemName = "weapon_combatpistol", label = "COMBAT PISTOL", chance = 5, itemCount = 1, giveItemType = "item" },
    { itemName = "weapon_heavypistol", label = "HEAVY PISTOL", chance = 5, itemCount = 1, giveItemType = "item"},
    { itemName = "weapon_appistol", label = "AP PISTOL", chance = 5, itemCount = 1, giveItemType = "item" },
    { itemName = "weapon_smg", label = "SMG", chance = 2, sellCredit = 150, giveItemType = "item"},
    { itemName = "weapon_combatpdw", label = "COMBAT PDW", chance = 2, sellCredit = 150,  giveItemType = "item" },
    { itemName = "zentorno", label = "ZENTORNO", chance = 1, sellCredit = 250, giveItemType = "vehicle" },
}

AK4Y.Language = {
    received = "RECEIVED",
    treasury = "TREASURY",
    treasure = "TREASURE",
    location = "LOCATION",
    description = "When the time above resets, the treasure space currently shown to you will reset and you will need to find a new space. Therefore, you must go to this area and get the treasure reward before the time resets.",
    awardReceived = "AWARD RECEIVED",
    youWon = "YOU WON",
}
```
````

{% endtab %}
{% endtabs %}


# ak4y-garbageJob


# Config

{% tabs %}
{% tab title="ESX" %}

````lua
```lua
AK4Y = {}

AK4Y.Framework = "newEsx" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.FrameWorkScriptName = "es_extended"
AK4Y.FrameGetObjectEvent = 'esx:getSharedObject'
AK4Y.sql = "oxmysql" --Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async
AK4Y.MoneyResetTime = 1950 --Minute
AK4Y.TaskResetTime = 1440 --Minute
AK4Y.DailyLimit = 50000 --Daily withdraw money limit
AK4Y.NeededXP = 1000 --Need xp for level up
AK4Y.MaxKmForRoutes = 20 --Max km for progress kms.
AK4Y.Vehicle = "trash2" --Spawn trash vehicle name.
AK4Y.RandomItemChange = 5 --% item change for random items.
AK4Y.RandomItems = {
    "water_bottle",
    "bread"
}

AK4Y.Blip = {
    Sprite = 318,
    Scale = 1.0,
    Color = 39,
    Label = "Garbage Depot"
}

AK4Y.Interaction = {
    InteractionType = "drawtext", --target or drawtext
    TargetName = "qb-target",
}

AK4Y.StartZone = {
    StartPed = vector4(-322.25, -1545.87, 31.02, 267.96),
    SpawnCoords = {
        [1] = vector4(-324.39, -1527.97, 27.26, 0.78),
        [2] = vector4(-332.87, -1523.42, 27.3, 268.62),
    },
    DropVehicleCoord = vector3(-315.07, -1521.13, 27.56),
}

AK4Y.JobRoutes = {
    [0] = {
        id = 1,
        RouteName = "Route #1",
        RouteSmallText = "Lorem ipsum dolor",
        RouteDistance = 5, --Number (km)
        Photo = "https://cdn.discordapp.com/attachments/956491704398118962/1123467267741589534/image.png",
        RouteStartStreet = "Alta Street",
        RouteFinishStreet = "Power Street",
        Price = 75, --Number
        Level = 0,
        Route = {
            [1] = vector3(-325.15, -1359.15, 31.61),
            [2] = vector3(-174.98, -1283.24, 31.67),
            [3] = vector3(-174.77, -1285.68, 31.72),
            [4] = vector3(-175.6, -1291.33, 31.68),
            [5] = vector3(-7.38, -1034.61, 29.45),
            [6] = vector3(-7.93, -1037.64, 29.51),
            [7] = vector3(6.52, -1029.47, 29.54),
            [8] = vector3(9.05, -1030.3, 29.55),
            [9] = vector3(33.02, -1009.56, 29.81),
            [10] = vector3(74.94, -875.42, 30.77),
            [11] = vector3(159.26, -777.53, 32.05),
            [12] = vector3(159.56, -775.77, 32.2),
            [13] = vector3(159.98, -774.05, 32.29),
            [14] = vector3(237.83, -681.5, 37.71),
            [15] = vector3(250.93, -661.32, 38.71),
            [16] = vector3(285.82, -616.0, 44.27),
            [17] = vector3(289.14, -617.05, 44.2),
            [18] = vector3(319.31, -183.96, 57.69),
            [19] = vector3(317.43, -183.3, 57.82),
            [20] = vector3(314.03, -182.31, 57.73),

        }
    },
    [1] = {
        id = 2,
        RouteName = "Route #2",
        RouteSmallText = "Lorem ipsum dolor",
        RouteDistance = 9, --Number (km)
        Photo = "https://cdn.discordapp.com/attachments/1123475571767263273/1123475596996001892/image.png",
        RouteStartStreet = "Carson Ave",
        RouteFinishStreet = "Las Lagunas Blvd",
        Price = 15, --Number
        Level = 3,
        Route = {
            [1] = vector3(-241.77, -1470.68, 31.88),
            [2] = vector3(-243.44, -1472.88, 31.86),
            [3] = vector3(-244.52, -1474.84, 31.82),
            [4] = vector3(-22.58, -1534.31, 30.57),
            [5] = vector3(-10.84, -1528.68, 30.32),
            [6] = vector3(-9.02, -1527.22, 30.13),
            [7] = vector3(-12.89, -1542.35, 29.88),
            [8] = vector3(130.31, -1524.54, 29.43),
            [9] = vector3(131.49, -1522.75, 29.47),
            [10] = vector3(133.99, -1520.69, 29.57),
            [11] = vector3(126.89, -1511.9, 29.53),
            [12] = vector3(129.1, -1487.86, 29.44),
            [13] = vector3(127.68, -1487.24, 29.6),
            [14] = vector3(116.52, -1462.35, 29.73),
            [15] = vector3(103.38, -1317.55, 29.57),
            [16] = vector3(105.52, -1316.25, 29.64),
            [17] = vector3(92.01, -1302.71, 29.26),
            [18] = vector3(92.51, -1305.28, 29.51),
            [19] = vector3(84.52, -1291.06, 29.52),
            [20] = vector3(6.29, -729.97, 32.42),
            [21] = vector3(7.7, -725.59, 32.57),
            [22] = vector3(-4.1, -203.98, 53.19),
            [23] = vector3(5.02, -205.39, 53.09),
            [24] = vector3(5.89, -203.03, 53.02),
            --[25] = vector3(-22.58, -1534.31, 30.57),
        }
    },
    [2] = {
        id = 3,
        RouteName = "Route #3",
        RouteSmallText = "Lorem ipsum dolor",
        RouteDistance = 11, --Number (km)
        Photo = "https://cdn.discordapp.com/attachments/1123475571767263273/1123477898616131584/image.png",
        RouteStartStreet = "Calais Ave",
        RouteFinishStreet = "Elgin Ave",
        Price = 15, --Number
        Level = 5,
        Route = {
            [1] = vector3(-541.38, -1220.3, 18.73),
            [2] = vector3(-541.9, -1222.42, 18.9),
            [3] = vector3(-632.96, -1225.58, 12.52),
            [4] = vector3(-634.24, -1227.58, 12.51),
            [5] = vector3(-716.49, -1170.11, 10.95),
            [6] = vector3(-714.71, -1133.22, 10.1),
            [7] = vector3(-708.46, -1140.65, 11.14),
            [8] = vector3(-710.79, -1142.47, 11.16),
            [9] = vector3(-763.62, -907.91, 20.13),
            [10] = vector3(-718.63, -882.14, 23.95),
            [11] = vector3(-717.3, -880.88, 23.91),
            [12] = vector3(-569.34, -858.47, 26.74),
            [13] = vector3(-364.13, -958.31, 31.36),
            [14] = vector3(-363.73, -961.21, 31.53),
            [15] = vector3(116.42, -1049.2, 29.48),
            [16] = vector3(127.94, -1053.48, 29.58),
            [17] = vector3(130.96, -1053.77, 29.67),
            [18] = vector3(121.71, -1088.34, 29.49),
            [19] = vector3(125.07, -1088.48, 29.66),
            [20] = vector3(152.27, -1064.9, 29.5),
            [21] = vector3(154.56, -1065.77, 29.5),
            [22] = vector3(173.53, -1073.52, 29.5),
            [23] = vector3(173.25, -1076.49, 29.61),
            --[24] = vector3(5.89, -203.03, 53.02),
            --[25] = vector3(-22.58, -1534.31, 30.57),
        }
    },
    [3] = {
        id = 4,
        RouteName = "Route #4",
        RouteSmallText = "Lorem ipsum dolor",
        RouteDistance = 9, --Number (km)
        Photo = "https://cdn.discordapp.com/attachments/1123475571767263273/1123481352243793960/image.png",
        RouteStartStreet = "Davis Ave",
        RouteFinishStreet = "Aguja Street",
        Price = 15, --Number
        Level = 6,
        Route = {
            [1] = vector3(-360.31, -1868.14, 21.36),
            [2] = vector3(-360.21, -1864.84, 21.65),
            [3] = vector3(-360.67, -1861.0, 21.65),
            [4] = vector3(-589.92, -1738.29, 23.04),
            [5] = vector3(-587.85, -1740.68, 23.07),
            [6] = vector3(-615.22, -1610.03, 27.26),
            [7] = vector3(-617.55, -1609.88, 27.33),
            [8] = vector3(-619.61, -1609.83, 27.26),
            [9] = vector3(-621.8, -1609.87, 27.34),
            [10] = vector3(-626.59, -1611.05, 26.96),
            [11] = vector3(-724.87, -1506.33, 5.46),
            [12] = vector3(-723.66, -1509.0, 5.45),
            [13] = vector3(-845.2, -1112.47, 7.37),
            [14] = vector3(-846.49, -1110.11, 7.51),
            [15] = vector3(-849.95, -1111.68, 7.37),
            [16] = vector3(-922.09, -1161.74, 5.08),
            [17] = vector3(-1019.23, -1119.42, 2.49),
            [18] = vector3(-1023.1, -1125.04, 2.6),
            [19] = vector3(-1055.74, -1145.1, 2.46),
            [20] = vector3(-1130.38, -1181.16, 2.69),
            [21] = vector3(-1132.12, -1181.9, 2.7),
            [22] = vector3(-1147.41, -1190.4, 2.95),
            [23] = vector3(-1147.25, -1380.06, 5.35),
            [24] = vector3(-1179.15, -1403.38, 5.02),
            [25] = vector3(-1177.89, -1405.51, 5.05),
        }
    },
    [4] = {
        id = 5,
        RouteName = "Route #5",
        RouteSmallText = "Lorem ipsum dolor",
        RouteDistance = 13, --Number (km)
        Photo = "https://cdn.discordapp.com/attachments/1123475571767263273/1123488309730086942/image.png",
        RouteStartStreet = "Davis Ave",
        RouteFinishStreet = "Davis Ave",
        Price = 15, --Number
        Level = 7,
        Route = {
            [1] = vector3(-132.86, -1782.73, 30.2),
            [2] = vector3(-10.8, -1812.7, 26.19),
            [3] = vector3(-13.15, -1812.93, 26.28),
            [4] = vector3(1.92, -1822.8, 25.62),
            [5] = vector3(0.1, -1824.84, 25.73),
            [6] = vector3(131.0, -1887.41, 23.78),
            [7] = vector3(190.17, -1916.8, 22.91),
            [8] = vector3(396.87, -1925.2, 25.08),
            [9] = vector3(414.18, -1898.85, 25.99),
            [10] = vector3(411.48, -1900.57, 25.91),
            [11] = vector3(414.62, -1903.78, 25.97),
            [12] = vector3(421.43, -1883.61, 26.75),
            [13] = vector3(434.01, -1877.95, 27.41),
            [14] = vector3(475.11, -1861.86, 27.98),
            [15] = vector3(494.13, -1887.3, 26.4),
            [16] = vector3(560.51, -1774.88, 29.65),
            [17] = vector3(561.76, -1776.01, 29.82),
            [18] = vector3(563.7, -1774.39, 29.78),
            [19] = vector3(425.4, -1526.13, 29.55),
            [20] = vector3(424.42, -1524.16, 29.55),
            [21] = vector3(422.42, -1521.43, 29.7),
            [22] = vector3(422.54, -1518.89, 29.57),
            [23] = vector3(423.81, -1517.8, 29.7),
            --[24] = vector3(-1179.15, -1403.38, 5.02),
            --[25] = vector3(-1177.89, -1405.51, 5.05),
        }
    },
    [5] = {
        id = 6,
        RouteName = "Route #6",
        RouteSmallText = "Lorem ipsum dolor",
        RouteDistance = 18, --Number (km)
        Photo = "https://cdn.discordapp.com/attachments/1123475571767263273/1123488309730086942/image.png",
        RouteStartStreet = "Olympic Fwy",
        RouteFinishStreet = "Power Street",
        Price = 15, --Number
        Level = 9,
        Route = {
            [1] = vector3(-346.79, -1068.08, 23.34),
            [2] = vector3(-349.39, -1070.0, 23.42),
            [3] = vector3(-350.8, -1071.95, 23.3),
            [4] = vector3(-363.19, -961.54, 31.35),
            [5] = vector3(-363.19, -959.22, 31.45),
            [6] = vector3(7.3, -710.89, 33.03),
            [7] = vector3(8.05, -709.1, 33.17),
            [8] = vector3(450.96, -696.68, 28.19),
            [9] = vector3(468.53, -947.67, 28.18),
            [10] = vector3(466.43, -947.22, 28.34),
            [11] = vector3(454.2, -932.58, 28.76),
            [12] = vector3(453.8, -917.44, 28.75),
            [13] = vector3(339.19, -960.41, 29.76),
            [14] = vector3(315.92, -946.19, 29.75),
            [15] = vector3(313.56, -946.25, 29.79),
            [16] = vector3(242.54, -823.62, 30.36),
            [17] = vector3(244.27, -824.1, 30.38),
            [18] = vector3(51.2, -831.01, 30.38),
           -- [19] = vector3(425.4, -1526.13, 29.55),
           -- [20] = vector3(424.42, -1524.16, 29.55),
           -- [21] = vector3(422.42, -1521.43, 29.7),
           -- [22] = vector3(422.54, -1518.89, 29.57),
           -- [23] = vector3(423.81, -1517.8, 29.7),
           --[24] = vector3(-1179.15, -1403.38, 5.02),
           --[25] = vector3(-1177.89, -1405.51, 5.05),
        }
    },
}

AK4Y.Tasks = {
    [0] = {
        id = 0,
        TaskName = "#1 Finish Your First Job",
        TaskDescription = "You will get a reward when you finish your first mission.",
        Reward = {
            Price = 7000,
            Exp = 500,
        } ,
        requiredCount = 1,
        hasCount = 0,
        Collected = false,
    },
    [1] = {
        id = 1,
        TaskName = "#2 Finish Your Second Job",
        TaskDescription = "You will receive rewards when you complete two missions.",
        Reward = {
            Price = 56,
            Exp = 700,
        } ,
        requiredCount = 2,
        hasCount = 0,
        Collected = false,
    },
    [2] = {
        id = 2,
        TaskName = "#3 Find Rare Item",
        TaskDescription = "The mission progresses with each valuable item you find.",
        Reward = {
            Price = 358,
            Exp = 3563,
        } ,
        requiredCount = 5,
        hasCount = 0,
        Collected = false,
    },
    [3] = {
        id = 3,
        TaskName = "#4 Finish 5 Job",
        TaskDescription = "Each time you finish a job, the bar advances one level.",
        Reward = {
            Price = 358,
            Exp = 3563,
        } ,
        requiredCount = 5,
        hasCount = 0,
        Collected = false,
    },
    [4] = {
        id = 4,
        TaskName = "#5 Find Your First Rare Item",
        TaskDescription = "You will get a reward when you find the first valuable item.",
        Reward = {
            Price = 358,
            Exp = 3563,
        } ,
        requiredCount = 1,
        hasCount = 0,
        Collected = false,
    },
    [5] = {
        id = 5,
        TaskName = "#6 Finish 5 Task",
        TaskDescription = "Each time you finish a mission, the bar advances one level.",
        Reward = {
            Price = 358,
            Exp = 3563,
        } ,
        requiredCount = 5,
        hasCount = 0,
        Collected = false,
    },
}

function OnVehicleSpawn(plate)
    TriggerEvent("vehiclekeys:client:SetOwner", plate)
end

function FindRareItem()
    TriggerServerEvent('ak4y-garbage:AddTask', 2, 1)
end

function OnJobFinish()
    TriggerServerEvent('ak4y-garbage:AddTask', 0, 1)
    Wait(500)
    TriggerServerEvent('ak4y-garbage:AddTask', 1, 1)
    Wait(500)
    TriggerServerEvent('ak4y-garbage:AddTask', 3, 1)
end

AK4Y.Clothing={
	male ={
        ['tshirt_1'] = 59, ['tshirt_2'] = 0, -- düzenlendi
        ['torso_1'] = 56, ['torso_2'] = 0,-- düzenlendi
        ['decals_1'] = 0, ['decals_2'] = 0,
        ['arms'] = 63, -- düzenlendi
        ['pants_1'] = 36, ['pants_2'] = 0, -- düzenlendi
        ['shoes_1'] = 25, ['shoes_2'] = 0,
        ['helmet_1'] = 58, ['helmet_2'] = 0,
        ['ears_1'] = -1, ['ears_2'] = 0,
        ['mask_1'] = 0, ['mask_2'] = 0,
        ['bags_1'] = 0, ['bags_2'] = 0,
        ['glasses_1'] = 0, ['glasses_2'] = 0,
        ['bproof_1'] = 0,  ['bproof_2'] = 0
	},
	female={
	    ['arms'] = 0,
	    ['tshirt_1'] = 2, 	['tshirt_2'] = 0,
	    ['torso_1'] = 161, 	['torso_2'] = 0,
	    ['decals_1'] = 0, 	['decals_2'] = 0,
	    ['pants_1'] = 69, 	['pants_2'] = 0,
	    ['shoes_1'] = 27, 	['shoes_2'] = 7,
	    ['helmet_1'] = -1, 	['helmet_2'] = 0,
	    ['ears_1'] = -1, 	['ears_2'] = 0,
	    ['mask_1'] = 0, 	['mask_2'] = 0,
	    ['bags_1'] = 0, 	['bags_2'] = 0,
	    ['glasses_1'] = 18, ['glasses_2'] = 0,
	    ['bproof_1'] = 5,  	['bproof_2'] = 0,
	}
}

AK4Y.Languages = {
    ["wear_clothes"] = "You need wear clothes to start job.",
    ["weared_clothes"] = "You weared clothes.",
    ["unweared_clothes"] = "You unweared clothes.",
    ["no_price"] = "You have to enter price!",
    ["no_spawnpoint"] = "All spawn points are full!",
    ["next_checkpoint"] = "All garbage bags are done, proceed to the next location!",
    ["bags_left"] = "Bags left: ",
    ["vehicle_deleted"] = "The mission was canceled because the vehicle was deleted.",
    ["done_work"] = "You are done working! Go back to the depot.",
    ["0$_withdraw"] = "You can't withdraw 0$",
    ["max_withdraw"] = "The maximum amount you can withdraw: ",
    ["no_money"] = "You don't have this amount in your account.",
    ["max_withdraw_limit"] = "You can't withdraw more than the daily limit.",
    ["withdrawed"] = "The money was deposited into the bank account.",
    ["task_successfully"] = "You take this task reward.", -- düzenlendi
    ["integar_value"] = "You must enter an integer value!",
    ["leave_job"] = "You left your job",
    ["speak"] = "[E] Speak", -- EKLEME
    ["level_not_yet"] = "Your level is not yet for this job.",
    ["take_garbage"] = "[E] Take Garbage",
    ["drop_garbage_to_vehicle"] = "[E] Drop Garbage To Vehicle",
    ["drop_vehicle"] = "Drop Vehicle",
    ["start_job"] = "Start Job",
    ["enter_vehicle"] = "Enter Vehicle",
    ["move_to_checkpoint"] = "Move To Checkpoint",
    ["collect_garbage"] = "Collect Garbage",
    ["descriptionText"] = "Lorem ipsum dolor sit amet consectetur. Nibh dictumst massa et ullamcorper proin.",
    ["earningsDescription"] = "Lorem ipsum dolor sit amet cons Nibh dictumst",
    ["profileDescription"] = "Lorem ipsum dolor sit amet consecte. Montes",
    ["earningInformation"] = "Lorem ipsum dolor sit amet consNibh dictumst"
}

function FrameworkNotify(text ,type)
    ESX.ShowNotification(text)
end
```
````

{% endtab %}

{% tab title="QBCore" %}

````lua
```lua
AK4Y = {}

AK4Y.Framework = "qb" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.FrameWorkScriptName = "qb-core"
AK4Y.FrameGetObjectEvent = 'QBCore:GetObject'
AK4Y.sql = "oxmysql" --Check fxmanifest.lua when you change it! | ghmattimysql / oxmysql / mysql-async
AK4Y.MoneyResetTime = 1950 --Minute
AK4Y.TaskResetTime = 1440 --Minute
AK4Y.DailyLimit = 50000 --Daily withdraw money limit
AK4Y.NeededXP = 1000 --Need xp for level up
AK4Y.MaxKmForRoutes = 20 --Max km for progress kms.
AK4Y.Vehicle = "trash2" --Spawn trash vehicle name.
AK4Y.RandomItemChange = 5 --% item change for random items.
AK4Y.RandomItems = {
    "water_bottle",
    "bread"
}

AK4Y.Blip = {
    Sprite = 318,
    Scale = 1.0,
    Color = 39,
    Label = "Garbage Depot"
}

AK4Y.Interaction = {
    InteractionType = "drawtext", --target or drawtext
    TargetName = "qb-target",
}

AK4Y.StartZone = {
    StartPed = vector4(-322.25, -1545.87, 31.02, 267.96),
    SpawnCoords = {
        [1] = vector4(-324.39, -1527.97, 27.26, 0.78),
        [2] = vector4(-332.87, -1523.42, 27.3, 268.62),
    },
    DropVehicleCoord = vector3(-315.07, -1521.13, 27.56),
}

AK4Y.JobRoutes = {
    [0] = {
        id = 1,
        RouteName = "Route #1",
        RouteSmallText = "Lorem ipsum dolor",
        RouteDistance = 5, --Number (km)
        Photo = "https://cdn.discordapp.com/attachments/956491704398118962/1123467267741589534/image.png",
        RouteStartStreet = "Alta Street",
        RouteFinishStreet = "Power Street",
        Price = 15, --Number
        Level = 0,
        Route = {
            [1] = vector3(-325.15, -1359.15, 31.61),
            [2] = vector3(-174.98, -1283.24, 31.67),
            [3] = vector3(-174.77, -1285.68, 31.72),
            [4] = vector3(-175.6, -1291.33, 31.68),
            [5] = vector3(-7.38, -1034.61, 29.45),
            [6] = vector3(-7.93, -1037.64, 29.51),
            [7] = vector3(6.52, -1029.47, 29.54),
            [8] = vector3(9.05, -1030.3, 29.55),
            [9] = vector3(33.02, -1009.56, 29.81),
            [10] = vector3(74.94, -875.42, 30.77),
            [11] = vector3(159.26, -777.53, 32.05),
            [12] = vector3(159.56, -775.77, 32.2),
            [13] = vector3(159.98, -774.05, 32.29),
            [14] = vector3(237.83, -681.5, 37.71),
            [15] = vector3(250.93, -661.32, 38.71),
            [16] = vector3(285.82, -616.0, 44.27),
            [17] = vector3(289.14, -617.05, 44.2),
            [18] = vector3(319.31, -183.96, 57.69),
            [19] = vector3(317.43, -183.3, 57.82),
            [20] = vector3(314.03, -182.31, 57.73),

        }
    },
    [1] = {
        id = 2,
        RouteName = "Route #2",
        RouteSmallText = "Lorem ipsum dolor",
        RouteDistance = 9, --Number (km)
        Photo = "https://cdn.discordapp.com/attachments/1123475571767263273/1123475596996001892/image.png",
        RouteStartStreet = "Carson Ave",
        RouteFinishStreet = "Las Lagunas Blvd",
        Price = 17, --Number
        Level = 3,
        Route = {
            [1] = vector3(-241.77, -1470.68, 31.88),
            [2] = vector3(-243.44, -1472.88, 31.86),
            [3] = vector3(-244.52, -1474.84, 31.82),
            [4] = vector3(-22.58, -1534.31, 30.57),
            [5] = vector3(-10.84, -1528.68, 30.32),
            [6] = vector3(-9.02, -1527.22, 30.13),
            [7] = vector3(-12.89, -1542.35, 29.88),
            [8] = vector3(130.31, -1524.54, 29.43),
            [9] = vector3(131.49, -1522.75, 29.47),
            [10] = vector3(133.99, -1520.69, 29.57),
            [11] = vector3(126.89, -1511.9, 29.53),
            [12] = vector3(129.1, -1487.86, 29.44),
            [13] = vector3(127.68, -1487.24, 29.6),
            [14] = vector3(116.52, -1462.35, 29.73),
            [15] = vector3(103.38, -1317.55, 29.57),
            [16] = vector3(105.52, -1316.25, 29.64),
            [17] = vector3(92.01, -1302.71, 29.26),
            [18] = vector3(92.51, -1305.28, 29.51),
            [19] = vector3(84.52, -1291.06, 29.52),
            [20] = vector3(6.29, -729.97, 32.42),
            [21] = vector3(7.7, -725.59, 32.57),
            [22] = vector3(-4.1, -203.98, 53.19),
            [23] = vector3(5.02, -205.39, 53.09),
            [24] = vector3(5.89, -203.03, 53.02),
            --[25] = vector3(-22.58, -1534.31, 30.57),
        }
    },
    [2] = {
        id = 3,
        RouteName = "Route #3",
        RouteSmallText = "Lorem ipsum dolor",
        RouteDistance = 11, --Number (km)
        Photo = "https://cdn.discordapp.com/attachments/1123475571767263273/1123477898616131584/image.png",
        RouteStartStreet = "Calais Ave",
        RouteFinishStreet = "Elgin Ave",
        Price = 23, --Number
        Level = 5,
        Route = {
            [1] = vector3(-541.38, -1220.3, 18.73),
            [2] = vector3(-541.9, -1222.42, 18.9),
            [3] = vector3(-632.96, -1225.58, 12.52),
            [4] = vector3(-634.24, -1227.58, 12.51),
            [5] = vector3(-716.49, -1170.11, 10.95),
            [6] = vector3(-714.71, -1133.22, 10.1),
            [7] = vector3(-708.46, -1140.65, 11.14),
            [8] = vector3(-710.79, -1142.47, 11.16),
            [9] = vector3(-763.62, -907.91, 20.13),
            [10] = vector3(-718.63, -882.14, 23.95),
            [11] = vector3(-717.3, -880.88, 23.91),
            [12] = vector3(-569.34, -858.47, 26.74),
            [13] = vector3(-364.13, -958.31, 31.36),
            [14] = vector3(-363.73, -961.21, 31.53),
            [15] = vector3(116.42, -1049.2, 29.48),
            [16] = vector3(127.94, -1053.48, 29.58),
            [17] = vector3(130.96, -1053.77, 29.67),
            [18] = vector3(121.71, -1088.34, 29.49),
            [19] = vector3(125.07, -1088.48, 29.66),
            [20] = vector3(152.27, -1064.9, 29.5),
            [21] = vector3(154.56, -1065.77, 29.5),
            [22] = vector3(173.53, -1073.52, 29.5),
            [23] = vector3(173.25, -1076.49, 29.61),
            --[24] = vector3(5.89, -203.03, 53.02),
            --[25] = vector3(-22.58, -1534.31, 30.57),
        }
    },
    [3] = {
        id = 4,
        RouteName = "Route #4",
        RouteSmallText = "Lorem ipsum dolor",
        RouteDistance = 9, --Number (km)
        Photo = "https://cdn.discordapp.com/attachments/1123475571767263273/1123481352243793960/image.png",
        RouteStartStreet = "Davis Ave",
        RouteFinishStreet = "Aguja Street",
        Price = 25, --Number
        Level = 6,
        Route = {
            [1] = vector3(-360.31, -1868.14, 21.36),
            [2] = vector3(-360.21, -1864.84, 21.65),
            [3] = vector3(-360.67, -1861.0, 21.65),
            [4] = vector3(-589.92, -1738.29, 23.04),
            [5] = vector3(-587.85, -1740.68, 23.07),
            [6] = vector3(-615.22, -1610.03, 27.26),
            [7] = vector3(-617.55, -1609.88, 27.33),
            [8] = vector3(-619.61, -1609.83, 27.26),
            [9] = vector3(-621.8, -1609.87, 27.34),
            [10] = vector3(-626.59, -1611.05, 26.96),
            [11] = vector3(-724.87, -1506.33, 5.46),
            [12] = vector3(-723.66, -1509.0, 5.45),
            [13] = vector3(-845.2, -1112.47, 7.37),
            [14] = vector3(-846.49, -1110.11, 7.51),
            [15] = vector3(-849.95, -1111.68, 7.37),
            [16] = vector3(-922.09, -1161.74, 5.08),
            [17] = vector3(-1019.23, -1119.42, 2.49),
            [18] = vector3(-1023.1, -1125.04, 2.6),
            [19] = vector3(-1055.74, -1145.1, 2.46),
            [20] = vector3(-1130.38, -1181.16, 2.69),
            [21] = vector3(-1132.12, -1181.9, 2.7),
            [22] = vector3(-1147.41, -1190.4, 2.95),
            [23] = vector3(-1147.25, -1380.06, 5.35),
            [24] = vector3(-1179.15, -1403.38, 5.02),
            [25] = vector3(-1177.89, -1405.51, 5.05),
        }
    },
    [4] = {
        id = 5,
        RouteName = "Route #5",
        RouteSmallText = "Lorem ipsum dolor",
        RouteDistance = 13, --Number (km)
        Photo = "https://cdn.discordapp.com/attachments/1123475571767263273/1123488309730086942/image.png",
        RouteStartStreet = "Davis Ave",
        RouteFinishStreet = "Davis Ave",
        Price = 39, --Number
        Level = 7,
        Route = {
            [1] = vector3(-132.86, -1782.73, 30.2),
            [2] = vector3(-10.8, -1812.7, 26.19),
            [3] = vector3(-13.15, -1812.93, 26.28),
            [4] = vector3(1.92, -1822.8, 25.62),
            [5] = vector3(0.1, -1824.84, 25.73),
            [6] = vector3(131.0, -1887.41, 23.78),
            [7] = vector3(190.17, -1916.8, 22.91),
            [8] = vector3(396.87, -1925.2, 25.08),
            [9] = vector3(414.18, -1898.85, 25.99),
            [10] = vector3(411.48, -1900.57, 25.91),
            [11] = vector3(414.62, -1903.78, 25.97),
            [12] = vector3(421.43, -1883.61, 26.75),
            [13] = vector3(434.01, -1877.95, 27.41),
            [14] = vector3(475.11, -1861.86, 27.98),
            [15] = vector3(494.13, -1887.3, 26.4),
            [16] = vector3(560.51, -1774.88, 29.65),
            [17] = vector3(561.76, -1776.01, 29.82),
            [18] = vector3(563.7, -1774.39, 29.78),
            [19] = vector3(425.4, -1526.13, 29.55),
            [20] = vector3(424.42, -1524.16, 29.55),
            [21] = vector3(422.42, -1521.43, 29.7),
            [22] = vector3(422.54, -1518.89, 29.57),
            [23] = vector3(423.81, -1517.8, 29.7),
            --[24] = vector3(-1179.15, -1403.38, 5.02),
            --[25] = vector3(-1177.89, -1405.51, 5.05),
        }
    },
    [5] = {
        id = 6,
        RouteName = "Route #6",
        RouteSmallText = "Lorem ipsum dolor",
        RouteDistance = 18, --Number (km)
        Photo = "https://cdn.discordapp.com/attachments/1123475571767263273/1123488309730086942/image.png",
        RouteStartStreet = "Olympic Fwy",
        RouteFinishStreet = "Power Street",
        Price = 32, --Number
        Level = 9,
        Route = {
            [1] = vector3(-346.79, -1068.08, 23.34),
            [2] = vector3(-349.39, -1070.0, 23.42),
            [3] = vector3(-350.8, -1071.95, 23.3),
            [4] = vector3(-363.19, -961.54, 31.35),
            [5] = vector3(-363.19, -959.22, 31.45),
            [6] = vector3(7.3, -710.89, 33.03),
            [7] = vector3(8.05, -709.1, 33.17),
            [8] = vector3(450.96, -696.68, 28.19),
            [9] = vector3(468.53, -947.67, 28.18),
            [10] = vector3(466.43, -947.22, 28.34),
            [11] = vector3(454.2, -932.58, 28.76),
            [12] = vector3(453.8, -917.44, 28.75),
            [13] = vector3(339.19, -960.41, 29.76),
            [14] = vector3(315.92, -946.19, 29.75),
            [15] = vector3(313.56, -946.25, 29.79),
            [16] = vector3(242.54, -823.62, 30.36),
            [17] = vector3(244.27, -824.1, 30.38),
            [18] = vector3(51.2, -831.01, 30.38),
           -- [19] = vector3(425.4, -1526.13, 29.55),
           -- [20] = vector3(424.42, -1524.16, 29.55),
           -- [21] = vector3(422.42, -1521.43, 29.7),
           -- [22] = vector3(422.54, -1518.89, 29.57),
           -- [23] = vector3(423.81, -1517.8, 29.7),
           --[24] = vector3(-1179.15, -1403.38, 5.02),
           --[25] = vector3(-1177.89, -1405.51, 5.05),
        }
    },
}

AK4Y.Tasks = {
    [0] = {
        id = 0,
        TaskName = "#1 Finish Your First Job",
        TaskDescription = "You will get a reward when you finish your first mission.",
        Reward = {
            Price = 7000,
            Exp = 500,
        } ,
        requiredCount = 1,
        hasCount = 0,
        Collected = false,
    },
    [1] = {
        id = 1,
        TaskName = "#2 Finish Your Second Job",
        TaskDescription = "You will receive rewards when you complete two missions.",
        Reward = {
            Price = 56,
            Exp = 700,
        } ,
        requiredCount = 2,
        hasCount = 0,
        Collected = false,
    },
    [2] = {
        id = 2,
        TaskName = "#3 Find Rare Item",
        TaskDescription = "The mission progresses with each valuable item you find.",
        Reward = {
            Price = 358,
            Exp = 3563,
        } ,
        requiredCount = 5,
        hasCount = 0,
        Collected = false,
    },
    [3] = {
        id = 3,
        TaskName = "#4 Finish 5 Job",
        TaskDescription = "Each time you finish a job, the bar advances one level.",
        Reward = {
            Price = 358,
            Exp = 3563,
        } ,
        requiredCount = 5,
        hasCount = 0,
        Collected = false,
    },
    [4] = {
        id = 4,
        TaskName = "#5 Find Your First Rare Item",
        TaskDescription = "You will get a reward when you find the first valuable item.",
        Reward = {
            Price = 358,
            Exp = 3563,
        } ,
        requiredCount = 1,
        hasCount = 0,
        Collected = false,
    },
    [5] = {
        id = 5,
        TaskName = "#6 Finish 5 Task",
        TaskDescription = "Each time you finish a mission, the bar advances one level.",
        Reward = {
            Price = 358,
            Exp = 3563,
        } ,
        requiredCount = 5,
        hasCount = 0,
        Collected = false,
    },
}

function OnVehicleSpawn(plate)
    TriggerEvent("vehiclekeys:client:SetOwner", plate)
end

function FindRareItem()
    TriggerServerEvent('ak4y-garbage:AddTask', 4, 1)
    Wait(500)
    TriggerServerEvent('ak4y-garbage:AddTask', 2, 1)
end

function OnJobFinish()
    TriggerServerEvent('ak4y-garbage:AddTask', 0, 1)
    Wait(500)
    TriggerServerEvent('ak4y-garbage:AddTask', 1, 1)
    Wait(500)
    TriggerServerEvent('ak4y-garbage:AddTask', 3, 1)
end

function OnTasksFinish()
    print("yeyo")
    TriggerServerEvent('ak4y-garbage:AddTask', 5, 1)
end

AK4Y.Clothing={
	male ={
        ['tshirt_1'] = 59, ['tshirt_2'] = 0, -- düzenlendi
        ['torso_1'] = 56, ['torso_2'] = 0,-- düzenlendi
        ['decals_1'] = 0, ['decals_2'] = 0,
        ['arms'] = 63, -- düzenlendi
        ['pants_1'] = 36, ['pants_2'] = 0, -- düzenlendi
        ['shoes_1'] = 25, ['shoes_2'] = 0,
        ['helmet_1'] = 58, ['helmet_2'] = 0,
        ['chain_1'] = 0, ['chain_2'] = 0,
        ['ears_1'] = -1, ['ears_2'] = 0,
        ['mask_1'] = 0, ['mask_2'] = 0,
        ['bags_1'] = 0, ['bags_2'] = 0,
        ['glasses_1'] = 0, ['glasses_2'] = 0,
        ['bproof_1'] = 0,  ['bproof_2'] = 0
	},
	female={
	    ['arms'] = 0,
	    ['tshirt_1'] = 2, 	['tshirt_2'] = 0,
	    ['torso_1'] = 161, 	['torso_2'] = 0,
	    ['decals_1'] = 0, 	['decals_2'] = 0,
	    ['pants_1'] = 69, 	['pants_2'] = 0,
	    ['shoes_1'] = 27, 	['shoes_2'] = 7,
	    ['helmet_1'] = -1, 	['helmet_2'] = 0,
	    ['chain_1'] = 0, 	['chain_2'] = 0,
	    ['ears_1'] = -1, 	['ears_2'] = 0,
	    ['mask_1'] = 0, 	['mask_2'] = 0,
	    ['bags_1'] = 0, 	['bags_2'] = 0,
	    ['glasses_1'] = 18, ['glasses_2'] = 0,
	    ['bproof_1'] = 5,  	['bproof_2'] = 0,
	    ['watches_1'] = 0,  ['watches_2'] = 0,
	    ['bracelets_1'] = 0,['bracelets_2'] = 0,
	}
}

AK4Y.Languages = {
    ["wear_clothes"] = "You need wear clothes to start job.",
    ["weared_clothes"] = "You weared clothes.",
    ["unweared_clothes"] = "You unweared clothes.",
    ["no_price"] = "You have to enter price!",
    ["no_spawnpoint"] = "All spawn points are full!",
    ["next_checkpoint"] = "All garbage bags are done, proceed to the next location!",
    ["bags_left"] = "Bags left: ",
    ["vehicle_deleted"] = "The mission was canceled because the vehicle was deleted.",
    ["done_work"] = "You are done working! Go back to the depot.",
    ["0$_withdraw"] = "You can't withdraw 0$",
    ["max_withdraw"] = "The maximum amount you can withdraw: ",
    ["no_money"] = "You don't have this amount in your account.",
    ["max_withdraw_limit"] = "You can't withdraw more than the daily limit.",
    ["withdrawed"] = "The money was deposited into the bank account.",
    ["task_successfully"] = "You take this task reward.", -- düzenlendi
    ["integar_value"] = "You must enter an integer value!",
    ["leave_job"] = "You left your job",
    ["speak"] = "[E] Speak", -- EKLEME
    ["level_not_yet"] = "Your level is not yet for this job.",
    ["take_garbage"] = "[E] Take Garbage",
    ["drop_garbage_to_vehicle"] = "[E] Drop Garbage To Vehicle",
    ["drop_vehicle"] = "[E] - Drop Vehicle",
    ["start_job"] = "Start Job",
    ["enter_vehicle"] = "Enter Vehicle",
    ["move_to_checkpoint"] = "Move To Checkpoint",
    ["collect_garbage"] = "Collect Garbage",
    ["descriptionText"] = "Lorem ipsum dolor sit amet consectetur. Nibh dictumst massa et ullamcorper proin.",
    ["earningsDescription"] = "Lorem ipsum dolor sit amet cons Nibh dictumst",
    ["profileDescription"] = "Lorem ipsum dolor sit amet consecte. Montes",
    ["earningInformation"] = "Lorem ipsum dolor sit amet consNibh dictumst"
}

function FrameworkNotify(text ,type)
    QBCore.Functions.Notify(text, type)
end
```
````

{% endtab %}
{% endtabs %}


# ak4y-pauseMenuV2


# Copy of Config

{% tabs %}
{% tab title="ESX" %}

````lua
```lua
AK4Y = {}

AK4Y.Framework = "esxLegacy" -- esx , newEsx , esxLegacy (if you have f8 errors you can choise "esxLegacy")
AK4Y.ServerWait = 1 * 60000 -- 5 min 
AK4Y.ClientWait = 5 * 60000 -- 5 min 

AK4Y.MaxPlayer = 128

AK4Y.DiscordURL = "https://www.discord.gg/ak4y"
AK4Y.YoutubeURL = "https://www.youtube.com/"

AK4Y.Announcements = {
    {
        title = "Announcements Title 1",
        time = "09.13.2023",
        announcements = "Lorem ipsum dolor sit amet consectetur. Sed in viverra iaculis orci consectetur. Urna libero lorem nunc nunc feugiat bibendum euismod mauris aliquam. Ipsum turpis tincidunt cras eu.",
    },
    {
        title = "Announcements Title 2",
        time = "11.13.2023",
        announcements = "Lorem ipsum dolor sit amet consectetur. Sed in viverra iaculis orci consectetur. Urna libero lorem nunc nunc feugiat bibendum euismod mauris aliquam. Ipsum turpis tincidunt cras eu.",
    },
    {
        title = "Announcements Title 3",
        time = "14.13.2023",
        announcements = "Lorem ipsum dolor sit amet consectetur. Sed in viverra iaculis orci consectetur. Urna libero lorem nunc nunc feugiat bibendum euismod mauris aliquam. Ipsum turpis tincidunt cras eu.",
    },
    {
        title = "Announcements Title 4",
        time = "16.13.2023",
        announcements = "Lorem ipsum dolor sit amet consectetur. Sed in viverra iaculis orci consectetur. Urna libero lorem nunc nunc feugiat bibendum euismod mauris aliquam. Ipsum turpis tincidunt cras eu.",
    },
    {
        title = "Announcements Title 5",
        time = "18.13.2023",
        announcements = "Lorem ipsum dolor sit amet consectetur. Sed in viverra iaculis orci consectetur. Urna libero lorem nunc nunc feugiat bibendum euismod mauris aliquam. Ipsum turpis tincidunt cras eu.",
    },
    {
        title = "Announcements Title 6",
        time = "19.13.2023",
        announcements = "Lorem ipsum dolor sit amet consectetur. Sed in viverra iaculis orci consectetur. Urna libero lorem nunc nunc feugiat bibendum euismod mauris aliquam. Ipsum turpis tincidunt cras eu.",
    },
}

AK4Y.Translate = {
    title1 = "AK4Y",
    title2 = "PAUSE MENU",
    discord = "DISCORD",
    youtube = "YOUTUBE",
    join = "JOIN",
    myInfo = "MY INFORMATION",
    male = "Male",
    female = "Female",
    job = "My Job",
    cash = "Cash Money",
    bank = "Bank Money",
    playtime = "Your Play Time",
    miniGame = "MINI GAME",
    mgDesc = "Game List",
    exit = "EXIT",
    announcements = "ANNOUNCEMENTS",
    map = "GAME MAP",
    mapDesc = "GAME MAP",
    settings = "SETTINGS",
    settingsDesc = "Game Settings",
    exitTitle = "GAME EXIT",
    exitTheGame = "EXIT THE GAME",
    wantExit = "Lorem ipsum dolot sit amet consectetur. Varius egestas nunc in ut enim. Eu orci dictum malesuada turpis acrcu at.",
    cancelButton = "Cancel",
    exitButton = "EXIT",
}
```
````

{% endtab %}

{% tab title="QBCore" %}

````lua
```lua
AK4Y = {}

AK4Y.Framework = "qb" -- qb / oldqb | qb = export system | oldqb = triggerevent system
AK4Y.ServerWait = 1 * 60000 -- 5 min 
AK4Y.ClientWait = 5 * 60000 -- 5 min 

AK4Y.MaxPlayer = 256

AK4Y.DiscordURL = "https://www.discord.gg/ak4y"
AK4Y.YoutubeURL = "https://www.youtube.com/"

AK4Y.Announcements = {
    {
        title = "Announcements Title 1",
        time = "09.13.2023",
        announcements = "Lorem ipsum dolor sit amet consectetur. Sed in viverra iaculis orci consectetur. Urna libero lorem nunc nunc feugiat bibendum euismod mauris aliquam. Ipsum turpis tincidunt cras eu.",
    },
    {
        title = "Announcements Title 2",
        time = "11.13.2023",
        announcements = "Lorem ipsum dolor sit amet consectetur. Sed in viverra iaculis orci consectetur. Urna libero lorem nunc nunc feugiat bibendum euismod mauris aliquam. Ipsum turpis tincidunt cras eu.",
    },
    {
        title = "Announcements Title 3",
        time = "14.13.2023",
        announcements = "Lorem ipsum dolor sit amet consectetur. Sed in viverra iaculis orci consectetur. Urna libero lorem nunc nunc feugiat bibendum euismod mauris aliquam. Ipsum turpis tincidunt cras eu.",
    },
    {
        title = "Announcements Title 4",
        time = "16.13.2023",
        announcements = "Lorem ipsum dolor sit amet consectetur. Sed in viverra iaculis orci consectetur. Urna libero lorem nunc nunc feugiat bibendum euismod mauris aliquam. Ipsum turpis tincidunt cras eu.",
    },
    {
        title = "Announcements Title 5",
        time = "18.13.2023",
        announcements = "Lorem ipsum dolor sit amet consectetur. Sed in viverra iaculis orci consectetur. Urna libero lorem nunc nunc feugiat bibendum euismod mauris aliquam. Ipsum turpis tincidunt cras eu.",
    },
    {
        title = "Announcements Title 6",
        time = "19.13.2023",
        announcements = "Lorem ipsum dolor sit amet consectetur. Sed in viverra iaculis orci consectetur. Urna libero lorem nunc nunc feugiat bibendum euismod mauris aliquam. Ipsum turpis tincidunt cras eu.",
    },
}

AK4Y.Translate = {
    title1 = "AK4Y",
    title2 = "PAUSE MENU",
    discord = "DISCORD",
    youtube = "YOUTUBE",
    join = "JOIN",
    myInfo = "MY INFORMATION",
    male = "Male",
    female = "Female",
    job = "My Job",
    cash = "Cash Money",
    bank = "Bank Money",
    playtime = "Your Play Time",
    miniGame = "MINI GAME",
    mgDesc = "Game List",
    exit = "EXIT",
    announcements = "ANNOUNCEMENTS",
    map = "GAME MAP",
    mapDesc = "GAME MAP",
    settings = "SETTINGS",
    settingsDesc = "Game Settings",
    exitTitle = "GAME EXIT",
    exitTheGame = "EXIT THE GAME",
    wantExit = "Lorem ipsum dolot sit amet consectetur. Varius egestas nunc in ut enim. Eu orci dictum malesuada turpis acrcu at.",
    cancelButton = "Cancel",
    exitButton = "EXIT",
}
```
````

{% endtab %}
{% endtabs %}


# ak4y-multicharacter-v3


# Installation

{% hint style="warning" %}
This script requires ak4y-core to work. Please download it from your portal (cfxre, keymaster).
{% endhint %}

### 1. Unzip the downloaded file.

### 2. Move the script file to your resources folder.

### 3. Read the .sql file in the file to the database.

### 4. Configure the script to your own specifications.


# Configuration

```lua
Config = {}

-- Locale Configuration
-- Language setting (e.g., "en", "tr", "de")
Config.locales = {}
Config.locale = "en"

-- XP System Configuration
-- Amount of XP required to level up (e.g., 100 XP = level 2, 200 XP = level 3, etc.)
Config.NeedXpForLevel = 100

-- Identifier Configuration
-- Type of identifier to use (e.g., "license", "license2", "steam", etc.)
Config.Identifier = "license2"
-- Column name in database for identifier lookup
Config.IdentifierColumn = "license"

-- Character ID Column Configuration
-- Column name in database for character ID (QB uses "citizenid", ESX uses "identifier")
Config.CidColumn = "citizenid"

-- Character Slot Configuration
-- Default number of character slots per player
Config.DefaultCharCount = 3

-- Maximum number of character slots available
Config.CharSlotCount = 10

-- Routing Bucket Configuration
-- Routing bucket ID to use when character selection menu is open (set to 0 when character is selected)
Config.RoutingBucket = 1

-- Spawn Configuration
Config.LastPositionLoad = true -- Set to true to spawn at last position, false to use spawn selector
Config.UseQbApartments = false -- Set to true if you use qb-apartments
Config.DefaultSpawn = vector3(-1035.71, -2731.87, 12.86) -- Default spawn coords if apartments disabled

-- Delete Character Configuration
-- Tables that need to be cleaned before deleting a character
-- Format: ["table_name"] = "column_name"
-- Example: ["properties"] = "owner" means DELETE FROM properties WHERE owner = 'citizenid'
Config.DeletePlayersTable = {
    ["properties"] = "owner",
}

Config.PhotoLocation = vec4(-1877.34, -1210.9, 12.02, 221.67) -- Photo shoot location (x, y, z, heading)
Config.PhotoCamera = vec4(-1876.76, -1211.64, 13.6, 43.37) -- Camera position for photo
Config.PhotoCameraLookAt = vec4(-1877.34, -1210.9, 13.6, 221.67) -- Camera look at position (character head)

-- Spawn Selector Function (called when LastPositionLoad is false)
-- You can add your spawn selector logic here (qb-apartments, qb-spawn, etc.)
Config.SpawnSelector = function(src, citizenid, framework)
    -- Example: Add your spawn selector logic here
    if GetResourceState('ak4y-spawn') == 'started' then
        TriggerClientEvent('ak4y-spawn:OpenSpawnSelector', src)
    end

    if GetResourceState('ak4y-spawnselector') == 'started' then
        TriggerClientEvent('ak4y-spawnselector:openUI', src)
    end

    if GetResourceState('qb-apartments') == 'started' then
        TriggerClientEvent('apartments:client:setupSpawnUI', src, {citizenid = citizenid})
    elseif GetResourceState('qb-spawn') == 'started' then
        TriggerClientEvent('qb-spawn:client:setupSpawns', src, {citizenid = citizenid}, false, nil)
        TriggerClientEvent('qb-spawn:client:openUI', src, true)
    end
end

-- PlayerLoaded function (called after character selection for QB)
Config.PlayerLoaded = function(citizenId)
    -- Custom code here if needed
end

-- PlayerLoaded function (called after character selection for ESX)
Config.PlayerLoadedESX = function(isNew)
    -- Custom code here if needed
end

-- Voice/Sound Configuration
-- Female voice options for character creation
Config.Sounds = {}

Config.Sounds.Female = {
    [1] = { label = "Voice 1", soundName = "sound2" },
    [2] = { label = "Voice 2", soundName = "sound4" },
    [3] = { label = "Voice 3", soundName = "sound6" },
    [4] = { label = "Voice 4", soundName = "sound8" },
    [5] = { label = "Voice 5", soundName = "sound10" },
}

-- Male voice options for character creation
Config.Sounds.Male = {
    [1] = { label = "Voice 1", soundName = "sound1" },
    [2] = { label = "Voice 2", soundName = "sound3" },
    [3] = { label = "Voice 3", soundName = "sound5" },
    [4] = { label = "Voice 4", soundName = "sound7" },
    [5] = { label = "Voice 5", soundName = "sound9" },
}

-- Character Photo Options
-- Predefined photos that players can select for their characters
-- Add image paths here to add more photo options
-- You can use local paths (./img/filename.jpg) or online URLs
-- Recommended: Square images (1:1 ratio) work best, around 512x512px or larger
Config.Photos = {
    [1] = "https://i.pravatar.cc/512?img=1",
    [2] = "https://i.pravatar.cc/512?img=5",
    [3] = "https://i.pravatar.cc/512?img=12",
    [4] = "https://i.pravatar.cc/512?img=18",
    [5] = "https://i.pravatar.cc/512?img=22",
    [6] = "https://i.pravatar.cc/512?img=27",
    [7] = "https://i.pravatar.cc/512?img=33",
    [8] = "https://i.pravatar.cc/512?img=38",
    [9] = "https://i.pravatar.cc/512?img=42",
    [10] = "https://i.pravatar.cc/512?img=47",
    [11] = "https://i.pravatar.cc/512?img=52",
    [12] = "https://i.pravatar.cc/512?img=57",
    [13] = "https://i.pravatar.cc/512?img=62",
    [14] = "https://i.pravatar.cc/512?img=68",
    [15] = "https://i.pravatar.cc/512?img=70",
}

-- Music Configuration
-- Supported sites: YouTube
-- Example format: Just paste the URL of the music/video
Config.Music = {
    [1] = "https://www.youtube.com/watch?v=dQw4w9WgXcQ", -- Rick Astley - Never Gonna Give You Up
    [2] = "https://www.youtube.com/watch?v=kJQP7kiw5Fk", -- Luis Fonsi - Despacito
    [3] = "https://www.youtube.com/watch?v=9bZkp7q19f0", -- PSY - GANGNAM STYLE
    [4] = "https://www.youtube.com/watch?v=OPf0YbXqDm0", -- Mark Ronson - Uptown Funk
    [5] = "https://www.youtube.com/watch?v=fJ9rUzIMcZQ", -- Queen - Bohemian Rhapsody
    [6] = "https://www.youtube.com/watch?v=kXYiU_JCYtU", -- Linkin Park - Numb
    [7] = "https://www.youtube.com/watch?v=IcrbM1l_BoI", -- Eminem - Lose Yourself
    [8] = "https://www.youtube.com/watch?v=y6120QOlsfU", -- Survivor - Eye of the Tiger
    [9] = "https://www.youtube.com/watch?v=StTqXEQ2l-Y" -- AC/DC - Thunderstruck
}

-- Character Animation Options
-- Animations that players can preview on their characters in the character selection screen
-- Format: { label = "Display Name", dict = "animation dictionary", anim = "animation name", duration = milliseconds }
Config.Animations = {
    [1] = {
        label = "Hand Shake",
        dict = "gestures@m@standing@casual",
        anim = "gesture_hello",
        duration = 4500,
    },
    [2] = {
        label = "Salute",
        dict = "anim@mp_player_intincarsalutestd@ds@",
        anim = "idle_a",
        duration = 4500,
    },
    [3] = {
        label = "Thumbs Up",
        dict = "anim@mp_player_intupperthumbs_up",
        anim = "idle_a",
        duration = 4500,
    },
    [4] = {
        label = "Celebration Salute",
        dict = "anim@mp_player_intcelebrationmale@salute",
        anim = "salute",
        duration = 2500,
    },
    [5] = {
        label = "Blow Kiss",
        dict = "anim@mp_player_intcelebrationfemale@blow_kiss",
        anim = "blow_kiss",
        duration = 4500,
    },
    [6] = {
        label = "Facepalm",
        dict = "anim@mp_player_intupperface_palm",
        anim = "idle_a",
        duration = 4000,
    },
    [7] = {
        label = "Clap",
        dict = "anim@mp_player_intcelebrationmale@slow_clap",
        anim = "slow_clap",
        duration = 3000,
    },
}
```


# Language Files

```lua
Config.locales["en"] = {
    ['select_character'] = 'SELECT CHARACTER',
    ['navbar_info'] = 'Info',
    ['navbar_animation'] = 'Animation',
    ['navbar_sounds'] = 'Sounds',
    ['navbar_mugshot'] = 'Mugshot',
    ['character_info'] = 'CHARACTER INFO',
    ['character_create'] = 'CREATE CHARACTER',
    ['buy_slot'] = 'BUY THIS SLOT',
    ['streamer_mode'] = 'STREAMER MODE',
    ['streamer_mode_active'] = 'ACTIVE NOW',
    ['streamer_mode_inactive'] = 'INACTIVE',
    ['location_hided'] = 'LOCATION HIDED (STREAMER MODE)',
    ['playtime_hours'] = 'H',
    ['playtime_minutes'] = 'M',
    ['playtime_seconds'] = 'S',
    ['info_name'] = 'NAME',
    ['info_lastname'] = 'LASTNAME',
    ['info_birthdate'] = 'BIRTH DATE',
    ['info_nationality'] = 'NATIONALITY',
    ['info_job'] = 'JOB',
    ['info_gender'] = 'GENDER',
    ['idcard_firstname'] = 'FIRST NAME',
    ['idcard_lastname'] = 'LAST NAME',
    ['idcard_birthday'] = 'BIRTHDAY',
    ['idcard_age'] = 'AGE',
    ['idcard_gender'] = 'GENDER',
    ['idcard_nationality'] = 'NATIONALITY',
    ['buy_slot_title'] = 'TEBEX CHECKOUT',
    ['buy_slot_subtitle'] = 'BUY NEW SLOT',
    ['confirm'] = 'CONFIRM',
    ['decline'] = 'DECLINE',
    ['purchase_success'] = 'PURCHASE SUCCESSFUL',
    ['purchase_desc'] = 'DETAILS HERE',
    ['slot_unlocked'] = 'LOCK UNLOCKED',
    ['loading_wait'] = 'PLEASE WAIT',
    ['loading_character_info'] = 'CHARACTER INFORMATION',
    ['loading_text'] = 'LOADING',
    ['top_create_success'] = 'CHARACTER CREATED',
    ['top_create_detail'] = 'YOUR CHARACTER HAS BEEN CREATED, YOU CAN ENTER THE GAME',
    ['animation_label'] = 'ANIMATION',
    ['sound_label'] = 'GREETING SOUND',
    ['create_character'] = 'CREATE CHARACTER',
    ['are_you_sure'] = 'ARE YOU SURE?',
    ['delete_character_confirm'] = 'DELETE CHARACTER',
    ['delete_character_message'] = 'THIS ACTION CANNOT BE UNDONE',
    ['playtime_label'] = 'TOTAL',
    ['playtime_time'] = 'PLAYTIME',
}
```


# Events

#### Give XP (server-sided)

```lua
local success = exports['ak4y-multicharacter-v3']:GiveXp(source, amount) --return true of false
```

| Parameter | Type   | Description                |
| --------- | ------ | -------------------------- |
| source    | number | The player id              |
| amount    | number | The amount you want to add |

#### Get Level (server-sided)

```lua
local playerLevel = exports['ak4y-multicharacter-v3']:GetLevel(source)
```

| Parameter | Type   | Description   |
| --------- | ------ | ------------- |
| source    | number | The player id |

Example Usage;

```lua
print("Player is level: " .. playerLevel)
```

#### Client-side Events Triggered

```lua
ak4y-multicharacter-v3:LevelUp (newLevel, oldLevel) - When player levels up
```

```lua
ak4y-multicharacter-v3:XpIncrease (xpGained, totalXp, currentLevel) - When XP increases
```

#### Notes;

* The system automatically handles database creation if a player doesn't have an XP record
* Level is calculated as: floor(XP / Config.NeedXpForLevel) + 1
* Minimum level is always 1
* XP can be negative, but this is not recommended
* The system works with both QB and ESX frameworks
* All XP operations are automatically saved to the database


# Editable Files


# cl\_utils.lua

```lua
CORE = exports["ak4y-core"]
Framework = nil
loadEvent = "QBCore:Client:OnPlayerLoaded"

CreateThread(function()
    if not Framework then
        if GetResourceState("qbx_core") == "started" then
            Framework = "qb"
        elseif GetResourceState("es_extended") == "started" then
            Framework = "esx"
        elseif GetResourceState("qb-core") == "started" then
            Framework = "qb"
        end
    end
end)

CreateThread(function()
    if Framework == "qb" then
        loadEvent = "QBCore:Client:OnPlayerLoaded"
    elseif Framework == "esx" then
        loadEvent = 'esx:playerLoaded'
    elseif Framework == "oldEsx" then
        loadEvent = 'esx:playerLoaded'
    end

    RegisterNetEvent(loadEvent, function()

    end)
end)

if Framework == "esx" then
    RegisterNetEvent('esx:playerLoaded')
    AddEventHandler('esx:playerLoaded', function(playerData, isNew, skin)
        local spawn = playerData.coords or Config.DefaultSpawn

        if isNew or not skin or (type(skin) == "table" and #skin == 1) then
            if playerData.sex ~= nil then
                if skin and type(skin) == "table" then
                    skin.sex = playerData.sex == "m" and 0 or 1
                end
            end
            local model = (skin and skin.sex == 0) and "mp_m_freemode_01" or "mp_f_freemode_01"
            RequestModel(model)
            SetPlayerModel(PlayerId(), model)
            SetModelAsNoLongerNeeded(model)
            if GetResourceState('skinchanger') == 'started' then
                TriggerEvent('skinchanger:loadSkin', skin, function()
                    local playerPed = PlayerPedId()
                    SetPedAoBlobRendering(playerPed, true)
                    ResetEntityAlpha(playerPed)
                    if GetResourceState('esx_skin') == 'started' then
                        TriggerEvent('esx_skin:openSaveableMenu')
                    end
                end)
            end
        end

        local playerPed = PlayerPedId()
        FreezeEntityPosition(playerPed, true)
        SetEntityCoordsNoOffset(playerPed, spawn.x, spawn.y, spawn.z, false, false, false, true)
        if spawn.heading then
            SetEntityHeading(playerPed, spawn.heading)
        end

        if not isNew and skin and GetResourceState('skinchanger') == 'started' then
            TriggerEvent('skinchanger:loadSkin', skin)
        end

        Config.PlayerLoadedESX(isNew)
        TriggerServerEvent('esx:onPlayerSpawn')
        TriggerEvent('esx:onPlayerSpawn')
        TriggerEvent('playerSpawned')
        TriggerEvent('esx:restoreLoadout')
    end)
end

function ClothingExports(skinData)
    if GetResourceState('rcore_clothing') == 'started' then
        exports.rcore_clothing:setPedSkin(PlayerPedId(), skinData)
    elseif GetResourceState('crm-appearance') == 'started' then
        exports['crm-appearance']:crm_set_ped_appearance(PlayerPedId(), skinData)
    elseif GetResourceState('bl_appearance') == 'started' then
        TriggerEvent('skinchanger:loadSkin', skinData)
    elseif GetResourceState('illenium-appearance') == 'started' then
        exports['illenium-appearance']:setPlayerAppearance(skinData)
    elseif GetResourceState('fivem-appearance') == 'started' then
        exports['fivem-appearance']:setPlayerAppearance(skinData)
    elseif GetResourceState('skinchanger') == 'started' then
        TriggerEvent('skinchanger:loadSkin', skinData)
    else
        print('You can add your own clothing exports here.')
    end
end

function SetPedSkin(cacheped, skinData)
    if GetResourceState('rcore_clothing') == 'started' then
        exports.rcore_clothing:setPedSkin(cacheped, skinData)
    elseif GetResourceState('crm-appearance') == 'started' then
        exports['crm-appearance']:crm_set_ped_appearance(cacheped, skinData)
    elseif GetResourceState('bl_appearance') == 'started' then
        TriggerEvent('skinchanger:loadSkin', skinData)
    elseif GetResourceState('illenium-appearance') == 'started' then
        exports['illenium-appearance']:setPedAppearance(cacheped, skinData)
    elseif GetResourceState('fivem-appearance') == 'started' then
        exports['fivem-appearance']:setPedAppearance(cacheped, skinData)
    elseif GetResourceState('skinchanger') == 'started' then
    else
        print('You can add your own clothing exports here.')
    end
end

function SetSkin(cid)
    local skindata = CORE:Trigger('ak4y-multicharacter-v3:GetSkinData', cid)

    if Framework == "esx" then
        if skindata then
            if type(skindata) == "string" then
                skindata = json.decode(skindata)
            end

            if skindata and skindata.model then
                local modelHash = joaat(skindata.model)
                RequestModel(modelHash)
                while not HasModelLoaded(modelHash) do
                    Wait(50)
                end
                SetPlayerModel(PlayerId(), modelHash)

                SetPedHeadBlendData(PlayerPedId(), 0, 0, 0, 0, 0, 0, 1.0, 1.0, 1.0, false)

                if skindata.model == "mp_m_freemode_01" or skindata.model == "mp_f_freemode_01" then
                    if GetResourceState('skinchanger') == 'started' then
                        TriggerEvent('skinchanger:loadSkin', skindata)
                    end
                end
            else
                -- If no model, check sex and create default model
                if skindata and (skindata.sex == 0 or skindata.sex == 1) then
                    local model = (skindata.sex == 0) and "mp_m_freemode_01" or "mp_f_freemode_01"
                    skindata.model = model
                    local modelHash = joaat(model)
                    RequestModel(modelHash)
                    while not HasModelLoaded(modelHash) do
                        Wait(50)
                    end
                    SetPlayerModel(PlayerId(), modelHash)

                    SetPedHeadBlendData(PlayerPedId(), 0, 0, 0, 0, 0, 0, 1.0, 1.0, 1.0, false)

                    if GetResourceState('skinchanger') == 'started' then
                        TriggerEvent('skinchanger:loadSkin', skindata)
                    end
                else
                    print("^3[WARN]^7 No skin data or sex info for character: " .. tostring(cid))
                end
            end
        else
            print("^1[ERROR]^7 Skin data not found for character: " .. tostring(cid))
        end
    -- QB skin loading
    elseif Framework == "qb" then
        skindata = skindata[1]
        if skindata then
            if skindata.model then
                local modelHash = joaat(skindata.model)
                RequestModel(modelHash)
                while not HasModelLoaded(modelHash) do
                    Wait(50)
                end
                SetPlayerModel(PlayerId(), modelHash)

                SetPedHeadBlendData(PlayerPedId(), 0, 0, 0, 0, 0, 0, 1.0, 1.0, 1.0, false)

                if skindata.model == "mp_m_freemode_01" or skindata.model == "mp_f_freemode_01" then
                    if skindata.skin then
                        exports['illenium-appearance']:setPlayerAppearance(json.decode(skindata.skin))
                    end
                end
            end
        else
            print("Skin data not found: " .. tostring(cid))
        end
    end
end
```


# sv\_utils.lua

```lua
CORE = exports["ak4y-core"]
FrameworkName = nil
Framework = nil

PhotoWebhook = ""

CreateThread(function()
    if not FrameworkName then
        if GetResourceState("qbx_core") == "started" then
            FrameworkName = "qb"
            Framework = exports['qb-core']:GetCoreObject()
        elseif GetResourceState("es_extended") == "started" then
            FrameworkName = "esx"
            Framework = exports['es_extended']:getSharedObject()
        elseif GetResourceState("qb-core") == "started" then
            FrameworkName = "qb"
            Framework = exports['qb-core']:GetCoreObject()
        end
    end
end)

CORE:Register('ak4y-multicharacter-v3:GetSkinData', function(source, cid)
    local src = source
    local skinData = nil

    if FrameworkName == "esx" then
        -- ESX: Return skin as string (same as old script line 32-33)
        skinData = CORE:ExecuteSql("SELECT skin FROM users WHERE identifier = '" .. cid .. "'")
        if skinData[1] and skinData[1].skin then
            return skinData[1].skin  -- Return string, client will decode
        end
        return nil
    else
        -- QB: Return table array
        skinData = CORE:ExecuteSql("SELECT * FROM playerskins WHERE citizenid = '" .. cid .. "' AND active = 1")
        return skinData
    end
end)

CORE:Register('ak4y-multicharacter-v3:GetPhotoWebhook', function(source)
    return PhotoWebhook or ""
end)

CreateThread(function()
    local hasDonePreloading = {}
    local awaitingRegistration = {}
    local playerIdentity = {}
    local playerLoginTime = {}

    if FrameworkName == "qb" then

        AddEventHandler('QBCore:Server:PlayerLoaded', function(Player)
            Wait(1000)
            hasDonePreloading[Player.PlayerData.source] = true

            local citizenid = Player.PlayerData.citizenid
            if citizenid then
                playerLoginTime[citizenid] = os.time()
            end
        end)

        AddEventHandler('QBCore:Server:OnPlayerUnload', function(src)
            hasDonePreloading[src] = false
        end)

        AddEventHandler('playerDropped', function(reason)
            local src = source
            if Framework then
                local Player = Framework.Functions.GetPlayer(src)
                if Player then
                    local citizenid = Player.PlayerData.citizenid
                    if citizenid and playerLoginTime[citizenid] then
                        local loginTime = playerLoginTime[citizenid]
                        local currentTime = os.time()
                        local playtimeSeconds = currentTime - loginTime

                        local result = CORE:ExecuteSql("SELECT playtime FROM ak4y_multicharacter_v3 WHERE identifier = '" .. citizenid .. "'")
                        local currentPlaytime = 0
                        if result[1] and result[1].playtime then
                            currentPlaytime = tonumber(result[1].playtime) or 0
                        end

                        local newPlaytime = currentPlaytime + playtimeSeconds

                        CORE:ExecuteSql("UPDATE ak4y_multicharacter_v3 SET playtime = " .. newPlaytime .. " WHERE identifier = '" .. citizenid .. "'")

                        playerLoginTime[citizenid] = nil
                    end
                end
            end
        end)

        RegisterNetEvent('ak4y-multicharacter-v3:server:loadUserData', function(cData)
            print("loadUserData", cData)
            local src = source
            if Framework then
                if Framework.Player.Login(src, cData) then
                    repeat
                        Wait(10)
                    until hasDonePreloading[src]

                    print('^2[qb-core]^7 '..GetPlayerName(src)..' (Citizen ID: '..cData..') has succesfully loaded!')
                    Framework.Commands.Refresh(src)

                    if Config.LastPositionLoad then
                        local Player = Framework.Functions.GetPlayer(src)
                        local spawnCoords = Config.DefaultSpawn

                        if Player and Player.PlayerData and Player.PlayerData.position then
                            local position = Player.PlayerData.position
                            if type(position) == "string" then
                                position = json.decode(position)
                            end
                            if position and position.x and position.y and position.z then
                                spawnCoords = vector3(position.x, position.y, position.z)
                                if position.w or position.heading then
                                    spawnCoords = vector4(position.x, position.y, position.z, position.w or position.heading or 0.0)
                                end
                            end
                        end

                        TriggerClientEvent('ak4y-multicharacter-v3:client:closeNUIdefault', src, spawnCoords)
                    else
                        if Config.SpawnSelector then
                            Config.SpawnSelector(src, cData, "qb")
                        else
                            TriggerClientEvent('ak4y-multicharacter-v3:client:closeNUIdefault', src, Config.DefaultSpawn)
                        end
                    end

                    TriggerClientEvent("ak4y-multicharacter-v3:client:closeNUI", src)
                end
            end
        end)
    end

    if FrameworkName == "esx" then
        AddEventHandler('esx:playerLoaded', function(source, xPlayer)
            local identifier = xPlayer.identifier
            if identifier then
                playerLoginTime[identifier] = os.time()
            end
        end)

        AddEventHandler('playerDropped', function(reason)
            local src = source
            awaitingRegistration[src] = nil
            if Framework and Framework.Players then
                Framework.Players[GetIdentifierForESX(src)] = nil
            end

            if Framework then
                local xPlayer = Framework.GetPlayerFromId(src)
                if xPlayer then
                    local identifier = xPlayer.identifier
                    if identifier and playerLoginTime[identifier] then
                        local loginTime = playerLoginTime[identifier]
                        local currentTime = os.time()
                        local playtimeSeconds = currentTime - loginTime

                        local result = CORE:ExecuteSql("SELECT playtime FROM ak4y_multicharacter_v3 WHERE identifier = '" .. identifier .. "'")
                        local currentPlaytime = 0
                        if result[1] and result[1].playtime then
                            currentPlaytime = tonumber(result[1].playtime) or 0
                        end

                        local newPlaytime = currentPlaytime + playtimeSeconds

                        CORE:ExecuteSql("UPDATE ak4y_multicharacter_v3 SET playtime = " .. newPlaytime .. " WHERE identifier = '" .. identifier .. "'")

                        playerLoginTime[identifier] = nil
                    end
                end
            end
        end)

        RegisterNetEvent('ak4y-multicharacter-v3:server:loadUserData', function(charid, isNew)
            local src = source
            if Framework then
                -- charid should be the full identifier string like "char1:f77e98f..."
                -- Same as old script: ak4y-multicharacter-v2/editable/sv_utils.lua:110-113
                local identifier = tostring(charid)

                -- If identifier doesn't contain ":", it might be database id or invalid
                -- Get actual identifier from character data
                if not identifier:find(":") then
                    local license = GetIdentifierForESX(src)
                    if license then
                        -- Get character by identifier field matching the charid (which should be identifier)
                        local charsData = CORE:ExecuteSql("SELECT identifier FROM users WHERE identifier = '" .. identifier .. "'")
                        if charsData and charsData[1] then
                            identifier = charsData[1].identifier
                        else
                            -- If still not found, try to get by license
                            local allChars = CORE:ExecuteSql("SELECT identifier FROM users WHERE identifier LIKE 'char%:" .. license .. "' ORDER BY identifier")
                            if allChars and allChars[1] then
                                identifier = allChars[1].identifier
                            else
                                print("^1[ERROR]^7 Could not find character identifier for: " .. tostring(charid))
                                return
                            end
                        end
                    else
                        print("^1[ERROR]^7 Could not get license for player " .. src)
                        return
                    end
                end

                -- Extract "char1" from "char1:f77e98f..." (exactly like old script line 111-112)
                local position = identifier:find(":")
                local result = nil
                if position then
                    result = identifier:sub(1, position-1)
                else
                    print("^1[ERROR]^7 Invalid identifier format (no colon): " .. identifier)
                    return
                end

                if isNew then
                    awaitingRegistration[src] = result
                else
                    -- Trigger ESX to load player (exactly like old script line 113)
                    TriggerEvent('esx:onPlayerJoined', src, result)
                    if Framework.Players then
                        Framework.Players[GetIdentifierForESX(src)] = true
                    end
                end
            end
        end)

        function GetIdentifierForESX(source)
            -- Try license2 first (as per Config.Identifier = "license2")
            for _, v in pairs(GetPlayerIdentifiers(source)) do
                if string.match(v, "license2:") then
                    return string.gsub(v, "license2:", "")
                end
            end
            -- Fallback to license
            for _, v in pairs(GetPlayerIdentifiers(source)) do
                if string.match(v, "license:") then
                    return string.gsub(v, "license:", "")
                end
            end
            return nil
        end
    end

local function CreateCitizenId()
    local charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    local citizenId = ""
    local exists = true

    while exists do
        citizenId = ""
        for i = 1, 8 do
            local rand = math.random(1, #charset)
            citizenId = citizenId .. string.sub(charset, rand, rand)
        end

        local result = CORE:ExecuteSql("SELECT * FROM players WHERE citizenid = '" .. citizenId .. "'")
        exists = result[1] ~= nil
    end

    return citizenId
end

if FrameworkName == "qb" then
    RegisterNetEvent('ak4y-multicharacter-v3:server:createCharacter', function(data)
        local src = source
        if Framework then
            local citizenid = CreateCitizenId()

            local newData = {}
            newData.cid = citizenid
            newData.charinfo = {
                firstname = data.firstname,
                lastname = data.lastname,
                birthdate = data.birthdate,
                gender = data.gender,
                nationality = data.nationality or ""
            }

                if Framework.Player.Login(src, false, newData) then
                    repeat
                        Wait(10)
                    until hasDonePreloading[src]

                    local randbucket = (GetPlayerPed(src) .. math.random(1,999))
                    SetPlayerRoutingBucket(src, randbucket)
                    print('^2[qb-core]^7 '..GetPlayerName(src)..' has succesfully loaded!')
                    Framework.Commands.Refresh(src)

                    local varS = {
                        citizenid = citizenid
                    }

                    if Config.UseQbApartments and GetResourceState('qb-apartments') == 'started' then
                        TriggerClientEvent('apartments:client:setupSpawnUI', src, varS)
                    else
                        if GetResourceState('qb-spawn') == 'started' then
                            TriggerClientEvent('qb-spawn:client:setupSpawns', src, varS, false, nil)
                            TriggerClientEvent('qb-spawn:client:openUI', src, true)
                        else
                            TriggerClientEvent('ak4y-multicharacter-v3:client:closeNUIdefault', src)
                        end
                    end

                    TriggerClientEvent("ak4y-multicharacter-v3:client:closeNUI", src)
                end
            end
        end)
    end

    if FrameworkName == "esx" then
        RegisterNetEvent('ak4y-multicharacter-v3:server:createCharacter', function(data)
            local src = source
            if Framework then
                local xPlayer = Framework.GetPlayerFromId(src)

                local identifier = GetIdentifierForESX(src)
                if not identifier then
                    print("^1[ERROR]^7 Could not get identifier for player " .. src)
                    return
                end

                local existingChars = CORE:ExecuteSql("SELECT * FROM users WHERE identifier LIKE 'char%:" .. identifier .. "'")
                local charNum = #existingChars + 1
                awaitingRegistration[src] = charNum

                local formattedFirstName = data.firstname
                local formattedLastName = data.lastname
                local formattedDate = data.birthdate

                if xPlayer then
                    -- Convert data.sex from "m"/"f" to 0/1 if needed
                    local sexValue = data.sex
                    if sexValue == "m" then
                        sexValue = 0
                    elseif sexValue == "f" then
                        sexValue = 1
                    elseif type(sexValue) == "string" and (sexValue == "male" or sexValue == "female") then
                        sexValue = (sexValue == "male") and 0 or 1
                    end

                    playerIdentity[xPlayer.identifier] = {
                        firstName = formattedFirstName,
                        lastName = formattedLastName,
                        dateOfBirth = formattedDate,
                        sex = sexValue,
                        height = data.height or 180
                    }

                    local currentIdentity = playerIdentity[xPlayer.identifier]
                    xPlayer.setName(('%s %s'):format(currentIdentity.firstName, currentIdentity.lastName))
                    xPlayer.set('firstName', currentIdentity.firstName)
                    xPlayer.set('lastName', currentIdentity.lastName)
                    xPlayer.set('dateofbirth', currentIdentity.dateOfBirth)
                    xPlayer.set('sex', currentIdentity.sex)
                    xPlayer.set('height', currentIdentity.height)
                    TriggerClientEvent('ak4y-multicharacter:setPlayerData', src, currentIdentity)

                    -- Save identity to database
                    CORE:ExecuteSql("UPDATE users SET firstname = '"..currentIdentity.firstName.."', lastname = '"..currentIdentity.lastName.."', dateofbirth = '"..currentIdentity.dateOfBirth.."', sex = '"..currentIdentity.sex.."', height = '"..currentIdentity.height.."' WHERE identifier = '"..xPlayer.identifier.."'")

                    TriggerEvent('ak4y-multicharacter-v3:completedRegistration', src, data)
                else
                    data.firstname = formattedFirstName
                    data.lastname = formattedLastName
                    data.dateofbirth = formattedDate
                    -- Convert data.sex from "m"/"f" to 0/1 if needed
                    local sexValue = data.sex
                    if sexValue == "m" then
                        sexValue = 0
                    elseif sexValue == "f" then
                        sexValue = 1
                    elseif type(sexValue) == "string" and (sexValue == "male" or sexValue == "female") then
                        sexValue = (sexValue == "male") and 0 or 1
                    end

                    local Identity = {
                        firstName = formattedFirstName,
                        lastName = formattedLastName,
                        dateOfBirth = formattedDate,
                        sex = sexValue,
                        height = data.height or 180
                    }
                    TriggerEvent('ak4y-multicharacter-v3:completedRegistration', src, data)
                    TriggerClientEvent('ak4y-multicharacter:setPlayerData', src, Identity)
                end
            end
        end)

        AddEventHandler('ak4y-multicharacter-v3:completedRegistration', function(source, data)
            TriggerClientEvent("ak4y-multicharacter-v3:created", source)
            TriggerEvent('esx:onPlayerJoined', source, "char"..awaitingRegistration[source], data)
            awaitingRegistration[source] = nil
            if Framework.Players then
                Framework.Players[GetIdentifierForESX(source)] = true
            end
            Wait(1000)
            local xPlayer = Framework.GetPlayerFromId(source)
            if xPlayer and xPlayer.identifier then
                local insertData = {
                    anim = data.anim or 0,
                    sound = data.sound or 1,
                }
                CORE:ExecuteSql("INSERT INTO ak4y_multicharacter_v3 (identifier, xp, anso) VALUES ('" .. xPlayer.identifier .. "', '0', '".. json.encode(insertData) .."') ON DUPLICATE KEY UPDATE anso = '".. json.encode(insertData) .."'")
            end
        end)

        CORE:Register('ak4y-multicharacter-v3:GetAnso', function(source, cid)
            if not cid then
                local xPlayer = Framework.GetPlayerFromId(source)
                if xPlayer then
                    cid = xPlayer.identifier
                end
            end
            if cid then
                local imgData = CORE:ExecuteSql("SELECT * FROM ak4y_multicharacter_v3 WHERE identifier = '" .. cid .. "'")
                if imgData[1] then
                    return imgData[1]
                else
                    return false
                end
            else
                return false
            end
        end)
    end
end)

RegisterNetEvent('ak4y-multicharacter-v3:server:saveAnso', function(identifier, ansoJson)
    local src = source

    if identifier and ansoJson then
        ansoJson = ansoJson:gsub("'", "''")

        CORE:ExecuteSql("UPDATE ak4y_multicharacter_v3 SET anso = '" .. ansoJson .. "' WHERE identifier = '" .. identifier .. "'")
    end
end)

RegisterNetEvent('ak4y-multicharacter-v3:server:savePhoto', function(identifier, base64Photo)
    local src = source

    if identifier and base64Photo then
        base64Photo = base64Photo:gsub("'", "''")
        base64Photo = base64Photo:gsub('"', '\\"')
        base64Photo = base64Photo:gsub('\n', '')
        base64Photo = base64Photo:gsub('\r', '')

        CORE:ExecuteSql("UPDATE ak4y_multicharacter_v3 SET photo = '" .. base64Photo .. "' WHERE identifier = '" .. identifier .. "'")
    end
end)

RegisterNetEvent('ak4y-multicharacter-v3:server:saveSelectedPhoto', function(identifier, selectedPhoto)
    local src = source

    if identifier and selectedPhoto then
        selectedPhoto = selectedPhoto:gsub("'", "''")

        CORE:ExecuteSql("UPDATE ak4y_multicharacter_v3 SET selectedPhoto = '" .. selectedPhoto .. "' WHERE identifier = '" .. identifier .. "'")
    end
end)
```


# ak4y-multicharacter-v2


# Installation

{% hint style="warning" %}
This script requires ak4y-core to work. Please download it from your portal (cfxre, keymaster).
{% endhint %}

{% stepper %}
{% step %}

### Unzip the downloaded file.

{% endstep %}

{% step %}

### Move the script file to your resources folder.

{% endstep %}

{% step %}

### Read the .sql file in the file to the database.

{% endstep %}

{% step %}

### Configure the script to your own specifications.

{% endstep %}
{% endstepper %}


# Configuration

```lua
Config = {}

Config.locales = {}

Config.Locale = "en"

Config.Framework = "qb"

Config.NeedXpForLevel = 100

Config.ScriptPatch = "resources/[ak4y]/ak4y-multicharacter-v2"

Config.Identifier = "license"

Config.CidColumn = "citizenid"

Config.DefaultCharCount = 4
Config.CharSlotCount = 10

Config.Sounds = {}

Config.Sounds.Female = {
    [1] = { label = "Voice 1", soundName = "sound2" },
    [2] = { label = "Voice 2", soundName = "sound4" },
    [3] = { label = "Voice 3", soundName = "sound6" },
    [4] = { label = "Voice 4", soundName = "sound8" },
    [5] = { label = "Voice 5", soundName = "sound10" },
}

Config.Sounds.Male = {
    [1] = { label = "Voice 1", soundName = "sound1" },
    [2] = { label = "Voice 2", soundName = "sound3" },
    [3] = { label = "Voice 3", soundName = "sound5" },
    [4] = { label = "Voice 4", soundName = "sound7" },
    [5] = { label = "Voice 5", soundName = "sound9" },
}

Config.Animations = {
    [1] = {
        label = "Hand Shake",
        dict = "gestures@m@standing@casual",
        anim = "gesture_hello",
        duration = 4500,
    },
    [2] = {
        label = "Salute",
        dict = "anim@mp_player_intincarsalutestd@ds@",
        anim = "idle_a",
        duration = 4500,
    },
    [3] = {
        label = "Thumbs Up",
        dict = "anim@mp_player_intupperthumbs_up",
        anim = "idle_a",
        duration = 4500,
    },
    [4] = {
        label = "Celebration Salute",
        dict = "anim@mp_player_intcelebrationmale@salute",
        anim = "salute",
        duration = 2500,
    },
    [5] = {
        label = "Blow Kiss",
        dict = "anim@mp_player_intcelebrationfemale@blow_kiss",
        anim = "blow_kiss",
        duration = 4500,
    },
    [6] = {
        label = "Facepalm",
        dict = "anim@mp_player_intupperface_palm",
        anim = "idle_a",
        duration = 4000,
    },
    [7] = {
        label = "Clap",
        dict = "anim@mp_player_intcelebrationmale@slow_clap",
        anim = "slow_clap",
        duration = 3000,
    },
}
```


# Language Files

```lua
Config.locales["en"] = {
    game = {

    },
    ui = {
        top_desc = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.",
        create_info = "CREATE YOUR INFORMATIONS",
        create_info_desc = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.",
        first_name = "First Name",
        last_name = "Last Name",
        char_age = "Character Age",
        char_age_desc = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.",
        male = "MALE",
        Female = "FEMALE",
        continue = "Continue Costumization",
        custumize_char = "CUSTUMIZE CHARACTER",
        voice = "Voice",
        anims = "Animations",
        finish = "Finish Costumization",
        char_infos = "CHARACTER INFORMATIONS",
        dateof = "Date Of Birth",
        dateof_desc = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.",
        money = "Money",
        money_desc = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.",
        char_custo = "CHARACTER COSTUMIZATION",
        char_loc = "CHARACTER LOCATION",
        spawn = "SPAWN",
        reedem = "SLOT REEDEM CODE",
        reedem_desc = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.",
        cancel = "Cancel",
        confirm = "Confirm",
        need_code = "Need a code? Buy One",
        buy_code = "BUY CODE",
        open_tebex = "Opens Tebex Store in browser",
    },
}
```


# Events / Export List

### Give XP (server-sided)

```lua
local success = exports['ak4y-multicharacter-v2']:GiveXp(source, amount) --return true of false
```

| Parameter | Type   | Description                |
| --------- | ------ | -------------------------- |
| source    | number | The player id              |
| amount    | number | The amount you want to add |

### Get Level (server-sided)

```lua
local playerLevel = exports['ak4y-multicharacter-v2']:GetLevel(source)
```

| Parameter | Type   | Description   |
| --------- | ------ | ------------- |
| source    | number | The player id |


# editable-files


# cl\_utils.lua

```lua
local jobEvent = "QBCore:Client:OnJobUpdate" --
local loadEvent = "QBCore:Client:OnPlayerLoaded"

CreateThread(function()
    if GetResourceState("qbx_core") == "started" then
        jobEvent = "QBCore:Client:OnJobUpdate"
        loadEvent = "QBCore:Client:OnPlayerLoaded"
    elseif GetResourceState("es_extended") == "started" then
        jobEvent = "esx:setJob"
        loadEvent = 'esx:playerLoaded'
    elseif GetResourceState("qb-core") == "started" then
        jobEvent = "QBCore:Client:OnJobUpdate"
        loadEvent = "QBCore:Client:OnPlayerLoaded"
    end

    RegisterNetEvent(loadEvent, function()
        PlayerLoaded()
    end)
end)

function SetSkin(cid)
    local skindata = CORE:Trigger('ak4y-multicharacter-v2:GetSkinData', cid)
    skindata = skindata[1]
    if skindata then
        if skindata.model then
            local modelHash = joaat(skindata.model)
            RequestModel(modelHash)
            while not HasModelLoaded(modelHash) do
                Wait(50)
            end
            SetPlayerModel(PlayerId(), modelHash)

            SetPedHeadBlendData(PlayerPedId(), 0, 0, 0, 0, 0, 0, 1.0, 1.0, 1.0, false)

            if skindata.model == "mp_m_freemode_01" or skindata.model == "mp_f_freemode_01" then
                if skindata.skin then
                    exports['illenium-appearance']:setPlayerAppearance(json.decode(skindata.skin))
                end
            end
        end
    else
        print("Skin data bulunamadı: " .. cid)
    end
    Wait(300)
    local newData = CORE:Trigger('ak4y-multicharacter-v2:GetAnso', cid)
    if newData then
        local anso = json.decode(newData.anso)
        local animData = Config.Animations[anso.anim + 1]
        SendNUIMessage({
            action = "playSound",
            sound = anso.sound,
        })
        print("oynatılan", animData.label)
        if animData then
            RequestAnimDict(animData.dict)
            while not HasAnimDictLoaded(animData.dict) do
                Wait(10)
            end
            TaskPlayAnim(PlayerPedId(), animData.dict, animData.anim, 8.0, -8.0, animData.duration, 49, 0, false, false, false)
        else
            print("anim data not found")
        end
    end
end
```


# sv\_utils.lua

```lua
CORE = exports["ak4y-core"]
FrameworkName = nil
Framework = nil

CreateThread(function()
    if not FrameworkName then
        if GetResourceState("qbx_core") == "started" then
            FrameworkName = "qb"
            Framework = exports['qb-core']:GetCoreObject()
        elseif GetResourceState("es_extended") == "started" then
            FrameworkName = "esx"
            Framework = exports['es_extended']:getSharedObject()
        elseif GetResourceState("qb-core") == "started" then
            FrameworkName = "qb"
            Framework = exports['qb-core']:GetCoreObject()
        end
    end
end)

local webhook = "https://discord.com/api/webhooks/1407668529603543154/K-lIDR7lQPcK1HTrPFBAPLqgp9Lz59KVB_XoIkznMVDr9OCOf0rR_sk8Vc-lb2Yj2DQH"

CORE:Register('ak4y-multicharacter-v2:GetWebhook', function(source)
    return webhook
end)

CORE:Register('ak4y-multicharacter-v2:GetSkinData', function(source, cid)
    local src = source
    local skinData = CORE:ExecuteSql("SELECT * FROM playerskins WHERE citizenid = '" .. cid .. "' AND active = 1")
    return skinData
end)

function GenerateCID()
    local length = 8
    local charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    local cid
    local result

    repeat
        cid = ""
        for i = 1, length do
            local rand = math.random(1, #charset)
            cid = cid .. string.sub(charset, rand, rand)
        end

        result = CORE:ExecuteSql('SELECT citizenid FROM players WHERE citizenid = ?', {cid})
    until not result[1]

    return cid
end

CORE:Register('ak4y-multicharacter-v2:GetPos', function(source, idf)

    local result = nil
    if FrameworkName == "qb" then
        local query = "SELECT * FROM players WHERE citizenid = '" .. idf .. "'"
        local res = CORE:ExecuteSql(query)
        if res and #res > 0 then
            local coords = json.decode(res[1].position)
            result = {
                x = coords.x,
                y = coords.y,
            }
        end
    elseif FrameworkName == "esx" then
        local query = "SELECT * FROM users WHERE identifier = '" .. idf .. "'" -- ESX’de users tablosu
        local res = CORE:ExecuteSql(query)
        if res and #res > 0 then
            local coords = json.decode(res[1].position)
            result = {
                x = coords.x,
                y = coords.y,
            }
        end
    end

    return result
end)
```


# ak4y-spawn -V2


# Installation

{% hint style="warning" %}
This script requires ak4y-core to work. Please download it from your portal (cfxre, keymaster).
{% endhint %}

1. Unzip the downloaded file.
2. Move the script file to your resources folder.
3. Read the `.sql` file in the file to the database.
4. Configure the script to your own specifications.


# Configuration

```lua
Config = {}

-- Locale Configuration
-- Language setting (e.g., "en", "tr", "de")
Config.locales = {}
Config.locale = "en"

-- XP System Configuration
-- Amount of XP required to level up (e.g., 100 XP = level 2, 200 XP = level 3, etc.)
Config.NeedXpForLevel = 100

-- Identifier Configuration
-- Type of identifier to use (e.g., "license", "license2", "steam", etc.)
Config.Identifier = "license2"
-- Column name in database for identifier lookup
Config.IdentifierColumn = "license"

-- Character ID Column Configuration
-- Column name in database for character ID (QB uses "citizenid", ESX uses "identifier")
Config.CidColumn = "citizenid"

-- Character Slot Configuration
-- Default number of character slots per player
Config.DefaultCharCount = 3

-- Maximum number of character slots available
Config.CharSlotCount = 10

-- Routing Bucket Configuration
-- Routing bucket ID to use when character selection menu is open (set to 0 when character is selected)
Config.RoutingBucket = 1

-- Spawn Configuration
Config.LastPositionLoad = true -- Set to true to spawn at last position, false to use spawn selector
Config.UseQbApartments = false -- Set to true if you use qb-apartments
Config.DefaultSpawn = vector3(-1035.71, -2731.87, 12.86) -- Default spawn coords if apartments disabled

-- Delete Character Configuration
-- Tables that need to be cleaned before deleting a character
-- Format: ["table_name"] = "column_name"
-- Example: ["properties"] = "owner" means DELETE FROM properties WHERE owner = 'citizenid'
Config.DeletePlayersTable = {
    ["properties"] = "owner",
}

Config.PhotoLocation = vec4(-1877.34, -1210.9, 12.02, 221.67) -- Photo shoot location (x, y, z, heading)
Config.PhotoCamera = vec4(-1876.76, -1211.64, 13.6, 43.37) -- Camera position for photo
Config.PhotoCameraLookAt = vec4(-1877.34, -1210.9, 13.6, 221.67) -- Camera look at position (character head)

-- Spawn Selector Function (called when LastPositionLoad is false)
-- You can add your spawn selector logic here (qb-apartments, qb-spawn, etc.)
Config.SpawnSelector = function(src, citizenid, framework)
    -- Example: Add your spawn selector logic here
    if GetResourceState('ak4y-spawn') == 'started' then
        TriggerClientEvent('ak4y-spawn:OpenSpawnSelector', src)
    end

    if GetResourceState('ak4y-spawnselector') == 'started' then
        TriggerClientEvent('ak4y-spawnselector:openUI', src)
    end

    if GetResourceState('qb-apartments') == 'started' then
        TriggerClientEvent('apartments:client:setupSpawnUI', src, {citizenid = citizenid})
    elseif GetResourceState('qb-spawn') == 'started' then
        TriggerClientEvent('qb-spawn:client:setupSpawns', src, {citizenid = citizenid}, false, nil)
        TriggerClientEvent('qb-spawn:client:openUI', src, true)
    end
end

-- PlayerLoaded function (called after character selection for QB)
Config.PlayerLoaded = function(citizenId)
    -- Custom code here if needed
end

-- PlayerLoaded function (called after character selection for ESX)
Config.PlayerLoadedESX = function(isNew)
    -- Custom code here if needed
end

-- Voice/Sound Configuration
-- Female voice options for character creation
Config.Sounds = {}

Config.Sounds.Female = {
    [1] = { label = "Voice 1", soundName = "sound2" },
    [2] = { label = "Voice 2", soundName = "sound4" },
    [3] = { label = "Voice 3", soundName = "sound6" },
    [4] = { label = "Voice 4", soundName = "sound8" },
    [5] = { label = "Voice 5", soundName = "sound10" },
}

-- Male voice options for character creation
Config.Sounds.Male = {
    [1] = { label = "Voice 1", soundName = "sound1" },
    [2] = { label = "Voice 2", soundName = "sound3" },
    [3] = { label = "Voice 3", soundName = "sound5" },
    [4] = { label = "Voice 4", soundName = "sound7" },
    [5] = { label = "Voice 5", soundName = "sound9" },
}

-- Character Photo Options
-- Predefined photos that players can select for their characters
-- Add image paths here to add more photo options
-- You can use local paths (./img/filename.jpg) or online URLs
-- Recommended: Square images (1:1 ratio) work best, around 512x512px or larger
Config.Photos = {
    [1] = "https://i.pravatar.cc/512?img=1",
    [2] = "https://i.pravatar.cc/512?img=5",
    [3] = "https://i.pravatar.cc/512?img=12",
    [4] = "https://i.pravatar.cc/512?img=18",
    [5] = "https://i.pravatar.cc/512?img=22",
    [6] = "https://i.pravatar.cc/512?img=27",
    [7] = "https://i.pravatar.cc/512?img=33",
    [8] = "https://i.pravatar.cc/512?img=38",
    [9] = "https://i.pravatar.cc/512?img=42",
    [10] = "https://i.pravatar.cc/512?img=47",
    [11] = "https://i.pravatar.cc/512?img=52",
    [12] = "https://i.pravatar.cc/512?img=57",
    [13] = "https://i.pravatar.cc/512?img=62",
    [14] = "https://i.pravatar.cc/512?img=68",
    [15] = "https://i.pravatar.cc/512?img=70",
}

-- Music Configuration
-- Supported sites: YouTube
-- Example format: Just paste the URL of the music/video
Config.Music = {
    [1] = "https://www.youtube.com/watch?v=dQw4w9WgXcQ", -- Rick Astley - Never Gonna Give You Up
    [2] = "https://www.youtube.com/watch?v=kJQP7kiw5Fk", -- Luis Fonsi - Despacito
    [3] = "https://www.youtube.com/watch?v=9bZkp7q19f0", -- PSY - GANGNAM STYLE
    [4] = "https://www.youtube.com/watch?v=OPf0YbXqDm0", -- Mark Ronson - Uptown Funk
    [5] = "https://www.youtube.com/watch?v=fJ9rUzIMcZQ", -- Queen - Bohemian Rhapsody
    [6] = "https://www.youtube.com/watch?v=kXYiU_JCYtU", -- Linkin Park - Numb
    [7] = "https://www.youtube.com/watch?v=IcrbM1l_BoI", -- Eminem - Lose Yourself
    [8] = "https://www.youtube.com/watch?v=y6120QOlsfU", -- Survivor - Eye of the Tiger
    [9] = "https://www.youtube.com/watch?v=StTqXEQ2l-Y" -- AC/DC - Thunderstruck
}

-- Character Animation Options
-- Animations that players can preview on their characters in the character selection screen
-- Format: { label = "Display Name", dict = "animation dictionary", anim = "animation name", duration = milliseconds }
Config.Animations = {
    [1] = {
        label = "Hand Shake",
        dict = "gestures@m@standing@casual",
        anim = "gesture_hello",
        duration = 4500,
    },
    [2] = {
        label = "Salute",
        dict = "anim@mp_player_intincarsalutestd@ds@",
        anim = "idle_a",
        duration = 4500,
    },
    [3] = {
        label = "Thumbs Up",
        dict = "anim@mp_player_intupperthumbs_up",
        anim = "idle_a",
        duration = 4500,
    },
    [4] = {
        label = "Celebration Salute",
        dict = "anim@mp_player_intcelebrationmale@salute",
        anim = "salute",
        duration = 2500,
    },
    [5] = {
        label = "Blow Kiss",
        dict = "anim@mp_player_intcelebrationfemale@blow_kiss",
        anim = "blow_kiss",
        duration = 4500,
    },
    [6] = {
        label = "Facepalm",
        dict = "anim@mp_player_intupperface_palm",
        anim = "idle_a",
        duration = 4000,
    },
    [7] = {
        label = "Clap",
        dict = "anim@mp_player_intcelebrationmale@slow_clap",
        anim = "slow_clap",
        duration = 3000,
    },
}
```


# Language Files

```lua
Config.locales["en"] = {
    game = {
        dont_have_money = "You don't have enough money to buy this location.",
    },
    ui = {
        spawn = "SPAWN",
        selector = "SELECTOR",
        user = "USER",
        other_opt = "OTHER <span>OPTIONS</span>",
        last_loc = "Last <span>Location</span>",
        admin_mode = "Admin <span>Mode</span>",
        createlocations = "Create Locations",
        createlocate_desc = "Lorem ipsum dolor sit amet consectetur. Morbi sit donec risus ornare.",
        paid_select = "Paid Selection",
        paid = "PAID",
        free = "FREE",
        cancel = "CANCEL",
        create = "CREATE",
        purchase = "Purchase",
        owned = "Owned",
    },
}
```


# Events / Export List

### Open Spawn Selector (On Client)

```lua
TriggerEvent('ak4y-spawn:OpenSpawnSelector')
```

### Open Spawn Selector (On Server)

```lua
TriggerClientEvent('ak4y-spawn:OpenSpawnSelector', source)
```

| Parameter | Type   | Description   |
| --------- | ------ | ------------- |
| source    | number | The player id |


# editable-files


# sv\_utils.lua

```lua
CORE = exports["ak4y-core"]

CORE:Register('ak4y-spawn:GetHouseLocs', function(source)
    local src = source
    local myhouses = {}
    local citizenId = CORE:GetCitizenId(src)

    local houses = CORE:ExecuteSql("SELECT * FROM player_houses WHERE citizenid = '" .. citizenId .. "'")
    if houses[1] then
        for k,v in pairs(houses) do
            local house = CORE:ExecuteSql("SELECT * FROM houselocations WHERE name = '" .. v.house .. "'")
            if house[1] then
                myhouses[#myhouses + 1] = {
                    coords = json.decode(house[1].coords).enter,
                    name = house[1].label,
                    id = house[1].id,
                }
            end
        end
    end
    return myhouses
end)

function IsPlayerAdmin(playerid)
    return IsPlayerAceAllowed(playerid, "admin")
end
```




---

[Next Page](/llms-full.txt/1)

