renzu_garage 1.72
- FIVEM - Garage HUD Advanced Vehicle Garage
- REQUIRES ONE SYNC ENABLE!
New Feature Update 1.72 (most of newer updates requires onesync enable)
- Garage Keys Sharing
- Vehicle Keys Sharing
- 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)
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
video
https://www.youtube.com/watch?v=rKYb0sRnP2A
Sample Image:
Inside garage
Private Garage
- Garage Inventory
Housing Garage
- Support Preconfigure 550+ Houses (optional in config)
- Support Custom Event Triggers (for custom housing )
- Quick Pick Option (Non Unique)
- Unique Garage ( using GTA O style garages )
- Limited Cars can be store
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()
scaleform from negbook is being used
IMPOUND
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
- /garagekeys manage (manage current keys)
- Select Garage
- Use or Delete (use Change current key), (delete removed the garage keys from your management)
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
- Share Current Vehicle Keys (enable other player to lock / unlock your vehicle and bypass hotwiring system)
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
- https://github.com/renzuzu/renzu_popui
- https://github.com/renzuzu/renzu_contextmenu
- https://github.com/renzuzu/renzu_notify
- https://github.com/renzuzu/renzu_lockgame
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
;
FOLDER NAME
- must be renzu_garage
- not renzu_garage_v.172
- not renzu_garage_main
ensure renzu_garage
ensure renzu_contextmenu
ensure renzu_popui
ensure renzu_lockgame
ensure renzu_notify