2025-06-09 23:54:46 +02:00
--[[
Welcome to the qs - housing configuration guide !
Before you dive into setting up your new asset , make sure to read this guide carefully .
We ' ll explain each key part of the configuration, step by step, so that you can
customize everything to fit your server perfectly .
Important configuration sections will be clearly marked , like this one you ' re reading now.
These sections will guide you through each setting available in this file .
Flexibility is a big part of this setup . Most settings can be adapted to work with
your specific framework ( ESX , QBCore , etc . ) , so feel free to tweak them as needed .
You ’ ll find all the customizable files under client / custom /* or server / custom /* .
Before you get started , check out our detailed documentation for full guidance :
https : // docs.quasar - store.com / information / welcome
This resource offers full customization , making it easy to adjust features to your server ’ s needs .
Take your time to explore and enjoy building your housing system !
IMPORTANT
In the new version , the database of furniture has been changed and the problem of furniture disappearing has been solved .
However , players ' old furniture has disappeared. To bring back the destroyed furniture,
use the ` / revert_decorations ` command and restart the script . This will restore the furniture to the database .
This command can be use only on cmd
DO NOT FORGET TO BACKUP YOUR SERVER BEFORE RUNNING THIS COMMAND ! IT IS A ONE - TIME COMMAND
] ]
---@generic T
---@param data {[string]: string}
---@return string | false
local function dependencyCheck ( data )
for k , v in pairs ( data ) do
if GetResourceState ( k ) : find ( ' started ' ) ~= nil then
return v
end
end
return false
end
Config = { }
Locales = { }
--[[
Choose your preferred language !
In this section , you can select the main language for your asset . We have a wide
selection of default languages available , located in the locales /* folder .
If your language is not listed , don ' t worry! You can easily create a new one
by adding a new file in the locales folder and customizing it to your needs .
Default languages available :
' ar ' -- Arabic
' bg ' -- Bulgarian
' ca ' -- Catalan
' cs ' -- Czech
' da ' -- Danish
' de ' -- German
' el ' -- Greek
' en ' -- English
' es ' -- Spanish
' fa ' -- Persian
' fr ' -- French
' hi ' -- Hindi
' hu ' -- Hungarian
' it ' -- Italian
' ja ' -- Japanese
' ko ' -- Korean
' nl ' -- Dutch
' no ' -- Norwegian
' pl ' -- Polish
' pt ' -- Portuguese
' ro ' -- Romanian
' ru ' -- Russian
' sl ' -- Slovenian
' sv ' -- Swedish
' th ' -- Thai
' tr ' -- Turkish
' zh-CN ' -- Chinese (Simplified)
' zh-TW ' -- Chinese (Traditional)
After selecting your preferred language , be sure to save your changes and test
the asset to ensure everything works as expected !
] ]
2025-06-10 19:52:58 +02:00
Config.Language = ' en '
2025-06-09 23:54:46 +02:00
--[[
Framework Detection System :
This script automatically detects if you ' re using ' es_extended ' (ESX), ' qb - core ' (QBCore),
or ' qbx_core ' frameworks . It configures itself based on the detected framework .
If you ' ve renamed your framework or are using a custom version, do NOT remove the value
from ` Config.Framework ` . Instead , follow these steps :
1. ** Create a new framework file ** :
- Add your custom framework logic by creating new files in the following directories :
- ` client / custom / framework / `
- ` server / custom / framework / `
2. ** Modify the detection logic ** :
- You can then adapt the framework detection and customization logic within those files
to match your specific framework setup .
Remember : This detection is automatic and should not be edited unless you are certain of the
changes you ' re making. Incorrect modifications could cause issues with the functionality.
] ]
local frameworks = {
[ ' es_extended ' ] = ' esx ' ,
[ ' qb-core ' ] = ' qb ' ,
[ ' qbx_core ' ] = ' qb '
}
Config.Framework = dependencyCheck ( frameworks ) or ' standalone '
Config.FiveGuard = false -- Your fiveguard script name if exists, if not false.
--[[
Inventory System Integration :
This feature allows you to add a personalized stash for each property in the housing asset .
The system is designed to automatically detect which inventory system your server uses .
Supported inventory systems include popular frameworks such as ESX , QBCore , and others .
If your inventory system is not on the supported list , don ' t worry! You can manually configure
your inventory by editing the files located in :
` client / custom / inventory /* . lua `
If you need further assistance or run into issues , feel free to contact the seller of the asset
for guidance and support .
] ]
local inventories = {
[ ' qs-inventory ' ] = ' qs-inventory ' ,
[ ' qb-inventory ' ] = ' qb-inventory ' ,
[ ' ps-inventory ' ] = ' ps-inventory ' ,
[ ' ox_inventory ' ] = ' ox_inventory ' ,
[ ' core_inventory ' ] = ' core_inventory ' ,
[ ' codem-inventory ' ] = ' codem-inventory ' ,
[ ' inventory ' ] = ' inventory ' ,
[ ' origen_inventory ' ] = ' origen_inventory ' ,
[ ' tgiann-inventory ' ] = ' tgiann-inventory ' ,
}
Config.Inventory = dependencyCheck ( inventories ) or ' default '
--[[
Dispatch System Integration :
This feature allows you to customize how calls and alerts are managed for each supported
dispatch resource within this asset . The system is designed to automatically detect which
dispatch system is currently in use on your server .
Supported dispatch systems include popular frameworks . The detection is done automatically
based on the resource state .
If your dispatch system is not listed or automatically detected , you can manually configure it
by editing the files located in :
` client / custom / dispatch /* . lua `
For any questions or concerns , please contact the seller of the asset for further assistance .
] ]
local dispatch = {
2025-06-10 19:52:58 +02:00
[ ' qs-dispatch ' ] = ' qs-dispatch '
2025-06-09 23:54:46 +02:00
}
Config.Dispatch = dependencyCheck ( dispatch ) or ' default '
--[[
Phone System Integration :
This feature allows us to manage phone - related functions for the asset ' s sale board,
ensuring smooth communication and interaction with players . The system is designed
to automatically detect which phone system is currently in use .
Popular phone systems are automatically detected based on your server configuration .
If your phone system is not listed or detected , you can manually configure it by editing
the necessary files located in :
` server / custom / phone /* . lua `
For any questions or support , feel free to contact the seller of this asset for further assistance .
] ]
local phones = {
[ ' qs-smartphone-pro ' ] = ' qs-smartphone-pro ' ,
[ ' qs-smartphone ' ] = ' qs-smartphone ' ,
[ ' lb-phone ' ] = ' lb-phone ' ,
[ ' gksphone ' ] = ' gksphone ' ,
[ ' okokPhone ' ] = ' okokPhone ' ,
[ ' roadphone ' ] = ' roadphone '
}
Config.Phone = dependencyCheck ( phones ) or ' default '
--[[
Wardrobe System Integration :
This function is responsible for the automated configuration of the wardrobe system ,
detecting which wardrobe system is currently in use on your server and setting it
automatically for this asset .
If your wardrobe system is not detected or listed here , you can manually configure it
by editing the relevant files located in :
` client / custom / wardrobe /* . lua `
If you have any questions or need assistance , please contact the seller of your asset for support .
] ]
local wardrobes = {
[ ' qs-appearance ' ] = ' qs-appearance ' ,
[ ' qb-clothing ' ] = ' qb-clothing ' ,
[ ' codem-appearance ' ] = ' codem-appearance ' ,
[ ' ak47_clothing ' ] = ' ak47_clothing ' ,
[ ' fivem-appearance ' ] = ' fivem-appearance ' ,
[ ' illenium-appearance ' ] = ' illenium-appearance ' ,
[ ' raid_clothes ' ] = ' raid_clothes ' ,
[ ' rcore_clothes ' ] = ' rcore_clothes ' ,
[ ' rcore_clothing ' ] = ' rcore_clothing ' ,
[ ' sleek-clothestore ' ] = ' sleek-clothestore ' ,
[ ' tgiann-clothing ' ] = ' tgiann-clothing ' ,
}
Config.Wardrobe = dependencyCheck ( wardrobes ) or ' default '
--[[
Garage System Configuration :
This function handles the automatic configuration of the garage system on the server .
If your server does not use a compatible garage system , or if you haven ' t created
a compatible custom garage system in the server files , the option to use garages
will automatically be disabled .
To enable garages , you can create or configure a compatible system by editing the files located in :
` server / custom / garage /* . lua `
If you have any questions or need help configuring your garage system , contact the seller
of your asset for further assistance .
] ]
local garages = {
[ ' qb-garages ' ] = ' qb-garages ' ,
[ ' qs-advancedgarages ' ] = ' qs-advancedgarages ' ,
[ ' jg-advancedgarages ' ] = ' jg-advancedgarages ' ,
[ ' cd_garage ' ] = ' cd_garage ' ,
[ ' okokGarage ' ] = ' okokGarage ' ,
[ ' loaf_garage ' ] = ' loaf_garage ' ,
[ ' rcore_garage ' ] = ' rcore_garage ' ,
[ ' zerio-garage ' ] = ' zerio-garage ' ,
[ ' codem-garage ' ] = ' codem-garage ' ,
[ ' ak47_garage ' ] = ' ak47_garage ' ,
[ ' ak47_qb_garage ' ] = ' ak47_qb_garage ' ,
[ ' vms_garagesv2 ' ] = ' vms_garagesv2 ' ,
[ ' cs-garages ' ] = ' cs-garages ' ,
[ ' msk_garage ' ] = ' msk_garage ' ,
[ ' RxGarages ' ] = ' RxGarages '
}
Config.Garage = dependencyCheck ( garages ) or ' standalone '
--[[
General Configuration Overview :
This section outlines the basic and advanced settings for the asset . It allows you to customize
key elements such as the use of a targeting system ( qb - target or ox_target ) , property upgrades
( like security systems ) , and house creation jobs . It also provides options to manage the
currency format , house ownership limits , and the in - game menus for interacting with houses .
You can adjust these settings to fit your server ' s needs, whether it ' s tweaking commissions ,
limiting the number of houses a player can own , or enabling / disabling the sales board .
] ]
Config.NeedToBeInsidePoints = {
[ ' customHouse ' ] = false ,
[ ' shell ' ] = false -- Force shell to be inside of the poly points
}
Config.UseTarget = false -- Set true/false (only qb-target or ox_target)
Config.TargetLength = 5.0
Config.TargetWidth = 5.0
Config.Upgrades = {
{
name = ' alarm ' ,
title = ' Security Alarm ' ,
price = 10000 ,
icon = ' alarmImage '
} ,
{
name = ' camera ' ,
title = ' Security Cameras ' ,
price = 35000 ,
icon = ' cameraImage '
} ,
{
name = ' sensor ' ,
title = ' Motion Sensor ' ,
price = 45000 ,
icon = ' motionImage '
} ,
{
name = ' vault ' ,
title = ' Vault Lock ' ,
price = 50000 ,
icon = ' vaultImage '
}
}
2025-06-10 19:52:58 +02:00
Config.Society = ' esx_society ' -- select you society: ('none','esx_society','ap-government','esx_society','qb-management','qb-banking','qs-banking','renewed-banking','okokbanking','zpx-banking', 'tgg-banking', 'crm-banking')
2025-06-09 23:54:46 +02:00
Config.SocietyCommision = 0.3 -- Percentage of the commission for the company (%30 of house price)
-- Taxes configuration
Config.BankFee = function ( price ) return price / 100 * 10 end
Config.BrokerFee = function ( price ) return price / 100 * 5 end
Config.Taxes = function ( price ) return price / 100 * 5 end
Config.UseMathCeilOnFees = true
Config.CreatorJobs = { -- Choose the jobs suitable for creating houses
' realestate ' ,
2025-06-10 19:52:58 +02:00
' police ' ,
2025-06-09 23:54:46 +02:00
' realestatejob '
}
Config.TestRemTime = 1 -- Visiting time inside the house (1 = 1 minute)
Config.MinZOffset = 30 -- Minimum shell spawn offset
Config.CreatorAlpha = 200 -- Ignore this if you don't want to edit the Alpha
Config.SignTextScale = 0.6 -- Sale poster text size
Config.TimeInterior = 23 -- This is the time it will be when entering the shells (to avoid alternating shadows)
Config.HideOwnedHouses = false -- Hide owned houses from the map
Config.GroupBlips = false -- Hide address on the blips (Short blips)
Config.MaxOwnedHouses = 15 -- Limit of houses per player (5 default)
Config.SellObjectCommision = 0.3 -- Commission that will be charged when selling a piece of furniture
Config.EnableBoard = true -- Enable or disable the sales board
Config.BoardObject = ' qs_salesign_01 ' -- House for sale sign prop (edit it for another one if you want)
Config.BoardSpawnDistance = 35.0
Config.UseDrawTextOnBoard = true -- Use DrawText3D on the sales board
Config.MaxApartmentCount = 50 -- Maximum number of apartments per house (Remember that every apartment is a house, so make sure you keep this at a low value so that it doesn't adversely affect the performance of your server.)
Config.DefaultLightIntensity = 20.0
Config.MaxVaultCodes = 3 -- Select the number of vaults that each home can have
Config.MinPointLength = 70.0 -- Minimum length of the poly points
-- Your currency symbol (https://www.telerik.com/blogs/javascript-intl-object)
Config.Intl = {
locales = ' en-US ' , -- 'en-US', 'pt-BR', 'es-ES', 'fr-FR', 'de-DE', 'ru-RU', 'zh-CN'
options = {
style = ' currency ' , -- 'decimal', 'currency', 'percent', 'unit'
currency = ' USD ' , -- 'USD', 'EUR', 'BRL', 'RUB', 'CNY'
minimumFractionDigits = 0 -- 0, 1, 2, 3, 4, 5
}
}
Config.Blip = {
forSale = {
enabled = true ,
} ,
owned = {
enabled = true ,
color = 3
} ,
ownedOther = {
enabled = true ,
color = 3
} ,
officialOwned = { -- When put the rent the house you are official owner of the house
enabled = true ,
color = 2
} ,
rentable = {
enabled = true ,
color = 5
} ,
purchasable = {
enabled = true ,
color = 4
}
}
Config.DisableAllHouseBlips = false -- Disable all blips on the map
Config.OpenHouseMenu = ' F3 ' -- Key to open the internal menu of the home
Config.OpenJobMenu = ' F7 ' -- Key to open the house creation menu
Config.DisableBuyableDecorationFromF3 = false -- Disable the purchase of decorations from the F3 menu (stonks for ikea)
--[[
Illegal System Configuration :
This section handles the configuration for the illegal system in the asset .
Make sure to carefully control this to avoid breaking the in - game economy
or disrupting player systems .
It is recommended to use mini - game scripts as part of the illegal system ' s operation.
You can find more details and the necessary dependencies for these scripts in the
documentation under the ' dependencies ' section .
] ]
2025-06-10 19:52:58 +02:00
Config.RequiredCop = 0 -- Number of police required (only for lockpicking)
2025-06-09 23:54:46 +02:00
Config.PoliceJobs = { -- Jobs that will be considered police
' realestate ' ,
' police ' ,
' realestatejob '
}
Config.EnableRobbery = true -- Enable or disable the usable item to initiate robberies
Config.EnableRaid = true -- Enable or disable the usable item to initiate raids
Config.RobberyItem = ' lockpick ' -- Item to start the robbery of houses
Config.StomRamItem = ' police_stormram ' -- Item to begin the search of a house
--[[
Rental and Mortgage System Configuration :
This section is dedicated to configuring the rental system for homes ,
including how the rental process works and the duration of rental agreements .
It also handles the configuration of credit times for players purchasing homes through
mortgages , allowing you to set repayment schedules and terms .
Customize these settings to ensure the rental and mortgage system fits the economy
and gameplay style of your server .
] ]
Config.CreditEnable = true -- Enable or disable the mortgage option in the house contract.
Config.CreditEq = 0.3 -- Collection percentage for bank loans (default 0.3)
Config.CreditTime = 5 -- Time interval to collect bank credit (5 = 5 minutes)
Config.HireRenterCommand = ' hireRenter ' -- Command for the administrator to expel a tenant from the property (force eviction)
Config.RentTime = 5 -- Time interval to collect rent (5 = 5 minutes)
Config.EnableRentable = true -- Enable or disable the rental system
Config.CreatedRentableHousesManageable = false -- If you set this to false, realestate cannot cancel the lease or expel players.
--[[
Decoration and Stash Configuration :
This section allows you to configure the decoration and stash settings for each house .
You can specify whether only the owner of the house can decorate it , or if anyone
with keys has permission to do so . Additionally , this section manages the basic stash
system for each home , allowing for personal storage .
Adjust these settings based on the level of access you want to give to other players
who have access to the house .
] ]
Config.SpawnDistance = 100.0 -- Distance in meters for spawning related objects/entities
Config.MaximumDistanceForDecorate = 350.0
Config.DecorateOnlyAccessForOwner = true -- Can anyone with a key decorate or only the owner?
Config.HideRadarInDecorate = true -- Disable radar in decorations?
Config.ModernDecorateMode = true -- Use the old keyboard and mouse decoration system (if you use true, you will use the modern method)
Config.DefaultStashData = {
maxweight = 1000000 ,
slots = 30 ,
}
Config.Music = ' building ' -- You can set false if you don't want music
Config.MusicVolume = 0.01 -- Choose a volume for the songs
Config.HandleHud = {
enable = function ( )
Debug ( ' Enable hud triggered ' )
-- Enable your hud
end ,
disable = function ( )
Debug ( ' Disable hud triggered ' )
-- Disable your hud
end
}
--[[
Shell and 3 D Model Configuration :
This section is dedicated to configuring the shells ( interior models ) and 3 D props
used for house creation . You can define the props you want to use or specify the
shell models in this configuration . There is no limit to the number of shells or models
you can add to this list .
If you ' re looking for additional shells, we recommend visiting our trusted partner at
https : // www.k4mb1maps . com , known for providing some of the best FiveM shells .
Feel free to expand this list as needed to fit your server ' s requirements.
] ]
Config.Shells = {
[ 1 ] = {
model = ' standardmotel_shell ' ,
stash = {
maxweight = 1000000 ,
slots = 5 ,
} ,
-- imgs = {
-- {
-- url = 'Add imagen here (optional, is only for future dlcs)',
-- label = 'Name room',
-- },
-- }
} ,
[ 2 ] = {
model = ' modernhotel_shell ' ,
stash = {
maxweight = 1000000 ,
slots = 5 ,
} ,
-- imgs = {
-- {
-- url = 'Add imagen here (optional, is only for future dlcs)',
-- label = 'Name room',
-- },
-- },
} ,
[ 3 ] = {
model = ' furnitured_midapart ' ,
stash = {
maxweight = 1000000 ,
slots = 5 ,
} ,
-- imgs = {
-- {
-- url = 'Add imagen here (optional, is only for future dlcs)',
-- label = 'Name room',
-- },
-- },
} ,
[ 4 ] = {
model = ' shell_garagem ' ,
stash = {
maxweight = 1000000 ,
slots = 5 ,
} ,
-- imgs = {
-- {
-- url = 'Add imagen here (optional, is only for future dlcs)',
-- label = 'Name room',
-- },
-- },
} ,
[ 5 ] = {
model = ' shell_office1 ' ,
stash = {
maxweight = 1000000 ,
slots = 5 ,
} ,
-- imgs = {
-- {
-- url = 'Add imagen here (optional, is only for future dlcs)',
-- label = 'Name room',
-- },
-- },
} ,
[ 6 ] = {
model = ' shell_store1 ' ,
stash = {
maxweight = 1000000 ,
slots = 5 ,
} ,
-- imgs = {
-- {
-- url = 'Add imagen here (optional, is only for future dlcs)',
-- label = 'Name room',
-- },
-- },
} ,
[ 7 ] = {
model = ' shell_warehouse1 ' ,
stash = {
maxweight = 1000000 ,
slots = 5 ,
} ,
-- imgs = {
-- {
-- url = 'Add imagen here (optional, is only for future dlcs)',
-- label = 'Name room',
-- },
-- },
} ,
[ 8 ] = {
model = ' container_shell ' ,
stash = {
maxweight = 1000000 ,
slots = 5 ,
} ,
-- imgs = {
-- {
-- url = 'Add imagen here (optional, is only for future dlcs)',
-- label = 'Name room',
-- },
-- },
} ,
[ 9 ] = {
model = ' shell_michael ' ,
stash = {
maxweight = 1000000 ,
slots = 5 ,
} ,
-- imgs = {
-- {
-- url = 'Add imagen here (optional, is only for future dlcs)',
-- label = 'Name room',
-- },
-- },
} ,
[ 10 ] = {
model = ' shell_frankaunt ' ,
stash = {
maxweight = 1000000 ,
slots = 5 ,
} ,
-- imgs = {
-- {
-- url = 'Add imagen here (optional, is only for future dlcs)',
-- label = 'Name room',
-- },
-- },
} ,
[ 11 ] = {
model = ' shell_ranch ' ,
stash = {
maxweight = 1000000 ,
slots = 5 ,
} ,
-- imgs = {
-- {
-- url = 'Add imagen here (optional, is only for future dlcs)',
-- label = 'Name room',
-- },
-- },
} ,
[ 12 ] = {
model = ' shell_trailer ' ,
stash = {
maxweight = 1000000 ,
slots = 5 ,
} ,
-- imgs = {
-- {
-- url = 'Add imagen here (optional, is only for future dlcs)',
-- label = 'Name room',
-- },
-- },
} ,
[ 13 ] = {
model = ' shell_lester ' ,
stash = {
maxweight = 1000000 ,
slots = 5 ,
} ,
-- imgs = {
-- {
-- url = 'Add imagen here (optional, is only for future dlcs)',
-- label = 'Name room',
-- },
-- },
} ,
[ 14 ] = {
model = ' shell_v16mid ' ,
stash = {
maxweight = 1000000 ,
slots = 5 ,
} ,
-- imgs = {
-- {
-- url = 'Add imagen here (optional, is only for future dlcs)',
-- label = 'Name room',
-- },
-- },
} ,
[ 15 ] = {
model = ' shell_trevor ' ,
stash = {
maxweight = 1000000 ,
slots = 5 ,
} ,
-- imgs = {
-- {
-- url = 'Add imagen here (optional, is only for future dlcs)',
-- label = 'Name room',
-- },
-- },
} ,
[ 16 ] = {
model = ' shell_v16low ' ,
stash = {
maxweight = 1000000 ,
slots = 5 ,
} ,
-- imgs = {
-- {
-- url = 'Add imagen here (optional, is only for future dlcs)',
-- label = 'Name room',
-- },
-- },
} ,
}
Config.MInsurance = GetResourceState ( ' m-insurance ' ) == ' started '
exports ( ' getShells ' , function ( )
return Config.Shells
end )
Config.HouseObjects = {
[ 1 ] = { -- House 1
model = ' lf_house_04_ ' ,
} ,
[ 2 ] = { -- House 2
model = ' lf_house_05_ ' ,
} ,
[ 3 ] = { -- House 3
model = ' lf_house_07_ ' ,
} ,
[ 4 ] = { -- House 4
model = ' lf_house_08_ ' ,
} ,
[ 5 ] = { -- House 5
model = ' lf_house_09_ ' ,
} ,
[ 6 ] = { -- House 6
model = ' lf_house_10_ ' ,
} ,
[ 7 ] = { -- House 7
model = ' lf_house_11_ ' ,
} ,
[ 8 ] = { -- House 8
model = ' lf_house_13_ ' ,
} ,
[ 9 ] = { -- House 9
model = ' lf_house_15_ ' ,
} ,
[ 10 ] = { -- House 10
model = ' lf_house_16_ ' ,
} ,
[ 11 ] = { -- House 11
model = ' lf_house_17_ ' ,
} ,
[ 12 ] = { -- House 12
model = ' lf_house_18_ ' ,
} ,
[ 13 ] = { -- House 13
model = ' lf_house_19_ ' ,
} ,
[ 14 ] = { -- House 14
model = ' lf_house_20_ ' ,
} ,
}
Config.Islands = {
[ 1 ] = { -- Island 1
model = ' qs_pineisland_01 ' ,
} ,
[ 2 ] = { -- Island 2
model = ' qs_pineisland_02 ' ,
} ,
[ 3 ] = { -- Island 3
model = ' qs_pineisland_03 ' ,
} ,
[ 4 ] = { -- Island 4
model = ' qs_treeisland_01 ' ,
} ,
[ 5 ] = { -- Island 5
model = ' qs_treeisland_02 ' ,
} ,
[ 6 ] = { -- Island 6
model = ' qs_treeisland_03 ' ,
} ,
[ 7 ] = { -- Island 7
model = ' qs_tropiisland_01 ' ,
} ,
[ 8 ] = { -- Island 8
model = ' qs_tropiisland_02 ' ,
} ,
[ 9 ] = { -- Island 9
model = ' qs_tropiisland_03 ' ,
} ,
}
Config.IplData = {
{
-- Apartment
export = function ( )
return exports [ ' bob74_ipl ' ] : GetExecApartment1Object ( )
end ,
defaultTheme = ' seductive ' ,
themes = {
{ label = ' Modern ' , value = ' modern ' , price = 500 , image = ' ./assets/img/management/themes/apartment/modern.png ' } ,
{ label = ' Moody ' , value = ' moody ' , price = 500 , image = ' ./assets/img/management/themes/apartment/moody.png ' } ,
{ label = ' Vibrant ' , value = ' vibrant ' , price = 500 , image = ' ./assets/img/management/themes/apartment/vibrant.png ' } ,
{ label = ' Monochrome ' , value = ' monochrome ' , price = 500 , image = ' ./assets/img/management/themes/apartment/monochrome.png ' } ,
{ label = ' Seductive ' , value = ' seductive ' , price = 500 , image = ' ./assets/img/management/themes/apartment/seductive.png ' } ,
{ label = ' Regal ' , value = ' regal ' , price = 500 , image = ' ./assets/img/management/themes/apartment/regal.png ' } ,
{ label = ' Aqua ' , value = ' aqua ' , price = 500 , image = ' ./assets/img/management/themes/apartment/aqua.png ' } ,
-- { label = 'Sharp', value = 'sharp', price = 500, image = './assets/img/management/themes/apartment/sharp.png' }
} ,
exitCoords = vec3 ( - 787.44 , 315.81 , 217.64 ) ,
iplCoords = vec3 ( - 787.78050000 , 334.92320000 , 215.83840000 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- Office
export = function ( )
return exports [ ' bob74_ipl ' ] : GetFinanceOffice1Object ( )
end ,
defaultTheme = ' warm ' ,
themes = {
{ label = ' Warm ' , value = ' warm ' , price = 500 , image = ' ./assets/img/management/themes/office/warm.png ' } ,
{ label = ' Classical ' , value = ' classical ' , price = 500 , image = ' ./assets/img/management/themes/office/classical.png ' } ,
{ label = ' Vintage ' , value = ' vintage ' , price = 500 , image = ' ./assets/img/management/themes/office/vintage.png ' } ,
{ label = ' Contrast ' , value = ' contrast ' , price = 500 , image = ' ./assets/img/management/themes/office/contrast.png ' } ,
{ label = ' Rich ' , value = ' rich ' , price = 500 , image = ' ./assets/img/management/themes/office/rich.png ' } ,
{ label = ' Cool ' , value = ' cool ' , price = 500 , image = ' ./assets/img/management/themes/office/cool.png ' } ,
{ label = ' Ice ' , value = ' ice ' , price = 500 , image = ' ./assets/img/management/themes/office/ice.png ' } ,
{ label = ' Conservative ' , value = ' conservative ' , price = 500 , image = ' ./assets/img/management/themes/office/conservative.png ' } ,
{ label = ' Polished ' , value = ' polished ' , price = 500 , image = ' ./assets/img/management/themes/office/polished.png ' }
} ,
exitCoords = vec3 ( - 141.1987 , - 620.913 , 168.8205 ) ,
iplCoords = vec3 ( - 141.1987 , - 620.913 , 168.8205 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- Night Club
exitCoords = vec3 ( - 1569.402222 , - 3017.604492 , - 74.413940 ) ,
iplCoords = vec3 ( - 1604.664 , - 3012.583 , - 78.000 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- Clubhouse 1
exitCoords = vec3 ( 1121.037354 , - 3152.782471 , - 37.074707 ) ,
iplCoords = vec3 ( 1107.04 , - 3157.399 , - 37.51859 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- Clubhouse 2
exitCoords = vec3 ( 997.028564 , - 3158.136230 , - 38.911377 ) ,
iplCoords = vec3 ( 998.4809 , - 3164.711 , - 38.90733 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- Cocaine Lab
exitCoords = vec3 ( 1088.703247 , - 3187.463623 , - 38.995605 ) ,
iplCoords = vec3 ( 1093.6 , - 3196.6 , - 38.99841 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- Meth Lab
exitCoords = vec3 ( 996.896729 , - 3200.914307 , - 36.400757 ) ,
iplCoords = vec3 ( 1009.5 , - 3196.6 , - 38.99682 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- Weed Lab
exitCoords = vec3 ( 1066.298950 , - 3183.586914 , - 39.164062 ) ,
iplCoords = vec3 ( 1056.975830 , - 3194.571533 , - 39.164062 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- Counterfeit Cash Factory
exitCoords = vec3 ( 1138.101074 , - 3199.107666 , - 39.669556 ) ,
iplCoords = vec3 ( 1121.897 , - 3195.338 , - 40.4025 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- Document Forgery
exitCoords = vec3 ( 1173.7 , - 3196.73 , - 39.01 ) ,
iplCoords = vec3 ( 1165 , - 3196.6 , - 39.01306 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- Penthouse Casino
exitCoords = vec3 ( 980.83 , 56.51 , 116.16 ) ,
iplCoords = vec3 ( 976.636 , 70.295 , 115.164 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- NightClub Warehouse
exitCoords = vec3 ( - 1520.88 , - 2978.54 , - 80.45 ) ,
iplCoords = vec3 ( - 1505.783 , - 3012.587 , - 80.000 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- 2 Car
exitCoords = vec3 ( 179.15 , - 1000.15 , - 99.0 ) ,
iplCoords = vec3 ( 173.2903 , - 1003.6 , - 99.65707 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- 6 Car
exitCoords = vec3 ( 212.4 , - 998.97 , - 99.0 ) ,
iplCoords = vec3 ( 197.8153 , - 1002.293 , - 99.65749 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- 10 Car
exitCoords = vec3 ( 240.67 , - 1004.69 , - 99.0 ) ,
iplCoords = vec3 ( 229.9559 , - 981.7928 , - 99.66071 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- Casino NightClub
exitCoords = vec3 ( 1545.57 , 254.22 , - 46.01 ) ,
iplCoords = vec3 ( 1550.0 , 250.0 , - 48.0 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- Warehouse Small
exitCoords = vec3 ( 1087.43 , - 3099.48 , - 39.0 ) ,
iplCoords = vec3 ( 1094.988 , - 3101.776 , - 39.00363 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- Warehouse Medium
exitCoords = vec3 ( 1048.12 , - 3097.28 , - 39.0 ) ,
iplCoords = vec3 ( 1056.486 , - 3105.724 , - 39.00439 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- Warehouse Large
exitCoords = vec3 ( 992.38 , - 3098.08 , - 39.0 ) ,
iplCoords = vec3 ( 1006.967 , - 3102.079 , - 39.0035 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- Vehicle Warehouse
exitCoords = vec3 ( 956.12 , - 2987.24 , - 39.65 ) ,
iplCoords = vec3 ( 994.5925 , - 3002.594 , - 39.64699 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- Old Bunker Interior
exitCoords = vec3 ( 899.5518 , - 3246.038 , - 98.04907 ) ,
iplCoords = vec3 ( 899.5518 , - 3246.038 , - 98.04907 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- Arcadius Garage 1
exitCoords = vec3 ( - 198.666 , - 580.515 , 136.00 ) ,
iplCoords = vec3 ( - 191.0133 , - 579.1428 , 135.0000 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- Arcadius Mod Shop
exitCoords = vec3 ( - 139.388 , - 587.917 , 167.00 ) ,
iplCoords = vec3 ( - 146.6166 , - 596.6301 , 166.0000 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- 2133 Mad Wayne Thunder
exitCoords = vec3 ( - 1289.89 , 449.83 , 97.9 ) ,
iplCoords = vec3 ( - 1288 , 440.748 , 97.69459 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- 2868 Hillcrest Avenue
exitCoords = vec3 ( - 753.04 , 618.82 , 144.14 ) ,
iplCoords = vec3 ( - 763.107 , 615.906 , 144.1401 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- EclipseTowers, Apt 3
exitCoords = vec3 ( - 785.12 , 323.75 , 212.0 ) ,
iplCoords = vec3 ( - 773.407 , 341.766 , 211.397 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
} ,
{
-- Dell Perro Heights, Apt 7
exitCoords = vec3 ( - 1453.86 , - 517.64 , 56.93 ) ,
iplCoords = vec3 ( - 1477.14 , - 538.7499 , 55.5264 ) ,
stash = {
maxweight = 1000000 ,
slots = 10 ,
} ,
}
}
--[[
This script sets up a construction system for a FiveM server . It allows you to create interactive construction zones with NPCs working on them .
1. ** Config.Construction ** : Enables or disables the construction system .
2. ** Config.Constructions ** : A table of defined construction projects . Each entry includes :
- ** duration ** : Time in milliseconds for the construction to complete ( e.g . , 60 seconds here ) .
- ** model ** : Temporary construction model that replaces the final model during the building phase .
- ** peds ** : A list of NPCs with their models , positions , headings , and animations to simulate workers .
] ]
Config.Construction = false -- Enable constructión timer/animations?
---@type table<string, Construction>
Config.Constructions = {
[ ' lf_house_04_ ' ] = {
duration = 10 * 60 , -- 1 minute
model = ' prop_pighouse2 ' , -- Construction model. When construction is done it will be change with original model
peds = { -- Your ped offsets you can add whatever you want
{
model = ' s_m_m_dockwork_01 ' ,
offsets = vec3 ( 0.0 , 0.3 , 0.0 ) ,
heading = 65.54 ,
anim = ' base ' ,
dict = ' anim@amb@office@boardroom@boss@male@ ' ,
} ,
{
model = ' s_m_m_gardener_01 ' ,
offsets = vec3 ( 1.0 , 2.0 , 0.0 ) ,
heading = 179.27 ,
anim = ' idle_a ' ,
dict = ' amb@world_human_picnic@female@idle_a ' ,
}
}
} ,
[ ' lf_house_05_ ' ] = {
duration = 10 * 60 ,
model = ' prop_pighouse2 ' ,
peds = {
{
model = ' s_m_m_dockwork_01 ' ,
offsets = vec3 ( 0.0 , 0.3 , 0.0 ) ,
heading = 65.54 ,
anim = ' base ' ,
dict = ' anim@amb@office@boardroom@boss@male@ ' ,
} ,
{
model = ' s_m_m_gardener_01 ' ,
offsets = vec3 ( 1.0 , 2.0 , 0.0 ) ,
heading = 179.27 ,
anim = ' idle_a ' ,
dict = ' amb@world_human_picnic@female@idle_a ' ,
}
}
} ,
[ ' lf_house_07_ ' ] = {
duration = 10 * 60 ,
model = ' prop_pighouse2 ' ,
peds = {
{
model = ' s_m_m_dockwork_01 ' ,
offsets = vec3 ( 0.0 , 0.3 , 0.0 ) ,
heading = 65.54 ,
anim = ' base ' ,
dict = ' anim@amb@office@boardroom@boss@male@ ' ,
} ,
{
model = ' s_m_m_gardener_01 ' ,
offsets = vec3 ( 1.0 , 2.0 , 0.0 ) ,
heading = 179.27 ,
anim = ' idle_a ' ,
dict = ' amb@world_human_picnic@female@idle_a ' ,
}
}
} ,
[ ' lf_house_08_ ' ] = {
duration = 10 * 60 ,
model = ' prop_pighouse2 ' ,
peds = {
{
model = ' s_m_m_dockwork_01 ' ,
offsets = vec3 ( 0.0 , 0.3 , 0.0 ) ,
heading = 65.54 ,
anim = ' base ' ,
dict = ' anim@amb@office@boardroom@boss@male@ ' ,
} ,
{
model = ' s_m_m_gardener_01 ' ,
offsets = vec3 ( 1.0 , 2.0 , 0.0 ) ,
heading = 179.27 ,
anim = ' idle_a ' ,
dict = ' amb@world_human_picnic@female@idle_a ' ,
}
}
} ,
[ ' lf_house_09_ ' ] = {
duration = 10 * 60 ,
model = ' prop_pighouse2 ' ,
peds = {
{
model = ' s_m_m_dockwork_01 ' ,
offsets = vec3 ( 0.0 , 0.3 , 0.0 ) ,
heading = 65.54 ,
anim = ' base ' ,
dict = ' anim@amb@office@boardroom@boss@male@ ' ,
} ,
{
model = ' s_m_m_gardener_01 ' ,
offsets = vec3 ( 1.0 , 2.0 , 0.0 ) ,
heading = 179.27 ,
anim = ' idle_a ' ,
dict = ' amb@world_human_picnic@female@idle_a ' ,
}
}
} ,
[ ' lf_house_10_ ' ] = {
duration = 10 * 60 ,
model = ' prop_pighouse2 ' ,
peds = {
{
model = ' s_m_m_dockwork_01 ' ,
offsets = vec3 ( 0.0 , 0.3 , 0.0 ) ,
heading = 65.54 ,
anim = ' base ' ,
dict = ' anim@amb@office@boardroom@boss@male@ ' ,
} ,
{
model = ' s_m_m_gardener_01 ' ,
offsets = vec3 ( 1.0 , 2.0 , 0.0 ) ,
heading = 179.27 ,
anim = ' idle_a ' ,
dict = ' amb@world_human_picnic@female@idle_a ' ,
}
}
} ,
[ ' lf_house_11_ ' ] = {
duration = 10 * 60 ,
model = ' prop_pighouse2 ' ,
peds = {
{
model = ' s_m_m_dockwork_01 ' ,
offsets = vec3 ( 0.0 , 0.3 , 0.0 ) ,
heading = 65.54 ,
anim = ' base ' ,
dict = ' anim@amb@office@boardroom@boss@male@ ' ,
} ,
{
model = ' s_m_m_gardener_01 ' ,
offsets = vec3 ( 1.0 , 2.0 , 0.0 ) ,
heading = 179.27 ,
anim = ' idle_a ' ,
dict = ' amb@world_human_picnic@female@idle_a ' ,
}
}
} ,
[ ' lf_house_13_ ' ] = {
duration = 10 * 60 ,
model = ' prop_pighouse2 ' ,
peds = {
{
model = ' s_m_m_dockwork_01 ' ,
offsets = vec3 ( 0.0 , 0.3 , 0.0 ) ,
heading = 65.54 ,
anim = ' base ' ,
dict = ' anim@amb@office@boardroom@boss@male@ ' ,
} ,
{
model = ' s_m_m_gardener_01 ' ,
offsets = vec3 ( 1.0 , 2.0 , 0.0 ) ,
heading = 179.27 ,
anim = ' idle_a ' ,
dict = ' amb@world_human_picnic@female@idle_a ' ,
}
}
} ,
[ ' lf_house_15_ ' ] = {
duration = 10 * 60 ,
model = ' prop_pighouse2 ' ,
peds = {
{
model = ' s_m_m_dockwork_01 ' ,
offsets = vec3 ( 0.0 , 0.3 , 0.0 ) ,
heading = 65.54 ,
anim = ' base ' ,
dict = ' anim@amb@office@boardroom@boss@male@ ' ,
} ,
{
model = ' s_m_m_gardener_01 ' ,
offsets = vec3 ( 1.0 , 2.0 , 0.0 ) ,
heading = 179.27 ,
anim = ' idle_a ' ,
dict = ' amb@world_human_picnic@female@idle_a ' ,
}
}
} ,
[ ' lf_house_16_ ' ] = {
duration = 10 * 60 ,
model = ' prop_pighouse2 ' ,
peds = {
{
model = ' s_m_m_dockwork_01 ' ,
offsets = vec3 ( 0.0 , 0.3 , 0.0 ) ,
heading = 65.54 ,
anim = ' base ' ,
dict = ' anim@amb@office@boardroom@boss@male@ ' ,
} ,
{
model = ' s_m_m_gardener_01 ' ,
offsets = vec3 ( 1.0 , 2.0 , 0.0 ) ,
heading = 179.27 ,
anim = ' idle_a ' ,
dict = ' amb@world_human_picnic@female@idle_a ' ,
}
}
} ,
[ ' lf_house_17_ ' ] = {
duration = 10 * 60 ,
model = ' prop_pighouse2 ' ,
peds = {
{
model = ' s_m_m_dockwork_01 ' ,
offsets = vec3 ( 0.0 , 0.3 , 0.0 ) ,
heading = 65.54 ,
anim = ' base ' ,
dict = ' anim@amb@office@boardroom@boss@male@ ' ,
} ,
{
model = ' s_m_m_gardener_01 ' ,
offsets = vec3 ( 1.0 , 2.0 , 0.0 ) ,
heading = 179.27 ,
anim = ' idle_a ' ,
dict = ' amb@world_human_picnic@female@idle_a ' ,
}
}
} ,
[ ' lf_house_18_ ' ] = {
duration = 10 * 60 ,
model = ' prop_pighouse2 ' ,
peds = {
{
model = ' s_m_m_dockwork_01 ' ,
offsets = vec3 ( 0.0 , 0.3 , 0.0 ) ,
heading = 65.54 ,
anim = ' base ' ,
dict = ' anim@amb@office@boardroom@boss@male@ ' ,
} ,
{
model = ' s_m_m_gardener_01 ' ,
offsets = vec3 ( 1.0 , 2.0 , 0.0 ) ,
heading = 179.27 ,
anim = ' idle_a ' ,
dict = ' amb@world_human_picnic@female@idle_a ' ,
}
}
} ,
[ ' lf_house_19_ ' ] = {
duration = 10 * 60 ,
model = ' prop_pighouse2 ' ,
peds = {
{
model = ' s_m_m_dockwork_01 ' ,
offsets = vec3 ( 0.0 , 0.3 , 0.0 ) ,
heading = 65.54 ,
anim = ' base ' ,
dict = ' anim@amb@office@boardroom@boss@male@ ' ,
} ,
{
model = ' s_m_m_gardener_01 ' ,
offsets = vec3 ( 1.0 , 2.0 , 0.0 ) ,
heading = 179.27 ,
anim = ' idle_a ' ,
dict = ' amb@world_human_picnic@female@idle_a ' ,
}
}
} ,
[ ' lf_house_20_ ' ] = {
duration = 10 * 60 ,
model = ' prop_pighouse2 ' ,
peds = {
{
model = ' s_m_m_dockwork_01 ' ,
offsets = vec3 ( 0.0 , 0.3 , 0.0 ) ,
heading = 65.54 ,
anim = ' base ' ,
dict = ' anim@amb@office@boardroom@boss@male@ ' ,
} ,
{
model = ' s_m_m_gardener_01 ' ,
offsets = vec3 ( 1.0 , 2.0 , 0.0 ) ,
heading = 179.27 ,
anim = ' idle_a ' ,
dict = ' amb@world_human_picnic@female@idle_a ' ,
}
}
} ,
}
--[[
Shell / IPL / MLO General Controls Configuration :
This section allows you to configure the general controls and language settings
when modifying or creating shells , IPL ( Interior Proxy Library ) , or MLO ( Map Loaded Object ) models .
You can adjust these controls to your preference , ensuring smooth operation when
handling interiors and models in your server .
Make sure to configure these settings carefully , as they will determine how you
interact with and customize interiors within the game .
] ]
ActionControls = {
forward = {
label = ' Forward +/- ' ,
codes = { 33 , 32 }
} ,
right = {
label = ' Right +/- ' ,
codes = { 35 , 34 }
} ,
up = {
label = ' Up +/- ' ,
codes = { 52 , 51 }
} ,
add_point = {
label = ' Add Point ' ,
codes = { 24 }
} ,
set_any = {
label = ' Set ' ,
codes = { 24 }
} ,
undo_point = {
label = ' Undo Last ' ,
codes = { 25 }
} ,
set_position = {
label = ' Set Position ' ,
codes = { 24 }
} ,
add_garage = {
label = ' Add Garage ' ,
codes = { 24 }
} ,
rotate_z = {
label = ' RotateZ +/- ' ,
codes = { 20 , 73 }
} ,
rotate_z_scroll = {
label = ' RotateZ +/- ' ,
codes = { 17 , 16 }
} ,
increase_z = {
label = ' Z Boundary +/- ' ,
codes = { 180 , 181 }
} ,
decrease_z = {
label = ' Z Boundary +/- ' ,
codes = { 21 , 180 , 181 }
} ,
done = {
label = ' Done ' ,
codes = { 191 }
} ,
change_player = {
label = ' Player +/- ' ,
codes = { 82 , 81 }
} ,
change_shell = {
label = ' Change Shell +/- ' ,
codes = { 189 , 190 }
} ,
select_player = {
label = ' Select Player ' ,
codes = { 191 }
} ,
cancel = {
label = ' Cancel ' ,
codes = { 194 }
} ,
change_outfit = {
label = ' Outfit +/- ' ,
codes = { 82 , 81 }
} ,
delete_outfit = {
label = ' Delete Outfit ' ,
codes = { 178 }
} ,
select_vehicle = {
label = ' Vehicle +/- ' ,
codes = { 82 , 81 }
} ,
spawn_vehicle = {
label = ' Spawn Vehicle ' ,
codes = { 191 }
} ,
leftApt = {
label = ' Previous Apartment ' ,
codes = { 174 }
} ,
rightApt = {
label = ' Next Apartment ' ,
codes = { 175 }
} ,
testPos = {
label = ' Test Pos ' ,
codes = { 47 }
} ,
}
Config.DoorDistance = 1.5 -- Distance to interact with doors
Config.DoorDuplicateDistance = 3.0 -- If door is closest by this distance it will be one door
Config.DynamicDoors = true -- Enable dynamic doors? needs `setr game_enableDynamicDoorCreation "true"`
Config.CreditToggleActiveInDefault = false -- Enable credit toggle active in default
CameraOptions = {
lookSpeedX = 500.0 ,
lookSpeedY = 500.0 ,
moveSpeed = 10.0 ,
climbSpeed = 10.0 ,
rotateSpeed = 50.0 ,
}
--[[
Custom House Creation Configuration :
This section allows you to manually create custom houses directly through the configuration
files without using the in - game creation system . This option is more complex and is recommended
only for experienced developers who are familiar with server - side modifications .
If you are not an experienced developer , we strongly advise using the in - game F7 menu
and the appropriate job role for creating and managing houses .
Manual configuration should only be done if you understand the process well to avoid issues .
] ]
CreatingHouse = { }
Config.Houses = {
-- ['Test House'] = {
-- owned = 0,
-- price = 0,
-- locked = true,
-- address = 'Nikola p1',
-- tier = 1,
-- coords = {
-- enter = {
-- ['z'] = 71.46570587158203,
-- ['h'] = 311.8609924316406,
-- ['x'] = 1303.005859375,
-- ['y'] = -527.4683837890625
-- },
-- PolyZone = {
-- thickness = 25.0,
-- usePolyZone = true,
-- points = { {
-- ['x'] = 1303.5743408203125,
-- ['y'] = -500.41802978515625,
-- ['z'] = 71.0
-- }, {
-- ['x'] = 1293.0418701171875,
-- ['y'] = -537.6560668945312,
-- ['z'] = 71.0
-- }, {
-- ['x'] = 1311.5504150390625,
-- ['y'] = -544.9464721679688,
-- ['z'] = 71.0
-- }, {
-- ['x'] = 1327.7315673828125,
-- ['y'] = -498.835205078125,
-- ['z'] = 71.0
-- } }
-- },
-- cam = {
-- ['h'] = 311.8609924316406,
-- ['y'] = -527.4683837890625,
-- ['z'] = 71.46570587158203,
-- yaw = -10.0,
-- ['x'] = 1303.005859375
-- },
-- exit = {
-- ['z'] = 27.56341361999511,
-- ['h'] = 246.86099243164062,
-- ['x'] = 1264.6019287109375,
-- ['y'] = -545.8494262695312
-- },
-- interiorCoords = {
-- ['x'] = 1266.744384765625,
-- ['y'] = -544.3600463867188,
-- ['z'] = 26.55422592163086,
-- ['w'] = 311.8609924316406
-- },
-- shellCoords = {
-- ['z'] = 26.55422592163086,
-- ['h'] = 311.8609924316406,
-- ['x'] = 1266.744384765625,
-- ['y'] = -544.3600463867188
-- }
-- },
-- garage = {
-- max = 4, -- Maximum spawn point [max slot]
-- access = {},
-- slots = {
-- [1] = { -- Spawn Points
-- x = -125.64788055419922,
-- y = -1297.646728515625,
-- z = 29.44520378112793,
-- h = 93.55599975585938,
-- },
-- },
-- coords = {
-- -- Garage location
-- x = -228.8,
-- y = -990.41,
-- z = 29.34,
-- h = 267.02,
-- }
-- },
-- }
}
--[[
Free Mode Keys Configuration :
This configuration defines the key bindings for Free Mode , allowing users
to move , rotate , and manipulate objects within the environment . These keys
are mapped to specific functions to provide intuitive controls for object
placement and adjustments .
Each key binding corresponds to a particular action , such as increasing
speed , moving objects in specific directions , or rotating them for fine - tuning .
These bindings are essential for achieving precise placement and control
over objects in the environment .
Customizable Key Bindings :
- ChangeKey : Switches between different movement modes .
- Speed Adjustment : Controls the movement speed of objects .
- Directional Movement : Moves objects along the X , Y , and Z axes .
- Rotation : Rotates objects around their axes .
- Tilt : Tilts objects for angled adjustments .
- Stick to Ground : Aligns objects to the ground level .
Developers or server administrators can customize these keys to match their
preferences or to integrate seamlessly with other controls in their resource .
] ]
Keys = { [ ' ESC ' ] = 322 , [ ' F1 ' ] = 288 , [ ' F2 ' ] = 289 , [ ' F3 ' ] = 170 , [ ' F5 ' ] = 166 , [ ' F6 ' ] = 167 , [ ' F7 ' ] = 168 , [ ' F8 ' ] = 169 , [ ' F9 ' ] = 56 , [ ' F10 ' ] = 57 , [ ' ~ ' ] = 243 , [ ' 1 ' ] = 157 , [ ' 2 ' ] = 158 , [ ' 3 ' ] = 160 , [ ' 4 ' ] = 164 , [ ' 5 ' ] = 165 , [ ' 6 ' ] = 159 , [ ' 7 ' ] = 161 , [ ' 8 ' ] = 162 , [ ' 9 ' ] = 163 , [ ' - ' ] = 84 , [ ' = ' ] = 83 , [ ' BACKSPACE ' ] = 177 , [ ' TAB ' ] = 37 , [ ' Q ' ] = 44 , [ ' W ' ] = 32 , [ ' E ' ] = 38 , [ ' R ' ] = 45 , [ ' T ' ] = 245 , [ ' Y ' ] = 246 , [ ' U ' ] = 303 , [ ' P ' ] = 199 , [ ' [ ' ] = 39 , [ ' ] ' ] = 40 , [ ' ENTER ' ] = 18 , [ ' CAPS ' ] = 137 , [ ' A ' ] = 34 , [ ' S ' ] = 8 , [ ' D ' ] = 9 , [ ' F ' ] = 23 , [ ' G ' ] = 47 , [ ' H ' ] = 74 , [ ' K ' ] = 311 , [ ' L ' ] = 182 , [ ' LEFTSHIFT ' ] = 21 , [ ' Z ' ] = 20 , [ ' X ' ] = 73 , [ ' C ' ] = 26 , [ ' V ' ] = 0 , [ ' B ' ] = 29 , [ ' N ' ] = 249 , [ ' M ' ] = 244 , [ ' , ' ] = 82 , [ ' . ' ] = 81 , [ ' LEFTCTRL ' ] = 36 , [ ' LEFTALT ' ] = 19 , [ ' SPACE ' ] = 22 , [ ' RIGHTCTRL ' ] = 70 , [ ' HOME ' ] = 213 , [ ' PAGEUP ' ] = 10 , [ ' PAGEDOWN ' ] = 11 , [ ' DELETE ' ] = 178 , [ ' LEFT ' ] = 174 , [ ' RIGHT ' ] = 175 , [ ' TOP ' ] = 27 , [ ' DOWN ' ] = 173 , [ ' NENTER ' ] = 201 , [ ' N4 ' ] = 108 , [ ' N5 ' ] = 60 , [ ' N6 ' ] = 107 , [ ' N+ ' ] = 96 , [ ' N- ' ] = 97 , [ ' N7 ' ] = 117 , [ ' N8 ' ] = 61 , [ ' N9 ' ] = 118 }
Config.FreeModeKeys = {
ChangeKey = Keys [ ' LEFTCTRL ' ] ,
MoreSpeed = Keys [ ' . ' ] ,
LessSpeed = Keys [ ' , ' ] ,
MoveToTop = Keys [ ' TOP ' ] , -- Key to move the object upwards (Top Arrow)
MoveToDown = Keys [ ' DOWN ' ] , -- Key to move the object downwards (Down Arrow)
MoveToForward = Keys [ ' TOP ' ] , -- Key to move the object forward (Top Arrow)
MoveToBack = Keys [ ' DOWN ' ] , -- Key to move the object backward (Down Arrow)
MoveToRight = Keys [ ' RIGHT ' ] , -- Key to move the object to the right (Right Arrow)
MoveToLeft = Keys [ ' LEFT ' ] , -- Key to move the object to the left (Left Arrow)
RotateToTop = Keys [ ' 6 ' ] , -- Key to rotate the object to the top (Number 6)
RotateToDown = Keys [ ' 7 ' ] , -- Key to rotate the object downwards (Number 7)
RotateToLeft = Keys [ ' 8 ' ] , -- Key to rotate the object to the left (Number 8)
RotateToRight = Keys [ ' 9 ' ] , -- Key to rotate the object to the right (Number 9)
TiltToTop = Keys [ ' Z ' ] , -- Key to tilt the object to the top
TiltToDown = Keys [ ' X ' ] , -- Key to tilt the object downwards
TiltToLeft = Keys [ ' C ' ] , -- Key to tilt the object to the left
TiltToRight = Keys [ ' V ' ] , -- Key to tilt the object to the right
StickToTheGround = Keys [ ' LEFTALT ' ] , -- Key to stick the object to the ground (Left Alt)
}
--[[
Debug Mode :
This mode is designed to provide constant feedback and print information
from the system , which can be helpful for developers to understand how
the resource operates .
We do not recommend enabling debug mode unless you are a developer ,
as it will flood your console with information , but it can be valuable
for troubleshooting and understanding the inner workings of the system .
] ]
Config.Debug = true -- Enable or disable debug mode for general information and troubleshooting.
Config.ZoneDebug = false -- Enable or disable debug mode for zone-related actions and details.