Back to Script

wd-hotdog - Premium Hot Dog Enterprise Documentation

Installation guide, configuration details, and best practices.

🌭 WD-Hotdog

A Premium Hot Dog Stand Business for FiveM


Welcome to the documentation for WD-Hotdog! This script introduces a highly immersive and dynamic street food business to your server. Whether you want a player-run business or a fully automated NPC-driven side hustle, this script provides it all with a smooth and optimized experience.

🌟 Key Features

  • 🌭 Interactive & Deployable Stands: Players can purchase or collect a hot dog stand and deploy it anywhere in the city.
  • 👥 Dynamic NPC Customers: Once a stand is open, local pedestrians will dynamically find the stand, queue up, and order food.
  • 🎮 Cooking Minigames: Prepare food manually using engaging ox_lib skill checks. If you fail, the food burns!
  • 💰 Customizable Economics & Tips: Fully configure the cost of goods, the health/thirst they restore, and tipping probabilities based on good service.
  • 🔄 Universal Framework Bridge: Works perfectly out-of-the-box with both QBCore and Qbox.
  • 🎭 Immersive Roleplay Elements: Custom animations for calling over customers, whistling, and serving food.

🕹️ How It Works (Player Flow)

  1. Get a Stand: The player heads to the dispenser location or uses an item to spawn their portable hot dog stand.
  2. Setup Shop: The player finds a good, crowded location and places the stand down.
  3. Attract Customers: Using custom animations, the player calls over nearby NPCs.
  4. Take Orders & Cook: NPCs will line up. The player must cook the requested items (Classic Hotdog, Cheese Hotdog, etc.) by succeeding at a minigame.
  5. Earn Cash: Serve the food to earn money and potential tips!

🛠️ Dependencies

To ensure WD-Hotdog runs flawlessly, please make sure the following resources are installed, updated, and started before this script:

  • ox_lib - Used for UI, skill checks, and optimization.
  • oxmysql - Used for database interactions.
  • Framework: Either QBCore or Qbox.

[!TIP] Ensure you are running the latest releases of ox_lib and oxmysql to avoid compatibility issues.

📞 Support & Credits

Created with ❤️ by Whale 🐋. If you encounter any issues, find bugs, or have suggestions for future updates, please reach out through the official support channels.

📥 Installation Guide

Follow this step-by-step guide to get WD-Hotdog installed and running smoothly on your server.


Step 1: Download & Folder Placement

  1. Download the latest version of the script.
  2. Extract the archive into your server's resources directory.
    • Recommendation: Keep your resources organized by placing it in a folder like [wd] or [jobs].
  3. CRITICAL: Ensure the folder is named exactly wd-hotdog. If the folder name is changed, UI elements and NUI callbacks may break!

Step 2: Ensure Dependencies in server.cfg

Open your server.cfg and make sure you are starting the required dependencies in the correct order. oxmysql and ox_lib must be started before wd-hotdog.

# --- Core Dependencies ---
ensure oxmysql
ensure ox_lib

# --- Framework ---
ensure qb-core       # OR ensure qbx_core

# --- WD Scripts ---
ensure wd-hotdog

Step 3: Configure Items (Framework Specific)

Depending on your framework and inventory system, you need to add the hot dog food and drink items so players can actually use and sell them.

🔷 For QBCore (qb-inventory)

  1. Open qb-core/shared/items.lua.
  2. Paste the following items at the bottom of the table:
-- WD-Hotdog
['hotdog_classic'] = {['name'] = 'hotdog_classic', ['label'] = 'Classic Hotdog', ['weight'] = 200, ['type'] = 'item', ['image'] = 'hotdog.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'A tasty classic hotdog'},
['hotdog_cheese']  = {['name'] = 'hotdog_cheese',  ['label'] = 'Cheese Hotdog',  ['weight'] = 200, ['type'] = 'item', ['image'] = 'hotdog_cheese.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Hotdog with melted cheese'},
['hotdog_double']  = {['name'] = 'hotdog_double',  ['label'] = 'Double Hotdog',  ['weight'] = 250, ['type'] = 'item', ['image'] = 'hotdog_double.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Double the sausage, double the fun'},
['cola_small']     = {['name'] = 'cola_small',     ['label'] = 'Small Cola',     ['weight'] = 150, ['type'] = 'item', ['image'] = 'cola.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'A refreshing small cola'},
['cola_large']     = {['name'] = 'cola_large',     ['label'] = 'Large Cola',     ['weight'] = 300, ['type'] = 'item', ['image'] = 'cola_large.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'A large cup of cola'},
['burnt_food']     = {['name'] = 'burnt_food',     ['label'] = 'Burnt Food',     ['weight'] = 100, ['type'] = 'item', ['image'] = 'burnt_food.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Yuck, you burned it!'}
  1. Move the provided item images (if included in the script's images folder) into [qb]/qb-inventory/html/images/.

🔶 For Qbox (ox_inventory)

  1. Open your ox_inventory/data/items.lua.
  2. Paste the following snippet inside the items table:
['hotdog_classic'] = {
    label = 'Classic Hotdog',
    weight = 200,
    description = 'A tasty classic hotdog',
    client = { image = 'hotdog.png' }
},
['hotdog_cheese'] = {
    label = 'Cheese Hotdog',
    weight = 200,
    description = 'Hotdog with melted cheese',
    client = { image = 'hotdog_cheese.png' }
},
['hotdog_double'] = {
    label = 'Double Hotdog',
    weight = 250,
    description = 'Double the sausage, double the fun',
    client = { image = 'hotdog_double.png' }
},
['cola_small'] = {
    label = 'Small Cola',
    weight = 150,
    client = { image = 'cola.png' }
},
['cola_large'] = {
    label = 'Large Cola',
    weight = 300,
    client = { image = 'cola_large.png' }
},
['burnt_food'] = {
    label = 'Burnt Food',
    weight = 100,
    description = 'Yuck, you burned it!',
    client = { image = 'burnt_food.png' }
}
  1. Move the provided item images into ox_inventory/web/images/.

🛠️ Troubleshooting

[!WARNING] Script isn't starting or throwing an error? Make sure ox_lib and oxmysql are fully up to date. Outdated versions are the #1 cause of bridge/script failures.

[!NOTE] Items show up as broken images? Ensure you have dragged the images into the correct inventory images folder and that the image file names perfectly match what is written in your items.lua file.

[!NOTE] I can't see the UI! Ensure your folder name is wd-hotdog. If you renamed it to wd-hotdog-main, the NUI (User Interface) will fail to load correctly.

⚙️ Configuration Reference (config.lua)

The config.lua file is where you tailor the WD-Hotdog script to fit your server's unique economy and playstyle. Below is a comprehensive breakdown of every configurable setting.


🔧 General Settings

These settings dictate the fundamental behavior of the script, including UI color schemes and target interactions.

SettingTypeDefaultDescription
Config.useTargetBooleantrueWhen true, uses a third-eye system (e.g., ox_target or qb-target) for interactions. If false, it falls back to standard text prompts.
Config.JobNameBoolean / StringfalseRestricts use of the hotdog stand to a specific job (e.g., 'hotdog'). Leave as false to allow anyone to use it.
Config.UIColorString'#ff043bff'The primary accent color for the NUI (user interface). Supports standard HEX or RGBA strings.
Config.StandPropHash`prop_hotdogstand_01`The default GTA V prop model used when a player deploys a portable hotdog stand.
Config.MinDistanceToOtherStandsFloat10.0The minimum distance (in GTA units) required between two deployed hotdog stands to prevent overlap/spam.

📍 Dispenser & Pre-placed Stands

You can have players spawn their stands from a static location, or you can permanently place stands around the map for them to use.

Config.Dispenser

The location where players interact to get their hotdog stands.

  • Model: Prop model used for the dispenser.
  • Coords: The vector4(x, y, z, w) coordinates and heading.

Config.PizzaStands

[!NOTE] Despite the variable name, this controls the fixed Hot Dog Stands scattered permanently across the map!

  • Model: You can specify a different prop model for static locations if desired.
  • Locations: A table of vector4 coordinates where these permanent stands will automatically spawn when the server starts.

🍔 Prices, Menu & Economics

Configure what items players can sell, how much they earn, and how much health/thirst they restore.

Config.FoodItems = {
    ['hotdog_classic'] = { label = 'Classic Hotdog', description = 'Cook a classic hotdog', price = 15, restoreHealth = 30 },
    ['hotdog_cheese']  = { label = 'Cheese Hotdog', description = 'Cook a cheese hotdog', price = 20, restoreHealth = 40 },
    ['hotdog_double']  = { label = 'Double Hotdog', description = 'Cook a double hotdog', price = 30, restoreHealth = 50 }
}
PropertyDescription
Key (e.g., hotdog_classic)The exact item name used in your framework's inventory.
labelThe display name shown in the UI menu to the player.
descriptionA short, flavorful description shown in the UI.
priceThe amount of cash the player earns when an NPC purchases this item.
restoreHealth(Food only) The amount of health restored when a player consumes it.
restoreThirst(Drinks only) The amount of thirst restored when a player consumes it.
  • Config.BurntFoodItem: Set to 'burnt_food'. If a player fails the cooking minigame, this is the trash item they receive.

💵 Tip Settings

Configure whether or not NPCs can tip the player for good service.

SettingDefaultDescription
EnabledtrueTurns the tipping system on or off entirely.
Min0The absolute minimum tip amount an NPC can give.
Max20The maximum tip amount an NPC can give.
Chance50The probability (out of 100%) that an NPC decides to leave a tip.

🚶 Customer (NPC) Settings

Fine-tune how NPCs interact with the hotdog stands.

SettingDefaultDescription
MaxQueueSize5The maximum number of NPCs that can wait in line at once.
SearchRadius100.0How far away the script will scan for wandering pedestrians to lure.
DensityMultiplier3.0Multiplier for how aggressively the script attracts NPCs. Higher = busier stands!
MaxVisitsPerPed2Prevents the same NPC from buying hotdogs infinitely. After 2 visits, they will not return.
CustomerWaitTime180000The time (in milliseconds) a customer waits in line before leaving angrily (180000ms = 3 minutes).
CustomerModels(Array)A specific list of pedestrian models that are allowed to become customers. Prevents cops or gang members from lining up if removed from this list.

🍳 Cooking & Animations

  • Config.Cooking.MinigameType: Set to 'ox_lib', meaning the script uses the circular ox_lib skill check UI when the player cooks food.
  • Config.Animations: Defines the specific animation dictionaries (dict) and clips (anim) used when the player waves (Wave) or calls over (Whistle) pedestrians. You can change these to any valid GTA V animation.
Claim your coupons here!