πŸ›οΈStarter Apartments

How starter apartments are created, configured, and granted to players.

They can be granted in two ways:

  • Automatically: call the AddStarterApartment export during character creation.

  • Manually (one-time backfill): use the /givestarterapartments command (or your custom command in GiveStarterApartmentCommand).

βœ… Setup

1

Configure the starter apartment

Open nolag_properties/config.lua and edit the StarterApartment block:

StarterApartment = {
    Enabled = true,
    DisableForceSale = true,
    DisableSell = true,
    DisableRent = true,
    DisableInactivity = true,
    DisableFurniture = true,
    BuildingId = 1,
    Address = "Los Santos",
    Name = "Starter Apartment",
    UniqueName = true,
    RentedInstead = true,
    InitialRentDays = 7,
    FutureRentPrice = 500,
    Interior = {
        type = "shell",
        name = "Container",
    },
    Inventory = {
        slots = 10,
        weight = 10000,
    },
    InteractablePoints = {
        ["OpenInventory"] = true,
        ["ClothingMenu"] = true,
    }
},
2

Make sure the building exists

The starter apartment is assigned to a building (BuildingId). If the building does not exist, the creation fails with Building does not exists.

Create a building from the admin menu (/allproperties) and set BuildingId to that building's ID.

3

Ensure the interior exists

The Interior block must match a valid shell or ipl:

  • Shells: enable the correct shell pack in Config.Shells (example: K4mb1StarterShells = true). The default name = "Container" is from custom/shells/StarterShells.lua.

  • IPLs: the name must exist in nolag_properties/ipls.lua.

If the name is wrong or the pack is disabled, you will see Invalid shell type or Invalid ipl type.

4

Grant apartments to players

  • New characters: call the export when the character is created:

exports.nolag_properties:AddStarterApartment(playerIdentifier)
  • Existing players (one-time backfill): run the command configured in GiveStarterApartmentCommand (default /givestarterapartments).

Config reference

Key options and what they do:

  • Enabled: turns the system on/off.

  • BuildingId: the building the apartment is attached to (must exist).

  • Interior.type: shell or ipl.

  • Interior.name: must match a shell/ipl definition.

  • Name + UniqueName: allows automatic numbering when multiple players receive the same name.

  • RentedInstead: if true, the apartment is rented (owned by DefaultBuyerType / DefaultBuyerIdentifier) and rented to the player for free days.

  • InitialRentDays: free rent period.

  • FutureRentPrice: price after the free period ends.

  • Inventory: starter apartment stash size.

  • InteractablePoints: which points are available inside (inventory, clothing, etc).

  • DisableSell, DisableRent, DisableForceSale, DisableInactivity, DisableFurniture: restrict starter-apartment actions.

Common issues

chevron-right"Starter apartment is not enabled"hashtag

Set `StarterApartment.Enabled = true` and restart the resource.

chevron-right"Building does not exists"hashtag

The building ID is invalid. Create or select a building in `/allproperties` and update `BuildingId`.

chevron-right"Invalid shell type" / "Invalid ipl type"hashtag

The interior name doesn't exist or the pack isn't enabled. Use a name from `custom/shells/*.lua` or `ipls.lua` and enable the correct pack.

chevron-right"Player already have a starter apartment"hashtag

The script blocks duplicates. Remove the old starter apartment before re-granting.

chevron-rightNo furniture, selling, or renting optionshashtag

These are intentionally disabled by the `Disable*` flags in `StarterApartment`. Toggle them if you want those features.

chevron-rightRent never starts after the free periodhashtag

Ensure `RentedInstead = true`, `FutureRentPrice` is set, and the `ProcessPropertiesCron` scheduler is running.

Last updated