Setup Walkthrough
This is the end-to-end "get it running and actually usable" guide. It picks up right after Installation: the resource is started, the schema has migrated, and you can press F7 in game.
From here everything depends on which mode you run. Set it once in
shared/mode.lua:
-- true = Block mode (land → companies → properties)
-- false = Classic mode (a realtor job creates & sells state property)
Config.BlockSystem = true- Block mode → you draw land as an admin, players register a company via the tablet, the company buys land and builds on it. Jump to Block mode setup.
- Classic mode → you put a realtor job in the config, and anyone on that job creates and sells state-owned property. No land, no company registration. Jump to Classic mode setup.
Not sure which to run? See Operating Modes for the full comparison. Block mode is the default and is a full player-run economy; Classic mode is the simple single-agency setup.
Who can open what
Three identities matter throughout this guide:
| Identity | How it's granted | Can do |
|---|---|---|
| Admin / staff | ACE/permission in shared/security.lua | /propadmin, draw blocks, approve companies, overrides, migrations |
| Approver (e.g. DOJ) | a job in Config.CompanyApprovalJobs | approve/reject company registrations & licences |
| Player | anyone | F7 tablet, register a company, buy/rent, decorate, manage |
/propadmin opens the Admin Registry; F7 opens the player tablet.
Block mode setup
The ownership chain is:
District → Block (land) → Company (owner) → Property (unit) → Tenant/BuyerSo the setup order is: admin draws land → a player registers & licences a company → that company buys a block → builds property on it.
1. (Admin) Draw at least one block
Land doesn't exist until you draw it. As an admin:
/propadmin→ Block Draft / Map Draw.- Draw the polygon on the map (3–32 vertices, within the area limits in
shared/blocks.lua). - Set district, type (
residential/commercial/industrial/luxury/civic) and tier (1–5), price, maintenance and tax derive automatically fromdistrict multiplier × tier. - Set caps (fit-out, allotment), allowed features (
allow_ipl,allow_security) andmax_properties. - Save. The block is now buyable land.
→ Detail: Admin Registry · Blocks, Districts & Land
Make sure registration is open before players try to apply:
Config.CompanyRegistrationOpen = true (in shared/economy.lua), and set who
approves with Config.CompanyApprovalJobs = { doj = 0 }.
2. (Player) Register a company from the tablet
This is the "register your company via the normal tablet" step. A company goes through two gates before it can build:
Gate 1, Registration (free, needs approval)
- Press F7 → register a company.
- Enter a name, an optional description and initial capital.
- Submit. The application is now pending. The founder is automatically the
Owner (full permissions). Limit:
Config.MaxCompaniesPerPlayer(default 1) live-or-pending company per player.
Gate 1 approval: an approver (Config.CompanyApprovalJobs, e.g. DOJ)
opens /propadmin → Approvals, and approves the application. The
company's registration status becomes approved.
Gate 2, Property licence (paid, needs approval)
- Back on F7, the owner applies for the property licence and pays
Config.LicenceFee(default $50,000). Status becomes pending. - An approver activates it. The licence is now active for
Config.LicenceDurationDays(default 30 days).
Only with an active, unexpired, unfrozen licence can a company buy land and build. → Companies & Roles
Why two gates? Registration decides whether the business exists; the licence is the paid, expiring permit to trade. An approver can process both in one sitting, but they are separate approvals in the code, a company can be registered yet unlicensed (e.g. after a licence lapses).
3. (Company) Buy a block
With an active licence and a member holding the BUY_BLOCK permission:
- F7 → Listings / Market → buy (or bid on, with
BID_AUCTION) a block. Money comes out of the company treasury, so deposit funds first (Company → Treasury, needsDEPOSIT).
4. (Company) Build property on the block
- Stand inside a block your company owns.
- Radial → Property → Create Property (needs the
BUILD_PROPERTYpermission). - Follow the wizard: pick shell / IPL / walk-in, set the entrance, price, fit-out caps and doors. Construction cost is billed to the company treasury.
5. Run the business
From F7 → Company hub: Roles, Employees & salaries, Treasury &
Ledger, Customers, sales, leases and listings. Assign
roles so staff get only the permissions they
need (BUILD_PROPERTY, LIST_SALE, COLLECT_RENT, …).
Classic mode setup
No blocks, no company registration. A realtor job creates property anywhere; unsold stock is state-owned and money flows to the job's society account.
1. Set the job in the config
Everything is in Config.Classic (shared/mode.lua):
Config.BlockSystem = false -- turn Classic mode on
Config.Classic = {
Jobs = { realestate = 0 }, -- job name -> minimum grade allowed to sell
AllowShells = true, -- allow instanced shells
AllowIpl = false, -- allow IPL interiors
AllowWalkIn = false, -- allow claiming existing MLOs/buildings
Allotment = 100, -- copies allowed per shell/interior
ChargeConstruction = true, -- bill the job society the build cost per unit
Maintenance = 1500, -- flat per-property maintenance per cycle
TaxRate = 0.02, -- flat tax on rent income
RevenueAccount = 'realestate', -- society account receiving state revenue
JobAccounts = {}, -- society account overrides (default = job name)
BossGrades = { realestate = 3 }, -- grade treated as boss (bypasses all perms)
UnemployedJob = 'unemployed',
FitoutCaps = { stashSlots = 120, stashWeight = 1200000, stashPieces = 6,
wardrobeSlots = 12, cameras = 2 },
}Key points:
Jobsis a map of job name → minimum grade allowed to sell. This job must already exist in your framework (qbx_core / qb-core / ESX) with its own grades and a society account (used for revenue).- Multi-job: list several jobs and each gets its own hub and society account
(
JobAccounts[job]or the job name). - Boss grade (
BossGrades[job], or the highest framework grade) bypasses every permission check, that's the grade that configures roles for the rest.
The job in Config.Classic.Jobs must be a real framework job with a society
account. If it doesn't exist, employees won't be recognised and revenue has
nowhere to go. Create/verify it in your framework's job management first.
2. (Realtor) Create property to sell
- Be on a job listed in
Config.Classic.Jobsat the required grade. - Stand where the door should be → radial → Property → Create Property.
- Follow the wizard: pick shell / IPL / walk-in (bounded by
AllowShells/AllowIpl/AllowWalkIn), set the entrance, price, fit-out caps and doors.
3. (Realtor) Manage the agency, Job Hub
F7 → Real Estate Job section opens the Job Hub: dashboard, sales,
customers, leases, statements, employees, roles, and Starters & Allotments.
Permissions here are the six job flags (VIEW_LEDGER, DEPOSIT, WITHDRAW,
MANAGE_ROLES, HIRE, FIRE, plus MANAGE_STARTER / BUILD_PROPERTY),
configured per framework grade (kp_job_grade_perms).
Quick reference, what a player actually does
| Goal | Block mode | Classic mode |
|---|---|---|
| Get the right to sell property | Register + licence a company via F7 (DOJ approves) | Be hired to a realtor job in Config.Classic.Jobs |
| Get land | Company buys a block (F7 → Market) | N/A, build anywhere |
| Create a unit | Stand on owned block → radial → Create Property (BUILD_PROPERTY) | Radial → Create Property (at required grade) |
| Manage the business | F7 → Company hub | F7 → Job Hub |
| Money lives in | Company treasury | Job society account |
Next steps
- How-To Guide: every common task and where to do it.
- Configuration: economy, billing, blocks, security.
- Commands & Keybinds:
/propadmin, F7, radial and console tools.
Don't flip modes on a live database. Classic owns stock as state; Block
owns it as company. Switch on a fresh setup, or use the Block → Classic
migration tool. See Operating Modes → Switching modes.