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_libskill 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)
- Get a Stand: The player heads to the dispenser location or uses an item to spawn their portable hot dog stand.
- Setup Shop: The player finds a good, crowded location and places the stand down.
- Attract Customers: Using custom animations, the player calls over nearby NPCs.
- Take Orders & Cook: NPCs will line up. The player must cook the requested items (Classic Hotdog, Cheese Hotdog, etc.) by succeeding at a minigame.
- 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_libandoxmysqlto 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
- Download the latest version of the script.
- Extract the archive into your server's
resourcesdirectory.- Recommendation: Keep your resources organized by placing it in a folder like
[wd]or[jobs].
- Recommendation: Keep your resources organized by placing it in a folder like
- 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)
- Open
qb-core/shared/items.lua. - 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!'}
- Move the provided item images (if included in the script's
imagesfolder) into[qb]/qb-inventory/html/images/.
🔶 For Qbox (ox_inventory)
- Open your
ox_inventory/data/items.lua. - 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' }
}
- Move the provided item images into
ox_inventory/web/images/.
🛠️ Troubleshooting
[!WARNING] Script isn't starting or throwing an error? Make sure
ox_libandoxmysqlare 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.luafile.
[!NOTE] I can't see the UI! Ensure your folder name is
wd-hotdog. If you renamed it towd-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.
| Setting | Type | Default | Description |
|---|---|---|---|
Config.useTarget | Boolean | true | When 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.JobName | Boolean / String | false | Restricts use of the hotdog stand to a specific job (e.g., 'hotdog'). Leave as false to allow anyone to use it. |
Config.UIColor | String | '#ff043bff' | The primary accent color for the NUI (user interface). Supports standard HEX or RGBA strings. |
Config.StandProp | Hash | `prop_hotdogstand_01` | The default GTA V prop model used when a player deploys a portable hotdog stand. |
Config.MinDistanceToOtherStands | Float | 10.0 | The 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
vector4coordinates 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 }
}
| Property | Description |
|---|---|
Key (e.g., hotdog_classic) | The exact item name used in your framework's inventory. |
| label | The display name shown in the UI menu to the player. |
| description | A short, flavorful description shown in the UI. |
| price | The 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.
| Setting | Default | Description |
|---|---|---|
Enabled | true | Turns the tipping system on or off entirely. |
Min | 0 | The absolute minimum tip amount an NPC can give. |
Max | 20 | The maximum tip amount an NPC can give. |
Chance | 50 | The probability (out of 100%) that an NPC decides to leave a tip. |
🚶 Customer (NPC) Settings
Fine-tune how NPCs interact with the hotdog stands.
| Setting | Default | Description |
|---|---|---|
MaxQueueSize | 5 | The maximum number of NPCs that can wait in line at once. |
SearchRadius | 100.0 | How far away the script will scan for wandering pedestrians to lure. |
DensityMultiplier | 3.0 | Multiplier for how aggressively the script attracts NPCs. Higher = busier stands! |
MaxVisitsPerPed | 2 | Prevents the same NPC from buying hotdogs infinitely. After 2 visits, they will not return. |
CustomerWaitTime | 180000 | The 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 circularox_libskill 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.
