forked from Simnation/Main
419 lines
No EOL
22 KiB
Lua
419 lines
No EOL
22 KiB
Lua
----------------------------------------------------------------------------------------------
|
|
-------------------------------------| BRUTAL HOUSING :) |------------------------------------
|
|
----------------------------------------------------------------------------------------------
|
|
|
|
--[[
|
|
Hi, thank you for buying our script, We are very grateful!
|
|
|
|
For help join our Discord server: https://discord.gg/85u2u5c8q9
|
|
More informations about the script: https://docs.brutalscripts.com
|
|
--]]
|
|
|
|
Config = {
|
|
Core = 'QBCORE', -- 'ESX' / 'QBCORE' | Other core setting on the 'core' folder.
|
|
VoiceSytem = 'pma-voice', -- "pma-voice" / "mumble" / "SaltyChat"
|
|
Inventory = 'qb_inventory_new', -- 'ox_inventory' / 'qb_inventory_old'/ 'qb_inventory_new' / 'quasar_inventory' / 'chezza_inventory' / 'codem_inventory' / 'core_inventory' // Custom can be add in the cl_utils.lua!!!
|
|
Wardrobe = 'illenium_appearance', -- 'default' / 'ak47_clothing' / 'codem_apperance' / 'fivem_appearance' / 'illenium_appearance' / 'qb_clothing' / 'raid_clothes' / 'rcore_clothes' / 'rcore_clothing' / 'sleek_clothestore' / 'tgiann_clothing' // Custom can be add in the cl_utils.lua!!!
|
|
TextUI = 'brutal_textui', -- false / 'brutal_textui' / 'ox_lib' / 'okokTextUI' / 'ESXTextUI' / 'QBDrawText' // Custom can be add in the cl_utils.lua!!!
|
|
BrutalKeys = true, -- Buy here: https://store.brutalscripts.com
|
|
BrutalPoliceJob = true, -- Buy here: https://store.brutalscripts.com | Better connection
|
|
BrutalNotify = false, -- Buy here: (4€+VAT) https://store.brutalscripts.com | Or set up your own notify >> cl_utils.lua
|
|
|
|
SteamName = false, -- true = Steam name | false = character name
|
|
AdminGroups = {'superadmin', 'admin', 'mod', 'god'},
|
|
HousingDataPrint = true, -- Server side print, like that: Brutal Housing: Houses: 1 Apartments: 97 Garages: 9
|
|
|
|
DataStorage = {
|
|
--[[
|
|
optimized = Saves the data when the script is restarted, the server is shut down or restarted, or during a scheduled server restart.
|
|
events: "txAdmin:events:serverShuttingDown" & "txAdmin:events:scheduledRestart" or fixed restart times.
|
|
resource_heavy = all data will be saved immediately, this is very stressful for the server so we don't recommend using this, but the choice is up to you.
|
|
]]--
|
|
|
|
Type = "resource_heavy", -- "optimized" / "resource_heavy"
|
|
Restarts = {}, -- example: "11:59" | Save the data 1 minute before restart. Save data at 15:59 instead of 16:00
|
|
},
|
|
|
|
Blips = {
|
|
available = true,
|
|
availableHouse = {label = "Available House", size = 0.7, sprite = 40, color = 2},
|
|
availableGarage = {label = "Available Garage", size = 0.7, sprite = 357, color = 2},
|
|
myproperties = true,
|
|
myHouse = {label = "Mein Haus", size = 0.7, sprite = 40, color = 53},
|
|
myGarage = {label = "Meine Garage", size = 0.7, sprite = 357, color = 53},
|
|
haskey = true,
|
|
hasKeyHouse = {label = "House", size = 0.7, sprite = 40, color = 53},
|
|
hasKeyGarage = {label = "Garage", size = 0.7, sprite = 40, color = 53},
|
|
owned = false,
|
|
ownedHouse = {label = "House", size = 0.7, sprite = 40, color = 1},
|
|
ownedGarage = {label = "Garage", size = 0.7, sprite = 357, color = 1},
|
|
police = true,
|
|
burglarAlarm = {label = "Einbruch Alarm", size = 1.0, sprite = 161, color = 1},
|
|
},
|
|
|
|
MaxProperties = 12, -- Maximum number of properties a player can own
|
|
MaxObject = 50, -- Maximum placing object, 50-50 by default, outside and inside separately
|
|
MaxBargainPercent = 5, -- Maximum bargain rate in percentage | Bargain rate i random between 0 and this value
|
|
MaxOutsideFurnitureDistance = 50.0, -- Maximum Outside furniture distance from the door
|
|
MaxDoorlockDistance = 50.0, -- Max doorlock distance from the property's door.
|
|
StashLimit = 3, -- Maximum stash per property.
|
|
InstantSalePurchasePrice = 0.9, -- 100 000$ * 0.9 = 90 000$ | The player can immediately sell his property for this much compared to the base price.
|
|
DelayedSalePurchasePrice = 1.2, -- 100 000$ * 1.2 = 120 000$ | This is the maximum price a player can sell the house he has bought.
|
|
DeleteInactiveProperty = {use = false, days = 45}, -- -- If use is true, the property will be deleted if the player does not use it for X days. | Only the owned ones.
|
|
CopJobs = {"police", "sheriff"}, -- Cop jobs
|
|
GarageUpgrade = {
|
|
Repair = {use = true, time = 48, price = 25000}, -- The car stored in the garage will be repaired after 48hours.
|
|
Clean = {use = true, time = 24, price = 5000} -- The car stored in the garage will be cleaned after 24hours.
|
|
},
|
|
|
|
ForeclosureDebtThreshold = 1000, -- If the owner's debt exceeds $1000, the property will go into foreclosure.
|
|
Utilities = {
|
|
BillingCycle = 7, -- The default billing cycle for utilities is every 7 days.
|
|
|
|
RentalPrice = 0.015, -- 0.4% rental fee based on property price | 100,000$ * 0.004 = 400$
|
|
ElectricityPrice = 0.0005,
|
|
GasPrice = 0.00025,
|
|
WaterPrice = 0.0001,
|
|
WifiUnlockPrice = 5000, -- One-time fee
|
|
WifiPrice = 70, -- Fix price
|
|
},
|
|
|
|
NewKeyPrice = 25,
|
|
LockReplacementPrice = 100,
|
|
CCTVStationRepairPrice = 250,
|
|
|
|
Stash = {
|
|
Slots = 100,
|
|
Weight = 1000000,
|
|
},
|
|
|
|
Security = {
|
|
DatabaseDesroyEnabled = true, -- true / false
|
|
Objects = {
|
|
cameras = {"prop_cs_cctv", "prop_cctv_cam_01b", "bzzz_electro_digital_bell_blue", "bzzz_electro_digital_bell_red", "bzzz_electro_digital_bell_green", "bzzz_electro_digital_bell_yellow", "bzzz_electro_digital_bell_purple"},
|
|
databases = {"hei_prop_heist_pc_01", "prop_dyn_pc", "prop_dyn_pc_02", "prop_pc_01a", "prop_pc_02a"}
|
|
},
|
|
|
|
Levels = {
|
|
[0] = {
|
|
alertToPolice = false,
|
|
maxAttempts = 6,
|
|
showIntruderName = false
|
|
},
|
|
[1] = {
|
|
price = 4750,
|
|
|
|
alertToPolice = true,
|
|
maxAttempts = 4,
|
|
showIntruderName = false
|
|
},
|
|
[2] = {
|
|
price = 9500,
|
|
|
|
alertToPolice = true,
|
|
maxAttempts = 2,
|
|
showIntruderName = true
|
|
},
|
|
[3] = {
|
|
price = 25000,
|
|
|
|
alertToPolice = true,
|
|
maxAttempts = 0, -- if it is 0, there is no chance to break into the house
|
|
showIntruderName = true
|
|
},
|
|
},
|
|
},
|
|
|
|
BreakIn = {
|
|
use = true,
|
|
minimumCopsCount = 0,
|
|
requiredItem = 'lockpick',
|
|
removeItem = true
|
|
},
|
|
|
|
Raid = {
|
|
use = true,
|
|
allowedJobs = {
|
|
{ job = "police", minGrade = 0 },
|
|
}
|
|
},
|
|
|
|
RealEstateagents = {
|
|
ProfitRatioPercent = 6, -- Profit share of the real estate agency based on the purchase price | 6 = 6% of the property price
|
|
Jobs = {
|
|
["dynasty"] = { -- job name
|
|
[0] = {
|
|
label = 'Trainee', -- Rank name
|
|
permissions = { -- Permissions
|
|
canManageProperties = false, -- Created property management
|
|
balanceMenu = false -- Balance Menu
|
|
}
|
|
},
|
|
[1] = {
|
|
label = 'Agent',
|
|
permissions = {
|
|
canManageProperties = true,
|
|
balanceMenu = false
|
|
}
|
|
},
|
|
[2] = {
|
|
label = 'Senior Agent',
|
|
permissions = {
|
|
canManageProperties = true,
|
|
balanceMenu = true
|
|
}
|
|
}
|
|
},
|
|
|
|
-- you can add more jobs too.
|
|
}
|
|
},
|
|
|
|
Commands = {
|
|
MyProperties = {
|
|
Command = 'myproperties',
|
|
Suggestion = 'To manage your propertys',
|
|
Control = '', -- Controls list: https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/
|
|
},
|
|
|
|
ServerDestroy = {
|
|
Command = 'serverdestroy',
|
|
Suggestion = 'To destroy the camera server',
|
|
requiredItem = 'laptop'
|
|
},
|
|
|
|
GetHousingVehicleBack = {
|
|
Command = 'gethousingvehicleback', -- /gethousingvehicleback all | /gethousingvehicleback DHR 432
|
|
Suggestion = 'To get back your vehicle(s)',
|
|
},
|
|
|
|
-- Admin / Real Estate --
|
|
|
|
StaffMode = {
|
|
Command = 'hstaff',
|
|
Suggestion = 'To switch Housing Staff mode',
|
|
},
|
|
|
|
Properties = {
|
|
Command = 'properties',
|
|
Suggestion = 'To open the propertys menu',
|
|
},
|
|
|
|
CreateHouse = {
|
|
Command = 'createhouse',
|
|
Suggestion = 'To create a house',
|
|
},
|
|
|
|
CreateGarage = {
|
|
Command = 'creategarage',
|
|
Suggestion = 'To create a garage',
|
|
},
|
|
},
|
|
|
|
-----------------------------------------------------------
|
|
-----------------------| TRANSLATE |-----------------------
|
|
-----------------------------------------------------------
|
|
|
|
NUILanguage = "de", -- "en", "es", "fr", "de", "pt", "it", "pl", "nl", "ru", "tr", "hu", "ro", "cs", "sv", "ar"
|
|
|
|
MoneyForm = '$', -- Money form
|
|
|
|
Locales = {
|
|
Stash = "Stash",
|
|
None = "None",
|
|
AdminRemoved = "Admin removed",
|
|
|
|
ShellPlacement = "Shell Placement",
|
|
DoorLocation = "Door Location",
|
|
VehiclePlacement = "Vehicle Placement",
|
|
FurniturePlacement = "Furniture Placement",
|
|
|
|
NewCoords = "Set the new coords",
|
|
MovingFreecam = "Moving Freecam",
|
|
GoBack = "Go Back",
|
|
ObjectMovement = "Object movement",
|
|
ObjectVertical = "Object Vertical Movement",
|
|
ObjectRotate = "Object Rotate",
|
|
FinishEditing = "Finish Editing",
|
|
TranslateMode = "Translate Mode",
|
|
CameraFix = "Camera Fix",
|
|
DoneEditing = "Done Editing",
|
|
|
|
BreakIn = "A burglar broke into the house! Go to the designated place!",
|
|
|
|
Messages = {
|
|
Rent = {title = "Rent", message = "You have started renting the property."},
|
|
StopRent = {title = "Rental stopped", message = "The rental of the property has been stopped."},
|
|
Purchase = {title = "Purchase", message = "You have purchased the property."},
|
|
LevelUpgrade = {title = "Level Upgrade", message = "Success upgrade: Level"},
|
|
BrakeIn = {title = "Break-in", message = "Someone has broken into the property:"},
|
|
Raid = {title = "Raid", message = "Police raided the property."},
|
|
WifiUnlock = {title = "Wifi", message = "The Wifi has been connected!"},
|
|
CleaningUnlock = {title = "Cleaning", message = "Vehicle cleaning function now available"},
|
|
RepairingUnlock = {title = "Repairing", message = "Vehicle repairing function now available"},
|
|
DoorLockReplacement = {title = "Lock replacement", message = "You have successfully changed the lock on your property!"},
|
|
Rename = {title = "Property renaming", message = "New name of the property:"},
|
|
Unknown = "Unknown",
|
|
},
|
|
|
|
CCTV = "BACK: ~INPUT_CELLPHONE_CANCEL~\nUP/DOWN: ~INPUT_CELLPHONE_UP~ & ~INPUT_CELLPHONE_DOWN~\nLEFT/RIGHT: ~INPUT_CELLPHONE_LEFT~ & ~INPUT_CELLPHONE_RIGHT~",
|
|
CCTVSetup = "BACK: ~INPUT_CELLPHONE_CANCEL~\nUP/DOWN: ~INPUT_CELLPHONE_UP~ & ~INPUT_CELLPHONE_DOWN~\nLEFT/RIGHT: ~INPUT_CELLPHONE_LEFT~ & ~INPUT_CELLPHONE_RIGHT~\nSETUP: ~INPUT_FRONTEND_RDOWN~",
|
|
},
|
|
|
|
Texts = {
|
|
[1] = {'[E] - Storage', 38},
|
|
[2] = {'[E] - Wardrobe', 38},
|
|
},
|
|
|
|
DoorTexts = {
|
|
["entry"] = {'E', 'Entry', 38},
|
|
["leave"] = {'E', 'Leave', 38},
|
|
["garage"] = {'X', 'Garage', 73},
|
|
["house"] = {'X', 'House', 73},
|
|
["open"] = {'G', 'Open the door', 47},
|
|
["close"] = {'G', 'Close the door', 47},
|
|
["purchase"] = {'E', 'Purchase menu', 38},
|
|
["knock"] = {'E', 'Knocking', 38},
|
|
["raid"] = {'G', 'Raid', 47},
|
|
["breakin"] = {'G', 'Break In', 47},
|
|
["inforeclosure"] = {'E', 'In foreclosure', 38}
|
|
},
|
|
|
|
-- Notify function EDITABLE >> cl_utils.lua
|
|
Notify = {
|
|
[1] = {"Housing", "You can only enter with your own car!", 5000, "error"},
|
|
[2] = {"Housing", "No more space in the garage!", 5000, "error"},
|
|
[3] = {"Housing", "The door is closed!", 5000, "error"},
|
|
[4] = {"Housing", "You already have a property near you, move away!", 5000, "error"},
|
|
[5] = {"Housing", "The property name must be 3-16 characters long!", 5000, "error"},
|
|
[6] = {"Housing", "The URL must start with 'http://' or 'https://'", 5000, "error"},
|
|
[7] = {"Housing", "The price must be more than ZERO!", 5000, "error"},
|
|
[8] = {"Housing", "You have entered an invalid or already used garage id!", 5000, "error"},
|
|
[9] = {"Housing", "You have successfully created it!", 5000, "success"},
|
|
[10] = {"Housing", "Invalid property ID!", 5000, "error"},
|
|
[11] = {"Housing", "You don't have enough money!", 5000, "error"},
|
|
[12] = {"Housing", "You can sell it for a maximum of 20% more than what you bought it for!", 5000, "error"},
|
|
[13] = {"Housing", "You don't own it, so you can't sell it!", 5000, "error"},
|
|
[14] = {"Housing", "You have successfully purchased!", 5000, "success"},
|
|
[15] = {"Housing", "The house owner is currently unavailable. Please contact them by phone!", 5000, "error"},
|
|
[16] = {"Housing", "You cannot park this vehicle in the garage!", 5000, "error"},
|
|
[17] = {"Housing", "Successful payment!", 5000, "success"},
|
|
[18] = {"Housing", "Successful upgrade!", 5000, "success"},
|
|
[19] = {"Housing", "Someone knocked on the door!", 5000, "info"},
|
|
[20] = {"Housing", "You knocked on the door!", 5000, "success"},
|
|
[21] = {"Housing", "You have paid the outstanding debt on the property:", 5000, "error"},
|
|
[22] = {"Housing", "You have successfully sold the property:", 5000, "success"},
|
|
[23] = {"Housing", "The garage door cannot be more than 50 metres from the entrance to the house.", 5000, "error"},
|
|
[24] = {"Housing", "Not enough money for the real estate agency!", 5000, "error"},
|
|
[25] = {"Housing", "You do not have permission!", 5000, "error"},
|
|
[26] = {"Housing", "You can only connect a house and a garage!", 5000, "error"},
|
|
[27] = {"Housing", "The property is already connected!", 5000, "error"},
|
|
[28] = {"Housing", "These two properties are not connected!", 5000, "error"},
|
|
[29] = {"Housing", "Successful connection!", 5000, "success"},
|
|
[30] = {"Housing", "You have successfully detached the garage!", 5000, "success"},
|
|
[31] = {"Housing", "You've got it back:", 5000, "success"},
|
|
[32] = {"Housing", "No vehicle to get back!", 5000, "error"},
|
|
[33] = {"Housing", "There was a problem loading the IPL/Shell.", 5000, "error"},
|
|
[34] = {"Housing", "You spammed the housing system, so you have been put on a 3-minute cooldown.", 5000, "error"},
|
|
[35] = {"Housing", "You can now use the housing system again.", 5000, "success"},
|
|
[36] = {"Housing", "Please avoid doing this again in the future.", 5000, "info"},
|
|
[37] = {"Housing", "You cannot buy/rent more property! Maximum quantity:", 5000, "error"},
|
|
[38] = {"Housing", "You have to wait 2 minutes because you've failed the minigame!", 5000, "error"},
|
|
[39] = {"Housing", "You have successfully completed the minigame! The door is open!", 5000, "success"},
|
|
[40] = {"Housing", "You failed to complete the minigame!", 5000, "error"},
|
|
[41] = {"Housing", "You have successfully completed the minigame!", 5000, "success"},
|
|
[42] = {"Housing", "This house has too good security, you can't break in!", 5000, "error"},
|
|
[43] = {"Housing", "You have reached the maximum attempt!", 5000, "error"},
|
|
[44] = {"Housing", "Not enough police in the city!", 5000, "error"},
|
|
[45] = {"Housing", "You need a lockpick item!", 5000, "error"},
|
|
[46] = {"Housing", "You need a laptop item!", 5000, "error"},
|
|
[47] = {"Housing", "Invalid Player ID!", 5000, "error"},
|
|
[48] = {"Housing", "Invalid Identifier!", 5000, "error"},
|
|
[49] = {"Housing", "Successful modification!", 5000, "success"},
|
|
[50] = {"Housing", "This address already exist!", 5000, "error"},
|
|
[51] = {"Housing", "The two properties must be owned by the same person/job!", 5000, "error"},
|
|
[52] = {"Housing", "The amount you offered is too low!", 5000, "error"},
|
|
[53] = {"Housing", "The spawn coordinates of the vehicle must be within 15 meters of the garage door!", 5000, "error"},
|
|
[54] = {"Housing", "You don't have property!", 5000, "error"},
|
|
[55] = {"Housing", "Staff mode: ON", 5000, "success"},
|
|
[56] = {"Housing", "Staff mode: OFF", 5000, "error"},
|
|
[57] = {"Housing", "You have started to rent the property!", 5000, "success"},
|
|
[58] = {"Housing", "You've put your property up for sale!", 5000, "success"},
|
|
[59] = {"Housing", "You cancelled the sale!", 5000, "info"},
|
|
[60] = {"Housing", "Invalid Price!", 5000, "error"},
|
|
[61] = {"Housing", "You cannot buy your own property! You can cancel the sale in the Myproperties menu!", 5000, "error"},
|
|
[62] = {"Housing", "You have stopped to rent the property!", 5000, "info"},
|
|
[63] = {"Housing", "There is not that much money in the account!", 5000, "error"},
|
|
[64] = {"Housing", "Successful deposit:", 5000, "success"},
|
|
[65] = {"Housing", "Successful withdrawal:", 5000, "success"},
|
|
[66] = {"Housing", "A burglar broke into the house! Go to the designated place!", 5000, "info"},
|
|
[67] = {"Housing", "You have successfully deleted it!", 5000, "success"},
|
|
[68] = {"Housing", "You cannot add a garage to an apartment/mlo!", 5000, "error"},
|
|
[69] = {"Housing", "You cannot place objects here!", 5000, "error"},
|
|
[70] = {"Housing", "You cannot create a house/garage near Apartment buildings!", 5000, "error"},
|
|
[71] = {"Housing", "You have successfully renamed the property!", 5000, "success"},
|
|
[72] = {"Housing", "You have successfully replaced the door lock!", 5000, "success"},
|
|
[73] = {"Housing", "You have successfully bought a new key!", 5000, "success"},
|
|
[74] = {"Housing", "Place %d car spawn coordinates inside the shell!", 5000, "info"},
|
|
[75] = {"Housing", "You can't put a door lock that far away!", 5000, "error"},
|
|
[76] = {"Housing", "You paid for furniture:", 5000, "info"},
|
|
[77] = {"Housing", "You sold furniture for:", 5000, "info"},
|
|
[78] = {"Housing", "You are too far from the object!", 5000, "error"},
|
|
[79] = {"Housing", "You have successfully destroyed it, the owner has lost the camera data!", 5000, "error"},
|
|
[80] = {"Housing", "You can't sit in a car!", 5000, "error"},
|
|
[81] = {"Housing", "There is no database near you!", 5000, "error"},
|
|
[82] = {"Housing", "This has already been destroyed!", 5000, "error"},
|
|
[83] = {"Housing", "You have successfully repaired it!", 5000, "success"},
|
|
[84] = {"Housing", "You cannot open the menu now!", 5000, "error"},
|
|
[85] = {"Housing", "The property is in foreclosure! The owner must pay the bills before we can use it.", 5000, "error"},
|
|
[86] = {"Housing", "This car is out of the garage!", 5000, "error"},
|
|
[87] = {"Housing", "The maximum number of objects you can place:", 5000, "error"},
|
|
[88] = {"Housing", "The garage must be empty if you want to sell the property!", 5000, "error"},
|
|
[89] = {"Housing", "You have reached the maximum number of stashes you can place!", 5000, "error"},
|
|
[90] = {"Housing", "You cannot put the object so far away!", 5000, "error"},
|
|
[91] = {"Housing", "The house you were in has been deleted, so you have been teleported here!", 10000, "info"},
|
|
},
|
|
|
|
Webhooks = {
|
|
Locale = {
|
|
['houseCreateTitle'] = "🆕 House created...",
|
|
['houseCreateSubtitle'] = "created a house.",
|
|
['garageCreateTitle'] = "🆕 Garage created...",
|
|
['garageCreateSubtitle'] = "created a garage.",
|
|
['deleteTitle'] = "❌ Deleted property...",
|
|
['deleteSubtitle'] = "deleted a property.",
|
|
['purchaseTitle'] = "💵 Purchased property...",
|
|
['purchaseSubtitle'] = "purchased a property.",
|
|
['rentTitle'] = "💵 Rented property...",
|
|
['rentSubtitle'] = "rented a property.",
|
|
['newOwnerTitle'] = "🔄 Change of owner...",
|
|
['newOwnerSubtitle'] = "changed the property owner.",
|
|
|
|
['Identifier'] = "Identifier",
|
|
['PropertyID'] = "Property ID",
|
|
['Type'] = "Type",
|
|
['Price'] = "Price",
|
|
['Rent'] = "Rent",
|
|
['Coords'] = "Coords",
|
|
['Address'] = "Address",
|
|
['Garage'] = "Garage",
|
|
['Reason'] = "Reason",
|
|
['PreviousOwner'] = "Previous Owner",
|
|
['NewOwner'] = "New Owner",
|
|
['Inactivity'] = "Since Config.DeleteInactiveProperty.use is true, this property is deleted due to inactivity.",
|
|
|
|
|
|
['Time'] = "Time ⏲️"
|
|
},
|
|
|
|
-- To change a webhook color you need to set the decimal value of a color, you can use this website to do that - https://www.mathsisfun.com/hexadecimal-decimal-colors.html
|
|
Colors = {
|
|
['houseCreateTitle'] = 65280,
|
|
['garageCreateTitle'] = 255,
|
|
['deleteTitle'] = 16711680,
|
|
['purchaseTitle'] = 16776960,
|
|
['rentTitle'] = 65535,
|
|
['newOwnerTitle'] = 16711935,
|
|
}
|
|
},
|
|
} |