[Paid] Simple Dealership (Vehicle, Aircraft, Helicopter, Boats) [Standalone/ESX)

This resource is a simple approach to dealerships in FiveM.

Over 500 vehicles have been put into respect JSON files meaning no SQL is needed at all. Additionally, this resource is highly configurable from Dealer locations, blips, blacklisted vehicles/categories, and more!

Here’s a preview if you want to see.

Config Preview
Config = {
    ["StatCharacter"] = ">",                   --[[ This is the character used for making the stat bars found when viewing the vehicle handling, top speed, etc. ]]
    ["InsideDistance"] = 3.0,                  --[[ This is the distance in meters that you need to be within to access each dealership menu. ]]
    ["Controls"] = {
        ["MenuRight"] = {
            ["ID"] = 307,                      --[[ Control ID, all control IDs can be found here: https://docs.fivem.net/docs/game-references/controls/]]
            ["Label"] = "INPUT_REPLAY_ADVANCE" --[[ Control label, all control labels can be found here: https://docs.fivem.net/docs/game-references/controls/ prefixed with a INPUT_ ]]
        },
        ["MenuLeft"] = {
            ["ID"] = 308,
            ["Label"] = "INPUT_REPLAY_BACK"
        },
        ["MenuUp"] = {
            ["ID"] = 191,
            ["Label"] = "INPUT_FRONTEND_RDOWN"
        },
        ["MenuDown"] = {
            ["ID"] = 194,
            ["Label"] = "INPUT_FRONTEND_RRIGHT"
        },
        ["Delete"] = {
            ["ID"] = 178,
            ["Label"] = "INPUT_CELLPHONE_OPTION"
        }
    },
    ["Dealers"] = {
        {
            ["Name"] = "Simeon\'s Dealership",                                                           --[[ Dealership name, this appears on both the blip name and the first page of the dealer menu. ]]
            ["Coords"] = vector3(-29.491, -1103.992, 25.422),                                            --[[ Dealership coordinates, this is the place you need to stand to access the dealership menu. This is also used to place the dealership blip. ]]
            ["Preview"] = {
                ["Coords"] = vector4(-11.673, -1084.026, 25.676, 0.0),                                   --[[ These are the coordinates for the position of the preview vehicle. ]]
                ["CamCoords"] = vector3(-16.365, -1087.973, 28.752),                                     --[[ These are the coordinates for the position of the preview camera. ]]
                ["Rotate"] = true                                                                        --[[ If true the preview vehicle will rotate while being viewed. ]]
            },
            ["ForSale"] = json.decode(LoadResourceFile(GetCurrentResourceName(), "Data/Vehicles.json")), --[[ This loads the file containing all the vehicles for this dealer as found in the Data folder. ]]
            ["Blip"] = {
                ["Sprite"] = 225,                                                                        --[[ This is the sprite of the blip that marks this dealership, all blip sprites and their according ID can be found here: https://docs.fivem.net/docs/game-references/blips/ ]]
                ["Scale"] = 1.0,                                                                         --[[ Blip scare decides the scale of the blip, a larger value means the blip will appear larger on the map. ]]
                ["Color"] = 0                                                                            --[[ Blip colour, all colours can be found here: https://docs.fivem.net/docs/game-references/blips/ at the bottom of the page. ]]
            },
            ["AddSizeOffset"] = false,                                                                   --[[ If true vehicles will be moved back relative to their spawn position if they are large enough. ]]
            ["BlacklistedCategories"] = {                                                                --[[ Array of blacklisted categories. ]]
                -- "Sedans"
            },
            ["BlacklistedVehicles"] = {                                                                  --[[ Array of blacklisted vehicles. ]]
                -- "Zentorno" 
            }
        },
        {
            ["Name"] = "L.S.I.A. Aircraft Shop",
            ["Coords"] = vector3(-928.156, -2995.046, 18.845),
            ["Preview"] = {
                ["Coords"] = vector4(-953.14, -2990.46, 12.96, 239.48),
                ["CamCoords"] = vector3(-923.605, -3007.041, 21.954),
                ["Rotate"] = true
            },
            ["ForSale"] = json.decode(LoadResourceFile(GetCurrentResourceName(), "Data/Aircraft.json")),
            ["Blip"] = {
                ["Sprite"] = 307,
                ["Scale"] = 1.0,
                ["Color"] = 0
            },
            ["AddSizeOffset"] = true,
            ["BlacklistedCategories"] = {},
            ["BlacklistedVehicles"] = {}
        },
        {
            ["Name"] = "Boat Shop",
            ["Coords"] = vector3(-743.65, -1505.37, 5.00),
            ["Preview"] = {
                ["Coords"] = vector4(-794.88, -1500.94, 0.0, 290.01),
                ["CamCoords"] = vector3(-775.88, -1495.26, 6.02),
                ["Rotate"] = true
            },
            ["ForSale"] = json.decode(LoadResourceFile(GetCurrentResourceName(), "Data/Boats.json")),
            ["Blip"] = {
                ["Sprite"] = 410,
                ["Scale"] = 1.0,
                ["Color"] = 0
            },
            ["AddSizeOffset"] = false,
            ["BlacklistedCategories"] = {},
            ["BlacklistedVehicles"] = {}
        },
        {
            ["Name"] = "Helicopter Shop",
            ["Coords"] = vector3(-702.81, -1393.39, 8.56),
            ["Preview"] = {
                ["Coords"] = vector4(-724.80, -1444.25, 4.0, 319.89),
                ["CamCoords"] = vector3(-713.01, -1430.19, 9.00),
                ["Rotate"] = true
            },
            ["ForSale"] = json.decode(LoadResourceFile(GetCurrentResourceName(), "Data/Helicopters.json")),
            ["Blip"] = {
                ["Sprite"] = 43,
                ["Scale"] = 1.0,
                ["Color"] = 0
            },
            ["AddSizeOffset"] = false,
            ["BlacklistedCategories"] = {},
            ["BlacklistedVehicles"] = {}
        }
    }
}

More details/features can be found on the Tebex product page (£4.99).


You may also be interested in some of my other released here:

6 Likes

Can we have more informations about your json? Which values are set for each vehicles ?
If I need, for any reason (dl, add-on or others), to add a new vehicle to the vehicleshop. Will I need to search for values like speed/acceleration/braking/weight… myself, or is it recovered automatically from the vehicle model?

1 Like

also dependencies? is this esx?

There are 4 JSON files:
Vehicles.json
Boats.json
Aircraft.json
Helicopters.json
Each file contains an array of data for each category and inside each array is a list of vehicles. Each vehicle up to the open-wheelers DLC has data such as handling/Acceleration/Braking and so on but this information is not required thus adding vehicles of your own is simpler. Cost, spawn name (model) are the only required values. Also as vehicles come out I can push updates to these files that you can download.
Hope this clears up any confusion.

Thank you for this additional informations :slight_smile:

This by default is not linked to any framework however I have made it very easy for you to implement this resource into your framework of choice if needed. Here is what can be found at the bottom of the main file which handles players attempting to buy vehicles

--==--==--==--==
--== Implement This To Your Framework!
--==--==--==--==

function TryPayment(Cost, Vehicle)
    print(F("User trying to buy vehicle %s for $%.2f",Vehicle["Name"], Cost))
    -- Here you can implement your framework's methods and such to take money from a player and give the vehicle.
    -- The two parameters "Cost" and "Vehicle" contain the following:
    -- Cost: The cost of the vehicle as a number.
    -- Vehicle: The vehicle data which is in the following schema:
        --[[     
        {
            "Weight": number,
            "Stats": {
                "Handling": (number/nil),
                "Braking": (number/nil),
                "Speed": (number/nil),
                "Acceleration": (number/nil)
            },
            "Cost": number,
            "Model": string,
            "TopSpeed": number,
            "Name": string,
            "Class": string,
            "Manufacturer": string,
            "SeatCapacity": number,
            "Gears": string,
            "DriveTrain": string
        }, 
        ]]
    -- You can access the information as follows, Vehicle["Cost"] or Vehicle["Model"] for example.
end

I suggest you make a esx version of it. I don’t think many people will pay for it and still have to code it.
just in my opinion.
it looks good cause you can have several shops and that brings more jobs for servers. and spread players around the map.

It’s the problem of trying to please everyone and their respective framework, particularly with new frameworks popping up. I totally understand your point but that is why I opted for a solution that meant people had to do a tad bit of their own implementation.

yeah true. but to be honest i would look at what people is using the most as their core. if you want to profit. its all a business. and im pretty sure its esx.

I’ll add ESX/vRP support shortly.

it only helps you. the more options you give to people the more attention youll get. just like a config file xD

I saw this and instantly-purchased it. While I’m not ready for a full review (I need more time with it) I must say that the dev is incredibly responsive and quick to help.

I’ve purchased probably hundreds of resources over the last year and having a responsive dev is not always guaranteed. So yeah, definitely a happy camper so far.

And that price is (chef’s kiss). First time I ever felt like I ripped off a dev because it was so inexpensive for such a high-quality script.

The resource looks very good. I would actually like to use it, but i cant cause we love our “test drive” feature. Have you planned to do something like this? Ped is teleported with car (boat or plane) and can then test drive for x seconds and is teleported back…

Yeah someone who purchased this said they want that feature therefore I will add a “test drive” feature soon. Finishing up the ESX version first though.

Hey! That’s me.

This script is already perfection. With full ESX and a test drive? Oh my gosh. Godly.

1 Like

Lmao you got me! Now i’m buying it too :grin:

Bump to version 1.2


  • Added ESX version.
  • Added test drive capability.
  • Fixed menu left bug.
  • Where vehicles are spawned when purchased/test drive is now configurable per dealer.
1 Like

Question when the player enters the shops do they go into like a instance so other players cant mess with them and see them or?

Nothing happens to the player unless they are previewing a vehicle in which they are frozen.

By frozen do you mean people cant kill them ect?