[OX_LIB][QB_Core] Kebabshop

:stuffed_flatbread:Kebabshop by uStore

uKebab is a script designed to bring your server’s community together in one central hub. It’s the perfect way to encourage social interaction through the shared love of food while expanding your server’s economy with unique job opportunities.

:desktop_computer: Custom User Interfaces

Experience a fully immersive environment with dedicated UIs for every step of the process:

:necktie: Management

Custom Boss Menu

Quick video

:green_salad: Preparation

Integrated Fridge, Fryer, Grill, and Veggie stations

Quick video

:shopping_cart: Commerce

Smooth Order, Build, and Shop systems

Quick videos


:gear: Advanced Systems

:hourglass_flowing_sand: Interactive Cooking

All station UIs feature realistic cooking and cutting mechanics, requiring players to manage their time effectively to finish tasks.

:floppy_disk: Reliable Data

Full SQL integration ensures all station updates and product data are saved securely.

:stuffed_flatbread: 18 Items & :framed_picture: 11 Images

Items
-- Kebab Shop Items
kebab_xl                    = { name = 'kebab_xl', label = 'Extra Large Kebab', weight = 500, type = 'item', image = 'kebab.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'A massive kebab that could feed a family.' },
kebab_large                 = { name = 'kebab_large', label = 'Large Kebab', weight = 400, type = 'item', image = 'kebab.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'A hefty kebab for a serious appetite.' },
kebab_medium                = { name = 'kebab_medium', label = 'Medium Kebab', weight = 300, type = 'item', image = 'kebab_s.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'A perfectly balanced kebab.' },
kebab_small                 = { name = 'kebab_small', label = 'Small Kebab', weight = 200, type = 'item', image = 'kebab_s.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'A light snack kebab.' },

lavash_xl                   = { name = 'lavash_xl', label = 'Extra Large Lavash', weight = 150, type = 'item', image = 'lavash.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'A massive sheet of flatbread for an XL kebab.' },
lavash_large                = { name = 'lavash_large', label = 'Large Lavash', weight = 100, type = 'item', image = 'lavash.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'A large flatbread perfect for rolling.' },
lavash_medium               = { name = 'lavash_medium', label = 'Medium Lavash', weight = 75, type = 'item', image = 'lavash.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'Standard size soft lavash bread.' },
lavash_small                = { name = 'lavash_small', label = 'Small Lavash', weight = 50, type = 'item', image = 'lavash.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'A small piece of flatbread for a quick snack wrap.' },

-- Meat Items
kebab_meat_raw              = { name = 'kebab_meat_raw', label = 'Raw Kebab Spit', weight = 2000, type = 'item', image = 'kebab_meat_raw.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'Uncooked meat on a rotating spit.' },
kebab_meat_cooked           = { name = 'kebab_meat_cooked', label = 'Cooked Kebab Meat', weight = 150, type = 'item', image = 'kebab_meat_cooked.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'Freshly sliced, juicy cooked meat.' },

-- Sides/Fries
kebab_fries_uncooked        = { name = 'kebab_fries_uncooked', label = 'Frozen Fries', weight = 100, type = 'item', image = 'fries_uncooked.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'Needs to be deep fried.' },
kebab_fries_cooked          = { name = 'kebab_fries_cooked', label = 'Crispy Fries', weight = 100, type = 'item', image = 'fries_cooked.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'Hot, salty, and crispy fries.' },

-- Vegetables
kebab_tomato                = { name = 'kebab_tomato', label = 'Whole Tomato', weight = 100, type = 'item', image = 'tomato.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'A fresh, whole tomato.' },
kebab_tomato_sliced         = { name = 'kebab_tomato_sliced', label = 'Sliced Tomato', weight = 50, type = 'item', image = 'tomato_sliced.png', unique = false, useable = false, shouldClose = true, thickness = nil, description = 'Freshly sliced tomatoes.' },
kebab_cucumber              = { name = 'kebab_cucumber', label = 'Whole Cucumber', weight = 100, type = 'item', image = 'cucumber.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'A fresh, whole cucumber.' },
kebab_cucumber_sliced       = { name = 'kebab_cucumber_sliced', label = 'Sliced Cucumber', weight = 50, type = 'item', image = 'cucumber_sliced.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'Crisp cucumber slices.' },
kebab_lettuce               = { name = 'kebab_lettuce', label = 'Head of Lettuce', weight = 100, type = 'item', image = 'lettuce.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'A full head of lettuce.' },
kebab_lettuce_sliced        = { name = 'kebab_lettuce_sliced', label = 'Shredded Lettuce', weight = 50, type = 'item', image = 'lettuce_sliced.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'Freshly shredded lettuce.' },

:clipboard: Technical Requirements

The following dependencies are required:

  • QB_Core
  • OX_MYSQL
  • OX_LIB
  • QB_TARGET or OX_TARGET
  • Qb_Inventory or any reskin of it

:link: Links

Script

:hammer_and_wrench: Test the script before buying for 0€
:euro: Purchase the script for 10€
:link: Discord server

:movie_camera: Showcase

:construction_worker_man: More scripts from me

[QB-Core][OX_Lib] Hookah Lounge

Config.lua
Config = {}

Config.Target = "ox" -- Set to "ox" for ox-target or "qb" for qb-target
Config.Debug = false -- Set to true to visualize target zones
Config.drawSprite = false -- Set to true to draw a sprite at target locations (for debugging)

Config.Locations = {
    Fryers = {
        { id = 1, coords = vector4(384.33, -934.27, 29.07, 179.92) },
    },
    Grills = {
        { id = 1, coords = vector4(385.94, -934.09, 29.47, 182.32) },
    },
    Vegetables = {
        { id = 1, coords = vector4(382.57, -934.32, 29.17, 181.85) },
    },
    Order = {
        { id = 1, coords = vector4(386.16, -936.43, 29.08, 173.55) },
    },
    BuildStations = {
        { id = 1, coords = vector4(384.87, -936.77, 29.34, 15.77) },
    },
    BossMenus = {
        { id = 1, coords = vector4(382.75, -939.74, 29.41, 24.67) },
    },
    RecentOrdersMenus = {
        { id = 1, coords = vector4(382.69, -936.73, 29.42, 329.09)},
    }
}

Config.Props = {
    Fridge = {
        enabled = true,
        model = "v_res_fridgemoda",
        locations = {
            { id = 1, coords = vector4(387.26, -934.1, 29.41, 0) },
            -- Add more fridge locations as needed
        }
    },
    -- Add more props here as needed
}

Config.SupplyNPC = {
    coords = vector4(388.33, -940.84, 29.42, 83.08),
    model = 's_m_m_linecook', -- Example ped model, change as needed
    despawnDistance = 40.0 -- Distance at which NPC despawns if no players are nearby
}

Config.SupplyItems = {
    -- Lavash
    { name = 'lavash_xl', label = 'Extra Large Lavash', price = 18 },
    { name = 'lavash_large', label = 'Large Lavash', price = 14 },
    { name = 'lavash_medium', label = 'Medium Lavash', price = 10 },
    { name = 'lavash_small', label = 'Small Lavash', price = 7 },
    -- Meat
    { name = 'kebab_meat_raw', label = 'Raw Kebab Spit', price = 120 },
    { name = 'kebab_meat_cooked', label = 'Cooked Kebab Meat', price = 35 },
    -- Fries
    { name = 'kebab_fries_uncooked', label = 'Frozen Fries', price = 8 },
    { name = 'kebab_fries_cooked', label = 'Crispy Fries', price = 12 },
    -- Vegetables
    { name = 'kebab_tomato', label = 'Whole Tomato', price = 5 },
    { name = 'kebab_tomato_sliced', label = 'Sliced Tomato', price = 3 },
    { name = 'kebab_cucumber', label = 'Whole Cucumber', price = 5 },
    { name = 'kebab_cucumber_sliced', label = 'Sliced Cucumber', price = 3 },
    { name = 'kebab_lettuce', label = 'Head of Lettuce', price = 6 },
    { name = 'kebab_lettuce_sliced', label = 'Shredded Lettuce', price = 4 },
    -- Add more items as needed
}

If you purchase the script, please join my Discord server (also linked on the Tebex page). I would love to hear a review from a server owner where the script is being “stress tested”, as well as get some ideas for future updates.

If you find any bugs, please DM me, open a ticket, or just send a message in general and I will try to respond and fix the issue as soon as possible.
By helping this way, you’re also helping others.
I may also include a special “Bug Hunter” role for everyone who has ever reported a bug to me.

Code is accessible Config.lua/Html/JS
Subscription-based No
Lines (approximately) 2000+
Requirements QB_Core, Ox_Lib, Ox_Mysql,
QB/OX_target, Qb_Inventory/reskin of it
Support Yes

Looks like many AI Using.

1 Like

many AI using? Images are from FlatIcon for the items and Font Awesome for the UI. Since my only Photoshop skill is knowing how to open the app. The UIs take inspiration from my own other UIs for my hookah lounge, although not a 1:1 copy (tbf, adding back the box shadows would bring it closer), and a few other UIs, that a friend of mine has made for his scripts.
All the UIs are made with the idea of making the script look more “modern” and bringing something new and interesting.

Obviously, with anything made after 2024, AI has had its fair share of help through the use of Copilot, but I definitely wouldn’t call it “many AI using” or whatever that is supposed to mean. To support that fact, the first commit for this script was almost over 2 months ago, which, with heavy AI use, this script would have taken little under a week. All commits are publically visible on my discord server.

what a long winded way to say you used AI but don’t want to admit you used AI.

2k+ lines for this is crazy work.