Copy
return {
----------------------------------------------
-- 🛠️ Setup the basics below
----------------------------------------------
setup = {
-- Use only if needed, directed by support or know what you're doing
-- Notice: enabling debug features will significantly increase resmon
-- And should always be disabled in production
debug = false,
-- Set your interaction system below
-- Available options are: 'ox_target', 'qb-target', 'interact' & 'custom'
-- 'custom' needs to be added to client/functions.lua
interact = 'ox_target',
-- Set your notification system below
-- Available options are: 'lation_ui', 'ox_lib', 'esx', 'qb', 'okok', 'sd-notify', 'wasabi_notify' & 'custom'
-- 'custom' needs to be added to client/functions.lua
notify = 'ox_lib',
-- Set your progress bar system below
-- Available options are: 'lation_ui', 'ox_lib', 'qbcore' & 'custom'
-- 'custom' needs to be added to client/functions.lua
-- Any custom progress bar must also support animations
progress = 'ox_lib',
-- Set your minigame (skillcheck) system below
-- Available options are: 'lation_ui', 'ox_lib' & 'custom'
minigame = 'ox_lib',
-- Set your context menu system below
-- Available options are: 'lation_ui', 'ox_lib' & 'custom'
menu = 'ox_lib',
-- Set your alert & input dialog system below
-- Available options are: 'lation_ui', 'ox_lib' & 'custom'
dialogs = 'ox_lib',
-- Do you want to be notified via server console if an update is available?
-- True if yes, false if no
version = true,
-- 'request' option below is how long the client should wait for a model/anim to load
-- Do not edit unless you know what you are doing or directed via support member
request = 10000,
-- Render is the number of units (distance) from the closest object a player
-- Must be within in order for the prop to spawn and be visible
-- (outside this number/distance the props are deleted until needed again)
render = 100,
-- Input all your police jobs below for things like dispatch notifications & more
police = { 'police', 'sheriff' }
},
----------------------------------------------
-- 🌱 Create, edit & manage coca farms
----------------------------------------------
-- How long (in seconds) cooldown lasts on each plant after searching
-- After the cooldown has expired, the plant can be searched again
cooldown = 180,
-- Limit the maximum amount of coca that can be harvested
-- This is per player, per server session - which means once a player
-- Has reached this limit, they cannot search for more until the server restarts
-- Don't want a limit? Set a super high number!
limit = 100,
-- Manage your coca farms below
farms = {
[1] = {
-- Do you need the script to spawn the plant props here?
spawn = true,
-- If spawn = true, what prop do you want to spawn?
model = 'coca_growth_3_wild',
-- The center-most coords of the zone here
center = vec3(2139.1252, 5169.0010, 54.1451),
-- The size (radius) of the zone (enable debug to see zone)
size = 150,
-- What level is required to search plants here?
level = 1,
-- The item(s) required & optionally removed when planting
required = {
{ item = 'ls_shears', quantity = 1, remove = false },
-- Add your own additional items here if desired
},
-- What item and quantity to reward player upon searching?
reward = { item = 'ls_coca_leaf', quantity = { min = 1, max = 1 } },
-- A second item to reward, based on a percentage chance
-- These are the seeds required to grow & harvest personal coca plants
seed = { item = 'ls_coca_seed', quantity = { min = 1, max = 1 }, chance = 5 },
-- How much XP to reward upon a search? This is per leaf.
-- So if a player finds x3 leaves they'll get 3xp
xp = { min = 1, max = 1 },
-- Optional blip settings for this farm
blip = { enable = true, sprite = 89, color = 1, scale = 0.7, label = 'Coca Field' },
-- The coords of each plant to apply an interaction point
-- Or, if spawn = true - the coords to spawn each plant
coca = {
-- If you need help grabbing the exact coords of existing plants
-- We recommend using dolu_tool: https://github.com/dolutattoo/dolu_tool/releases/latest
[1] = vec3(2179.3621, 5155.1704, 53.9840),
[2] = vec3(2172.1982, 5152.0825, 53.1408),
[3] = vec3(2177.6487, 5162.5894, 55.0238),
[4] = vec3(2172.4924, 5167.3901, 55.5249),
[5] = vec3(2158.9534, 5170.7520, 55.4918),
[6] = vec3(2153.8794, 5178.9380, 56.4784),
[7] = vec3(2145.5286, 5184.4600, 56.7473),
[8] = vec3(2147.3643, 5196.0039, 57.9572),
[9] = vec3(2138.5225, 5197.4136, 57.4630),
[10] = vec3(2134.8069, 5202.9419, 57.6294),
[11] = vec3(2130.9080, 5207.7373, 57.7305),
[12] = vec3(2170.6714, 5145.4829, 51.9476),
[13] = vec3(2164.1550, 5154.3433, 53.0478),
[14] = vec3(2154.0593, 5159.4741, 53.3424),
[15] = vec3(2146.5908, 5168.2437, 54.4723),
[16] = vec3(2139.6296, 5177.9883, 55.5299),
[17] = vec3(2135.0847, 5186.2339, 56.3193),
[18] = vec3(2129.0337, 5191.6782, 56.6006),
[19] = vec3(2119.1389, 5195.7695, 56.5050),
[20] = vec3(2116.1658, 5203.2280, 57.0254),
[21] = vec3(2159.5923, 5138.2407, 49.8532),
[22] = vec3(2154.9294, 5145.2588, 50.8309),
[23] = vec3(2146.0554, 5151.8408, 51.5500),
[24] = vec3(2140.2964, 5158.5825, 52.4179),
[25] = vec3(2136.4829, 5166.3301, 53.4914),
[26] = vec3(2133.7690, 5173.1504, 54.3835),
[27] = vec3(2126.7668, 5180.8262, 55.0367),
[28] = vec3(2120.1672, 5185.2935, 55.2166),
[29] = vec3(2114.5471, 5193.8320, 56.1267),
[30] = vec3(2102.3345, 5198.7134, 55.7128),
[31] = vec3(2099.0806, 5191.6616, 55.1150),
[32] = vec3(2108.1299, 5185.8960, 54.8048),
[33] = vec3(2117.7590, 5176.4795, 53.9329),
[34] = vec3(2124.3381, 5168.0464, 53.0896),
[35] = vec3(2130.1248, 5158.8242, 52.1414),
[36] = vec3(2135.4602, 5149.5005, 50.8720),
[37] = vec3(2147.3152, 5144.6392, 50.3661),
[38] = vec3(2152.6050, 5138.3320, 49.5138),
[39] = vec3(2159.1841, 5130.0737, 48.8332),
[40] = vec3(2148.3936, 5128.9341, 48.0955),
[41] = vec3(2136.5923, 5140.8809, 49.5312),
[42] = vec3(2125.2170, 5153.5503, 51.2402),
[43] = vec3(2113.2061, 5164.1587, 52.3151),
[44] = vec3(2104.4207, 5176.2031, 53.6669),
[45] = vec3(2091.6428, 5186.8242, 54.4904),
[46] = vec3(2133.9062, 5131.5181, 48.1057),
[47] = vec3(2113.7305, 5151.1050, 50.3221),
[48] = vec3(2097.6240, 5169.5703, 52.1555),
[49] = vec3(2084.0840, 5183.9663, 53.8722)
}
},
-- You can create as many or as few farms as you wish!
-- Add more farms here if desired following the same format
-- [2] = {
-- spawn = false,
-- model = 'h4_prop_bush_cocaplant_01',
-- center = vec3(0.0, 0.0, 0.0),
-- size = 100,
-- level = 1,
-- required = {
-- { item = 'ls_shears', quantity = 1, remove = false },
-- },
-- reward = { item = 'ls_coca_leaf', quantity = { min = 1, max = 3 } },
-- seed = { item = 'ls_coca_seed', quantity = { min = 1, max = 1 }, chance = 5 },
-- xp = { min = 1, max = 1 },
-- blip = { enable = true, sprite = 89, color = 1, scale = 0.7, label = 'Coca Field' },
-- coca = {
-- [1] = vec3(0.0, 0.0, 0.0),
-- [2] = vec3(0.0, 0.0, 0.0),
-- [3] = vec3(0.0, 0.0, 0.0)
-- }
-- }
},
----------------------------------------------
-- 🌿 Customize your plant options
----------------------------------------------
planting = {
-- The seed item used to plant a coca plant
seed = 'ls_coca_seed',
-- The maximum number of plants a player can have at once
max = 5,
-- Do you want to check for collisions during the placement process?
collision = true,
-- The item(s) required & optionally removed when planting
required = {
{ item = 'ls_plant_pot', quantity = 1, remove = true },
-- Add your own additional items here if desired
},
-- How many police to require be online to plant?
police = 0,
-- Customize the soil checking feature
soil = {
-- Do you want to enable the soil checking feature?
-- This will only allow the player to place plants
-- On soil types matching the soil hashes below
enable = true,
-- If enable = true, these are the allowed soil types
-- You can get a soil type by setting debug to true above
-- And try placing a plant - it will print the soil hash in F8!
types = {
[2409420175] = true,
[3008270349] = true,
[3833216577] = true,
[223086562] = true,
[1333033863] = true,
[4170197704] = true,
[3594309083] = true,
[2461440131] = true,
[1109728704] = true,
[2352068586] = true,
[1144315879] = true,
[581794674] = true,
[2128369009] = true,
[-461750719] = true,
[-1286696947] = true,
[-1885547121] = true,
[-1907520769] = true
},
-- If you wish to keep the soil check feature active but want to allow planting
-- In certain locations (such as warehouses, etc) you can put the location & the
-- General size (radius) of the area here and the soil checking will be bypassed
ignore = {
[1] = { coords = vec3(0, 0, 0), radius = 25 },
-- [2] = { coords = vec3(0, 0, 0), radius = 25 },
-- Add more ignored locations here if desired
}
},
-- If you want to disable planting in specific locations you can do that here
blacklist = {
[1] = { coords = vec3(0, 0, 0), radius = 25 },
-- [2] = { coords = vec3(0, 0, 0), radius = 25 },
-- Add more blacklisted locations here if desired
},
-- If you do not want to allow players to plant freely around the map
-- You can restrict planting to whitelisted locations only and customize the
-- Size (radius) of each location planting will be enabled at below
restrict = {
-- Do you want to enable the restricted option?
enable = false,
-- If enable = true, what locations are allowed to plant in?
whitelist = {
[1] = { coords = vec3(0, 0, 0), radius = 25 },
-- [2] = { coords = vec3(0, 0, 0), radius = 25 },
-- Add more whitelisted locations here if desired
}
},
-- The props assigned to each stage
stages = {
[1] = 'coca_growth_1',
[2] = 'coca_growth_2',
[3] = 'coca_growth_3'
}
},
growth = {
-- 'update_interval' is roughly how often in milliseconds each plant is updated
update_interval = 15000,
-- 'starting' is the starting values (percentage) of each
starting = { thirst = 85, hunger = 85, yield = 100, growth = 0 },
-- 'growth_increase' is the percentage growth increases each update_interval
-- By default, growth will increase between 0.1% & 0.3% roughly every 15 seconds
growth_increase = { min = 0.15, max = 0.35 },
-- 'stages' is the growth percentage threshold for advancing to that stage
-- [2] = 40 means plants will change to stage 2 at 40% growth, etc
stages = { [2] = 40, [3] = 90 },
-- 'watering' is how much the plants thirst level will increase per watering action
-- The 'item' section is the watering item spawn name
-- By default, the plants thirst level will increase 8-13% per watering
watering = { item = 'ls_watering_can', min = 8.0, max = 13.0 },
-- 'fertilizing' is how much the plants hunger level will increase per fertilizing action
-- The 'item' section is the fertilizer item spawn name
-- By default, the plants hunger level will increase 10-15% per fertilizing
fertilizing = { item = 'ls_fertilizer', min = 10.0, max = 15.0 },
-- 'thirst' is how much the thirst will decrease per update_interval
-- By default, thirst will decrease between 0.1% and 0.4% roughly every 15 seconds
thirst = { min = 0.12, max = 0.3 },
-- 'hunger' is how much the hunger will decrease per update_interval
-- By default, hunger will decrease between 0.1% and 0.4% roughly every 15 seconds
hunger = { min = 0.11, max = 0.3 },
-- 'death' is when the thirst or hunger reaches this amount, the plant will die
-- By default, a plant will die anytime thirst or hunger reaches 20% or lower
-- When plants die, they are completely deleted & removed from the map
death = 20,
-- 'yield_threshold' is when a plants thirst or hunger reaches this number, the yield
-- Of the plant starts to decrease. So if a plant has 100% hunger but 69% thirst, the yield
-- Level will start going down every update_interval until the plants thirst & hunger are back
-- Above this amount
yield_threshold = 70,
-- 'yield_decrease' is how much the yield percentage will decrease every update_interval
-- When any plants thirst or hunger level is below the yield_threshold amount (70% by default)
yield_decrease = { min = 0.4, max = 0.9 },
},
harvest = {
-- The item(s) required & optionally removed when harvesting
required = {
{ item = 'ls_shears', quantity = 1, remove = false },
-- Add your own additional items here if desired
},
-- The items & quantity given to player upon harvest
add = {
-- The coca leaf item name
leaf = 'ls_coca_leaf',
-- The quantity of coca leaves given to player on harvest
-- The number of leaves given to the player is based on the plants yield percentage
-- By default, a player will get 3 leaves for every 10 percentage points
-- If a plant is harvested at 100% yield, this will give the player 30 leaves
-- If a plant is harvested at 50% yield, the player will get 15 leaves
-- The yield percentage changes based on how well the plant was taken care of
yield_per_10_percent = 3,
-- When a coca plant is harvested, you get leaves and seed(s)
-- However, the "required_yield" option allows you to only reward seeds
-- If the plant is being harvested at a specific yield percentage or higher
-- This way if the plant was poorly managed and has a yield below required_yield
-- Then the player will not get any seeds back
seed = { item = 'ls_coca_seed', quantity = { min = 1, max = 1 }, required_yield = 95, },
-- How much XP to reward upon harvesting? This is per leaf
-- So if a player harvests x15 leaves they'll get 15xp
xp = { min = 1, max = 1 }
}
},
----------------------------------------------
-- ⚙️ Setup your table options
----------------------------------------------
table = {
-- The item spawn name of the meth table
item = 'ls_coke_table',
-- The model/object used as the table prop
-- More models: https://forge.plebmasters.de/objects
model = 'bkr_prop_coke_table01a',
-- Do you want to lock tables to be accessed by their owners only?
-- If true, only the player who placed the table can interact with it
-- If false, anyone can interact & pick up / take the table themselves
locked = false,
-- How many tables do you want to allow one player to be able to place?
-- If you have locked = false, they can still use someone elses table
-- Even if the limit to place their own is 1
limit = 1,
-- If desired, you can disable the collision checking feature when placing
-- A table. It is recommended to keep true, but it can be disabled if needed
collisions = true,
-- How many police to require be online to place & use table?
police = { place = 0, use = 0 },
-- Restrict placing tables in these areas
restricted = {
[1] = { coords = vec3(0, 0, 0), radius = 25 },
-- Add more here if needed, be sure to increment
-- The numbers accordingly, [2], [3], etc
},
},
----------------------------------------------
-- 📈 Customize the XP system
----------------------------------------------
experience = {
-- The number in these [brackets] are the level
-- The number after = is the exp required to reach that level
-- Be sure levels *always* start at level 1 with 0 exp
[1] = 0,
[2] = 2500,
[3] = 10000,
[4] = 20000,
[5] = 50000,
[6] = 100000,
-- You can add or remove levels as you wish
-- Be sure to increment numbers correctly
},
----------------------------------------------
-- ⚒️ Customize cement gathering
----------------------------------------------
cement = {
-- Disable or enable cement gathering
enable = true,
-- Set a maximum number of cement that can be collected per player
-- This is per server session, so this does not reset until the server restarts
-- Don't want a limit? Set an unrealistically high number like 5000!
limit = 25,
-- How long (in seconds) cooldown lasts on each cement pallet after taking 1
-- After the cooldown has expired, the cement pallet can be searched again
cooldown = 180,
-- Do you want police to be notified when cement is taken?
-- If yes, chance is the percentage chance of a notification being sent
-- If no, set chance to 0. Sprite, color & scale are dispatch blip settings
dispatch = { chance = 5, sprite = 133, color = 1, scale = 1.0 },
-- Create, edit or manage collecting zones
zones = {
[1] = {
-- These zones are built with poly zones, input all the points below
-- Need help building a poly zone? Check out https://skyrossm.github.io/PolyZoneCreator/
-- Or you can use ox_libs /zone command to create a poly zone
points = {
vec3(-436.36, -863.64, 38.0),
vec3(-434.85, -965.15, 38.0),
vec3(-431.06, -1001.52, 38.0),
vec3(-440.91, -1098.48, 38.0),
vec3(-521.97, -1065.91, 38.0),
vec3(-525.00, -1030.30, 38.0),
vec3(-529.55, -993.18, 38.0),
vec3(-526.52, -959.09, 38.0),
vec3(-489.39, -882.58, 38.0),
vec3(-485.61, -862.88, 38.0)
},
-- The height of the polygon
thickness = 35,
-- The item and quantity given when collecting
reward = { item = 'ls_cement', quantity = { min = 1, max = 1 } },
-- How much XP to reward upon collecting? This is per x1 cement item
xp = { min = 0, max = 0 },
-- The coordinates of each cement object you want to allow collection at
coords = {
[1] = vec3(-486.745, -1051.958, 28.911),
[2] = vec3(-490.756, -1049.139, 28.911),
[3] = vec3(-492.023, -1048.076, 28.911),
[4] = vec3(-478.925, -1050.830, 28.912),
[5] = vec3(-478.925, -1049.176, 28.912),
[6] = vec3(-465.013, -1045.091, 28.911),
[7] = vec3(-464.057, -1046.464, 28.911),
[8] = vec3(-469.612, -1051.953, 28.911),
[9] = vec3(-468.091, -1052.831, 28.911),
[10] = vec3(-455.397, -1052.479, 28.919),
[11] = vec3(-454.051, -1053.609, 28.919),
[12] = vec3(-497.059, -1010.229, 28.918),
[13] = vec3(-497.059, -1008.576, 28.917),
[14] = vec3(-493.132, -996.690, 28.911),
[15] = vec3(-493.132, -994.933, 28.911),
[16] = vec3(-495.574, -992.676, 28.911),
[17] = vec3(-495.574, -994.433, 28.911),
[18] = vec3(-440.356, -1022.513, 25.784),
[19] = vec3(-440.380, -1021.142, 25.784),
[20] = vec3(-440.394, -1019.159, 25.784),
[21] = vec3(-440.041, -1017.833, 25.784),
[22] = vec3(-440.805, -967.684, 25.784),
[23] = vec3(-440.603, -966.006, 25.784),
[24] = vec3(-448.492, -947.273, 28.973),
[25] = vec3(-447.125, -947.166, 28.973),
[26] = vec3(-466.271, -899.449, 28.997),
[27] = vec3(-464.786, -899.297, 28.996),
[28] = vec3(-462.224, -895.241, 28.995),
[29] = vec3(-457.348, -881.329, 28.973),
[30] = vec3(-457.362, -879.957, 28.973),
[31] = vec3(-471.268, -925.761, 28.973),
[32] = vec3(-471.492, -927.114, 28.973),
[33] = vec3(-470.563, -956.971, 28.973),
[34] = vec3(-470.552, -955.599, 28.973),
[35] = vec3(-454.731, -959.882, 28.973),
[36] = vec3(-456.096, -959.752, 28.973),
-- Add or remove as desired
}
},
-- You can create as many or as few zones as you wish for cement!
-- Add more cement zones here if desired following the same format
-- 🗒️ Note: it will NOT spawn cement, only apply targets to the set coords
-- [2] = {
-- points = {
-- vec3(0.0, 0.0, 0.0),
-- vec3(0.0, 0.0, 0.0),
-- vec3(0.0, 0.0, 0.0),
-- vec3(0.0, 0.0, 0.0),
-- },
-- thickness = 35,
-- reward = { item = 'ls_cement', quantity = { min = 1, max = 1 } },
-- xp = { min = 0, max = 0 },
-- coords = {
-- [1] = vec3(0.0, 0.0, 0.0),
-- [2] = vec3(0.0, 0.0, 0.0),
-- [3] = vec3(0.0, 0.0, 0.0),
-- [4] = vec3(0.0, 0.0, 0.0),
-- [5] = vec3(0.0, 0.0, 0.0),
-- }
-- },
}
},
----------------------------------------------
-- 🛒 Customize supply shop
----------------------------------------------
shop = {
-- Optionally disable this shop if you wish to grant access to
-- Coke supplies via another method
enable = true,
-- If enabled = true, where is this shop located?
location = vec4(1901.1145, 4924.4526, 48.8241, 207.5563),
-- The ped model used
-- More models: https://docs.fivem.net/docs/game-references/ped-models/
model = 'a_m_m_farmer_01',
-- The scenario assigned to the ped (or nil/false for no scenario)
-- More scenarios: https://github.com/DioneB/gtav-scenarios
scenario = 'WORLD_HUMAN_DRINKING',
-- You can limit the hours at which the ped is available here
-- By default, this ped is available 24/7
-- Min is the earliest the shop is available (in 24hr format)
-- Max is the latest the shop is available (in 24hr format)
-- For example, if you want the ped only available during night set min to 21 and max to 5
hours = { min = 0, max = 24 },
-- Use cash or bank when purchasing here?
account = 'cash',
-- Items available for sale in this shop
items = {
-- item: item spawn name
-- price: price of item
-- icon: icon for item
-- metadata: optional metadata for item
[1] = { item = 'ls_watering_can', price = 15, icon = 'droplet', metadata = 100 },
[2] = { item = 'ls_fertilizer', price = 20, icon = 'burger', metadata = 100 },
[3] = { item = 'ls_plant_pot', price = 10, icon = 'plant-wilt' },
[4] = { item = 'ls_shears', price = 150, icon = 'scissors' },
[5] = { item = 'ls_baking_soda', price = 15, icon = 'box-archive' },
[6] = { item = 'ls_empty_baggy', price = 5, icon = 'bag-shopping' },
[7] = { item = 'ls_gasoline', price = 50, icon = 'gas-pump', metadata = 100 },
[8] = { item = 'ls_coke_table', price = 5000, icon = 'snowflake' },
-- Add or remove items as you wish
},
-- Manage blip settings if desired
blip = {
enable = true, -- Enable or disable the blip for this shop
sprite = 280, -- Sprite ID (https://docs.fivem.net/docs/game-references/blips/)
color = 0, -- Color (https://docs.fivem.net/docs/game-references/blips/#blip-colors)
scale = 0.9, -- Size/scale
label = 'Farmer' -- Label
}
},
----------------------------------------------
-- ❄️ Build & customize your coke labs
----------------------------------------------
-- Create as many or as few Coke Lab options you wish below
-- Be sure to increment the numbers accordingly, [2], [3], etc
labs = {
[1] = {
-- The entrance coords to this lab
enter = vec4(499.6197, -651.9501, 24.9085, 262.6456),
-- A brief description used in the menu
description = 'A modest lab located in Textile City on Little Bighorn',
-- The path to the image used to preview lab
-- To disable lab preview images, just set image = nil,
image = 'nui://lation_coke/labs/lab1.jpg',
-- The icon used in the menu
icon = 'fas fa-warehouse',
-- The price to purchase this lab
price = 100000,
-- The level required to purchase this lab
level = 1,
-- "camrot" below is for camera rotation. It it used to assign a default
-- Rotation value for a good default angle. To get the camrot for a warehouse
-- Simply stand in front of the warehouse entrance, facing away from the door,
-- Enable the debug option above and use the command "getrot" ingame
camrot = vec3(-0.000001, -0.000000, -97.354431),
-- The stashes available in this lab
storage = {
[1] = {
-- The ID of the stash, this must be unique for each and every stash
-- Recommended naming scheme is: lab#_stash#
identifier = 'lab1_stash1',
-- The label of the stash
label = 'Storage',
-- The coords of the stash
coords = vec3(1096.9021, -3192.4685, -38.8690),
-- The max size of the stash
slots = 50,
-- The max weight of the stash
weight = 50000
},
-- Add or remove more stashes as desired
}
},
[2] = {
enter = vec4(945.9252, -1138.3689, 26.5010, 0.7115),
description = 'A conveniently located lab in Murrieta Heights',
image = 'nui://lation_coke/labs/lab2.jpg',
icon = 'fas fa-warehouse',
price = 125000,
level = 1,
camrot = vec3(0.000000, 0.000000, 0.711507),
storage = {
[1] = {
identifier = 'lab2_stash1',
label = 'Storage',
coords = vec3(1096.9021, -3192.4685, -38.8690),
slots = 75,
weight = 75000
},
}
},
[3] = {
enter = vec4(930.9764, -1963.8546, 30.4092, 271.7736),
description = 'A lab located in Cypress Flats with extra storage',
image = 'nui://lation_coke/labs/lab3.jpg',
icon = 'fas fa-warehouse',
price = 150000,
level = 1,
camrot = vec3(-0.019753, -0.034459, -88.226372),
storage = {
[1] = {
identifier = 'lab3_stash1',
label = 'Storage',
coords = vec3(1096.9021, -3192.4685, -38.8690),
slots = 75,
weight = 75000
},
[2] = {
identifier = 'lab3_stash2',
label = 'Storage',
coords = vec3(1093.5725, -3199.8215, -38.9873),
slots = 25,
weight = 25000
},
}
},
[4] = {
enter = vec4(-1267.7716, -811.9169, 17.1077, 127.9849),
description = 'A large lab located in the heart of Del Perro',
image = 'nui://lation_coke/labs/lab4.jpg',
icon = 'fas fa-warehouse',
price = 175000,
level = 1,
camrot = vec3(-0.280802, 0.012579, 127.985153),
storage = {
[1] = {
identifier = 'lab4_stash1',
label = 'Storage',
coords = vec3(1096.9021, -3192.4685, -38.8690),
slots = 100,
weight = 100000
},
}
},
[5] = {
enter = vec4(-1684.7803, -291.3889, 51.8901, 145.2175),
description = 'A re-purposed church with lots of storage',
image = 'nui://lation_coke/labs/lab5.jpg',
icon = 'fas fa-warehouse',
price = 250000,
level = 1,
camrot = vec3(0.025158, -0.001362, 145.217484),
storage = {
[1] = {
identifier = 'lab5_stash1',
label = 'Storage',
coords = vec3(1096.9021, -3192.4685, -38.8690),
slots = 75,
weight = 75000
},
[2] = {
identifier = 'lab5_stash2',
label = 'Storage',
coords = vec3(1093.5725, -3199.8215, -38.9873),
slots = 50,
weight = 50000
},
[3] = {
identifier = 'lab5_stash3',
label = 'Storage',
coords = vec3(1090.0062, -3199.6501, -38.8936),
slots = 50,
weight = 50000
},
}
},
},
-- Various coke lab settings that apply to all labs
settings = {
-- The player account used for specific lab transactions
-- Available options: 'cash' or 'bank'
accounts = { purchase = 'cash', upgrade = 'cash', sell = 'cash' },
-- When a player enters a lab, this is where they are teleported to
enter = vec4(1088.7609, -3187.5291, -38.9934, 181.0739),
-- When a player is inside the lab, this is where they exit at
exit = vec4(1088.7609, -3187.5291, -38.9934, 181.0739),
-- Where do you want the manage lab menu to be located?
manage = vec3(1086.5208, -3194.2824, -39.1940),
-- Where are the cooking stations location at?
-- 'basic' is where the non-upgraded labs stations are located
-- 'upgrade' is where the upgraded labs stations are located
-- By default, an upgraded lab comes with more stations
stations = {
['basic'] = {
[1] = vec3(1090.3503, -3195.7060, -39.1919),
[2] = vec3(1093.1036, -3195.7351, -39.1924),
[3] = vec3(1095.3885, -3195.7077, -39.1919)
},
['upgrade'] = {
[1] = vec3(1090.3503, -3195.7060, -39.1919),
[2] = vec3(1093.1036, -3195.7351, -39.1924),
[3] = vec3(1095.3885, -3195.7077, -39.1919),
[4] = vec3(1098.6831, -3194.3437, -39.1923),
[5] = vec3(1101.8637, -3192.8369, -39.1920)
}
},
-- What is the maximum amount of labs a single player can own?
limit = 1,
-- When a player purchases a lab, these are the default values assigned
-- style options: 'basic', 'upgrade'
-- security options: 'basic', 'upgrade'
defaults = { style = 'basic', security = 'basic' },
-- When a player adds an authorized user to their lab, these are the default
-- Permissions applied to the newly added user
permissions = {
-- manageDoor is the ability to lock/unlock the lab door
manageDoor = false,
-- viewCamera is the ability to view the lab security camera
viewCamera = false,
-- manageUsers is the ability to add/remove authorized users
manageUsers = false
},
-- Upgrades available for each lab (style & security only available if default = 'basic')
-- Price is how much it costs | duration is how long (in minutes) it takes
upgrades = {
style = { price = 15000, duration = 60 },
security = { price = 10000, duration = 30 }
},
-- Lab selling related options
selling = {
-- When a user sells their lab, they must type this to continue
confirm = 'confirm',
-- When selling a lab, this is the percentage of the purchase price refunded
refund = 50,
},
-- If a player owns a warehouse this is the blip settings for it
blip = {
name = 'Coke Lab',
-- Sprite ID: https://docs.fivem.net/docs/game-references/blips/
sprite = 473,
-- Color: https://docs.fivem.net/docs/game-references/blips/#blip-colors
color = 0,
-- Size of the blip on the map
scale = 0.8
}
},
-- Various coke lab raiding settings
raids = {
-- Do you want to allow police be able to raid coke labs?
police = true,
-- Do you want to allow players be able to raid coke labs?
players = true,
-- If raids are enabled, below is the skillcheck difficulties and inputs
-- Learn more here: https://overextended.dev/ox_lib/Modules/Interface/Client/skillcheck
skillcheck = {
-- The skillcheck settings for entering a locked lab
entry = {
difficulty = {'easy', 'easy', 'easy', 'medium', 'medium', 'medium', 'hard'},
inputs = {'W', 'A', 'S', 'D'}
},
-- The skillcheck settings for opening a locked stash
stash = {
difficulty = {'easy', 'easy', 'easy', 'medium', 'medium', 'medium', 'hard'},
inputs = {'W', 'A', 'S', 'D'}
}
}
},
-- The ped that sells coke labs
dealer = {
-- Optionally disable this shop if you wish to grant access to the lab
-- Shop via another method through the use of the available export (see docs)
enable = true,
-- If enabled = true, where is this shop located?
location = vec4(-7.2472, 409.2823, 120.1271, 76.4763),
-- If enabled = true, the ped model used
-- More models: https://docs.fivem.net/docs/game-references/ped-models/
model = 'a_m_m_eastsa_02',
-- If enabled = true, the scenario assigned to the ped (or nil/false for no scenario)
-- More scenarios: https://github.com/DioneB/gtav-scenarios
scenario = 'WORLD_HUMAN_SMOKING',
-- If enabled = true, what level does a player have to be to access the shop?
level = 1,
-- You can limit the hours at which the ped is available here
-- By default, this ped is available 24/7
-- Min is the earliest the shop is available (in 24hr format)
-- Max is the latest the shop is available (in 24hr format)
-- For example, if you want the ped only available during night set min to 21 and max to 5
hours = { min = 0, max = 24 },
-- Manage blip settings if desired
blip = {
-- Enable or disable the blip for this shop
enable = true,
-- Sprite ID (https://docs.fivem.net/docs/game-references/blips/)
sprite = 280,
-- Color (https://docs.fivem.net/docs/game-references/blips/#blip-colors)
color = 0,
-- Size of the blip on the map
scale = 0.8,
-- Label
label = 'Lab Shop'
}
},
----------------------------------------------
-- 👩🍳 Customize cooking process
----------------------------------------------
cooking = {
-- Do you want each players cooking process to be unique?
-- If true every player will have a different mixture of
-- Gas & cement required to reach 100% purity coke/crack
-- If false, all players will have the same mixture and you
-- Can assign a server-wide range in the cooking steps below
unique = true,
-- Do you want police to be notified when a player is cooking?
-- If yes, chance is the percentage chance of a notification being sent
-- If no, set chance to 0. Sprite, color, scale & radius are dispatch blip settings
dispatch = {
-- Portable table cooking dispatch settings
table = { chance = 5, sprite = 133, color = 1, scale = 1.0, radius = 50 },
-- Lab cooking dispatch settings
lab = { chance = 5, sprite = 133, color = 1, scale = 1.0, radius = 50 }
},
-- Create, edit & manage the cooking steps for tables
table = {
[1] = {
-- Title and description of this step (edit in locales file)
title = locale('table-menu.process-leaves-title'),
description = locale('table-menu.process-leaves-desc'),
-- Icon settings
icon = 'fas fa-mortar-pestle',
iconColor = '',
-- Required items for this step
required = {
{ item = 'ls_coca_leaf', quantity = 20, remove = true },
-- Add your own additional items here if desired
-- Don't want to require anything? Leave this table empty
},
-- Items added when this step is completed
add = {
{ item = 'ls_coca_ground', quantity = 1 },
-- Add your own additional items here if desired
},
-- How much XP is given for this step?
-- If you do not want to award XP you can remove this section
-- Or assign the min/max to 0/0
xp = { min = 1, max = 3 },
-- If needing to trigger an event on the server-side
-- Add server = true after event name
event = { name = 'lation_coke:table:processLeaves' }
},
[2] = {
title = locale('table-menu.add-gas-title'),
description = locale('table-menu.add-gas-desc'),
icon = 'fas fa-gas-pump',
iconColor = '',
-- The gasoline item that is used to add to the ground leaves
-- This is where the base purity of the coke is first determined
gasoline = 'ls_gasoline',
-- ⚠️ If unique = true, you can ignore the range settings here
-- ⚠️ If unique = false, you can set a range for all players here
-- The ideal percentage/amount of gasoline to add
-- Any amount outside these values will impact purity negatively
range = { min = 5, max = 9 },
-- The maximum penalty to purity if outside the range above
-- For example if someone puts 100% gas, purity will come back 75% (25% max penalty)
penalty = 25,
required = {
{ item = 'ls_coca_ground', quantity = 5, remove = true },
},
add = {
{ item = 'ls_coca_base_unf', quantity = 1, metatype = 'purity' },
},
xp = { min = 1, max = 3 },
event = { name = 'lation_coke:table:addGasoline' }
},
[3] = {
title = locale('table-menu.add-cement-title'),
description = locale('table-menu.add-cement-desc'),
icon = 'fas fa-trowel-bricks',
iconColor = '',
-- The cement item that is used to add to the coca base
-- The purity level of the coke can be further impacted here
cement = 'ls_cement',
-- ⚠️ If unique = true, you can ignore the range settings here
-- ⚠️ If unique = false, you can set a range for all players here
-- The ideal percentage/amount of cement to add
-- Any amount outside these values will impact purity negatively
range = { min = 15, max = 19 },
-- The maximum penalty to purity if outside the range above
penalty = 25,
required = {
{ item = 'ls_coca_base_unf', quantity = 1, remove = true, metatype = 'purity' },
},
add = {
{ item = 'ls_coca_base', quantity = 1, metatype = 'purity' },
},
xp = { min = 1, max = 3 },
event = { name = 'lation_coke:table:addCement' }
},
[4] = {
title = locale('table-menu.start-heat-title'),
description = locale('table-menu.start-heat-desc'),
icon = 'fas fa-fire',
iconColor = '',
-- How long does this step take to complete?
-- This duration is in minutes
duration = 60,
required = {
{ item = 'ls_coca_base', quantity = 1, remove = true, metatype = 'purity' }
},
add = {
{ item = 'ls_cocaine_brick', quantity = 1, metatype = 'purity' }
},
xp = { min = 10, max = 30 },
event = { name = 'lation_coke:table:heatAndDry' }
},
[5] = {
title = locale('table-menu.package-title'),
description = locale('table-menu.package-desc'),
icon = 'fas fa-hammer',
iconColor = '',
-- The empty baggy item required to package a brick into bags
empty_baggy = 'ls_empty_baggy',
required = {
{ item = 'ls_cocaine_brick', quantity = 1, remove = true, metatype = 'purity' },
-- { item = 'ls_crack_brick', quantity = 1, remove = true, metatype = 'purity'}
},
add = {
{ item = 'ls_cocaine_bag', min = 10, max = 20, metatype = 'purity' },
-- { item = 'ls_crack_bag', min = 10, max = 20, metatype = 'purity' }
},
xp = { min = 2, max = 5 },
event = { name = 'lation_coke:table:packageBrick' }
},
-- -- OPTIONAL: Uncomment below to enable crack production on tables
-- [6] = {
-- title = locale('table-menu.cook-coke-title'),
-- description = locale('table-menu.cook-coke-desc'),
-- icon = 'fas fa-flask-vial',
-- iconColor = '',
-- -- How long does this step take to complete?
-- -- This duration is in minutes
-- duration = 60,
-- required = {
-- { item = 'ls_cocaine_brick', quantity = 1, remove = true, metatype = 'purity' },
-- { item = 'ls_baking_soda', quantity = 1, remove = true }
-- },
-- add = {
-- { item = 'ls_crack_brick', quantity = 1, metatype = 'purity' }
-- },
-- xp = { min = 5, max = 15 },
-- event = { name = 'lation_coke:table:cookCoke' }
-- },
-- -- OPTIONAL: Uncomment below to enable brick cutting on tables
-- [7] = {
-- title = locale('table-menu.cut-brick-title'),
-- description = locale('table-menu.cut-brick-desc'),
-- icon = 'fas fa-scissors',
-- iconColor = '',
-- -- The cutting agent used to double the batch size
-- cutting_agent = 'ls_baking_soda',
-- -- The percentage purity is impacted when cutting
-- -- e.g. If you cut x1 100% purity brick, it'll now be x2 65% bricks
-- penalty = 50,
-- required = {
-- { item = 'ls_cocaine_brick', quantity = 1, remove = true, metatype = 'purity' },
-- { item = 'ls_crack_brick', quantity = 1, remove = true, metatype = 'purity' }
-- },
-- add = {
-- { item = 'ls_cocaine_brick', quantity = 2, metatype = 'purity' },
-- { item = 'ls_crack_brick', quantity = 2, metatype = 'purity' }
-- },
-- xp = { min = 1, max = 3 },
-- event = { name = 'lation_coke:table:cutBrick' }
-- },
},
-- Create, edit & manage the cooking steps for lab stations
lab = {
[1] = {
title = locale('table-menu.process-leaves-title'),
description = locale('table-menu.process-leaves-desc'),
icon = 'fas fa-mortar-pestle',
iconColor = '',
required = {
{ item = 'ls_coca_leaf', quantity = 20, remove = true },
},
add = {
{ item = 'ls_coca_ground', quantity = 1 },
},
xp = { min = 2, max = 4 },
event = { name = 'lation_coke:lab:processLeaves' }
},
[2] = {
title = locale('table-menu.add-gas-title'),
description = locale('table-menu.add-gas-desc'),
icon = 'fas fa-gas-pump',
iconColor = '',
gasoline = 'ls_gasoline',
-- ⚠️ If unique = true, you can ignore the range settings here
-- ⚠️ If unique = false, you can set a range for all players here
-- The ideal percentage/amount of gasoline to add
-- Any amount outside these values will impact purity negatively
range = { min = 5, max = 9 },
-- The maximum penalty to purity if outside the range above
-- For example if someone puts 100% gas, purity will come back 75% (25% max penalty)
penalty = 20,
required = {
{ item = 'ls_coca_ground', quantity = 5, remove = true },
},
add = {
{ item = 'ls_coca_base_unf', quantity = 1, metatype = 'purity' },
},
xp = { min = 2, max = 4 },
event = { name = 'lation_coke:lab:addGasoline' }
},
[3] = {
title = locale('table-menu.add-cement-title'),
description = locale('table-menu.add-cement-desc'),
icon = 'fas fa-trowel-bricks',
iconColor = '',
cement = 'ls_cement',
-- ⚠️ If unique = true, you can ignore the range settings here
-- ⚠️ If unique = false, you can set a range for all players here
-- The ideal percentage/amount of cement to add
-- Any amount outside these values will impact purity negatively
range = { min = 15, max = 19 },
-- The maximum penalty to purity if outside the range above
penalty = 20,
required = {
{ item = 'ls_coca_base_unf', quantity = 1, remove = true, metatype = 'purity' },
},
add = {
{ item = 'ls_coca_base', quantity = 1, metatype = 'purity' },
},
xp = { min = 2, max = 4 },
event = { name = 'lation_coke:lab:addCement' }
},
[4] = {
title = locale('table-menu.start-heat-title'),
description = locale('table-menu.start-heat-desc'),
icon = 'fas fa-fire',
iconColor = '',
-- How long does this step take to complete?
-- This duration is in minutes
duration = 45,
required = {
{ item = 'ls_coca_base', quantity = 1, remove = true, metatype = 'purity' }
},
add = {
{ item = 'ls_cocaine_brick', quantity = 1, metatype = 'purity' }
},
xp = { min = 25, max = 50 },
event = { name = 'lation_coke:lab:heatAndDry' }
},
[5] = {
title = locale('table-menu.cook-coke-title'),
description = locale('table-menu.cook-coke-desc'),
icon = 'fas fa-flask-vial',
iconColor = '',
-- How long does this step take to complete?
-- This duration is in minutes
duration = 30,
required = {
{ item = 'ls_cocaine_brick', quantity = 1, remove = true, metatype = 'purity' },
{ item = 'ls_baking_soda', quantity = 1, remove = true }
},
add = {
{ item = 'ls_crack_brick', quantity = 1, metatype = 'purity' }
},
xp = { min = 5, max = 15 },
event = { name = 'lation_coke:lab:cookCoke' }
},
[6] = {
title = locale('table-menu.cut-brick-title'),
description = locale('table-menu.cut-brick-desc'),
icon = 'fas fa-scissors',
iconColor = '',
-- The cutting agent used to double the batch size
cutting_agent = 'ls_baking_soda',
-- The percentage purity is impacted when cutting
-- e.g. If you cut x1 100% purity brick, it'll now be x2 65% bricks
penalty = 35,
required = {
{ item = 'ls_cocaine_brick', quantity = 1, remove = true, metatype = 'purity' },
{ item = 'ls_crack_brick', quantity = 1, remove = true, metatype = 'purity' }
},
add = {
{ item = 'ls_cocaine_brick', quantity = 2, metatype = 'purity' },
{ item = 'ls_crack_brick', quantity = 2, metatype = 'purity' }
},
xp = { min = 1, max = 3 },
event = { name = 'lation_coke:lab:cutBrick' }
},
[7] = {
title = locale('table-menu.package-title'),
description = locale('table-menu.package-desc'),
icon = 'fas fa-hammer',
iconColor = '',
-- The empty baggy item required to package a brick into bags
empty_baggy = 'ls_empty_baggy',
-- A menu pops up to let you select which brick to package, it does not require both items
-- Be sure if you add additional brick types, the bag is in the same order
-- e.g. If cocaine brick is first, then cocaine bags should be first in the "add" section
required = {
{ item = 'ls_cocaine_brick', quantity = 1, remove = true, metatype = 'purity' },
{ item = 'ls_crack_brick', quantity = 1, remove = true, metatype = 'purity' }
},
add = {
{ item = 'ls_cocaine_bag', min = 10, max = 20, metatype = 'purity' },
{ item = 'ls_crack_bag', min = 10, max = 20, metatype = 'purity' }
},
xp = { min = 3, max = 6 },
event = { name = 'lation_coke:lab:packageBrick' }
},
}
},
----------------------------------------------
-- ❄️ Customize consumables
----------------------------------------------
consumables = {
-- ['item_spawn_name'] Consumable item name
['ls_cocaine_bag'] = {
-- Do you want to make this item consumable?
usable = true,
-- What level must the player be to consume this?
level = 1,
-- Manage the effects this item has on the player
effects = {
-- enable: do you want to enable this effect?
-- amount: if enabled, how much health to apply?
health = { enable = false, amount = 50 },
-- enable: do you want to enable this effect?
-- amount: if enabled, how much armor to apply?
-- max: if consuming multiple, what is the max armor a player can have?
armor = { enable = true, amount = 100, max = 100 },
-- enable: do you want to enable this effect?
-- multiplier: if enabled, how much to increase player speed? (maximum is 1.49)
-- duration: if enabled, how long (in milliseconds) to activate the effect
speed = { enable = true, multiplier = 1.49, duration = 30000 },
-- enable: do you want to enable this effect?
-- effect: the timecycle modifier (more can be found at: https://forge.plebmasters.de/timecyclemods)
-- duration: if enabled, how long (in milliseconds) to activate the effect
screen = { enable = true, effect = 'stoned_monkeys', duration = 30000 },
-- enable: do you want to enable this effect?
-- clipset: the movement clipset to apply (more can be found at: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json)
-- duration: if enabled, how long (in milliseconds) to activate the effect
walk = { enable = true, clipset = 'move_m@drunk@a', duration = 30000 },
-- enable: do you want to enable this effect?
-- name: the camera shake name (more can be found at: https://docs.fivem.net/natives/?_0xFD55E49555E017CF)
-- intensity: the intensity of the camera shake (lower is less, higher is more)
-- duration: if enabled, how long (in milliseconds) to activate the effect
shake = { enable = true, name = 'DRUNK_SHAKE', intensity = 2.0, duration = 30000 }
}
},
['ls_crack_bag'] = {
usable = true,
level = 1,
effects = {
health = { enable = false, amount = 50 },
armor = { enable = true, amount = 100, max = 100 },
speed = { enable = true, multiplier = 1.49, duration = 30000 },
screen = { enable = true, effect = 'stoned_monkeys', duration = 30000 },
walk = { enable = true, clipset = 'move_m@drunk@a', duration = 30000 },
shake = { enable = true, name = 'DRUNK_SHAKE', intensity = 2.0, duration = 30000 }
}
},
}
}
