[PAID] [ESX] [QBCore] Advanced Garage Script

:oncoming_automobile: Wise Garage

The Advanced Garage Script that everyone needs. Multiple parking options, including our “Realistic Parking” System and even more. Configure your Garage to your likings.

Code is accessible Some Files
Subscription-based No
Lines (approximately) ~3500
Requirements ESX or QBCore
Support Yes

:video_camera:Video

:toolbox: Configs

Main
Config = {}
Config.Debug = true
Config.Locale = "en"

Config.GarageNpcHash = `a_m_y_business_01`
Config.ImpoundNpcHash = `mp_m_securoguard_01`

Config.Impound = {}
Config.Impound.Price = 3000
Config.Impound.PaymentMethod = "Money" -- Money or Bank | Default: "Money"
Config.Impound.Job = {}
Config.Impound.Job.Active = true
Config.Impound.Job.Reward = {
	Account = "Money", -- Money or Bank | Default: "Money"
	Amount = 50000
}

Config.ParkingInCountdown = 5

Config.ParkingOptions = {}
Config.ParkingOptions.RealisticParking = true
Config.ParkingOptions.UI = true
Config.ParkingOptions.Marker = true

Config.Parking = {}
Config.Parking.HitProtection = true
Config.Parking.LockSpawnedVehicle = false

Config.ParkingIndicator = {}
Config.ParkingIndicator.ParkingPoint = {}
Config.ParkingIndicator.ParkingPoint.Active = true
Config.ParkingIndicator.ParkingPoint.Height = 0.4
Config.ParkingIndicator.ParkingPoint.Color = {
	R = 200,
	G = 0,
	B = 0,
	Alpha = 45
}

Config.ParkingIndicator.Vehicle = {}
Config.ParkingIndicator.Vehicle.Active = true
Config.ParkingIndicator.Vehicle.CanPark = {
	R = 0,
	G = 255,
	B = 0,
	Alpha = 45
}
Config.ParkingIndicator.Vehicle.CanNotPark = {
	R = 255,
	G = 0,
	B = 0,
	Alpha = 45
}

Config.SaveVehicleInGarage = true

Config.Transfer = {}
Config.Transfer.Active = true           -- Can only be used with the Option SaveVehicleInGarage (is true)
Config.Transfer.PaymentMethod = "Money" -- Money or Bank | Default: "Money"
Config.Transfer.VehicleBlacklist = {
	"adder",
	"t20"
}

Config.Descriptions = {}
Config.Descriptions.Default = "With its roaring engine and sleek design, it's not just a car—it's a declaration of supremacy on wheels."
Config.Descriptions.Manafactures = {
	["mclaren"] = "Meet the McLaren Vortex: where speed meets sophistication in a sleek symphony of power."
}
Config.Descriptions.Vehicles = {
	["t20"] = [[
		The T20: a hellish fusion of speed and chaos, tearing through Los Santos with demonic fury, leaving nothing but shattered dreams and broken records in its wake.
	]]
}

Config.ClassTrunkWeights = {
	[VehicleClass.COMPACT] = 5000,
	[VehicleClass.SEDAN] = 5000,
	[VehicleClass.SUV] = 5000,
	[VehicleClass.COUPES] = 5000,
	[VehicleClass.MUSCLES] = 5000,
	[VehicleClass.CLASSICS] = 5000,
	[VehicleClass.SPORTS] = 5000,
	[VehicleClass.SUPER] = 5000,
	[VehicleClass.MOTORCYCLES] = 0,
	[VehicleClass.OFFROAD] = 5000,
	[VehicleClass.INDUSTRIAL] = 5000,
	[VehicleClass.UTILITY] = 5000,
	[VehicleClass.VANS] = 70000,
	[VehicleClass.BICYCLE] = 0,
	[VehicleClass.BOATS] = 5000,
	[VehicleClass.HELICOPTERS] = 0,
	[VehicleClass.PLANES] = 0,
	[VehicleClass.SERVICE] = 5000,
	[VehicleClass.EMERGENCY] = 90000,
	[VehicleClass.MILITARY] = 90000,
	[VehicleClass.COMMERCIAL] = 160000,
	[VehicleClass.TRAINS] = 0
}

Config.ImpoundBlip = {
	[ImpoundType.CAR_BIKES] = {
		sprite = 67,
		scale = 0.9,
		color = 47,
		name = "Impound",
		shortRange = true
	},
	[ImpoundType.BOATS] = {
		sprite = 67,
		scale = 0.9,
		color = 47,
		name = "Boat Impound",
		shortRange = true
	},
	[ImpoundType.PLANES] = {
		sprite = 67,
		scale = 0.9,
		color = 47,
		name = "Plane Impound",
		shortRange = true
	},
	[ImpoundType.HELICOPTERS] = {
		sprite = 67,
		scale = 0.9,
		color = 47,
		name = "Helicopter Impound",
		shortRange = true
	}
}


Config.GarageBlip = {
	[GarageType.CAR_BIKES] = {
		sprite = 357,
		scale = 0.9,
		color = 38,
		name = "Garage",
		shortRange = true
	},
	[GarageType.BOATS]  = {
		sprite = 356,
		scale = 0.9,
		color = 38,
		name = "Boat Garage",
		shortRange = true
	},
	[GarageType.PLANES]  = {
		sprite = 359,
		scale = 0.9,
		color = 38,
		name = "Plane Garage",
		shortRange = true
	},
	[GarageType.HELICOPTERS] = {
		sprite = 360,
		scale = 0.9,
		color = 38,
		name = "Helicopter Garage",
		shortRange = true
	},
	[GarageType.JOB_CAR_BIKE] = {
		sprite = 357,
		scale = 0.9,
		color = 38,
		name = "Job Garage",
		shortRange = true
	},
	[GarageType.JOB_BOATS]  = {
		sprite = 356,
		scale = 0.9,
		color = 38,
		name = "Job Boat Garage",
		shortRange = true
	},
	[GarageType.JOB_PLANES]  = {
		sprite = 359,
		scale = 0.9,
		color = 38,
		name = "Job Plane Garage",
		shortRange = true
	},
	[GarageType.JOB_HELICOPTERS] = {
		sprite = 360,
		scale = 0.9,
		color = 38,
		name = "Job Helicopter Garage",
		shortRange = true
	}
}

Config.Notify = function(_type, title, message, time)
	AddTextEntry('WiseGarageNotification', message)
	BeginTextCommandThefeedPost('WiseGarageNotification')
	EndTextCommandThefeedPostTicker(false, true)
end

Config.HelpNotify = function(message, location)
	-- exports.wise_notify:HelpNotify("E", message)
	if location then
		AddTextEntry('WiseGarageFloatingHelpNotification', "~INPUT_CONTEXT~ " .. message)
		SetFloatingHelpTextWorldPosition(1, location + vector3(0.0, 0.0, 1.8))
		SetFloatingHelpTextStyle(1, 1, 2, -1, 3, 0)
		BeginTextCommandDisplayHelp('WiseGarageFloatingHelpNotification')
		EndTextCommandDisplayHelp(2, false, false, -1)
	else
		AddTextEntry('WiseGarageHelpNotification', "~INPUT_CONTEXT~ " .. message)
		BeginTextCommandDisplayHelp('WiseGarageHelpNotification')
		EndTextCommandDisplayHelp(0, false, true, -1)
	end
end
Garages
Config.Garages = {
  ["VespucciBoulevard"] = {
    Type = GarageType.CAR_BIKES,
    CanTransferVehicles = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(-281.2737, -888.6597, 30.3180, 155.4341),
    Marker = {
      position = vector3(-297.7046, -899.2769, 31.0806),
      color = { r = 255, g = 0, b = 0, alpha = 50 },
      height = 0.8,
      radius = 9.0
    },
    ParkingPoints = {
      vector4(-289.3262, -887.6442, 30.6538, 168.3326),
      vector4(-292.9591, -886.6707, 30.6533, 168.0761),
      vector4(-296.8196, -885.7382, 30.6532, 166.7703),
      vector4(-300.3994, -884.8585, 30.6530, 168.2014),
      vector4(-303.8376, -884.2295, 30.6531, 169.3017)
    }
  },
  ["BoatGarage"] = {
    Type = GarageType.BOATS,
    CanTransferVehicles = true,
    TransferPrice = 10000,
    InteractionPoint = vector4(-864.4397, -1488.9628, 0.6, 118.3765),
    ParkingPoints = {
      vector4(-855.9249, -1494.5980, 0.0620, 288.9270),
      vector4(-859.1083, -1486.3040, 0.3491, 289.9573),
      vector4(-862.1542, -1477.7483, 0.0585, 290.8152)
    }
  },
  More.....
}
Impounds
Config.Impounds = {
  ["GangImpound"] = {
    InteractionPoint = vector4(408.7257, -1623.3463, 28.2919, 214.2660),
    Type = ImpoundType.CAR_BIKES,
    AllowedJobs = {
      "police"
    },
    ParkingPoints = {
      vector4(416.8553, -1628.1161, 29.2920, 141.0262),
      vector4(419.2605, -1630.1384, 29.2919, 139.3000),
      vector4(420.3629, -1635.8816, 29.2919, 88.2781),
      vector4(420.4494, -1638.9232, 29.2919, 88.5103),
      vector4(420.0555, -1642.1398, 29.2920, 96.6371)
    }
  },
  ["Impound1"] = {
    InteractionPoint = vector4(1524.131836, 3774.092286, 33.503296, 223.937012),
    Type = ImpoundType.CAR_BIKES,
    ParkingPoints = {
      vector4(1523.498902, 3767.472412, 34.048340, 223.937012),
      vector4(1517.024170, 3763.068116, 34.014648, 198.425202)
    }
  },
  More....
}

:page_facing_up: Example Config: https://docs.wise-scripts.vip

:shopping_cart: Buy

shop.wise-scripts.vip

:books: Other Resources