Renzu Garage v1.8
Whats New v1.8
- 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
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
- 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
- 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
Download
Vehicle Keys
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)
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 Impounds
IMPOUND
- Advanced Impound
- Job Owned Impound
- Multiple Impound
- Configurable for Lost Vehicles to Impound garage
- Optional Player Vehicle Impound ( any player can retrieve any impound vehicles )
- Player Infos *using firstname,lastname,phone @ users table mysql
Inside Garage
Inside Garage
- Inside garage function (arrow right,left) for navigation
- Choosing vehicle ( ride to the car and press E)
- Beautiful Vehicle Infos
Private Garage
Private Garage
- Confugured to Support Multiple Interiors (some might bob_74ipl to load other garage)
- Currently Support : Small, Medium, Large , Modern Garages.
- Player Owned Garage
- Multiple Garage Location possible
- Multiple Player Owned Garage
- Invite Any Player inside garage
- Using Routing Buckets to instance player safely
- /giveaccess PLAYERID (must use inside the garage)
Garage Inventory (only for private garage)
Housing Garage
Housing Garage
- Easy to Export using your own custom housing
- 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()
Realistic Park (Auto Respawned upon server restart)
- Park Vehicle to any parking Zone
- Zone can be configured
- using zone distance to 10000 literrally you can park anywhere
- Impoundable
- /park
- /parkingmeter
VIDEO DEMO
More Video
SAMPLE CONFIG
Sample Public Garage
{
garage = "A", --LEGION
Dist = 10, -- distance
Blip = {color = 38, sprite = 289, scale = 0.6},
garage_x = 241.1,
garage_y = -757.1,
garage_z = 34.639263153076, -- coordinates for this garage
spawn_x = 245.59975585938,
spawn_y = -743.73449707031,
spawn_z = 33.954160003662,
heading = 154.98515319824 -- Vehicle spawn location
}
impoundcoord = {
{
garage = "impound", --mrpd
job = "police",
Dist = 10,
Blip = {color = 2, sprite = 289, scale = 0.6},
garage_x = 459.18936157227,
garage_y = -1008.4532470703,
garage_z = 28.264139175415,
spawn_x = 443.25286865234,
spawn_y = -1013.6952514648,
spawn_z = 27.927909851074,
heading = 89.990180969238
}
}
heli = {
-- chopper models for each jobs
["police"] = {
-- job
{plate = "PDHELI", model = "maverick"},
{plate = "PDHELI", model = "frogger"},
{plate = "PDHELI", model = "havoc"},
{plate = "PDHELI", model = "polmav"},
{plate = "PDHELI", model = "valkyrie"},
{plate = "PDHELI", model = "akula"},
{plate = "PDHELI", model = "buzzard"},
{plate = "PDHELI", model = "cargobob2"}
}
}
helispawn = {
-- coordinates for jobs helicopters
["police"] = {
[1] = {
garage = "Police Chopper A",
Blip = {color = 38, sprite = 43, scale = 0.6},
coords = vector3(449.27, -981.05, 43.69),
distance = 15
}
}
}
--JOB GARAGE
{
garage = "Police Garage", --PALETO
job = "police",
Type = "car",
Dist = 10,
Blip = {color = 38, sprite = 289, scale = 0.6},
garage_x = 427.20556640625,
garage_y = -1011.4292602539,
garage_z = 28.954322814941,
spawn_x = 432.20071411133,
spawn_y = -1015.4301757813,
spawn_z = 28.840564727783,
heading = 85.93824005127
},
Sample Private Garage
private_garage = {
['large'] = { -- garage id
name = 'Power St Garage', -- custom name
cost = 10000, -- cost for purchase
max = 15, -- max vehicles available for this garage
buycoords = vector4(-9.6924495697021,-829.27484130859,29.96146774292,262.73928833008), -- location of buying coords and spawn of vehicles.
coords = vector4(239.85778808594,-1004.7095947266,-98.999862670898,88.549873352051), -- ped spawn location inside garage
park = { -- list of parking coordinates for each vehicles
{coord = vector4(233.80194091797,-1002.8353271484,-99.562438964844,98.076362609863), taken = false},
{coord = vector4(233.70393371582,-999.49444580078,-99.562438964844,98.78751373291), taken = false},
{coord = vector4(233.89929199219,-996.08715820312,-99.562713623047,102.9313659668), taken = false},
{coord = vector4(233.82643127441,-992.74664306641,-99.562316894531,105.20411682129), taken = false},
{coord = vector4(233.9019317627,-989.30828857422,-99.562698364258,112.15473175049), taken = false},
{coord = vector4(233.64181518555,-986.10681152344,-99.562103271484,112.84883880615), taken = false},
{coord = vector4(233.56895446777,-982.71539306641,-99.562477111816,119.05020141602), taken = false},
{coord = vector4(223.47540283203,-977.2685546875,-99.413398742676,239.5002746582), taken = false},
{coord = vector4(223.21844482422,-981.45782470703,-99.561897277832,237.03373718262), taken = false},
{coord = vector4(223.27618408203,-985.41668701172,-99.561882019043,238.91821289062), taken = false},
{coord = vector4(223.57893371582,-989.11114501953,-99.562232971191,242.21180725098), taken = false},
{coord = vector4(223.39413452148,-992.62939453125,-99.561912536621,245.86999511719), taken = false},
{coord = vector4(223.23393249512,-996.20721435547,-99.5625,245.08056640625), taken = false},
{coord = vector4(223.26263427734,-999.97033691406,-99.562675476074,248.02851867676), taken = false},
{coord = vector4(223.08692932129,-1003.8400268555,-99.561912536621,246.77253723145), taken = false},
},
}
Sample Housing Garage
Config.Property = {
[1] = {
name = "Coopenmartha Court 24",
coord = vector3(-1053.82, -933.09, 3.36),
},
}
or
Manually Trigger
TriggerEvent('renzu_garage:property',"Forum Drive 11/Apt13", vector3(-1053.82, -933.09, 3.36))
Result
Sample Impound
impoundcoord = {
{
garage = "impound", --mrpd
job = "police",
Type = "car",
Dist = 10,
Blip = {color = 2, sprite = 289, scale = 0.6},
garage_x = 459.18936157227,
garage_y = -1008.4532470703,
garage_z = 28.264139175415,
spawn_x = 443.25286865234,
spawn_y = -1013.6952514648,
spawn_z = 27.927909851074,
heading = 89.990180969238
}
}
Sample Heli Garage
heli = {
-- chopper models for each jobs
["police"] = {
-- job
{plate = "PDHELI", model = "maverick"},
{plate = "PDHELI", model = "frogger"},
{plate = "PDHELI", model = "havoc"},
{plate = "PDHELI", model = "polmav"},
{plate = "PDHELI", model = "valkyrie"},
{plate = "PDHELI", model = "akula"},
{plate = "PDHELI", model = "buzzard"},
{plate = "PDHELI", model = "cargobob2"}
},
["ambulance"] = {
-- job
{plate = "AMBHELI", model = "maverick"},
{plate = "AMBHELI", model = "frogger"},
{plate = "AMBHELI", model = "havoc"},
{plate = "AMBHELI", model = "polmav"},
{plate = "AMBHELI", model = "valkyrie"},
{plate = "AMBHELI", model = "akula"},
{plate = "AMBHELI", model = "buzzard"},
{plate = "AMBHELI", model = "cargobob2"}
},
}
Sample Realistic Park Config
parking = { -- list of parking zone
{
garage = "Public Park A", --LEGION
Dist = 60, -- location size
Blip = {color = 38, sprite = 289, scale = 0.9},
garage_x = 227.09092712402,
garage_y = -787.85180664062,
garage_z = 30.701454162598, -- coordinates for this garage
},
{
garage = "Public Park B",
Dist = 30, -- location size
Blip = {color = 38, sprite = 289, scale = 0.9},
garage_x = 1028.1433105469,
garage_y = -775.60241699219,
garage_z = 58.039398193359, -- coordinates for this garage
},
}
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
- Park Anywhere
/park
- park to any parking meter
/parkingmeter
Dependency
- ESX (legacy)
- ox_lib
- One Sync Enable
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
Other Free resource
Vehicleshop [RELEASE] renzu_vehicleshop | Advanced Vehicle Shop
HUD UI [RELEASE] renzu_hud UI | Advanced HUD