renzu_garage icon indicating copy to clipboard operation
renzu_garage copied to clipboard

FIVEM - Garage HUD

renzu_garage 1.81

  • FIVEM - Garage HUD Advanced Vehicle Garage
  • REQUIRES ONE SYNC ENABLE!

image

newest branch

  • Latest Main branch needs Ox_lib and Ox_inventory
  • Keys are now items using ox_inventory metadatas (sharable) both Vehicle Keys and Garages Keys
  • replaced all menus, notifications, textuis etc.. to ox_lib interface
  • utilise ox_lib zones and static threads are disable by default if ox_lib is enable and it will be removed soon.
  • Vehicle Nicknames
  • Vehicle Disposing
  • Etc various enhancement and optimisations

Main Feature

  • Vehicle Public Garage (Multi Location)
  • Job Garages (police garage for example) (support default vehicles for patrol)
  • Private Garage (player owned, player can purchase) (2 cars , 5 cars, 10 cars) garages
  • Garage Inventory (Install and store Vehicle Mods inside private garage)
  • Realistic Parking ( park anywhere, /park )
  • Parking Meter
  • Housing Garages (preconfigured and optional) ( custom triggers for custom housing )
  • Helicopter Garage per job
  • Boat Garages
  • Air Garages
  • Impound Garage (Very configurable logic)
  • Restore Visual Damage and Healths
  • Garage Keys Sharing
  • Vehicle Keys Sharing
  • Built in Car lock
  • Built in Hotwire system
  • Configurable Lock System
  • Vehicle Category UI
  • Key System. State Bags or item meta datas if using ox_inventory
  • item based meta datas vehicle and garage keys if using OX_inventory
  • Garage Keys Sharing - Shareable Garage System. Other player can share each other garage.
  • Vehicle Keys Sharing - Shareable Vehicle Keys other players can Keylock, park,unpark, store to public.
  • Built in Car lock
  • Built in Hotwire system
  • Configurable Lock System
  • Vehicle Category UI
  • New Impound System (with NEW UI Form)
  • GTA O Style Housing Garage (2 cars, 5, cars, 10 cars)
  • Vehicle Nicknames - change your NULL/ Blista to eg. my favorite car
  • Dispose Vehicle - Too much vehicle ? player can delete their own vehicle

video

https://www.youtube.com/watch?v=rKYb0sRnP2A

Sample Image:

  • Vehicle Category image
  • Quick Pick image

Inside garage

image

Private Garage

image

  • Garage Inventory

image image

Housing Garage

  • Support Preconfigure 550+ Houses (optional in config)
  • Support Custom Event Triggers (for custom housing )
  • Quick Pick Option (Non Unique)
  • image
  • Unique Garage ( using GTA O style garages )
  • Limited Cars can be store image

Housing Exports

exports('GetHousingGarages', function() -- return housing garage coords
	return HousingGarages
end)

exports('GetHousingShellType', function(coord) -- return applicable and preconfigured housing garage shell
  if coord then
    local nearestgarage = {}
    local nearestdist = -1
    for k,v in pairs(HousingGarages) do
      local dist = #(coord - vector3(v.garage.x,v.garage.y,v.garage.z))
      if nearestdist == -1 or dist < nearestdist then
        nearestdist = dist
        nearestgarage.dist = dist
        nearestgarage.coord = v.garage
        nearestgarage.shell = v.shell
        print(nearestdist)
      end
    end
    return nearestgarage
  end
end)

RegisterCommand('getneargarage', function(source, args, rawCommand)
  local ret = exports.renzu_garage:GetHousingShellType(GetEntityCoords(PlayerPedId()))
  print(ret.dist,ret.coord,ret.shell)
end)

Housing Garage Custom Events Sample USAGE

  • Config:
Config.EnablePropertyCoordGarageCoord = false -- set to false if you will use custom exports and events
Config.HousingBlips = false
  • ADVANCED USAGE
  • Your Owned Coordinates (garage coord and spawn coords) (advanced)
  • garage id must be formatted like these 'garage_12' (12 is your garage id)
    local ret = exports.renzu_garage:GetHousingShellType(garagecoord)
    local garageID = "garage_"..garageID
    if IsPedInAnyVehicle(PlayerPedId()) then -- STORE
        TriggerEvent('renzu_garage:storeprivatehouse',garageID)
    else
        local var = {ret.shell, {},false,garageID,spawncoord)}
        TriggerServerEvent('renzu_garage:gotohousegarage',garageID,var)
    end
    
    Existing Event and Exports
    TriggerEvent('renzu_garage:garagehousing_advanced', garageID,garagecoord,spawncoord) - (client)
    exports.renzu_garage:GarageHousing_Adv(garageID,garagecoord,spawncoord)
     ex param: garageid = 55, garagecoord = vector3(coord.x,coord.y,coord.z), spawn coord vector4(spawn.x,spawn.y,spawn.z,spawn.h)
    
  • BASIC USAGE
  • Automatic Coordinates Fetching
  • Auto Detect Shell Type ( Basic Usage )
  • Auto Detect Garage ID
  • Auto Detect Spawn Location
  • using preconfigured garage housing (limitation is the 550+ housing itself) any custom location may have issues, but this already covered almost all housing in gta.
    Existing Event and Exports (choose if event or export)
    
    TriggerEvent('renzu_garage:garagehousing_basic') - (client)
    
    exports.renzu_garage:GarageHousing_Basic()
    

IMPOUND

image image

Garage Keys

  • Share Your Garage Keys to any player
  • Other Player can use your owned vehicles
  • Usage
  • /garagekeys give ( share garage keys to nearby citizen )
  • Select Citizen
  • Select Garage to share
  • image
  • /garagekeys manage (manage current keys)
  • Select Garage
  • Use or Delete (use Change current key), (delete removed the garage keys from your management)
  • image

Vehicle Keys

  • Enable you to lock all local vehicles (config)
  • Enable you to not Auto Start the vehicle ( for lock picking purpose? )
  • Enable you to lockpick the vehicle (if not owned and not shared)
  • Enable you to give a copy (or a duplicate) Vehicle Keys to Other Player.
  • Built in Lock System
  • Built in Car Lock
  • Built in Hot wiring
  • Configurable Hot wiring condition
  • Mission Entity is default bypass for hot wired. (eg. bus driver script, deliveries, trucker )
  • Automatic System you dont need to Trigger to pass the vehicle keys to owner!
  • Support any Vehicle shop
  • Commands
  • /vehiclekeys
  • Select Citizen
  • Select Vehicle
  • image
  • Share Current Vehicle Keys (enable other player to lock / unlock your vehicle and bypass hotwiring system)
  • image

Commands

  • Impound
usage: /impound
any nearest vehicle will be impound (distance 2-3 radius)
Giveaccess to player private owned garage
- /giveaccess PLAYERID
- Open Vehicle Keys UI
- /vehiclekeys
- Open Garage Keys UI
- /garagekeys 
- /garagekeys manage
- /garagekeys give

TODO

  • Fix some bug
  • change fonts
  • ui cleanup
  • add new things
  • code clean up as this is my old written garage
  • Add Exports from functions
  • Add Fake Plate System

Dependency for now

  • ESX - ALL ESX <= LEGACY
  • Qbcore latest
  • Ox_lib
  • Ox_inventory

Installation

  • Install Sql Columns One By One to avoid existing column error
ALTER TABLE owned_vehicles
ADD garage_id varchar(32) NOT NULL DEFAULT 'A';

ALTER TABLE owned_vehicles
ADD impound int(1) NOT NULL DEFAULT 0;

  • This one needs backtick , ex. `stored` in mysql 8.0 and lower

ALTER TABLE owned_vehicles ADD `stored` int(1) NOT NULL DEFAULT 0;

ALTER TABLE owned_vehicles ADD `type` varchar(32) NOT NULL DEFAULT 'car';

ALTER TABLE owned_vehicles ADD `job` varchar(32) NOT NULL DEFAULT 'civ';

ALTER TABLE owned_vehicles
ADD park_coord LONGTEXT NULL;
ALTER TABLE owned_vehicles
ADD isparked int(1) NULL DEFAULT 0;
  • Install SQL Tables One By One
CREATE TABLE IF NOT EXISTS `impound_garage` (
	`garage` VARCHAR(64) NOT NULL DEFAULT '' COLLATE 'utf8mb4_general_ci',
    	`data` LONGTEXT NULL COLLATE 'utf8mb4_general_ci',
	PRIMARY KEY (`garage`) USING BTREE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
;
CREATE TABLE IF NOT EXISTS `private_garage` (
	`identifier` VARCHAR(64) NOT NULL DEFAULT '' COLLATE 'utf8mb4_general_ci',
    `vehicles` LONGTEXT NULL COLLATE 'utf8mb4_general_ci',
	`garage` VARCHAR(64) NULL COLLATE 'utf8mb4_general_ci',
	`inventory` LONGTEXT NULL COLLATE 'utf8mb4_general_ci'
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
;
CREATE TABLE IF NOT EXISTS `parking_meter` (
	`identifier` VARCHAR(64) NOT NULL DEFAULT '' COLLATE 'utf8mb4_general_ci',
	`plate` VARCHAR(32) NULL DEFAULT '' COLLATE 'utf8mb4_general_ci',
    `vehicle` LONGTEXT NULL COLLATE 'utf8mb4_general_ci',
	`coord` LONGTEXT NULL COLLATE 'utf8mb4_general_ci',
	`park_coord` LONGTEXT NULL COLLATE 'utf8mb4_general_ci'
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
;
CREATE TABLE IF NOT EXISTS `garagekeys` (
	`identifier` VARCHAR(64) NOT NULL DEFAULT '' COLLATE 'utf8mb4_general_ci',
	`keys` LONGTEXT NULL COLLATE 'utf8mb4_general_ci',
	PRIMARY KEY (`identifier`) USING BTREE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
;
CREATE TABLE IF NOT EXISTS `vehiclekeys` (
	`plate` VARCHAR(64) NOT NULL DEFAULT '' COLLATE 'utf8mb4_general_ci',
	`keys` LONGTEXT NULL COLLATE 'utf8mb4_general_ci',
	PRIMARY KEY (`plate`) USING BTREE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
;

OX_INVENTORY item

	['keys'] = {
		label = 'Vehicle Key',
		weight = 0,
		stack = false,
		close = true,
		description = 'Vehicle Key'
	},

FOLDER NAME

  • must be renzu_garage
  • not renzu_garage_v.172
  • not renzu_garage_main
ensure renzu_garage
ensure ox_lib
ensure ox_inventory