Introducing the best Vehicleshop for Fivem!
Our feature-rich solution is the perfect addition to any server looking to upgrade their vehicle dealership options.
Here’s what you can expect from our top-of-the-line script:
- High Performance (Idle 0.0ms Server & Client)
- Responsive design that looks great on all resolutions (CSS editable)
- Quick and easy vehicle search with fast selection up/down
- Create multiple dealerships to fit your server’s needs
- Drag and drop camera and vehicle rotation for ultimate control
- Change vehicle colors to match your desired look
- Automatic creation of specifications for easy inventory management
- Modal window with signature pad for streamlined transactions
- Discord webhook when purchase was successfull or not
Our customizable configuration options allow you to tailor the Vehicleshop to your exact needs, including:
- Change language settings for both frontend and backend
- Adjust camera offset for the perfect viewing angle
- Add more specifications
- Change helpnotifications to suit your needs
- Add custom notification triggers
- Customize vehicle colors
- Set up multiple dealerships with unique names, locations, blips, NPCs, and vehicles
Client:
ES = {}
ES.language = {
['success'] = 'Congratulations! You have successfully purchased the %s. It has been delivered to your garage.',
['error'] = 'Insufficient funds. You do not have enough money to purchase this vehicle.',
['action_to_open'] = 'Press ~INPUT_CONTEXT~ to open the dealership menu'
}
ES.camera_offset = -2.0 --[[
0.0 = camera will be pointed directly to the front of the vehicle.
You can play around a bit with this option, if you dont like the current camera postion.
It can also be negative.
]]
ES.getVehicleSpecifications = function(vehicle, model)
return {
{
['name'] = 'Max. Speed',
["value"] = math.floor(GetVehicleEstimatedMaxSpeed(vehicle) * 3.6),
["unit"] = 'km/h',
["max"] = 300
},
{
['name'] = 'Seats',
["value"] = GetVehicleModelNumberOfSeats(model),
["unit"] = 'Seats',
["max"] = 4
},
{
['name'] = 'Gewicht',
["value"] = GetVehicleHandlingFloat(vehicle, 'CHandlingData', 'fMass'),
["unit"] = 'kg',
["max"] = 1850
}
}
end
ES.DisplayHelpText = function(str)
SetTextComponentFormat("STRING")
AddTextComponentString(str)
DisplayHelpTextFromStringLabel(0, 0, 1, -1)
--[[
You can also include your own HelpText.
Just remove the functions above and insert your own Trigger.
]]
end
ES.notify = function(msg)
--TriggerEvent("notify", "info", "Information", msg, 7000)
TriggerEvent('notifications', 'grey', 'info', msg)
end
ES.colors = {
--[[
Colors have to be rgb().
hex or such other thing wont work and will output errors.
]]
"rgb(255, 255, 255)",
"rgb(255, 108, 108)",
"rgb(255, 203, 101)",
"rgb(163, 255, 222)",
"rgb(125, 193, 255)",
"rgb(154, 74, 255)",
"rgb(135, 135, 135)",
"rgb(255, 52, 52)",
"rgb(255, 186, 52)",
"rgb(54, 255, 183)",
"rgb(26, 145, 255)",
"rgb(135, 41, 255)",
"rgb(0, 0, 0)",
"rgb(147, 0, 0)",
"rgb(188, 124, 0)",
"rgb(0, 166, 106)",
"rgb(0, 101, 193)",
"rgb(135, 21, 255)",
}
ES.dealerships = {
{
['name'] = 'Premium Dealership',
['enter'] = vector3(89.6031, -1099.4872, 29.2833),
['spawnpoint'] = {
['location'] = vector3(84.9532, -1073.6957, 29.3627),
['heading'] = 102.8148
},
['blip'] = {
['sprite'] = 326,
['display'] = 4,
['scale'] = 1.0
},
['npc'] = {
['heading'] = 130.6957,
['model'] = "g_m_y_ballaeast_01",
},
['vehicles'] = {
{
['name'] = 't20',
['label'] = 'T20',
['description'] = 'The T20 is a sleek and powerful high-performance supercar that delivers a thrilling driving experience. Its the perfect choice for those seeking top-tier luxury and performance.',
['price'] = 1000000,
['cam_distance'] = 4.0
},
{
['name'] = 'baller4',
['label'] = 'Baller',
['description'] = 'The Baller is an affordable and practical compact car, perfect for those seeking reliable and efficient transportation for everyday use.',
['price'] = 40000,
['cam_distance'] = 4.0
},
}
}
}
Server:
ES_S = {}
ES_S.webhook = {
['enabled'] = true,
sendWebhook = function(source, vehicle, success)
local data = {
["username"] = "Vehicle Purchase Log",
["avatar_url"] = "https://media.discordapp.net/attachments/1073683189421330474/1076461824842674279/LogoPYP.png",
["embeds"] = {{
["title"] = "Vehicle Purchase",
["description"] = success and "A player has successfully purchased a vehicle." or "A player has attempted to purchase a vehicle, but the purchase was not successful.",
["color"] = success and 0x00ff00 or 0xff0000,
["fields"] = {
{
["name"] = "Player:",
["value"] = GetPlayerName(source),
["inline"] = true
},
{
["name"] = "Identifier:",
["value"] = getIdentifier(source),
["inline"] = true
},
{
["name"] = "Vehicle:",
["value"] = vehicle.name,
["inline"] = true
},
{
["name"] = "Price:",
["value"] = "$" .. vehicle.price,
["inline"] = true
},
{
["name"] = "Success:",
["value"] = success and "Yes" or "No",
["inline"] = true
}
},
["thumbnail"] = {
["url"] = "https://media.discordapp.net/attachments/1073683189421330474/1076461824842674279/LogoPYP.png"
},
["image"] = {
["url"] = "https://media.discordapp.net/attachments/1073683189421330474/1076461824842674279/LogoPYP.png"
},
["footer"] = {
["text"] = "Powered by Essential Studios",
["icon_url"] = "https://media.discordapp.net/attachments/1073683189421330474/1076461824842674279/LogoPYP.png"
},
["timestamp"] = os.date("!%Y-%m-%dT%H:%M:%S")
}}
}
PerformHttpRequest('WEBHOOK_URL_HERE', function(err, text, headers) end, 'POST', json.encode(data), { ['Content-Type'] = 'application/json' })
end
}
Compatible with ESX 1.1, 1.2, Legacy, and QBCore.
The script is protected and secured by Tebex.
Check out our preview to see the Vehicleshop in action.
Click here
And for just 20,00 EUR (including Tebex fees), you can elevate your server’s vehicle dealership options with the best script on the market.
Click here
Code is accessible No
Subscription-based No
Lines (approximately) 5000+
Requirements ESX/QBCore
Support Yes