Integrations — Restaurant Creator for FiveM | Quasar Store | Quasar Store
Documentation
Integrations
Frameworks, inventories, targets, text UI, 3D sound, notifications, hunger and thirst, Discord logs and languages for Restaurant Creator on ESX, QBCore and Qbox.
Restaurant Creator does not hard-code your framework, inventory or target. Each one is detected at start-up by looking for a started resource, and everything resource-specific lives in small, unencrypted bridge files under client/custom/, server/custom/ and custom/.
Running a framework or inventory under another folder name? Add the name to the matching list in config/main.lua, pointing at the bridge it should use:
By default messages are shown by the script's own interface. To route them through another system, edit Notification in custom/client.lua — ready-made examples for qs-interface and ox_lib are already there, commented out:
lua
-- custom/client.luafunctionNotification(msg, type)-- type: 'info' | 'error' | 'success'
lib.notify({ title = 'Restaurant', description = msg, type = type })
end
The same file holds the text UI, progress bar, HUD and 3D sound functions, so any of them can be swapped for your own resource.
Eating a dish plays the animation and removes one item, but does not touch your status system. When a player finishes eating, the server receives restaurant:finishConsumeOutput with the item name. Handle it from any server script to add food and water:
lua
local QBCore = exports['qb-core']:GetCoreObject()
local food = { burger = 40, cooked_pizza = 50, cooked_fries = 25 }
local drinks = { cola_drink = 35, sprunk_drink = 35, orange_drink = 35 }
RegisterNetEvent('restaurant:finishConsumeOutput', function(item)local src = source
local Player = QBCore.Functions.GetPlayer(src)
ifnot Player thenreturnendlocal meta = Player.PlayerData.metadata
if food[item] then
Player.Functions.SetMetaData('hunger', math.min(100, meta.hunger + food[item]))
elseif drinks[item] then
Player.Functions.SetMetaData('thirst', math.min(100, meta.thirst + drinks[item]))
end
TriggerClientEvent('hud:client:UpdateNeeds', src, Player.PlayerData.metadata.hunger, Player.PlayerData.metadata.thirst)
end)
lua
local food = { burger = 400000, cooked_pizza = 500000, cooked_fries = 250000 }
local drinks = { cola_drink = 350000, sprunk_drink = 350000, orange_drink = 350000 }
RegisterNetEvent('restaurant:finishConsumeOutput', function(item)local src = source
if food[item] then
TriggerClientEvent('esx_status:add', src, 'hunger', food[item])
elseif drinks[item] then
TriggerClientEvent('esx_status:add', src, 'thirst', drinks[item])
endend)
Add your own dishes to the two tables — any multi-step recipe output or custom drink works the same way.
Supporting an inventory that is not on the list takes two files and one line:
Copy the closest bridge
Duplicate the closest pair — for example client/custom/inventory/qb-inventory.lua and server/custom/inventory/qb.lua — and rename them after your inventory.
Replace the calls
Swap the exports inside for your inventory's: opening a stash (OpenStash), and on the server the item list and image path.
Register it
Add ['your-inventory'] = 'yourname' to the inventories list in config/main.lua and restart.
41 translations ship in locales/: ar, bg, bn, ca, cs, da, de, el, en, es, et, fa, fi, fr, he, hi, hr, hu, id, it, ja, ko, lt, lv, ms, nl, no, pl, pt, ro, ru, sk, sl, sv, sw, th, tr, uk, ur, vi and zh. Pick one with Config.Locale, or copy en.json to a new code to write your own.
Prices in every menu follow Config.Intl — set locales = 'es-ES' and currency = 'EUR' to show 1.250 €, for example. It only changes how numbers look, never the amounts.