Download the release ZIPs of oxmysql, ox_lib and ox_target (links above) and put them into your resources folder.
Put the rd_vehicleshop folder into resources. Keep the folder name rd_vehicleshop.
Import sql/install.sql into your server database (HeidiSQL, phpMyAdmin, …).
CREATE TABLE IF NOT EXISTS, so an existing owned_vehicles table from ESX is not touched.The connection string must be set before any resource starts, and the order matters:
set mysql_connection_string "mysql://root:password@localhost:3306/fivem"
ensure oxmysql
ensure ox_lib
ensure es_extended # or qb-core / qbx_core
ensure ox_target
# ensure screenshot-basic # optional
# ensure cd_garage # optional
ensure rd_vehicleshopConfig.Framework = 'esx' (or 'qb' / 'qbox')Config.OwnedVehiclesTable: the table your garage reads (default owned_vehicles)Config.ExtraColumnsSingle / Config.ExtraColumnsCart: extra columns your garage needs (e.g. in_garage, garage_id). Missing columns are added automatically.Everything else (shops, vehicles, prices, positions, language, marketplace, plates, test drive) is set in game in the admin panel.
There are two ways, and either one is enough:
-- config.lua: ESX groups / QB permissions
Config.AdminGroups = {'admin', 'superadmin', 'owner'}# server.cfg: ACE permission (framework-independent)
add_ace group.admin rd.vehicleshop.admin allow
add_principal identifier.license:YOUR_LICENSE group.adminOptional: limit someone to their own shops with Config.AdminRoles (shop_manager).
/vehicleshopadmin.The catalogue shows nui/img/vehicles/<model>.png. You can add images in three ways:
nui/img/vehicles/,https:// image URL on the vehicle in the admin panel,screenshot-basic).A car without an image shows a placeholder icon, so nothing breaks.
Still stuck? Ask in our Discord.