[Release] Mx Custom Car [PAID][ESX][STANDALONE]

Explanation

This is a car customization script, LsCustom type, an interactive and easy-to-use script with a nice designer.

Features

  • To open vehicle customization, just go to the defined location and press E to customize
  • To close vehicle customization, just press backspace or delete
  • If you close the interface or exit blip without saving the customization, your vehicle will be reset
  • In the interface it shows the name and license plate of the vehicle you are customizing, to avoid errors
  • You can activate the camera and move it however you want, to better visualize the customization
  • Selection of colors in RGB and color palette to define some vehicle colors
  • The interface identifies and shows what customizations you can make to the vehicle
  • You can open doors, hood and trunk
  • Define if the customizations are free or with a specific amount and this is calculated in the interface, showing the amount that will be charged.
  • You can simply customize a random vehicle and it will not be saved in the database
  • You can customize personal vehicles and if it is properly registered in the database, the customization will be saved.
  • Customization sites can be accessed or not.
  • You can customize being inside the vehicle or outside, you choose.
  • Ideal for Roleplay servers.

Video 1

Video 2

Notifications

  • When you don’t have the money to customize

3deee46370ee572335630eaf30c55cf41472d4a0.png|618x621.38

  • When the vehicle is not registered in the database, but it has been customized

aad866a5607194a1651d0909a0191f8e72d7d435.png|610x659.341

  • Customized vehicle and saved in the database

f2d08951d26da8041aa7479fd602028831d67049.png

Configuration

  • In Config.lua, you can translate any text in the interface any way you want.
  • In Moon Setup you can change the scale, position, opacity and you can adjust it as you wish.
  • To create customcar locations is very simple, just access Config.lua and define in custom_car_blips.
  • In Config.lua, you can set the prices of all customizations or set all customizations with FREE

ESX Version

  • The script in the esx version updates the ‘owned_vehicles’ table, so if you use esx, you need to have the vehicle registered to save the customization

STANDALONE Version

  • In the standalone version, it is necessary to add its own functions, for example, take the money the player has, cash the money, add permission, it is necessary that you make these edits, if you have any doubts, you can contact me.

Events (ONLY STANDALONE)

  • The script has two events, which you need to use to apply the customization to the vehicles

When generating a vehicle that has a saved customization, it is necessary to call this event to apply the customization to the generated vehicle

  • TriggerServerEvent(“Mx :: GetCustomCar”, VEHICLE_ID, VEHICLE_PLATE)

If necessary, when buying a vehicle at the dealership, or any script you use to create a vehicle, it is necessary to call this event to register the license plate of the vehicle in question.
** Only Standalone version **

  • TriggerServerEvent(“Mx :: InsertCustom”, VEHICLE_PLATE, VEHICLE_MODS)

Attention

  • All tests were done on PlumeESX by tabarra, and technically older versions of esx should work, otherwise you can contact me.

Update 1.0

  • Fixed an issue when checking whether the vehicle has Livery’s or not

If you don’t want to update entire script and lose any changes you may have made.
Just update only these files and the bug will be fixed.

Either in STANDALONE or ESX version

  • functions.lua
  • nui.lua

Those who have already purchased can download directly from the download link (Build 1.0)

https://i.imgur.com/uT2Zila.png

Update 2.0 / Instruction (ONLY FOR ESX)

  • Well, these days, many ask me for support regarding the TriggerServerEvent event (“Mx :: GetCustomCar”, VEHICLE_ID, VEHICLE_PLATE), which was not managing to make it work.

  • So I decided to do a step by step to add the functions that are missing in ESX to activate some vehicle customizations, without needing to use the ‘GetCustomCar’ event.

  • In this, it will no longer be necessary to modify your garage script for example. Those who have already modified and worked correctly can SKIP this update.

Attention: Backup the files that will be modified.

Go to your esx server > es_extended/client/functions.lua

Search for ESX.Game.GetVehicleProperties and ESX.Game.SetVehicleProperties
Replace the two functions with the functions below:

ESX.Game.SetVehicleProperties
ESX.Game.SetVehicleProperties = function(vehicle, props)
	if DoesEntityExist(vehicle) then
		local colorPrimary, colorSecondary = GetVehicleColours(vehicle)
		local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle)
		SetVehicleModKit(vehicle, 0)

		if props.plate then SetVehicleNumberPlateText(vehicle, props.plate) end
		if props.plateIndex then SetVehicleNumberPlateTextIndex(vehicle, props.plateIndex) end
		if props.bodyHealth then SetVehicleBodyHealth(vehicle, props.bodyHealth + 0.0) end
		if props.engineHealth then SetVehicleEngineHealth(vehicle, props.engineHealth + 0.0) end
		if props.tankHealth then SetVehiclePetrolTankHealth(vehicle, props.tankHealth + 0.0) end
		if props.fuelLevel then SetVehicleFuelLevel(vehicle, props.fuelLevel + 0.0) end
		if props.dirtLevel then SetVehicleDirtLevel(vehicle, props.dirtLevel + 0.0) end
		
		-- Removed
		-- if props.color1 then SetVehicleColours(vehicle, props.color1, colorSecondary) end
		-- if props.color2 then SetVehicleColours(vehicle, props.color1 or colorPrimary, props.color2) end
		
		SetVehicleColours(vehicle, props.color1, props.color2)	-- Added	

		-- Added
		if props.Rcolor_primary and props.Gcolor_primary and props.Bcolor_primary then
            SetVehicleCustomPrimaryColour(vehicle, props.Rcolor_primary, props.Gcolor_primary, props.Bcolor_primary)
        end
        
		-- Added
        if props.Rcolor_secondary and props.Gcolor_secondary and props.Bcolor_secondary then 
            SetVehicleCustomSecondaryColour(vehicle, props.Rcolor_secondary, props.Gcolor_secondary, props.Bcolor_secondary)
        end		
		
		if props.pearlescentColor then SetVehicleExtraColours(vehicle, props.pearlescentColor, wheelColor) end
		if props.wheelColor then SetVehicleExtraColours(vehicle, props.pearlescentColor or pearlescentColor, props.wheelColor) end
		if props.wheels then SetVehicleWheelType(vehicle, props.wheels) end
		
		-- Removed
		-- if props.windowTint then SetVehicleWindowTint(vehicle, props.windowTint) end
		
		-- Added
		if props.windowTint or props.windowTint == -1 then 
			if props.windowTint == -1 then
				SetVehicleWindowTint(vehicle, 0) 
			else
				SetVehicleWindowTint(vehicle, props.windowTint) 
			end
		end

		if props.neonEnabled then
			SetVehicleNeonLightEnabled(vehicle, 0, props.neonEnabled[1])
			SetVehicleNeonLightEnabled(vehicle, 1, props.neonEnabled[2])
			SetVehicleNeonLightEnabled(vehicle, 2, props.neonEnabled[3])
			SetVehicleNeonLightEnabled(vehicle, 3, props.neonEnabled[4])
		end

		if props.extras then
			for extraId,enabled in pairs(props.extras) do
				if enabled then
					SetVehicleExtra(vehicle, tonumber(extraId), 0)
				else
					SetVehicleExtra(vehicle, tonumber(extraId), 1)
				end
			end
		end

		if props.neonColor then SetVehicleNeonLightsColour(vehicle, props.neonColor[1], props.neonColor[2], props.neonColor[3]) end
		if props.xenonColor then SetVehicleXenonLightsColour(vehicle, props.xenonColor) end
		if props.modSmokeEnabled then ToggleVehicleMod(vehicle, 20, true) end
		if props.tyreSmokeColor then SetVehicleTyreSmokeColor(vehicle, props.tyreSmokeColor[1], props.tyreSmokeColor[2], props.tyreSmokeColor[3]) end
		if props.modSpoilers then SetVehicleMod(vehicle, 0, props.modSpoilers, false) end
		if props.modFrontBumper then SetVehicleMod(vehicle, 1, props.modFrontBumper, false) end
		if props.modRearBumper then SetVehicleMod(vehicle, 2, props.modRearBumper, false) end
		if props.modSideSkirt then SetVehicleMod(vehicle, 3, props.modSideSkirt, false) end
		if props.modExhaust then SetVehicleMod(vehicle, 4, props.modExhaust, false) end
		if props.modFrame then SetVehicleMod(vehicle, 5, props.modFrame, false) end
		if props.modGrille then SetVehicleMod(vehicle, 6, props.modGrille, false) end
		if props.modHood then SetVehicleMod(vehicle, 7, props.modHood, false) end
		if props.modFender then SetVehicleMod(vehicle, 8, props.modFender, false) end
		if props.modRightFender then SetVehicleMod(vehicle, 9, props.modRightFender, false) end
		if props.modRoof then SetVehicleMod(vehicle, 10, props.modRoof, false) end
		if props.modEngine then SetVehicleMod(vehicle, 11, props.modEngine, false) end
		if props.modBrakes then SetVehicleMod(vehicle, 12, props.modBrakes, false) end
		if props.modTransmission then SetVehicleMod(vehicle, 13, props.modTransmission, false) end
		if props.modHorns then SetVehicleMod(vehicle, 14, props.modHorns, false) end
		if props.modSuspension then SetVehicleMod(vehicle, 15, props.modSuspension, false) end
		if props.modArmor then SetVehicleMod(vehicle, 16, props.modArmor, false) end
		if props.modTurbo then ToggleVehicleMod(vehicle,  18, props.modTurbo) end
		if props.modXenon then ToggleVehicleMod(vehicle,  22, props.modXenon) end
		if props.modFrontWheels then SetVehicleMod(vehicle, 23, props.modFrontWheels, false) end
		if props.modBackWheels then SetVehicleMod(vehicle, 24, props.modBackWheels, false) end
		if props.modPlateHolder then SetVehicleMod(vehicle, 25, props.modPlateHolder, false) end
		if props.modVanityPlate then SetVehicleMod(vehicle, 26, props.modVanityPlate, false) end
		if props.modTrimA then SetVehicleMod(vehicle, 27, props.modTrimA, false) end
		if props.modOrnaments then SetVehicleMod(vehicle, 28, props.modOrnaments, false) end
		if props.modDashboard then SetVehicleMod(vehicle, 29, props.modDashboard, false) end
		if props.modDial then SetVehicleMod(vehicle, 30, props.modDial, false) end
		if props.modDoorSpeaker then SetVehicleMod(vehicle, 31, props.modDoorSpeaker, false) end
		if props.modSeats then SetVehicleMod(vehicle, 32, props.modSeats, false) end
		if props.modSteeringWheel then SetVehicleMod(vehicle, 33, props.modSteeringWheel, false) end
		if props.modShifterLeavers then SetVehicleMod(vehicle, 34, props.modShifterLeavers, false) end
		if props.modAPlate then SetVehicleMod(vehicle, 35, props.modAPlate, false) end
		if props.modSpeakers then SetVehicleMod(vehicle, 36, props.modSpeakers, false) end
		if props.modTrunk then SetVehicleMod(vehicle, 37, props.modTrunk, false) end
		if props.modHydrolic then SetVehicleMod(vehicle, 38, props.modHydrolic, false) end
		if props.modEngineBlock then SetVehicleMod(vehicle, 39, props.modEngineBlock, false) end
		if props.modAirFilter then SetVehicleMod(vehicle, 40, props.modAirFilter, false) end
		if props.modStruts then SetVehicleMod(vehicle, 41, props.modStruts, false) end
		if props.modArchCover then SetVehicleMod(vehicle, 42, props.modArchCover, false) end
		if props.modAerials then SetVehicleMod(vehicle, 43, props.modAerials, false) end
		if props.modTrimB then SetVehicleMod(vehicle, 44, props.modTrimB, false) end
		if props.modTank then SetVehicleMod(vehicle, 45, props.modTank, false) end
		if props.modWindows then SetVehicleMod(vehicle, 46, props.modWindows, false) end

		if props.modLivery then
			SetVehicleMod(vehicle, 48, props.modLivery, false)
			SetVehicleLivery(vehicle, props.modLivery)
		end
	end
end
ESX.Game.GetVehicleProperties
ESX.Game.GetVehicleProperties = function(vehicle)
	if DoesEntityExist(vehicle) then
		local colorPrimary, colorSecondary = GetVehicleColours(vehicle)
		local r_color_primary, g_color_primary, b_color_primary = GetVehicleCustomPrimaryColour(vehicle)			-- Added
        local r_color_secondary, g_color_secondary, b_color_secondary = GetVehicleCustomSecondaryColour(vehicle)	-- Added
		local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle)
		local extras = {}

		for extraId=0, 12 do
			if DoesExtraExist(vehicle, extraId) then
				local state = IsVehicleExtraTurnedOn(vehicle, extraId) == 1
				extras[tostring(extraId)] = state
			end
		end

		return {
			model             = GetEntityModel(vehicle),

			plate             = ESX.Math.Trim(GetVehicleNumberPlateText(vehicle)),
			plateIndex        = GetVehicleNumberPlateTextIndex(vehicle),

			bodyHealth        = ESX.Math.Round(GetVehicleBodyHealth(vehicle), 1),
			engineHealth      = ESX.Math.Round(GetVehicleEngineHealth(vehicle), 1),
			tankHealth        = ESX.Math.Round(GetVehiclePetrolTankHealth(vehicle), 1),

			fuelLevel         = ESX.Math.Round(GetVehicleFuelLevel(vehicle), 1),
			dirtLevel         = ESX.Math.Round(GetVehicleDirtLevel(vehicle), 1),
			
			color1            = colorPrimary,
			color2            = colorSecondary,
			
			Rcolor_primary 	  = r_color_primary,	-- Added
            Gcolor_primary 	  = g_color_primary,	-- Added
            Bcolor_primary 	  = b_color_primary,	-- Added
			
			Rcolor_secondary  = r_color_secondary,	-- Added
            Gcolor_secondary  = g_color_secondary,	-- Added
            Bcolor_secondary  = b_color_secondary,	-- Added

			pearlescentColor  = pearlescentColor,
			wheelColor        = wheelColor,

			wheels            = GetVehicleWheelType(vehicle),
			customtires1 	  =	GetVehicleModVariation(vehicle, 23),	-- Added
			customtires2 	  =	GetVehicleModVariation(vehicle, 24),	-- Added
			windowTint        = GetVehicleWindowTint(vehicle),
			xenonColor        = GetVehicleXenonLightsColour(vehicle),

			neonEnabled       = {
				IsVehicleNeonLightEnabled(vehicle, 0),
				IsVehicleNeonLightEnabled(vehicle, 1),
				IsVehicleNeonLightEnabled(vehicle, 2),
				IsVehicleNeonLightEnabled(vehicle, 3)
			},

			neonColor         = table.pack(GetVehicleNeonLightsColour(vehicle)),
			extras            = extras,
			tyreSmokeColor    = table.pack(GetVehicleTyreSmokeColor(vehicle)),

			modSpoilers       = GetVehicleMod(vehicle, 0),
			modFrontBumper    = GetVehicleMod(vehicle, 1),
			modRearBumper     = GetVehicleMod(vehicle, 2),
			modSideSkirt      = GetVehicleMod(vehicle, 3),
			modExhaust        = GetVehicleMod(vehicle, 4),
			modFrame          = GetVehicleMod(vehicle, 5),
			modGrille         = GetVehicleMod(vehicle, 6),
			modHood           = GetVehicleMod(vehicle, 7),
			modFender         = GetVehicleMod(vehicle, 8),
			modRightFender    = GetVehicleMod(vehicle, 9),
			modRoof           = GetVehicleMod(vehicle, 10),

			modEngine         = GetVehicleMod(vehicle, 11),
			modBrakes         = GetVehicleMod(vehicle, 12),
			modTransmission   = GetVehicleMod(vehicle, 13),
			modHorns          = GetVehicleMod(vehicle, 14),
			modSuspension     = GetVehicleMod(vehicle, 15),
			modArmor          = GetVehicleMod(vehicle, 16),

			modTurbo          = IsToggleModOn(vehicle, 18),
			modSmokeEnabled   = IsToggleModOn(vehicle, 20),
			modXenon          = IsToggleModOn(vehicle, 22),

			modFrontWheels    = GetVehicleMod(vehicle, 23),
			modBackWheels     = GetVehicleMod(vehicle, 24),

			modPlateHolder    = GetVehicleMod(vehicle, 25),
			modVanityPlate    = GetVehicleMod(vehicle, 26),
			modTrimA          = GetVehicleMod(vehicle, 27),
			modOrnaments      = GetVehicleMod(vehicle, 28),
			modDashboard      = GetVehicleMod(vehicle, 29),
			modDial           = GetVehicleMod(vehicle, 30),
			modDoorSpeaker    = GetVehicleMod(vehicle, 31),
			modSeats          = GetVehicleMod(vehicle, 32),
			modSteeringWheel  = GetVehicleMod(vehicle, 33),
			modShifterLeavers = GetVehicleMod(vehicle, 34),
			modAPlate         = GetVehicleMod(vehicle, 35),
			modSpeakers       = GetVehicleMod(vehicle, 36),
			modTrunk          = GetVehicleMod(vehicle, 37),
			modHydrolic       = GetVehicleMod(vehicle, 38),
			modEngineBlock    = GetVehicleMod(vehicle, 39),
			modAirFilter      = GetVehicleMod(vehicle, 40),
			modStruts         = GetVehicleMod(vehicle, 41),
			modArchCover      = GetVehicleMod(vehicle, 42),
			modAerials        = GetVehicleMod(vehicle, 43),
			modTrimB          = GetVehicleMod(vehicle, 44),
			modTank           = GetVehicleMod(vehicle, 45),
			modWindows        = GetVehicleMod(vehicle, 46),
			modLivery         = GetVehicleLivery(vehicle)
		}
	else
		return
	end
end

Dependencies

  • mysql-async

  • In the standalone version the table is created automatically (customcar)

  • In ESX version the table used is ‘owned_vehicles’.

This script has no IP protection or encryption.

Buy and download here: Tebex

See our other scripts:

Tattoos Shop (And Degrade Hair)
Body Damages V2 (new update)
Mx Custom Car V2 (new update)
Mx Show Damage (new)
Body Damages
Mx Crafting V2 (new)
Mx Keycodes
Mx Crafting Items
Fix Wiring [FREE]
Lockpick minigame [FREE]

7 Likes

if i may add a suggestion, could make different shops to do different things. shops for paiting shops for modifications shops for repair. this would allow to move the car inside a shop for example a coord where you can paint the car, a coord to repair etc… nice script tho.

1 Like

Yes, it’s possible and I can do it and update it later on, I hadn’t thought about it

2 Likes

If I were to make this so only mechanics can use it… how hard would it be to make it so it charges the owner of the vehicle and when paid goes to the mechanics society?

1 Like

and by generate vehicle do you mean the garage?

1 Like

In the script, when you create the blip, you can put who has permission to access it or leave it blank for everyone to have access to the blip.

This Mechanics Society thing, I’ve never explored it in depth, I’ve never used it. When I had my roleplay server, a person who wanted to customize the car, asked the mechanic for the value, gave the money to the mechanic and had his car customized.

Yes, any script that generates a personal vehicle, like the garage.

I’m no expert at coding but I know that in order to do that you would need to have the script do the following:

  1. check the vehicle ownership (goes trough the database to match the vehicle to the player who owns that vehicle)
  2. upon applying the changes, trigger an event that creates an invoice on behalf of the mechanic society with the designated ammount (could be done with esx_billing or a similar script)

It’s possible, but i see this mostly as a quality of life change rather than a necessary change, as mechanics/societies can simply make invoices of their own and set the price themselves, which you cannot do if you were using this method (as changing prices requires changing the config in the server files.). It would be a nice way to balance the economy though.

Hope this helps!

1 Like

There are tuning options for Lowrider ? e.g. Speakers in trunk, interior and so on ?

1 Like

Can we create customization zone anywhere we want?

1 Like

Yes, exactly, making an automatic charge, especially on roleplay servers, takes away a lot the autonomy of the mechanics and in my opinion, it is quite unnecessary.

Yes, the script has all car mods

@makthementor1
Yes, just get the coordinates of a location and add it to Config.lua

When I change the color of the vehicle, it will not be saved in the data table, and many options for changing the vehicle do not appear in the list, for example: modify the color of the license plate

1 Like

In the post is informing that it is necessary to use the setting event

Otherwise, some modifications will not be set in the vehicle. Just add this event in the script that the vehicle is generated, garage script for example.

What vehicle do you know it is possible to carry out this modification? I might be checking if it’s really a problem, if this vehicle has this modification and isn’t showing up in the menu.

why is it that i only see livery on some cars

1 Like

Send me a video or photo in private, to better understand the problem you are having…

Update 1.0

  • Fixed an issue when checking whether the vehicle has Livery’s or not

If you don’t want to update entire script and lose any changes you may have made.
Just update only these files and the bug will be fixed.

Either in STANDALONE or ESX version

  • functions.lua
  • nui.lua

Those who have already purchased can download directly from the download link (Build 1.0)

Love the script, I’m just having one issue that is car colors don’t save, everything else seems too.
I have inserted the TriggerEvent into my garage script, but it still doesn’t seem to work, maybe I did it wrong I’m not the most experienced in this stuff. I assume I’d have the TriggerEvent just before the vehicle is spawned.
Any help would be greatly appreciated!

1 Like

It is after the vehicle is generated and its license plate is defined then you call the event.

If you still have questions, send me a photo in private to see how you are doing, then I can help you better too :smiley:

function SpawnSelectedVeh(vehicle,garage)
ESX.Game.SpawnVehicle(vehicle.vehicle.model,{x = garage.pos[1], y = garage.pos[2], z = garage.pos[3] + 1}, garage.heading, function(car)
ESX.Game.SetVehicleProperties(car, vehicle.vehicle)
SetVehRadioStation(car, “OFF”)
TaskWarpPedIntoVehicle(GetPlayerPed(-1), car, -1)
local vehPlate = GetVehicleNumberPlateText(car):gsub(“^%s*(.-)%s*$”, “%1”)
TriggerServerEvent (‘Mx :: GetCustomCar’, veh_id, plate)
if garage.label == “police” then
TriggerServerEvent(‘t1ger_garage:releaseSeizedVeh’, vehPlate, false)
else
TriggerServerEvent(‘t1ger_garage:updateState’, vehPlate, false)
end
ESX.TriggerServerCallback(‘t1ger_garage:getVehicleFuel’, function(vehFuel)
if vehFuel ~= nil then
if Config.HasFuelEvent then
–TriggerEvent(“fuel:setFuel”, car, vehFuel)
TriggerEvent(SetFuel(vehicle, GetFuel(vehicle)))
else
SetVehicleFuelLevel(car, vehFuel + 0.0)
end
end
end, vehPlate)
end)
end

i try to do it like this on T1ger garage… but is not working

1 Like