Accessible files
Here you can find all the files which can be edite to make the asset compatible with your server.
config.lua
Config = {
Core = 'ESX', -- 'ESX' / 'QBCORE' | Other core setting on the 'core' folder.
TextUI = 'brutal_textui', -- false / 'brutal_textui' / 'ox_lib' / 'okokTextUI' / 'ESXTextUI' / 'QBDrawText' // Custom can be add in the cl_utils.lua!!!
Target = 'oxtarget', -- false / 'oxtarget' / 'qb-target' | set it to false if you use TextUI.
ProgressBar = 'ox_lib', -- 'progressBars' / 'pogressBar' / 'mythic_progbar' / 'ox_lib' // Custom can be add in the cl_utils.lua!!!
HousingSystem = "brutal_housing", -- "brutal_housing" - Buy: https://store.brutalscripts.com/product/6798150 OR "quasar_housing" / "sn_properties" / "0r-pixelhouse" / "nolag_properties"
BrutalNotify = true, -- Buy here: (4€+VAT) https://store.brutalscripts.com | Or set up your own notify >> cl_utils.lua
BrutalGangs = true, -- Buy here: https://store.brutalscripts.com
LocallyInvisible = true, -- true or false | If your ANTICHEAT ban the player with 'Invisible' reason, set to false! | If it is false the character will walk out of the camera
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
},
MaxObjectsPerPlayer = 20, -- Per player maximum that number of any objects can be placed.
SpamBlock = true, -- true / false | Blocks intentional server load.
Zones = {
WhitelistedZones = {
"*", -- "*" means: -- All locations are allowed except those on the blacklist.
-- { coords = vector3(289.1322, 6787.8447, 15.6967), size = 30.0 },
},
BlacklistedZones = {
--{ coords = vector3(289.1322, 6787.8447, 15.6967), size = 50.0 },
},
},
Commands = { -- to turn off a command just simply leave empty the command line, like this: Command = '',
Plant = {
Command = 'plant', -- command name
Suggestion = 'Open Plant Menu' -- command suggestion
},
Table = {
Command = 'table',
Suggestion = 'Open Table Menu'
},
DryingRack = {
Command = 'drying_rack',
Suggestion = 'Open Drying Rack Menu'
},
BigSaleOff = {
Command = 'bigsaleoff',
Suggestion = 'To disable the big sales'
},
},
GrowShops = {
["shop_1"] = {
ShopName = "Grow Shop",
NPC = {model = "ig_ortega", coords = vector4(-1137.1124, -1544.0078, 4.3760, 125.4632)},
Blip = {use = true, sprite = 52, color = 43, size = 0.75},
WhitelistedGangs = {"gang1"}, -- WhitelistedGangs = false means everyone allowed | Use the Brutal Gangs for better connection and you do not need to add the gangs here. | -- Buy here: https://store.brutalscripts.com
MaximumDiscount = 30, -- 30 = 30% | Meaning: Maximum available discount through continuous purchases in the store.
SpendAmountForMaximumDiscount = 10000, -- Amount the player must spend within 14 days to receive the maximum discount
DiscountDays = 14, -- Your discounts are valid for X days before resetting.
ShopItems = {
{item = "pot", label = "Pot", price = 10},
{item = "potting_soil", label = "Potting Soil", price = 5},
{item = "drug_lamp", label = "Lamp", price = 30},
{item = "drug_table", label = "Table", price = 50},
{item = "water", label = "Water", price = 1},
{item = "fertilizer", label = "Fertilizer", price = 6},
},
},
["shop_2"] = {
ShopName = "Dealer",
NPC = {model = "s_m_y_dealer_01", coords = vector4(-228.9504, -1664.8406, 34.4606, 354.5814)},
Blip = {use = true, sprite = 52, color = 43, size = 0.75},
WhitelistedGangs = {"gang1"}, -- Use the Brutal Gangs for better connection and you do not need to add the gangs here. | -- Buy here: https://store.brutalscripts.com
MaximumDiscount = 30, -- 30 = 30% | Meaning: Maximum available discount through continuous purchases in the store.
SpendAmountForMaximumDiscount = 300000, -- Amount the player must spend within 14 days to receive the maximum discount
DiscountDays = 14, -- Your discounts are valid for X days before resetting.
ShopItems = {
{item = "lsd", label = "LSD", price = 100},
{item = "heroin", label = "Heroin", price = 200},
},
},
-- you can add more...
},
DrugEffects = {
["joint"] = {
duration = 90, -- in second
useAnimation = "smoke_joint",
timecycle = "drug_wobbly",
screenEffect = "DrugsTrevorClownsFightIn",
movementClipset = "move_m@buzzed",
healthChange = 20, -- + 20 HP | If it's -1, then the HP will be reduced every 3 seconds.
armorChange = 25, -- between 0-100
sprintMultiplier = 0.8,
damageMultiplier = 1.0,
},
["cocaine"] = {
duration = 90, -- in second
useAnimation = "basic",
timecycle = "REDMIST_blend",
screenEffect = "Rampage",
movementClipset = "move_m@quick",
healthChange = -2, -- If it's -1, then the HP will be reduced by 1 every 3 seconds.
armorChange = 0, -- between 0-100
sprintMultiplier = 1.30,
damageMultiplier = 1.50,
},
["meth"] = {
duration = 90, -- in second
useAnimation = "swallow_pill",
timecycle = "drug_drive_blend01",
screenEffect = "Dont_tazeme_bro",
movementClipset = "move_m@hurry_butch@a",
healthChange = -1, -- If it's -1, then the HP will be reduced by 1 every 3 seconds.
armorChange = 10, -- between 0-100
sprintMultiplier = 1.5,
damageMultiplier = 1.25,
},
["lsd"] = {
duration = 150, -- in second
useAnimation = "swallow_pill",
timecycle = "spectator5",
screenEffect = "DrugsMichaelAliensFight",
movementClipset = "move_m@drunk@slightlydrunk",
healthChange = 0, -- If it's -1, then the HP will be reduced by 1 every 3 seconds.
armorChange = 0, -- between 0-100
sprintMultiplier = 1.5,
damageMultiplier = 1.0,
},
["heroin"] = {
duration = 120, -- in second
useAnimation = "basic",
timecycle = "drug_wobbly",
screenEffect = "DrugsMichaelTorture",
movementClipset = "move_m@injured",
healthChange = 100, -- If it's -1, then the HP will be reduced by 1 every 3 seconds.
armorChange = 0, -- between 0-100
sprintMultiplier = 0.5,
damageMultiplier = 1.0,
},
},
Planting = {
Weed = {
Seed = {item = {name = "weed_seed", label = "Weed Seed"}},
WateringFrequency = 60*60*2,
FertilisationFrequency = 60*60*2.5,
FertilizationBoost = 20, -- 20% more wet weed per fertilisation
LampBoost = 1.5, -- 1.5 = 1.5x, 2 = 2x, 3 = 3x boost
GrowthStages = {
[1] = {
model = "bkr_prop_weed_01_small_01c", -- Optional: prop name
driedModel = "bzzz_growing_freepot_b",
growTime = 60 * 30, -- Time in seconds to reach next stage
},
[2] = {
model = "bkr_prop_weed_med_01a",
driedModel = "prop_weed_med_dry",
growTime = 60 * 90
},
[3] = {
model = "bkr_prop_weed_lrg_01a",
driedModel = "prop_weed_lrg_dry",
growTime = 60 * 300 -- After this, it's ready to harvest
},
},
HarvestItems = { -- A chance is rolled separately for each item, so it's possible to receive multiple items.
{item = {name = 'wet_weed', label = "Wet Weed"}, amount = {min = 3, max = 8}, chance = 100},
{item = {name = 'weed_seed', label = "Weed Seed"}, amount = {min = 1, max = 2}, chance = 50},
}
},
Cocaine = {
Seed = {item = {name = "coca_seed", label = "Coca Seed"}},
WateringFrequency = 60*60*2,
FertilisationFrequency = 60*60*2.5,
FertilizationBoost = 20, -- 20% more coca leaf per fertilisation
LampBoost = 1.5, -- 1.5 = 1.5x, 2 = 2x, 3 = 3x boost
GrowthStages = {
[1] = {
model = "bkr_prop_weed_01_small_01c",
driedModel = "bkr_prop_weed_med_01a_bs",
growTime = 10, -- Time in seconds to reach next stage
},
[2] = {
model = "bkr_prop_weed_med_01a",
driedModel = "bkr_prop_weed_med_01a_bs",
growTime = 30
},
[3] = {
model = "bkr_prop_weed_lrg_01a",
driedModel = "bkr_prop_weed_med_01a_bs",
growTime = 60 * 300 -- After this, it's ready to harvest
},
},
HarvestItems = { -- A chance is rolled separately for each item, so it's possible to receive multiple items.
{item = {name = 'coca_leaf', label = "Coca Leaf"}, amount = {min = 3, max = 10}, chance = 100},
{item = {name = 'coca_seed', label = "Coca Seed"}, amount = {min = 1, max = 2}, chance = 50},
}
},
Others = {
Pot = {command = "pot", item = {name = "pot", label = "Pot"}, obj = "bzzz_growing_freepot_a"},
Lamp = {command = "drug_lamp", item = {name = "drug_lamp", label = "Lamp"}, obj = "xm_prop_base_tripod_lampb"},
Table = {command = "drug_table", item = {name = "drug_table", label = "Table"}, obj = "bkr_prop_weed_table_01b"},
DryingRack = {command = "drug_drying", item = {name = "drying_rack", label = "Drying Rack"}, obj = "prop_weed_rack"},
Oven = {command = "drug_oven", item = {name = "drug_oven", label = "Oven"}, obj = "meth_chiller", obj2 = "door_meth_chiller"},
PottingSoil = {item = {name = "potting_soil", label = "Potting Soil"}, obj = "bzzz_growing_freepot_b"},
Water = {item = {name = "water", label = "Water"}},
Fertilizer = {item = {name = "fertilizer", label = "Fertilizer"}},
}
},
Drying = {
["coca_leaf"] = {-- item that will be removed
time = 30, -- in minutes
drieditem = {name = "dried_coca_leaf", label = "Dried Coca Leaf"}, -- new item that will be added after drying
},
["wet_weed"] = {
time = 30, -- in minutes
drieditem = {name = "dried_weed", label = "Dried Wet Weed"},
},
},
Table = {
CocaCooking = {
consumedItems = { -- items that will be removed.
["dried_coca_leaf"] = 3,
["water"] = 1,
["acetone"] = 1,
},
neededItems = { -- items that just needed won't be removed.
["cooking_pot"] = 1,
},
cookingObjects = { -- ingame "minigame" setting
{model = 'p_cs_leaf_s', amount = 3},
{model = 'bkr_prop_weed_bud_02b', amount = 1},
},
minigame = {
time = 50, -- between 0-100
hardness = 80, -- between 0-100
temperature = {min = 23, max = 250},
},
newItem = {item = "cocaine", amount = 1}
},
CocaPress = {
consumedItems = {
["cocaine"] = 6,
["plastic_wrap"] = 1,
},
neededItems = {
["cocaine_press"] = 1,
},
newItem = {item = "cocaine_brick", amount = 1}
},
WeedBagging = {
consumedItem1 = {name = "dried_weed", amount = 1},
consumedItem2 = {name = "baggie", amount = 1},
neededItems = {
},
newItem = {item = "packaged_weed", amount = 1}
},
MethCooking = {
consumedItems = {
["ephedrine"] = 5,
["acetone"] = 2,
["sodium"] = 1,
["lithium"] = 1,
["hydrochloric_acid"] = 3,
["water"] = 2,
},
neededItems = {
["bunsen_burner"] = 1,
},
cookingObjects = {
{model = 'xm3_prop_xm3_lsd_bottle_03a', amount = 2},
{model = 'prop_cs_script_bottle_01', amount = 1},
{model = 'prop_cs_script_bottle', amount = 2},
{model = 'xm3_prop_xm3_product_bottle_01', amount = 1},
{model = 'v_ind_cfbottle', amount = 1},
},
minigame = {
time = 50, -- between 0-100
hardness = 80, -- between 0-100
temperature = {min = 23, max = 250},
},
newItem = {item = "uncooked_meth", amount = 6}
},
MethOven = {
consumedItems = {
["uncooked_meth"] = 6,
},
neededItems = {
["hammer"] = 1,
},
minigame = {
temperature = {min = 100, max = 250},
},
newItem = {item = "meth_pure", amount = 2}
-- Minigame reward multiplier:
-- 3x for excellent, 2x for good, 1x for average, 0x for fail.
},
MethBagging = {
consumedItem1 = {name = "meth_pure", amount = 1},
consumedItem2 = {name = "baggie", amount = 1},
neededItems = {
},
newItem = {item = "meth", amount = 1}
},
},
UnpackableItems = {
["cocaine_brick"] = {
result = "cocaine",
removeItems = {"cocaine_brick"},
count = 6,
},
["rolling_paper"] = {
result = "joint",
removeItems = {"rolling_paper", "packaged_weed"},
count = 1,
},
},
Sale = {
MaxPopularityPoint = 10000, -- Selling 10 000 items grants the player the maximum popularity level.
Zones = {
["zone_1"] = {
Name = "Drug Sell",
Blip = {sprite = 500, color = 2, size = 0.7, radiusBlip = true},
MainCoords = vector3(108.4995, -1941.0608, 20.8037),
WhitelistedGangs = {"gang1"}, -- Use the Brutal Gangs for better connection and you do not need to add the gangs here. | -- Buy here: https://store.brutalscripts.com
BrutalGangData = {color1 = "#9affa249", color2 = "#9affa2dc", icon = "assets/wet_weed.png"}, -- if BrutalGangs is true then the script will be integrated.
Size = 50.0,
Drugs = {
{item = "cocaine", price = {min = 60, max = 120}, amount = {min = 1, max = 12}},
{item = "cocaine_brick", price = {min = 360, max = 720}, amount = {min = 1, max = 2}},
{item = "packaged_weed", price = {min = 10, max = 20}, amount = {min = 1, max = 12}},
{item = "meth", price = {min = 30, max = 100}, amount = {min = 1, max = 12}},
},
SpawnTime = {min = 3, max = 5},
WantsDrugsChance = 90, -- 90 = 90% chance to npc wants any drug
AttackChange = 20, -- 20 = 20% chance to attack
CustomerBlip = {label = "Customer", sprite = 280, color = 0, size = 0.75},
Positions = {
{coords = vector4(84.4091, -1955.7448, 20.7474, 320.4725), model = "a_m_o_tramp_01", animation = {"amb@world_human_leaning@female@wall@back@holding_elbow@idle_a", "idle_a"}},
{coords = vector4(100.6643, -1959.5251, 20.8150, 355.7230), model = "a_m_y_skater_01", animation = {"amb@world_human_leaning@male@wall@back@foot_up@idle_a", "idle_a"}},
{coords = vector4(118.2732, -1928.0225, 20.7416, 141.3412), model = "a_m_y_downtown_01", animation = {"amb@world_human_leaning@female@wall@back@hand_up@idle_a", "idle_a"}},
{coords = vector4(120.1756, -1943.7565, 20.7513, 359.6439), model = "a_f_m_tramp_01", animation = {"amb@prop_human_bum_shopping_cart@male@idle_a", "idle_c"}},
{coords = vector4(88.3943, -1945.6005, 20.7454, 337.0382), model = "a_m_o_tramp_01", walking = vector3(100.7816, -1955.8450, 20.7497)},
{coords = vector4(85.6870, -1910.9893, 21.0146, 225.0027), model = "a_m_m_socenlat_01", walking = vector3(112.9783, -1954.6952, 20.7470)},
{coords = vector4(81.9103, -1971.2239, 20.8836, 329.4786), model = "a_m_y_genstreet_01", walking = vector3(115.5743, -1926.7819, 20.7414)},
{coords = vector4(69.4281, -1924.2622, 21.1962, 239.6679), model = "a_f_y_soucent_01", walking = vector3(110.2789, -1956.1741, 20.7515)},
},
},
},
BigSale = {
Use = true, -- true / false
Blip = {label = "Big Deal", sprite = 615, color = 16, size = 0.8},
Positions = {
[1] = {
peds = {
{model = "csb_paige", coords = vector4(123.2304, -2578.6299, 6.0046, 187.3926)},
{model = "csb_ortega", coords = vector4(123.6107, -2577.7983, 6.0046, 180.8534)},
{model = "csb_oscar", coords = vector4(122.6553, -2577.9141, 6.0046, 186.1028)},
},
vehicle = {model = "speedo", coords = vector4(119.2757, -2579.2058, 5.7430, 133.7378)}
},
[2] = {
peds = {
{model = "csb_paige", coords = vector4(-1853.2344, -623.4021, 11.1709, 69.3240)},
{model = "csb_ortega", coords = vector4(-1852.6241, -624.4400, 11.1742, 89.0115)},
{model = "csb_oscar", coords = vector4(-1852.6735, -623.1409, 11.1660, 93.3555)},
},
vehicle = {model = "speedo", coords = vector4(-1853.0543, -621.1390, 10.8875, 69.5990)}
},
-- more can be set up...
},
Drugs = {
{item = "cocaine", price = 100, amount = {min = 50, max = 100}},
{item = "cocaine_brick", price = 600, amount = {min = 10, max = 20}},
{item = "packaged_weed", price = 17, amount = {min = 50, max = 100}},
{item = "meth", price = 80, amount = {min = 50, max = 100}},
},
}
},
-----------------------------------------------------------
-----------------------| TRANSLATE |-----------------------
-----------------------------------------------------------
MoneyForm = '$', -- Money form
Locales = {
IncreasedSprint = "Increased Sprint Speed",
HealthRegen = "Health Regeneration",
ExtraArmor = "Increased Armor",
DamageBoost = "Increased Damage",
AddingPottingSoil = "Adding potting soil...",
Watering = "Watering...",
Fertilizing = "Fertilizing...",
-- item names --
meth = "Meth",
packaged_weed = "Packaged Weed",
cocaine = "Cocaine",
cocaine_brick = "Cocaine Brick",
dried_coca_leaf = "Dried Coca Leaf",
water = "Water",
acetone = "Acetone",
cooking_pot = "Cooking Pot",
cocaine = "Cocaine",
plastic_wrap = "Plastic Wrap",
cocaine_press = "Cocaine Press",
dried_weed = "Dried Weed",
baggie = "Baggie",
ephedrine = "Ephedrine",
sodium = "Sodium",
lithium = "Lithium",
hydrochloric_acid = "Hydrochloric Acid",
bunsen_burner = "Bunsen Burner",
uncooked_meth = "Uncooked Meth",
hammer = "Hammer",
meth_pure = "Meth Pure",
},
TargetTexts = {
[1] = {'Plant Menu', 'fa-solid fa-seedling'},
[2] = {'Table Menu', 'fa-solid fa-chalkboard-user'},
[3] = {'Drying Rack Menu', 'fa-solid fa-arrow-up-from-bracket'},
[4] = {'[E] -', 38, 'fa-solid fa-cart-shopping'},
[5] = {'[E] - Talk To NPC', 38, 'Talk To NPC', 'fa-solid fa-people-arrows'},
[6] = {'[E] - Get Stuff Back', 38, 'Get Stuff Back', 'fa-solid fa-shuffle'},
[7] = {'[E] - Big Sale', 38, 'Big Sale', 'fa-solid fa-money-bill-trend-up'},
},
-- Notify function EDITABLE >> cl_utils.lua
Notify = {
[1] = {"Drugs", "You can't put one so close to the other!", 5000, "error"},
[2] = {"Drugs", "You need an item:", 5000, "error"},
[3] = {"Drugs", "No more grow pots allowed – you’ve hit the limit!", 5000, "error"},
[4] = {"Drugs", "You can only use it when the plant needs it!", 5000, "error"},
[5] = {"Drugs", "You can water it again below 80% water level!", 5000, "error"},
[6] = {"Drugs", "You can't put it that far away!", 5000, "error"},
[7] = {"Drugs", "The plant is fully grown and ready to harvest!", 5000, "error"},
[8] = {"Drugs", "You got:", 5000, "success"},
[9] = {"Drugs", "The plant is being harvested!", 5000, "error"},
[10] = {"Drugs", "No drug activity allowed here!", 5000, "error"},
[11] = {"Drugs", "You don't have enough money!", 5000, "error"},
[12] = {"Drugs", "You cannot be in vehicle!", 5000, "error"},
[13] = {"Drugs", "You don't have any drugs to sell!", 5000, "error"},
[14] = {"Drugs", "Successful deal!", 5000, "success"},
[15] = {"Drugs", "Deal failed!", 5000, "error"},
[16] = {"Drugs", "You have reached the maximum amount!", 5000, "error"},
[17] = {"Drugs", "Successful drying. You got:", 5000, "success"},
[18] = {"Drugs", "You got back the item!", 5000, "info"},
[19] = {"Drugs", "You've done it successfully!", 5000, "success"},
[20] = {"Drugs", "Spam is not allowed! Try again later!", 5000, "error"},
[21] = {"Drugs", "They stole your stuff! Hunt them down!", 5000, "info"},
[22] = {"Drugs", "You got your stuff back!", 5000, "success"},
[23] = {"Drugs", "You have successfully made it.", 5000, "success"},
[24] = {"Drugs", "Go to the designated place where you can sell in larger quantities!", 5000, "info"},
[25] = {"Drugs", "You can turn off the big sale: /bigsaleoff", 5000, "info"},
[26] = {"Drugs", "Success big deal! You got:", 5000, "success"},
[27] = {"Drugs", "No drug needed!", 5000, "error"},
[28] = {"Drugs", "An item missing to do this.", 5000, "error"},
[29] = {"Drugs", "Using another type of drug before the first wore off caused damage.", 5000, "error"},
[30] = {"Drugs", "Cooking failed!", 5000, "error"},
[31] = {"Drugs", "There is a player near you!", 5000, "error"},
},
}
client-utils.lua
-- Buy here: (4€+VAT) https://store.brutalscripts.com
function notification(title, text, time, type)
if Config.BrutalNotify then
exports['brutal_notify']:SendAlert(title, text, time, type)
else
-- Put here your own notify and set the Config.BrutalNotify to false
-- Default ESX Notify:
--TriggerEvent('esx:showNotification', text)
-- Default QB Notify:
--TriggerEvent('QBCore:Notify', text, 'info', 5000)
-- OKOK Notify:
-- exports['okokNotify']:Alert('GANG ACTIONS', text, time, type, false)
end
end
function TextUIFunction(type, text)
if type == 'open' then
if Config.TextUI:lower() == 'ox_lib' then
lib.showTextUI(text)
elseif Config.TextUI:lower() == 'okoktextui' then
exports['okokTextUI']:Open(text, 'darkblue', 'right')
elseif Config.TextUI:lower() == 'esxtextui' then
ESX.TextUI(text)
elseif Config.TextUI:lower() == 'qbdrawtext' then
exports['qb-core']:DrawText(text,'left')
elseif Config.TextUI:lower() == 'brutal_textui' then
exports['brutal_textui']:Open(text, "blue")
end
elseif type == 'hide' then
if Config.TextUI:lower() == 'ox_lib' then
lib.hideTextUI()
elseif Config.TextUI:lower() == 'okoktextui' then
exports['okokTextUI']:Close()
elseif Config.TextUI:lower() == 'esxtextui' then
ESX.HideUI()
elseif Config.TextUI:lower() == 'qbdrawtext' then
exports['qb-core']:HideText()
elseif Config.TextUI:lower() == 'brutal_textui' then
exports['brutal_textui']:Close()
end
end
end
function ProgressBarFunction(time, text)
if Config.ProgressBar:lower() == 'progressbars' then --LINK: https://github.com/EthanPeacock/progressBars/releases/tag/1.0
exports['progressBars']:startUI(time, text)
Citizen.Wait(time)
elseif Config.ProgressBar:lower() == 'pogressbar' then -- LINK: https://github.com/SWRP-PUBLIC/pogressBar
exports['pogressBar']:drawBar(time, text)
Citizen.Wait(time)
elseif Config.ProgressBar:lower() == 'ox_lib' then
lib.progressBar({
duration = time,
label = text,
useWhileDead = false,
canCancel = true,
})
end
end
function isPlayerInProperty()
local propertyID = nil
-- custom housing system exports can be added if you modify this part.
if Config.HousingSystem:lower() == "brutal_housing" then
propertyID = exports.brutal_housing:getPropertyID()
elseif Config.HousingSystem:lower() == "quasar_housing" then
local currentHouse = exports['qs-housing']:getCurrentHouse()
if currentHouse then
propertyID = currentHouse
end
elseif Config.HousingSystem:lower() == "sn_properties" then
propertyID = exports.sn_properties:getPropertyID()
elseif Config.HousingSystem:lower() == "nolag_properties" then
propertyID = exports.nolag_properties:GetCurrentPropertyId()
elseif Config.HousingSystem:lower() == "0r-pixelhouse" then
propertyID = exports["0r-pixelhouse"]:GetPlayerHouseId()
end
return propertyID
end
function isPlayerInGangJob()
local whitelisted = false
if Config.BrutalGangs and GetResourceState('brutal_gangs') == "started" then
if exports.brutal_gangs:isPlayerInGangJob() then
whitelisted = true
end
end
return whitelisted
end
function OpenMenuUtil(invisibility, freeze)
-- Here you can add a trigger to hide your HUD system
InMenu = true
SetNuiFocus(true, true)
Citizen.CreateThread(function()
while InMenu do
N_0xf4f2c0d4ee209e20() -- it's disable the AFK camera zoom
Citizen.Wait(15000)
end
end)
if invisibility ~= nil and invisibility then
Citizen.CreateThread(function()
local entity = PlayerPedId()
if freeze ~= nil and freeze then
FreezeEntityPosition(entity, true)
end
while InMenu and Config.LocallyInvisible do
Wait(0)
SetEntityLocallyInvisible(entity)
end
end)
end
DisplayRadar(false)
end
function CloseMenuUtil()
-- Here you can add a trigger to enable your HUD system
DisplayRadar(true)
end
server-utils.lua
-- Brutal Gangs Connection --> https://store.brutalscripts.com/product/6510604
function AddGangReputation(type, gang)
if type == "HarvestPlant" then
exports['brutal_gangs']:AddGangReputation(gang, 5)
elseif type == "GrowShopPurchase" then
exports['brutal_gangs']:AddGangReputation(gang, 2)
elseif type == "ItemsBackAfterAttack" then
exports['brutal_gangs']:AddGangReputation(gang, 10)
elseif type == "BigDeal" then
exports['brutal_gangs']:AddGangReputation(gang, 10)
end
end
client-core.lua
Core = nil
if Config['Core']:upper() == 'ESX' then
local _esx_ = 'new' -- 'new' / 'old'
if _esx_ then
Core = exports['es_extended']:getSharedObject()
else
while Core == nil do
TriggerEvent('esx:getSharedObject', function(obj) Core = obj end)
Citizen.Wait(0)
end
end
LoadedEvent = 'esx:playerLoaded'
onPlayerDeath = 'esx:onPlayerDeath'
JobUpdateEvent = 'esx:setJob'
TSCB = Core.TriggerServerCallback
function GetPlayersFunction()
return Core.Game.GetPlayers()
end
function GetPlayerJobDatas()
return Core.GetPlayerData().job
end
function GetClosestPlayerFunction()
return Core.Game.GetClosestPlayer()
end
function GetClosestVehicleFunction(coords, modelFilter)
return Core.Game.GetClosestVehicle(coords, modelFilter)
end
elseif Config['Core']:upper() == 'QBCORE' then
Core = exports['qb-core']:GetCoreObject()
LoadedEvent = 'QBCore:Client:OnPlayerLoaded'
JobUpdateEvent = 'QBCore:Client:OnJobUpdate'
TSCB = Core.Functions.TriggerCallback
function GetPlayersFunction()
return Core.Functions.GetPlayers()
end
function GetPlayerJobDatas()
return Core.Functions.GetPlayerData().gang
end
function GetClosestPlayerFunction()
return Core.Functions.GetClosestPlayer()
end
function GetClosestVehicleFunction(coords, modelFilter)
return Core.Functions.GetClosestVehicle(coords, modelFilter)
end
end
server-core.lua
Core = nil
if Config['Core']:upper() == 'ESX' then
local _esx_ = 'new' -- 'new' / 'old'
if _esx_ == 'new' then
Core = exports['es_extended']:getSharedObject()
else
Core = nil
TriggerEvent('esx:getSharedObject', function(obj) Core = obj end)
while Core == nil do
Citizen.Wait(0)
end
end
RESCB = Core.RegisterServerCallback
GETPFI = Core.GetPlayerFromId
RUI = Core.RegisterUsableItem
SQLData = {
users = 'users',
identifier = 'identifier'
}
function GetIdentifier(source)
local xPlayer = GETPFI(source)
while xPlayer == nil do
Citizen.Wait(1000)
xPlayer = GETPFI(source)
end
return xPlayer.identifier
end
function GetPlayerByIdentifier(identifier)
return Core.GetPlayerFromIdentifier(identifier)
end
function RemoveItem(source, item, amount)
local xPlayer = GETPFI(source)
if item ~= '' then
if _esx_ == 'new' then
--xPlayer.removeInventoryItem(item, amount)
else
if string.sub(item, 0, 6):lower() == 'weapon' then
xPlayer.removeWeapon(item)
else
xPlayer.removeInventoryItem(item, amount)
end
end
end
end
function AddItem(source, item, count)
local xPlayer = GETPFI(source)
if item ~= '' then
if _esx_ == 'new' then
xPlayer.addInventoryItem(item, count)
else
if string.sub(item, 0, 6):lower() == 'weapon' then
xPlayer.addWeapon(item, 90)
else
xPlayer.addInventoryItem(item, count)
end
end
end
end
function GetItemCount(source, item)
local xPlayer = GETPFI(source)
if _esx_ == 'new' then
return xPlayer.getInventoryItem(item).count
else
if string.sub(item, 0, 6):lower() == 'weapon' then
local loadoutNum, weapon = xPlayer.getWeapon(item:upper())
if weapon then
return true
else
return false
end
else
return xPlayer.getInventoryItem(item).count
end
end
end
function GetAccountMoney(source,account)
local xPlayer = GETPFI(source)
if account == 'bank' then
return xPlayer.getAccount(account).money
elseif account == 'money' then
return xPlayer.getMoney()
end
end
function AddMoneyFunction(source, account, amount)
local xPlayer = GETPFI(source)
if account == 'bank' then
xPlayer.addAccountMoney('bank', amount)
elseif account == 'money' then
xPlayer.addMoney(amount)
end
end
function RemoveAccountMoney(source, account, amount)
local xPlayer = GETPFI(source)
if account == 'bank' then
xPlayer.removeAccountMoney('bank', amount)
elseif account == 'money' then
xPlayer.removeMoney(amount)
end
end
elseif Config['Core']:upper() == 'QBCORE' then
Core = exports['qb-core']:GetCoreObject()
RESCB = Core.Functions.CreateCallback
GETPFI = Core.Functions.GetPlayer
RUI = Core.Functions.CreateUseableItem
SQLData = {
players = 'players',
identifier = 'citizenid'
}
function GetIdentifier(source)
local xPlayer = GETPFI(source)
while xPlayer == nil do
Citizen.Wait(1000)
xPlayer = GETPFI(source)
end
return xPlayer.PlayerData.citizenid
end
function GetPlayerByIdentifier(identifier)
return Core.Functions.GetPlayerByCitizenId(identifier)
end
function RemoveItem(source, item, amount)
local xPlayer = GETPFI(source)
if item ~= '' then
xPlayer.Functions.RemoveItem(item, amount)
end
end
function AddItem(source, item, count)
local xPlayer = GETPFI(source)
if item ~= '' then
xPlayer.Functions.AddItem(item, count)
end
end
function GetItemCount(source, item)
local xPlayer = GETPFI(source)
local items = xPlayer.Functions.GetItemByName(item)
local item_count = 0
if items ~= nil then
item_count = items.amount
else
item_count = 0
end
return item_count
end
function SetHandCuffMetadata(source, isHandcuffed)
local xPlayer = GETPFI(source)
xPlayer.Functions.SetMetaData('ishandcuffed', isHandcuffed)
end
function GetPlayerDeathMetaData(source)
local xPlayer = GETPFI(source)
return xPlayer.PlayerData.metadata['isdead']
end
function GetAccountMoney(source, account)
local xPlayer = GETPFI(source)
if account == 'bank' then
return xPlayer.PlayerData.money.bank
elseif account == 'money' then
return xPlayer.PlayerData.money.cash
end
end
function AddMoneyFunction(source, account, amount)
local xPlayer = GETPFI(source)
if account == 'bank' then
xPlayer.Functions.AddMoney('bank', amount)
elseif account == 'money' then
xPlayer.Functions.AddMoney('cash', amount)
end
end
function RemoveAccountMoney(source, account, amount)
local xPlayer = GETPFI(source)
if account == 'bank' then
xPlayer.Functions.RemoveMoney('bank', amount)
elseif account == 'money' then
xPlayer.Functions.RemoveMoney('cash', amount)
end
end
end
Last updated
Was this helpful?