Price
$200.00A script by emox_manga
Price
$200.00A V2 with a brand new menu to manage your orders and view history!
Bring food delivery job to your FiveM server with Uber Foods! This script offers a fun and immersive delivery role for your players.
What’s the Job?
Rent your delivery vehicle
Request a food delivery from the menu
Accept the order from the menu
Deliver it to the hungry customer
Get paid for your service + cash bonus if you complete 2 or more deliveries in a row
Features
Compatible with ESX & QBCore
Brand new menu to manage your deliveries
Completed deliveries history saved in the SQL database
Easy to configure and customize
Unique job experience
Lightweight, effective, and smooth
Partially accessible code for tweaks
~1500 lines of clean Lua/HTML codeConfig = {}
Config.OpenStartDeliveryMenuButton = 167 --Currently set to F6 index, see "https://docs.fivem.net/docs/game-references/controls/#controls" if you want to set any other input.
Config.JobCheck = true --Set to true if you want a specific job to be required to be able to do food Deliveries.
Config.JobRequired = "unemployed" --If job check true, set the name of the required job here to be able to do food Deliveries.
Config.JobMoney = "cash" --Set it to "cash" or "bank" for which account you wanna add/remove money.
Config.MaxDeliveryChain = 3 --The maximum number chance of delivery you may have in a delivery from a restaurant.
Config.CoordsDeliveryCarButton = vector3(-1165.39, -894.57, 13.03) --Position where you open Delivery rent car menu.
Config.CoordsDeliveryCarReturnVehMarker = vector3(-1162.16, -890.53, 12.62) --Position where you return your rented Delivery car.
Config.CoordsDeliveryCarSpawn = vector4(-1164.03, -891.24, 12.62, 301.34) --Postion where the rented car spawn.
Config.CarRentCost = 1000 --The cost of renting your delivery car.
Config.RestaurantFoodPickup = { --Add/Remove restaurants locations here (Do not forget to setup the icon tied to the reasturant name in "Config.RestaurantLogos").
{
name = "Burger Shot",
location = vector3( -1194.53, -892.21, 13.89),
food = {"Menu", "Burger", "Fries", "IceCream", "eCola", "Sprunk"}
},
{
name = "Cluckin' Bell",
location = vector3( -137.86, -256.3635, 43.59),
food = {"Menu", "Burger", "Fries", "Wing", "Veggy", "Balls", "Rings", "IceCream", "eCola", "Sprunk"}
},
{
name = "Up-n-Atom Burger",
location = vector3( 81.09, 274.13, 110.21),
food = {"Menu", "Burger", "Fries", "Slices of Bacon", "Chili Dog", "May's Apple Pie", "May's Layer Cake", "IceCream", "eCola", "Sprunk"}
},
{
name = "Pizza This...",
location = vector3( 287.42, -963.57, 29.42),
food = {"Menu", "Pizza", "Fries", "Pasta", "Salad", "May's Apple Pie", "Donut", "Cherry Pie", "Pastry", "IceCream", "eCola", "Sprunk"}
},
{
name = "Pearl's Seafood",
location = vector3( -1816.25, -1192.57, 14.3),
food = {"Shrimp Tempura", "Calamari", "Potato Chips", "Soup", "Salad", "Salmon Salad", "Raw Oyster", "Scallop Baked", "Steamed Fish", "Steamed Squid", "Coconut Juice", "Pineapple juice", "Cocktail", "Banana Split"}
},
{
name = "Sightings Bar & Restaurant",
location = vector3( -888.07, -2535.45, 14.55),
food = {"Menu", "Classic Burger", "Grilled Cheese", "Fish & Chips", "Fries", "Nachos", "Mozzarella Sticks", "Jalapeño Poppers", "Buffalo Wings", "eCola", "Sprunk", "Logger Beer", "Pißwasser", "Cheesecake Slice", "Brownie Sundae"}
},
{
name = "Slice 'N' Dice Pizzeria",
location = vector3( -1329.7, -1285.22, 5.02),
food = {"Menu", "Pizza", "Fries", "Pasta", "Salad", "May's Apple Pie", "Donut", "Cherry Pie", "Pastry", "IceCream", "eCola", "Sprunk"}
},
{
name = "Mex on the Beach",
location = vector3( -1286.03, -1387.13, 4.45),
food = {"Menu", "Tacos", "Burrito", "Enchiladas", "Mexican Rice", "Nachos", "Tortilla Chips & Guac", "Nacho Fiesta Platter", "Churros with Chocolate", "Agua Fresca", "Tequila Shot", "Lime Margarita"}
},
{
name = "Guido's Take Out",
location = vector3( 443.43, 134.69, 100.02),
food = {"Menu", "Pizza", "Fries", "Pasta", "Salad", "May's Apple Pie", "Donut", "Cherry Pie", "Pastry", "IceCream", "eCola", "Sprunk"}
},
{
name = "La Spada",
location = vector3( -1038.46, -1397.05, 5.55),
food = {"Linguine alle Vongole", "Risotto ai Frutti di Mare", "Lobster Ravioli", "Caprese Salad", "Bruschetta al Pomodoro", "Tiramisu", "Panna Cotta", "House White Wine", "Sparkling Water", "Espresso Shot"}
},
{
name = "Pot-Heads Seafood Restaurant",
location = vector3( -1229.76, -1173.88, 7.69),
food = {"Spicy Shrimp Tacos", "Cajun Lobster Roll", "Deep-Fried Catfish Basket", "Beer-Battered Fish & Chips", "Corn on the Cob", "Slaw Cup", "Deep-Fried Biscuit", "Key Lime Pie Slice", "Local Craft Beer", "Sweet Iced Tea", "Pineapple Kush Smoothie"}
},
{
name = "The Pizza Coven",
location = vector3( -1350.68, -1218.5, 5.94),
food = {"Menu", "Pizza", "Fries", "Pasta", "Salad", "May's Apple Pie", "Donut", "Cherry Pie", "Pastry", "IceCream", "eCola", "Sprunk"}
},
{
name = "Hookies",
location = vector3( -2194.03, 4290.59, 49.17),
food = {"Grilled Salmon Fillet", "Beer-Battered Cod Sandwich", "Fried Shrimp Basket", "Fish & Chips", "Lobster Mac & Cheese", "Garlic Mashed Potatoes", "Onion Rings", "Steamed Veggies", "Apple Crumble", "Cheesecake Slice", "Root Beer Float", "Lemonade"}
},
{
name = "Sandy Rings",
location = vector3( -1188.91, -1552.08, 4.36),
food = {"Glazed Donut", "Cinnamon Twist", "Chocolate Frosted", "Strawberry Sprinkle", "Black Coffee", "Vanilla Latte", "Caramel Iced Coffee", "Bacon & Egg Sandwich", "Sausage Breakfast Burrito", "Ham & Cheese Croissant", "Chocolate Chip Cookie", "Blueberry Muffin"}
},
{
name = "Sumac Restaurant",
location = vector3( -1463.53, -705.02, 26.78),
food = {"Carpaccio", "Carrot and Feta", "Cabbage", "Salad", "Pasta", "Vini Rossi", "Vini Bianco", "Tiramisu", "Cannoli"}
},
{
name = "Wok It Off",
location = vector3( -163.8, -1439.65, 31.42),
food = {"General Tso's Chicken", "Beef & Broccoli", "Kung Pao Chicken", "Mongolian Beef", "Sesame Chicken", "Teriyaki Chicken", "Fried Rice", "Chow Mein Noodles", "Vegetable Stir Fry", "Spring Rolls", "Crab Rangoon", "Chicken Skewers" }
}
}
Config.RestaurantLogos = {--Setup each restaurant icons here (Needs to match the name of the restaurant set above, put your images in "html\images").
["Burger Shot"] = "images/burger_shot.png",
["Cluckin' Bell"] = "images/cluckin_bell.png",
["Up-n-Atom Burger"] = "images/up_n_atom.png",
["Pizza This..."] = "images/pizza_this.png",
["Pearl's Seafood"] = "images/pearls_seafood.png",
["Sightings Bar & Restaurant"] = "images/sightings_bar.png",
["Slice 'N' Dice Pizzeria"] = "images/slice_n_dice.png",
["Mex on the Beach"] = "images/mex_on_the_beach.png",
["Guido's Take Out"] = "images/guidos_take_out.png",
["La Spada"] = "images/la_spada.png",
["Pot-Heads Seafood Restaurant"] = "images/pot_heads.png",
["The Pizza Coven"] = "images/pizza_coven.png",
["Hookies"] = "images/hookies.png",
["Sandy Rings"] = "images/sandy_rings.png",
["Sumac Restaurant"] = "images/sumac.png",
["Wok It Off"] = "images/wok_it_off.png"
}
Config.PenaltyOnMissionCancel = true --Set it to true/false if you want a money penalty on mission cancel.
Config.PenaltyCancelAmount = 300 --The money amount it takes if penalty enabled.
Config.Colour = { R = 160, G = 255, B = 160} --3D Marker Colour
Config.RewardBonus = { min = 170, max = 450 } --Mini/max Amount of payout Bonus.
Config.RewardDeliveryChain = 200 --Amount of payout Bonus you get when you in a chain deliveries.
Config.ChanceDeliveryChain = { -- Chance percentages to offer another delivery after completing one.
secondPercentage = 50, -- 'secondPercentage' = chance after the 1st delivery.
morePercentage = 15 -- 'morePercentage' = chance after 2 or more deliveries in a row.
}
Config.MapBlip = {{--Minimap icon setup.
title = "GoGo Eats", --Display Name
colour = 2, --Colour ID
id = 457, --Blip Icon ID
x = -1164.13,
y = -891.29,
z = 13.81
}}
Config.DeliveryVehicles = {--Add/remove any car you want as a delivery renting (Here is the recommend cars shown in the video).
--Name = The vehicle menu display name, model = In game spawn name, logo = The vehicle Menu icon (put your images in "html\images").
{ name = "Faggio Sport", model = "foodbike", logo = "images/foodbike.png", price = "$200"},
{ name = "Faggio Classic", model = "foodbike2", logo = "images/foodbike2.png", price = "$200"},
{ name = "Blista Compact", model = "foodcar", logo = "images/foodcar.png", price = "$1000"},
{ name = "Blista", model = "foodcar2", logo = "images/foodcar2.png", price = "$1000"},
{ name = "Dilettante", model = "foodcar3", logo = "images/foodcar3.png", price = "$1000"},
{ name = "Panto", model = "foodcar4", logo = "images/foodcar4.png", price = "$700"},
{ name = "Emperor Lokus", model = "foodcar5", logo = "images/foodcar5.png", price = "$1000"},
{ name = "Rebel Sport Rusty", model = "foodcar6", logo = "images/foodcar6.png", price = "$500"}
}
Config.GiveTakeFoodAnim = { --Animation for when you pickup/give food to NPC.
dict = "mp_common", --Anim Dict
name = "givetake1_b" --Anim Name
}
Config.MaleAnims = {--List of idle anims Male NPC can play (anim dict, anin name).
{ dict = "rcmjosh1", name = "idle" },
{ dict = "random@shop_tattoo", name = "_idle" },
{ dict = "amb@world_human_hang_out_street@male_c@idle_a", name = "idle_a" },
{ dict = "amb@world_human_aa_smoke@male@idle_a", name = "idle_c" },
{ dict = "anim@mp_corona_idles@male_c@idle_a", name = "idle_a" }
}
Config.FemaleAnims = {--List of idle anims Female NPC can play (anim dict, anin name).
{ dict = "amb@world_human_hang_out_street@female_arm_side@base", name = "base" },
{ dict = "mp_move@prostitute@f@hooker", name = "idle" },
{ dict = "move_f@scared@a", name = "idle" },
{ dict = "amb@world_human_smoking@female@idle_a", name = "idle_b" },
{ dict = "amb@world_human_hang_out_street@female_arms_crossed@idle_a", name = "idle_a" }
}
function _AddRemoveMoney(src, account, amount, addmoney)
if Config.Framework == "qb" then
local Player = Core.Functions.GetPlayer(src)
if Player then
if addmoney then
Player.Functions.AddMoney(account, amount)
else
Player.Functions.RemoveMoney(account, amount)
end
end
elseif Config.Framework == "esx" then
if account == "cash" then
account = "money"
end
local xPlayer = Core.GetPlayerFromId(src)
if addmoney then
xPlayer.addAccountMoney(account, amount)
else
xPlayer.removeAccountMoney(account, amount)
end
end
end
RegisterNetEvent('GoGoEats:DeviverySuccess')
AddEventHandler('GoGoEats:DeviverySuccess', function(client, restaurant, food, amount)
if amount == 0 then return end
local player = source
local QBPlayer = nil
local xPlayer = nil
local identifier = nil
if Config.Framework == "qb" then
QBPlayer = Core.Functions.GetPlayer(player)
if QBPlayer then
identifier = Core.Functions.GetIdentifier(player)
print("QB ID "..identifier)
end
elseif Config.Framework == "esx" then
xPlayer = Core.GetPlayerFromId(player)
if xPlayer then
identifier = xPlayer.getIdentifier()
end
end
if xPlayer or QBPlayer then
local restaurant = restaurant or "Unknown"
local food = food or "Unknown"
-- Insère dans la base de données
MySQL.insert('INSERT INTO gogoeats_deliveries (identifier, client, restaurant, food, payment, date) VALUES (?, ?, ?, ?, ?, ?)',
{ identifier, client, restaurant, food, amount })
end
_AddRemoveMoney(player, Config.JobMoney, amount, true) --Set last param to true if you add money, false if you remove.
TriggerClientEvent('GoGoEats:Notification', player, "Fleeca Bank", "Payment", LangSTR['notifications_gogoeats_delivery_success'].."\n+~g~$"..tostring(amount), 'CHAR_BANK_FLEECA')
end)
RegisterServerEvent('GoGoEats:CancelPenalty')
AddEventHandler('GoGoEats:CancelPenalty', function(money)
local player = source
_AddRemoveMoney(player, Config.JobMoney, money, false) --Set last param to true if you add money, false if you remove.
TriggerClientEvent('GoGoEats:Notification', player, "Fleeca Bank", "Payment", LangSTR['notifications_gogoeats_delivery_penalty'].."\n-~r~$"..tostring(Config.PenaltyCancelAmount), 'CHAR_BANK_FLEECA')
end)
local DeliveryCarToNetId = {}
RegisterNetEvent('GoGoEats:RentedCarSpawn')
AddEventHandler('GoGoEats:RentedCarSpawn', function(netId, price)
local player = source
DeliveryCarToNetId[player] = netId
_AddRemoveMoney(player, Config.JobMoney, price, false) --Set last param to true if you add money, false if you remove.
print("spawn rented car")
TriggerClientEvent('GoGoEats:Notification', player, "Fleeca Bank", "Payment", LangSTR['notifications_gogoeats_rented_car'].."\n-~r~$".. tostring(price), 'CHAR_BANK_FLEECA')
end)
RegisterServerEvent('GoGoEats:RentedCarReturned', function(netId)
local player = source
if netId == DeliveryCarToNetId[player] then
TriggerClientEvent('GoGoEats:DeleteDeliveryCar', player)
DeliveryCarToNetId[player] = nil
else
TriggerClientEvent('GoGoEats:WrongDeliveryCar', player)
end
end)
RegisterServerEvent('GoGoEats:NewRandomOrderNotif', function()
local player = source
TriggerClientEvent('GoGoEats:Notification', player, "GoGo Eats", "Notification", LangSTR['notifications_gogoeats_new_order'], 'CHAR_HUMANDEFAULT')
end)
RegisterNetEvent("GoGoEats:RentedCarMoneyBack")
AddEventHandler("GoGoEats:RentedCarMoneyBack", function(price)
local player = source
_AddRemoveMoney(player, Config.JobMoney, price, true) --Set last param to true if you add money, false if you remove.
TriggerClientEvent('GoGoEats:Notification', player, "Fleeca Bank", "Payment", LangSTR['notifications_gogoeats_rented_car_return'].."\n+~g~$".. tostring(price), 'CHAR_BANK_FLEECA')
end)
RegisterNetEvent('GoGoEats:GetDeliveryHistory')
AddEventHandler('GoGoEats:GetDeliveryHistory', function()
print("get delivery history")
local player = source
local identifier = nil
if Config.Framework == "qb" then
local Player = Core.Functions.GetPlayer(player)
if Player then
identifier = Core.Functions.GetIdentifier(player)
print("QB ID "..identifier)
end
elseif Config.Framework == "esx" then
local xPlayer = Core.GetPlayerFromId(player)
if xPlayer then
local xPlayer = Core.GetPlayerFromId(player)
identifier = xPlayer.getIdentifier()
end
end
MySQL.query('SELECT * FROM gogoeats_deliveries WHERE identifier = ? ORDER BY date DESC LIMIT 20', {
identifier
}, function(result)
if result and #result > 0 then
local totalDeliveries = 0
local totalEarnings = 0
for i, order in ipairs(result) do
-- Conversion date
if order.date and order.date > 10000000000 then
order.date = order.date / 1000
end
order.date = os.date("%d/%m/%Y %H:%M:%S", order.date)
-- Cumul des stats
totalDeliveries = totalDeliveries + 1
totalEarnings = totalEarnings + (order.payment or 0)
end
-- Envoi au client
TriggerClientEvent('GoGoEats:SendDeliveryHistory', player, result, totalDeliveries, totalEarnings)
else
TriggerClientEvent('GoGoEats:SendDeliveryHistory', player, {}, 0, 0)
end
end)
end)
RegisterServerEvent('GoGoEats:StartMissionCheck', function(netId)
local player = source
if netId == DeliveryCarToNetId[player] then
TriggerClientEvent('GoGoEats:OpenMissionMenu', player)
else
TriggerClientEvent('GoGoEats:WrongDeliveryCar', player)
end
end)
RegisterServerEvent('GoGoEats:CheckJobStatus', function()
local player = source
local jobName = nil
local playerName = ""
if Config.Framework == "qb" then
local Player = Core.Functions.GetPlayer(player)
if Player and Player.PlayerData and Player.PlayerData.job then
jobName = Player.PlayerData.job.name
playerName = Player.PlayerData.charinfo.firstname or "QBCorePlayer"
end
elseif Config.Framework == "esx" then
local xPlayer = Core.GetPlayerFromId(player)
if xPlayer and xPlayer.job then
jobName = xPlayer.job.name
playerName = xPlayer.getName() or "ESXPlayer"
end
end
if jobName == Config.JobRequired then
print(playerName.." job is "..jobName.." → access granted!")
TriggerClientEvent('GoGoEats:JobAccess', player)
else
print(playerName.." job is "..tostring(jobName).." → access denied!")
TriggerClientEvent('GoGoEats:JobDeny', player)
end
end)
Dependencies
Recommended Assets
Preview
Download Now| Code is accessible | Partially |
| Subscription-based | No |
| Lines (approximately) | 1500 |
| Requirements | ScaleformUI - oxmysql |
| Support | Yes |
See what others are saying about this script.
Share your experience and help others.