prp-apartments
prp-apartments is an apartment shell / map resource. It streams the Lombank towers, related IPLs, elevators, and apartment door registration. It is not a full housing script — pair it with prp-property (or your own housing system) for ownership, furnishing, stash, and keys.
Product page: Apartment Towers. With prp-property, start prp-apartments (recommended before prp-property) so apartments enable automatically — Apartments.
What is included
This resource ships interior shells only. Each apartment is an empty shell ready to be wired into your housing script.
| Building | Location | Floors | Rooms per floor | Total units |
|---|---|---|---|---|
| Lombank Tower 1 | -1572, -571 area | 18 | 14 | 252 |
| Lombank Tower 2 | -1018, -425 area | 18 | 14 | 252 |
| Eclipse Tower | -784, 329 area | 5 | 14 | 70 |
| Tinsel Tower | -602, 54 area | 5 | 14 | 70 |
644 apartments total, defined in apartments.json (room IDs like 101, 214, 1801, etc.).
Also included:
- Garage / lobby / tower shell geometry and audio
- Vanilla IPL blocker (prevents default GTA interiors from conflicting)
- Automatic IPL loader — loads the correct floor IPLs when a player enters a zone
- Elevators — ox_lib TextUI + context menu between garage, lobby, and floors
- Apartment doors — registers door entities in the door system (locked by default; wire locks in your housing script)
Requirements
ox_lib
Installation
Installation steps
prp-apartments from the apartments pack into your resources folder.ensure ox_lib
ensure prp-apartmentsShell only
Like the rest of the Housing Pack, this is a developer asset. You still need a housing script (or custom code) for renting, buying, furnishing, stashes, and door access.
How it works
Everything runs automatically on the client when prp-apartments is started:
default_ipl_blocker_lombank.lua— disables conflicting vanilla interiors (Lombank, Eclipse, Tinsel areas).lombank_loader.lua— ox_lib box zones per floor/building. On enter: requests that floor's IPLs and callsGenerateApartments. On exit: removes IPLs.apartments_data.lua— loadsapartments.jsonand buildsApartmentFloors(coords per building/floor/room).apartment.lua— registers apartment doors in the GTA door system when a floor loads.elevator.lua— elevator points, menu, and teleport animation between floors.
You do not need to manually RequestIpl for each unit — the loader handles it by zone.
Customization
Locales
Strings live in locales/en.json. Language follows ox_lib (setr ox:locale en).
Editable client scripts are listed in escrow_ignore inside fxmanifest.lua.
Door locks
Doors are registered locked (DoorSystemSetDoorState state 4). To control access, hook into your housing script using the door hashes door_apartment_<apartmentId> or the coords from apartments.json.
Debug loader zones
In client/lombank_loader.lua, set debugMode = true at the top to visualize IPL loader zones in-game.
File reference
| File | Role |
|---|---|
apartments.json | All 644 apartment coords, floor, room, building |
client/apartments_data.lua | Parses JSON into ApartmentFloors |
client/apartment.lua | Door registration, GenerateApartments() |
client/lombank_loader.lua | Zone IPL streaming |
client/default_ipl_blocker_lombank.lua | Vanilla IPL blocker |
client/elevator.lua | Elevator system |
locales/*.json | UI strings (elevators) |