config.lua
config.lua is the main configuration file for RTX Housing System.
This is where you configure:
Framework mode (standalone / ESX / QBCore)
Integrations (inventory, garages, target, wardrobe, weather, etc.)
Feature toggles (deliveries, furniture store, robbery, permissions, etc.)
Economy settings (prices, taxes, fees)
General housing behavior (UI settings, interaction style, limits, defaults)
✅ Tip
RTX Housing is highly configurable. We recommend going through config.lua and adjusting it to match your server’s gameplay.
Config = {}
Config.Framework = "standalone" -- Supported frameworks: standalone, qbcore, esx
Config.ESXFramework = {
newversion = true, -- Set to true if you're using the newer ESX versions (prevents old SharedObject errors)
getsharedobject = "esx:getSharedObject", -- Event name used to fetch ESX shared object (old ESX compatibility)
resourcename = "es_extended" -- Name of your ESX resource folder
}
Config.QBCoreFrameworkResourceName = "qb-core" -- QBCore resource name (change if your core resource has a different folder name)
Config.InterfaceColor = "#ff66ff" -- UI theme color in HEX format (e.g. #ff66ff)
Config.Language = "English" -- UI language used by the script (English)
Config.Target = false -- Enable target-based interaction (true/false)
Config.Targettype = "oxtarget" -- Target system type: qtarget, qbtarget, oxtarget
Config.TargetSystemsNames = {qtarget = "qtarget", qbtarget = "qb-target", oxtarget = "ox_target"}
Config.HousingInteractionSystem = 1 -- Interaction style: 1 = Custom interaction, 2 = 3D Text, 3 = GTA Online style
Config.HouseLocationInteractDistance = 2.5 -- Distance to interact with house interactions
Config.HouseLocationOpenKey = "e" -- Key used for interactions (if not using target)
Config.ActionCooldown = 1000 -- Global action cooldown (ms)
Config.SoundEffects = true -- Enable sound effects for UI/actions
Config.SoundEffectsVolume = 0.1 -- Sound volume (0.0 - 1.0)
Config.WeatherSystem = "cd_easytime" -- Supported weather sync: cd_easytime, vSync, qb-weathersync, renewed, av_weather
Config.InventorySystem = "oxinventory" -- types (oxinventory, qbcoreinventory, codeminventory, coreinventory, psinventory, chezza, jaksam_inventory, tgiann-inventory) (you can add your own inventory system for storages in other.lua files in client and in server side)
Config.WardrobeSystem = "esx" -- types (esx, qbcore, codem, fivemappearance, illeniumappearance, rcore) you can add your own wardrobe system for storages in other.lua files in client and in server side
Config.GarageSystem = "okokGarage" -- types (ZSX_Garages, jg-advancedgarages, qb-garages, okokGarage, cd_garage, codem-garage, RxGarages, vms_garagesv2, zerio-garage) (you can add your own garage system in other.lua files in client and in server side)
Config.AlertSystem = "default" -- Alert/dispatch system integration (extend in client/server other.lua)
Config.DisableLights = {shell = true, ipl = true} -- Disable interior lights for shell/ipl types (useful for custom lighting setups)
Config.KnockDoorBellNotify = true -- Notify the owner when someone rings/knocks
Config.DoorInteractDistance = 2.5 -- Distance to interact with doors
Config.OrderKeyPrice = 300 -- Price to order a new key
Config.ChangeLockPrice = 1000 -- Price to change locks (invalidate old keys)
Config.DeliveryTime = 1 -- Delivery time in minutes
Config.DancerDespawnTime = 5 -- Despawn time in minutes
Config.WebHooks = false -- Enable Discord webhooks for actions (set webhook URLs in server/other.lua)
Config.PropertyCreatorCommand = "propertycreator" -- - Command to open the property creator (permissions are handled in server/other.lua)
Config.EnablePropertyOwnershipLimit = false -- Enable this option to limit how many properties a player can own
Config.PropertyOwnershipLimit = 2 -- Maximum number of properties a single player is allowed to own
Config.PlayerLoadedEvent = { -- load methods of housing
esx = "esx:onPlayerSpawn",
qbcore = "QBCore:Client:OnPlayerLoaded",
standalone = "playerLoaded",
}
Config.PropertyCreatorPermissions = {
acepermissionsforusecontrolmenu = {enable = true, permission = "propertycreator.use"}, -- Allow access to the property creator using ACE permissions
jobpermissionsforusecontrolmenu = {enable = false, jobname = "realestate"}, -- Allow access to the property creator based on player job
identifierspermissionsforcontrolmenu = true, -- Enable identifier-based access control
permissionsviaidentifiers = { -- Allowed identifiers (license, steam, xbox, live, discord, ip)
{permissiontype = "license", permisisondata = "license:59cda6cea2cba2d00a2866476b76a12cf58be27a"}, -- Example allowed identifier
},
}
Config.FurnitureSystem = {
furnitureshop = false, --- If true, furniture can only be purchased at the Krapea store (not directly from the furniture menu)
furnituredelivery = false, -- If true, furniture is delivered after purchase (delayed delivery system)
furnitureplaceafterpurchase = true, -- If true, you place furniture right after buying; otherwise it goes to inventory
furniturelimit = 500, -- Maximum number of placed furniture entities per property
furnituredeliverytime = 1, -- Delivery time (minutes)
furnituremaxcamdistance = 50.0, -- Max distance for freecam from the player while placing furniture
krapea = {
furniturepreview = true, -- Allow previewing furniture inside the Krapea showroom
coords = vector3(62.97, -1759.4, 30.09),
previewcoords = vector3(82.91427, -1760.61205, -60.41156),
previewrotation = vector3(0.0, 0.0, 0.0),
camerasettings = {angle = 90.0, pitch = -15.0, dist = 8.0},
locations = {
{coords = vector3(54.69, -1800.78, 28.61), locationtype = "bathroom"},
{coords = vector3(64.76, -1800.46, 28.61), locationtype = "bedroom"},
{coords = vector3(74.28, -1805.05, 28.61), locationtype = "livingroom"},
{coords = vector3(82.12, -1814.28, 28.61), locationtype = "livingroom"},
{coords = vector3(87.06, -1803.38, 28.61), locationtype = "office"},
{coords = vector3(84.49, -1791.87, 28.61), locationtype = "kitchen"},
{coords = vector3(101.28, -1789.7, 28.61), locationtype = "outdoors"},
{coords = vector3(95.59, -1777.27, 28.61), locationtype = "all"},
{coords = vector3(93.73, -1775.78, 28.61), locationtype = "all"},
{coords = vector3(91.85, -1774.16, 28.61), locationtype = "all"},
{coords = vector3(73.8, -1750.31, 28.61), locationtype = "cart"},
{coords = vector3(72.16, -1752.29, 28.61), locationtype = "cart"},
{coords = vector3(70.27, -1754.16, 28.61), locationtype = "cart"},
{coords = vector3(68.44, -1756.11, 28.61), locationtype = "cart"},
{coords = vector3(66.93, -1758.29, 28.61), locationtype = "cart"},
{coords = vector3(65.01, -1760.14, 28.61), locationtype = "cart"},
},
},
screenshot = true, -- DEV ONLY: allows generating furniture screenshots
screenshotcommandall = "furnscreenall", -- DEV ONLY: generate images for all furniture in Config.FurnitureData
screenshotsingle = "furnscreen", -- DEV ONLY: generate image for a single object (/furnscreen objectname)
}
Config.SellSettings = {
selltoplayer = true, -- Allow selling a property to another player
selltobank = true, -- Allow selling a property back to the bank/system
selltobankpercentage = 75, -- Percentage of the original price returned when selling to the bank
listrealestate = true, -- Show/list properties in the Real Estate / Dynasty 8 UI
}
Config.SafeSettings = {
pinlength = 4, -- Length of the safe PIN code
slots = 40, -- Number of storage slots in the safe
weight = 400, -- Maximum storage weight (depends on your inventory system)
}
Config.DefaultStorageData = {
slots = 40, -- Number of storage slots in the storage
weight = 100000, -- Maximum storage weight (depends on your inventory system)
}
Config.StorageLimit = {
enabled = true, -- Enable storage limits to prevent players from placing an excessive number of storage containers
maxstorage = 2, -- Maximum number of storage stashes that can be placed inside one property
maxsafe = 2, -- Maximum number of safes that can be placed inside one property
}
Config.ManagementSettings = {
enablecommand = true, -- Enable this feature if you want the player to be able to open the management menu anywhere in the property.
command = "management",
}
Config.StarterApartments = { -- Instructions for implementing starter apartments in your multicharacter system can be found in [Dev Tools - Docs]/STARTER APARTMENTS.txt
complexid = "509507963", -- You must create an apartment complex and enter the complex ID (houseId) from the database here
apartmenttype = "SHELL", -- Apartment type: SHELL or IPL
apartmentid = "rtx_housing_shell_1", -- Index from Config.HouseShells or Config.HouseIpls
apartmenttheme = "modern", -- Theme used for IPL apartments only
furnitureinside = true, -- Enable if players are allowed to place furniture inside the apartment
wardrobe = true, -- Enable if the apartment includes a wardrobe
storage = true, -- Enable if the apartment includes storage
storagedata = {
slots = 40, -- Number of storage slots
weight = 100000, -- Maximum storage weight (depends on your inventory system)
},
cantransfer = false, -- Enable if players are allowed to transfer the starter apartment
cansell = false, -- Enable if players are allowed to sell the starter apartment
sellprice = 0, -- Sell price (usually 0 for starter apartments)
canlist = false, -- Enable if players are allowed to list the apartment on the market
}
Config.ServicesSettings = {
["electricity"] = {
ratedefault = 1.0, -- Default price per unit (kWh)
debtforshutdown = 5.0, -- If unpaid debt reaches this value, service can be shut down
rate = "per kWh", -- Label shown in UI
unit = "kWh", -- Unit shown in UI
passiveTickEnabled = true, -- If true, consumption increases passively over time
passiveUnitPerTick = 0.05, -- Units consumed per passive tick
},
["water"] = {
ratedefault = 1.0, -- Default price per unit (L)
debtforshutdown = 5.0, -- If unpaid debt reaches this value, service can be shut down
rate = "per L", -- Label shown in UI
unit = "L", -- Unit shown in UI
passiveTickEnabled = true, -- If true, consumption increases passively over time
passiveUnitPerTick = 0.05, -- Units consumed per passive tick
},
["internet"] = {
ratedefault = 1.0, -- Default price per unit (GB)
debtforshutdown = 5.0, -- If unpaid debt reaches this value, service can be shut down
rate = "per GB", -- Label shown in UI
unit = "GB", -- Unit shown in UI
passiveTickEnabled = true, -- If true, consumption increases passively over time
passiveUnitPerTick = 0.025, -- Units consumed per passive tick
},
rentcycle = "month", -- Billing cycle label (used in UI / logic)
passiveTickEveryMs = 5 * 60 * 1000 -- Passive consumption tick interval in ms (every 5 minutes)
}
Config.ActivitySettings = {
AccessActivityCount = 5, -- Maximum number of activity log entries stored/displayed
logtypes = {
["enter"] = {
enabled = true,
text = "Someone entered the property",
},
["unlock"] = {
enabled = true,
text = "The door was unlocked.",
},
["lock"] = {
enabled = true,
text = "The door was locked.",
},
["doorbell"] = {
enabled = true,
text = "Doorbell rung",
},
["accessblocked"] = {
enabled = true,
text = "Access attempt blocked",
},
},
}
Config.TenantPropertyPermissions = {
-- Tenant permissions for specific property features.
-- true = tenants can use the feature
-- false = tenants cannot use the feature (owner only)
["furnitureMenu"] = true,
["unlocking"] = true,
["wardrobe"] = true,
["storage"] = true,
["manageKeys"] = false,
["upgrades"] = false,
["payBills"] = false,
["garage"] = false,
["orderServices"] = true,
["tenants"] = false,
["clean"] = true,
["doorbell"] = true,
["cameras"] = true,
["services"] = true,
["positions"] = true,
}
Config.MotionDetectorSettings = {
detectoutsidemotion = true, -- Detect movement outside the property area
motionblip = {enabled = true, lifetime = 30000}, -- Optional blip for detected motion (lifetime in ms)
detectenterproperty = true, -- Detect when someone enters the property
motionalertcooldown = 120000, -- Alert cooldown in ms (prevents spam)
}
Config.Upgrades = {
-- Property upgrades purchasable by the owner.
-- id = internal identifier (used in code & DB)
-- label = name shown in UI
-- price = purchase price
-- description = text shown in the upgrade menu
["cameras"] = {
id = "cameras", -- Enables property camera system
label = "Cameras",
price = 4000,
description = "Provides access to interior and exterior property cameras. Lets you view live security feeds from the Housing menu."
},
["motion"] = {
id = "motion", -- Enables motion detection around the property
label = "Motion Sensors",
price = 2500,
description = "Installs motion sensors near doors and windows. Alerts you when unauthorized movement is detected around the property."
},
["alarm"] = {
id = "alarm", -- Enables alarm system integration
label = "Alarm",
price = 4000,
description = "Adds a security alarm system. Triggers audible alerts when tampering or forced entry is detected."
},
["doorbell"] = {
id = "doorbell", -- Unlocks doorbell sounds & notifications
label = "Doorbell",
price = 1500,
description = "Enables customizable doorbell sounds and notifications when someone rings your doorbell."
},
["smarthome"] = {
id = "smarthome", -- Enables smart home features
label = "Smart Home",
price = 2500,
description = "Turns your property into a smart home with remote lighting, automation settings, and system integrations."
},
["robotvacuum"] = {
id = "robotvacuum", -- Enables robotic vacuum cleaning
label = "Robot Vacuum",
price = 5000,
description = "Allows using an automated floor-cleaning robot. Can be activated through the Housing clean menu."
},
}
Config.Bills = {
-- Bill types applied to properties.
-- enabled = if false, the bill will not be charged or displayed
["water"] = {
id = "water", -- Water usage bill
label = "Water",
enabled = true,
},
["electricity"] = {
id = "electricity", -- Electricity usage bill
label = "Electricity",
enabled = true,
},
["internet"] = {
id = "internet", -- Internet service bill
label = "Internet",
enabled = true,
},
["rent"] = {
id = "rent", -- Monthly rent (for rented properties)
label = "Rent",
enabled = true,
},
["tax"] = {
id = "tax", -- Property tax charged periodically
label = "Property Tax",
enabled = true,
},
}
Config.FinanceSettings = {
tickEveryMs = 10 * 60 * 1000, -- Interval in milliseconds for finance updates (10 minutes)
rent = {
enabled = true, -- Enable or disable rent billing
removeownership = true, -- If enabled, ownership will be removed when rent bills are not paid
addPercentPerTick = 0.25, -- Percentage of the monthly rent added on each tick
evictAtPercent = 200.0, -- Evict the owner when unpaid rent reaches this percentage
lastWarningAtPercent = 10.0, -- Percentage at which the last payment warning is sent
},
tax = {
enabled = true, -- Enable or disable property tax billing
removeownership = true, -- If enabled, ownership will be removed when taxes are not paid
monthlyTaxAmount = 2000, -- Base monthly tax amount
addPercentPerTick = 0.25, -- Percentage of the monthly tax added on each tick
repossessAtPercent = 200.0, -- Repossess the property when unpaid tax reaches this percentage
lastWarningAtPercent = 10.0, -- Percentage at which the last payment warning is sent
},
}
Config.TenantsFinance = {
tickEveryMs = 10 * 60 * 1000, -- Interval in milliseconds for tenant billing updates (10 minutes)
chargePercentPerTick = 1.0, -- Percentage of the tenant rent price charged per tick
minimumCharge = 1, -- Minimum amount charged per tick
chargeOnlyIfTenantOnline = true, -- Charge tenant rent only if the tenant is online
payOwnerOnlyIfOnline = true, -- Pay the property owner only if they are online (otherwise payment can be skipped or stored as debt)
}
Config.DoorBells = {
-- Available doorbell sounds selectable by the property owner.
-- id = internal identifier
-- label = name shown in UI
-- sound = relative path to sound file
[1] = {
id = 1,
label = "Classic",
sound = "sounds/doorbell1.mp3",
},
[2] = {
id = 2,
label = "Assumptions",
sound = "sounds/doorbell2.mp3",
},
[3] = {
id = 3,
label = "7 Weeks",
sound = "sounds/doorbell3.mp3",
},
[4] = {
id = 4,
label = "Lollipop",
sound = "sounds/doorbell4.mp3",
},
[5] = {
id = 5,
label = "Snowfall",
sound = "sounds/doorbell5.mp3",
},
[6] = {
id = 6,
label = "Solo",
sound = "sounds/doorbell6.mp3",
},
[7] = {
id = 7,
label = "Fluxx",
sound = "sounds/doorbell7.mp3",
},
[8] = {
id = 8,
label = "Timeless",
sound = "sounds/doorbell8.mp3",
},
}
Config.Tips = {
-- Random gameplay tips displayed in the Housing UI.
"Change your doorbell tone to match your vibe.",
"Grant unlocking only to trusted players.",
"Disconnect internet when you’re away to save bills.",
"Use the robot vacuum after parties to speed up cleaning."
}
Config.BlipSettings = {
-- Map blip settings used for various property states/locations.
-- blipiconid, blipdisplay, blipcolor are standard GTA blip settings.
forsale = {
enabled = true, -- enable this if you want display blip on map
blipiconid = 350, -- icon type
blipdisplay = 4, -- icon display
blipcolor = 2, -- icon color
blipshortrange = true, -- icon range
blipscale = 1.0, -- icon scale
bliptext = "For Sale", -- text of blip
},
complex = {
enabled = true, -- enable this if you want display blip on map
blipiconid = 826, -- icon type
blipdisplay = 4, -- icon display
blipcolor = 2, -- icon color
blipshortrange = true, -- icon range
blipscale = 1.0, -- icon scale
bliptext = "Apartment Complex", -- text of blip
},
owned = {
enabled = true, -- enable this if you want display blip on map
blipiconid = 40, -- icon type
blipdisplay = 4, -- icon display
blipcolor = 3, -- icon color
blipshortrange = true, -- icon range
blipscale = 1.0, -- icon scale
bliptext = "My House", -- text of blip
},
furniturestore = {
enabled = true, -- enable this if you want display blip on map
blipiconid = 86, -- icon type
blipdisplay = 4, -- icon display
blipcolor = 2, -- icon color
blipshortrange = true, -- icon range
blipscale = 1.0, -- icon scale
bliptext = "Furniture Store", -- text of blip
},
motion = {
enabled = true, -- enable this if you want display blip on map
blipiconid = 161, -- icon type
blipdisplay = 4, -- icon display
blipcolor = 1, -- icon color
blipshortrange = true, -- icon range
blipscale = 1.0, -- icon scale
bliptext = "Motion", -- text of blip
},
alarm = {
enabled = true, -- enable this if you want display blip on map
blipiconid = 161, -- icon type
blipdisplay = 4, -- icon display
blipcolor = 1, -- icon color
blipshortrange = true, -- icon range
blipscale = 1.0, -- icon scale
bliptext = "Alarm", -- text of blip
},
realestate = {
enabled = true, -- enable this if you want display blip on map
blipiconid = 476, -- icon type
blipdisplay = 4, -- icon display
blipcolor = 2, -- icon color
blipshortrange = true, -- icon range
blipscale = 1.0, -- icon scale
bliptext = "Real Estate", -- text of blip
},
}
Config.Keys = {
-- Default interaction keys (used if you are NOT using a target system)
propertymenu = "E",
storagemenu = "E",
wardrobemenu = "E",
managmentmenu = "E",
garagemenu = "E",
kitchenmenu = "E",
catalogmenu = "E",
furnitureinteract = "E",
-- Robbery controls
robinteract = "E",
robcancel = "F",
-- Other interactions
marketmenu = "E",
cleaninteract = "E",
cleancancel = "F",
-- Door lock toggle
doorlock = "G",
}
Config.BuildingTypes = {
-- Available building shells/MLO objects for the property creator.
-- key = internal spawn/model name
-- label = name shown in UI
-- object= object/model that gets spawned
["lf_house_01_"] = {
label = "House 1",
object = "lf_house_01_",
},
["lf_house_04_"] = {
label = "House 4",
object = "lf_house_04_",
},
["lf_house_05_"] = {
label = "House 5",
object = "lf_house_05_",
},
["lf_house_07_"] = {
label = "House 7",
object = "lf_house_07_",
},
["lf_house_08_"] = {
label = "House 8",
object = "lf_house_08_",
},
["lf_house_09_"] = {
label = "House 9",
object = "lf_house_09_",
},
["lf_house_10_"] = {
label = "House 10",
object = "lf_house_10_",
},
["lf_house_11_"] = {
label = "House 11",
object = "lf_house_11_",
},
["lf_house_13_"] = {
label = "House 13",
object = "lf_house_13_",
},
["lf_house_14_"] = {
label = "House 14",
object = "lf_house_14_",
},
["lf_house_15_"] = {
label = "House 15",
object = "lf_house_15_",
},
["lf_house_16_"] = {
label = "House 16",
object = "lf_house_16_",
},
["lf_house_17_"] = {
label = "House 17",
object = "lf_house_17_",
},
["lf_house_18_"] = {
label = "House 18",
object = "lf_house_18_",
},
["lf_house_19_"] = {
label = "House 19",
object = "lf_house_19_",
},
["lf_house_20_"] = {
label = "House 20",
object = "lf_house_20_",
},
["db_apart_01_"] = {
label = "Apartment 1",
object = "db_apart_01_",
},
["db_apart_02_"] = {
label = "Apartment 2",
object = "db_apart_02_",
},
["db_apart_03_"] = {
label = "Apartment 3",
object = "db_apart_03_",
},
["db_apart_05_"] = {
label = "Apartment 5",
object = "db_apart_05_",
},
["db_apart_07_"] = {
label = "Apartment 7",
object = "db_apart_07_",
},
["db_apart_08_"] = {
label = "Apartment 8",
object = "db_apart_08_",
},
["db_apart_09_"] = {
label = "Apartment 9",
object = "db_apart_09_",
},
["db_apart_10_"] = {
label = "Apartment 10",
object = "db_apart_10_",
},
}
Config.IslandTypes = {
-- Available island platforms (used for custom islands / water properties).
-- offsets are used to align the building correctly on the island object.
["rtx_djn_housing_island_small_1"] = {
label = "Small Island 1",
object = "rtx_djn_housing_island_small_1",
offsets = vector3(-8.341553, -30.360596, 5.621299),
},
["rtx_djn_housing_island_small_2"] = {
label = "Small Island 2",
object = "rtx_djn_housing_island_small_2",
offsets = vector3(-7.078369, -0.561523, 5.469539),
},
["rtx_djn_housing_island_small_3"] = {
label = "Small Island 3",
object = "rtx_djn_housing_island_small_3",
offsets = vector3(-5.785645, 29.337402, 2.794368),
},
["rtx_djn_housing_island_small_4"] = {
label = "Small Island 4",
object = "rtx_djn_housing_island_small_4",
offsets = vector3(0.291138, 0.592651, 3.515),
},
["rtx_djn_housing_island_medium_1"] = {
label = "Medium Island",
object = "rtx_djn_housing_island_medium_1",
offsets = vector3(-19.415771, -45.505615, 9.0),
},
["rtx_djn_housing_island_large_1"] = {
label = "Large Island 1",
object = "rtx_djn_housing_island_large_1",
offsets = vector3(36.675537, 35.469971, 12.90),
},
["rtx_djn_housing_island_large_2"] = {
label = "Large Island 2",
object = "rtx_djn_housing_island_large_2",
offsets = vector3(6.064453, 91.383301, 6.0),
},
}
Config.SignRender = true -- If true, property signs are rendered (e.g. "For Sale" signage)
Config.ObjectsRenderDistance = {
island = 500.0, -- Render distance for island objects
building = 500.0, -- Render distance for buildings
sign = 500.0, -- Render distance for sign objects
signrender = 25.0, -- Render distance for sign text/details
}
Config.LockpickDifficulty = {
-- Lockpicking minigame presets.
-- pins = number of pins
-- speed = minigame speed multiplier
-- sweetSize = size of the success window (smaller = harder)
-- failLimit = allowed failed attempts
-- timeLimit = time limit in seconds (0 = no limit)
-- (your entries stay the same)
["easy"] = {
pins = 3,
speed = 0.9,
sweetSize = 0.35,
failLimit = 5,
timeLimit = 0,
},
["normal"] = {
pins = 4,
speed = 1.1,
sweetSize = 0.25,
failLimit = 4,
timeLimit = 0,
},
["hard"] = {
pins = 5,
speed = 1.5,
sweetSize = 0.18,
failLimit = 3,
timeLimit = 25,
},
["nightmare"] = {
pins = 6,
speed = 1.9,
sweetSize = 0.14,
failLimit = 2,
timeLimit = 18,
}
}
Config.LockPickRaidSettings = {
LockPick = {
enabled = true, -- Enable property lockpickingEnable property lockpicking
difficulty = "hard", -- Preset from Config.LockpickDifficulty
itemrequired = true, -- Require an item to lockpick
itemname = "lockpick", -- Item name
itemcount = 1, -- Required amount
removeafteruse = true, -- Remove item on use
ownermustbeonline = false, -- If true, lockpicking only works when owner is online
requiredpolice = false, -- If true, minimum police online is required
policerequiredcount = 1, -- Minimum police count online
jobs = {
["police"] = true,
},
},
Raid = {
enabled = true, -- Enable property raid (usually police-only)
difficulty = "easy", -- difficulty for raid - Preset from Config.LockpickDifficulty
itemrequired = false, -- Require an item to raid
itemname = "stormram", -- Item name
itemcount = 1, -- Required amount
removeafteruse = true, -- Remove raid item after use
openstorage = true, -- if you want to allow police officers to open storage during a raid, enable this feature.
jobs = {
["police"] = true,
},
},
}
Config.AlarmSettings = {
Police = { -- alarm settings for police
alert = true, -- enable this if you want alert police when alarm is triggered
jobs = { -- jobs for alarm
["police"] = true,
},
Alerts = {
lockpickstart = true, -- trigger alarm when player start lockpicking the property
lockpickfail = true, -- trigger alarm when player fail lockpicking the property
lockpicksuccess = true, -- trigger alarm when player success with lockpicking the property
}
},
Owner = { -- alarm settings for property owner
alert = true, -- enable this if you want alert owner when alarm is triggered
Alerts = {
lockpickstart = true, -- trigger alarm when player start lockpicking the property
lockpickfail = false, -- trigger alarm when player fail lockpicking the property
lockpicksuccess = false, -- trigger alarm when player success with lockpicking the property
raidstart = true, -- trigger alarm when police start raiding the property
raidfail = true, -- trigger alarm when police failed raiding the property
raidsuccess = true, -- trigger alarm when police success with raiding the property
}
},
}
Config.RobberySettings = {
enabled = true, -- Enable property robbery feature
ownermustbeonline = false, -- If true, robbery/lockpick is only allowed when owner is online
requiredpolice = false, -- If true, requires police online
policerequiredcount = 1, -- Minimum police online
jobs = {
["police"] = true
}, -- Police jobs used for checks/alerts
alarmnrequiredforalerts = false, -- If true, alerts trigger only if the property has an alarm upgrade
alertpolice = true, -- Notify police on robbery start
alertowner = true, -- Notify owner on robbery start
maxitems = 10, -- Maximum number of items that can be stolen per reset window
robberyreset = 10, -- Reset window in minutes (restores the max stealable count)
itemrequired = false, -- Require an item to start robbery
itemname = "backpack", -- Required item name
itemcount = 1, -- Required amount
removeafteruse = true, -- Remove the item after starting robbery
robberycommand = "robbery", -- Command used to start robbery mode
allowrobstorage = false, -- If true, storage can also be robbed
robberyitems = false, -- If true, stolen furniture is converted to items (disables blackmarket selling flow)
blackmarket = {
enabled = true, -- Enable selling stolen furniture at the blackmarket
coords = vector3(726.58, -828.28, 23.8),
heading = 86.0,
pedmodel = "g_m_y_famfor_01",
},
furnitureoutline = true, -- Highlight furniture that can be stolen in robbery mode
furnitureoutlinecolor = {r = 255, g = 102, b = 255}, -- Outline color
}
Config.RealEstateSettings = {
enabled = true, -- Enable Dynasty 8 / Real Estate property browsing
realestateagency = "Dynasty 8", -- Agency name shown in UI
realestatecoords = vector3(-1082.23, -247.68, 36.76), -- NPC/marker location for the real estate menu
}
Config.CleanlinessSettings = {
-- =========================
-- Passive cleanlin accumulation
-- =========================
passiveTickEnabled = true, -- Enable passive cleanliness decay
passiveTickEveryMs = 10 * 60 * 1000, -- How often cleanliness decays (ms)
passiveDropPerTick = 2.5, -- How much cleanliness (%) drops per tick
minClean = 0.0, -- Minimum cleanliness value
maxClean = 100.0, -- Maximum cleanliness value
addPercent = 15.0, -- How much cleanliness (%) is added per action
cleantime = 5, -- time cleaning
-- =========================
-- Robotic vacuum cleaner
-- =========================
vacuum = {
enabled = true, -- Enable robotic vacuum system
tickEveryMs = 30 * 1000, -- How often vacuum cleans (ms)
cleanPointsPerTick = 1, -- How many cleanpoints are cleaned per tick
requireElectricity = true, -- Vacuum requires electricity to operate
mloAddPerTick = 15.0, -- MLO: cleanliness % added per tick (e.g. 15%)
}
}
Config.ZoneLabels = {
-- ZoneLabels:
-- Maps GTA zone codes to readable location names.
-- Used for UI text, property info, logs, notifications, and zone display.
-- Key = zone code returned by GetNameOfZone()
-- Value = human-readable zone name shown to players
AIRP = "Los Santos International Airport",
ALAMO = "Alamo Sea",
ALTA = "Alta",
ARMYB = "Fort Zancudo",
BANHAMC = "Banham Canyon",
BANNING = "Banning",
BEACH = "Vespucci Beach",
BHAMCA = "Banham Canyon",
BRADP = "Braddock Pass",
BRADT = "Braddock Tunnel",
BURTON = "Burton",
CALAFB = "Calafia Bridge",
CANNY = "Raton Canyon",
CCREAK = "Cassidy Creek",
CHAMH = "Chamberlain Hills",
CHIL = "Vinewood Hills",
CHU = "Chumash",
CMSW = "Chiliad Mountain State Wilderness",
CYPRE = "Cypress Flats",
DAVIS = "Davis",
DELBE = "Del Perro Beach",
DELPE = "Del Perro",
DELSOL = "Puerto Del Sol",
DESRT = "Grand Senora Desert",
DOWNT = "Downtown",
DTVINE = "Downtown Vinewood",
EAST_V = "East Vinewood",
EBURO = "El Burro Heights",
ELYSIAN = "Elysian Island",
GALFISH = "Galilee",
GOLF = "Richman Golf Course",
GRAPES = "Grapeseed",
GREATC = "Great Chaparral",
HARMO = "Harmony",
HAWICK = "Hawick",
HORS = "Vinewood Racetrack",
HUMLAB = "Humane Labs",
JAIL = "Bolingbroke Penitentiary",
KOREAT = "Little Seoul",
LACT = "Land Act Reservoir",
LAGO = "Lago Zancudo",
LDAM = "Land Act Dam",
LEGSQU = "Legion Square",
LMESA = "La Mesa",
LOSPUER = "La Puerta",
MIRR = "Mirror Park",
MORN = "Morningwood",
MOVIE = "Richards Majestic",
MTCHIL = "Mount Chiliad",
MTGORDO = "Mount Gordo",
MTJOSE = "Mount Josiah",
MURRI = "Murrieta Heights",
NCHU = "North Chumash",
NOOSE = "N.O.O.S.E Headquarters",
OCEANA = "Pacific Ocean",
PALCOV = "Paleto Cove",
PALETO = "Paleto Bay",
PALFOR = "Palomino Highlands",
PALHIGH = "Palomino Avenue",
PALMPOW = "Palmer-Taylor Power Station",
PBLUFF = "Pacific Bluffs",
PBOX = "Pillbox Hill",
PROCOP = "Procopio Beach",
PROL = "Prologue Mountain",
RANCHO = "Rancho",
RGLEN = "Richman Glen",
RICHM = "Richman",
ROCKF = "Rockford Hills",
RTRAK = "Roger's Scrapyard",
SANAND = "San Andreas",
SANCHIA = "San Chianski Mountain Range",
SANDY = "Sandy Shores",
SKID = "Mission Row (Skid Row)",
SLAB = "Stab City",
STAD = "Maze Bank Arena",
STRAW = "Strawberry",
TATAMO = "Tataviam Mountains",
TERMINA = "Terminal",
TEXTI = "Textile City",
TONGVAH = "Tongva Hills",
TONGVAV = "Tongva Valley",
VCANA = "Vespucci Canals",
VESP = "Vespucci",
VINE = "Vinewood",
WVINE = "West Vinewood",
ZANCUDO = "Zancudo River",
ZP_ORT = "Port of South Los Santos",
ZQ_UAR = "Davis Quartz Quarry"
}
Config.TargetIcons = {
managmenticon = "fa-solid fa-gear", -- Property management / settings
entericon = "fa-solid fa-door-open", -- Enter property
targeticon = "fa-solid fa-bullseye", -- Interaction target
exiticon = "fa-solid fa-door-closed", -- Exit property
complexicon = "fa-solid fa-building", -- Apartment / building complex
realestateicon = "fa-solid fa-house", -- Real estate / property listing
blackmarketicon = "fa-solid fa-mask", -- Black market
catalogicon = "fa-solid fa-book-open", -- Furniture / shop catalog
carticon = "fa-solid fa-cart-shopping", -- Shopping cart
wardrobeicon = "fa-solid fa-shirt", -- Wardrobe / clothes
storageicon = "fa-solid fa-box-archive", -- Storage / stash
safeicon = "fa-solid fa-vault", -- Safe / valuables
bathicon = "fa-solid fa-bath", -- Bath
showericon = "fa-solid fa-shower", -- Shower
sinkicon = "fa-solid fa-faucet", -- Sink / water
kitchenicon = "fa-solid fa-kitchen-set", -- Kitchen / cooking
dooricon = "fa-solid fa-door-closed", -- Door
}
Config.ShowPropertyZoneWhenPlayerIsInside = false -- enable this if you want to see the property zone when you are inside the property zone
Config.DebugMode = false -- Enable this only if you are experiencing issues; it will print additional debug information to the server console
Config.DoorCreator = {
command = "doorcreator", -- /doorcreator
keyToggleMode = 137, -- CAPSLOCK: toggle single/double-door mode
keySelectDoor = 24, -- LMB: select door
keyDeleteDoor = 25, -- RMB: delete selected door
keyFinish = 191, -- ENTER: finish and save
keyCancelDouble = 202, -- BACKSPACE: cancel double-door selection
-- Bounding box colors (default matches your pink theme)
boxColor = { r = 255, g = 102, b = 255, a = 255 },
boxFillColor = { r = 255, g = 102, b = 255, a = 60 },
-- Colors for the "pending" first door in double-door mode
pendingBoxColor = { r = 0, g = 255, b = 150, a = 255 },
pendingBoxFillColor = { r = 0, g = 255, b = 150, a = 60 },
-- Maximum model thickness to still be considered a door
doorThicknessMax = 1.0,
debugPrint = true -- Print debug info to console
}
Config.PolyCreatorConfig = {
-- fixed wall height (meters), not changed in-game
wallHeight = 40.0,
-- base Z adjustment step (how much up/down per key press)
baseStep = 0.5,
-- keys for base Z adjustment (control group 0)
keyBaseUp = 181, -- RIGHT ARROW = base Z up
keyBaseDown = 180, -- LEFT ARROW = base Z down
-- colors: {r, g, b, a}
colorFloorLine = {255, 102, 255, 200}, -- bottom polygon outline
colorTopLine = {255, 102, 255, 220}, -- top polygon outline
colorWall = {255, 102, 255, 50}, -- vertical walls (DrawPoly)
colorPillar = {255, 255, 255, 200}, -- vertical edge lines
colorPointSphere = {255, 102, 255, 220}, -- sphere marker on top of each vertex
colorPreview = {0, 180, 255, 220}, -- preview ray / preview point
colorHelpText = {255, 255, 255, 200}
}
Config.BuildingIslandCreator = {
keyPrev = 180, -- Left arrow: previous option
keyNext = 181, -- Right arrow: next option
keyConfirm = 191, -- ENTER: confirm selection
debugPrint = true,
moveStep = 0.1, -- Base movement step (recommended 0.05–0.2)
fastMoveMultiplier = 5.0, -- Multiplier while holding SHIFT
keyMoveForward = 32, -- W
keyMoveBack = 33, -- S
keyMoveLeft = 34, -- A
keyMoveRight = 35, -- D
keyMoveUp = 10, -- PAGE UP
keyMoveDown = 11, -- PAGE DOWN
}
Config.FurnitureSettings = {
furnitureviacommand = true, -- Allow opening furniture menu via command
furniturecommand = "furnituremenu", -- Command name to open the furniture menu
moveStep = 0.05, -- Base movement step for furniture
fastMoveMultiplier = 5.0, -- Movement multiplier while holding SHIFT
rotateStep = 2.5, -- Rotation step in degrees
outline = true, -- Enable outline on selected furniture
outlinecolor = {r = 255, g = 102, b = 255}, -- Outline color (RGB)
keyToggleFreecam = { control = 23, ui = "F" }, -- Toggle free camera mode
keyToggleMode = { control = 47, ui = "G" }, -- Toggle move / rotate mode
keyToggleGizmo = { control = 38, ui = "E" }, -- Toggle transform gizmo
keySnapToGround = { control = 44, ui = "Q" }, -- Snap furniture to ground
keyGizmoSpace = { control = 74, ui = "H" }, -- Toggle gizmo space (world / local)
keyMoveForward = { control = 172, ui = "↑" }, -- Move furniture forward
keyMoveBack = { control = 173, ui = "↓" }, -- Move furniture backward
keyMoveLeft = { control = 174, ui = "←" }, -- Move furniture left
keyMoveRight = { control = 175, ui = "→" }, -- Move furniture right
keyShift = { control = 21, ui = "Shift" }, -- Enable fast movement
keyMoveUp = { control = 10, ui = "PgUp" }, -- Move furniture up
keyMoveDown = { control = 11, ui = "PgDown" }, -- Move furniture down
keyConfirm = { control = 191, ui = "ENTER" }, -- Confirm furniture placement
keyCancel = { control = 194, ui = "BACKSPACE" } -- Cancel placement and revert
}
Config.OffsetCreator = false -- Enable prop offset creator for the robbery system (DEV ONLY). Example: /offsetcreator prop_speaker_03
function Notify(text, title, notifytype)
--exports["rtx_notify"]:Notify(title, text, 5000, notifytype) -- if you get error in this line its because you dont use our notify system buy it here https://rtx.tebex.io/package/5402098 or you can use some other notify system just replace this notify line with your notify system
--exports["mythic_notify"]:SendAlert("inform", text, 5000)
exports["rtx_housing"]:ShowNotify({
title = title,
text = text,
type = notifytype,
timeout = 5000
})
endLast updated