Kartik Scripts

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:

IdentityHow it's grantedCan do
Admin / staffACE/permission in shared/security.lua/propadmin, draw blocks, approve companies, overrides, migrations
Approver (e.g. DOJ)a job in Config.CompanyApprovalJobsapprove/reject company registrations & licences
PlayeranyoneF7 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/Buyer

So 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:

  1. /propadmin → Block Draft / Map Draw.
  2. Draw the polygon on the map (3–32 vertices, within the area limits in shared/blocks.lua).
  3. Set district, type (residential/commercial/industrial/luxury/ civic) and tier (1–5), price, maintenance and tax derive automatically from district multiplier × tier.
  4. Set caps (fit-out, allotment), allowed features (allow_ipl, allow_security) and max_properties.
  5. 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)

  1. Press F7 → register a company.
  2. Enter a name, an optional description and initial capital.
  3. 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)

  1. Back on F7, the owner applies for the property licence and pays Config.LicenceFee (default $50,000). Status becomes pending.
  2. 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, needs DEPOSIT).

→ Buying, Selling & Auctions

4. (Company) Build property on the block

  1. Stand inside a block your company owns.
  2. Radial → Property → Create Property (needs the BUILD_PROPERTY permission).
  3. 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.

→ Creating Property

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:

  • Jobs is 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

  1. Be on a job listed in Config.Classic.Jobs at the required grade.
  2. Stand where the door should be → radial → Property → Create Property.
  3. Follow the wizard: pick shell / IPL / walk-in (bounded by AllowShells / AllowIpl / AllowWalkIn), set the entrance, price, fit-out caps and doors.

→ Creating Property

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).

→ Job Hub (Classic)


Quick reference, what a player actually does

GoalBlock modeClassic mode
Get the right to sell propertyRegister + licence a company via F7 (DOJ approves)Be hired to a realtor job in Config.Classic.Jobs
Get landCompany buys a block (F7 → Market)N/A, build anywhere
Create a unitStand on owned block → radial → Create Property (BUILD_PROPERTY)Radial → Create Property (at required grade)
Manage the businessF7 → Company hubF7 → Job Hub
Money lives inCompany treasuryJob society account

Next steps

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.

On this page