You can allow players to purchase labs via tebex instead of in-game for some labs should you wish players can join the server after purchase and use the Config.RedeemCommand (/ClaimLab) in order to claim their new lab this will give them keys into their inventory and ownership.
First you will need to ensure you have linked your tebex to your FiveM server there are many guides for this on Google. You will then need to make a new package with the deliverable product being a Game Server command setup like so:
The name of this package you create must be the name of the index of the lab in the config.
So in the example below it would have to be "Downtown Cocaine Lab"
Example of Tebex Lab in Config
['Downtown Cocaine Lab'] = { --## Private Owned Door =vector4(184.57171630859,-1514.0261230469,29.318643569946,225.4059753418), Shell ="Cocaine High End Shell", -- Can be false or can be model name of a shell TebexPackage = 'https://www.dirkscripts.com/category/resources', --## This will not be useable until claimed. Please read the documentation provided on how to setup tebex packages. --- Access.Ownable must be a number but it doesnt matter which number it is if this is a tebex package you can set this to the link to the package see docs
TeamWorkMode = false, --## If this is true required items will come from the shared stockpile and reward items will also go here
KeyItem = nil, --## This could be a name of an item if you wanted a different item to be the key for this lab :thinking: It'll still need metadata attached via the script
Access = { Ownable = 50000, --## Will make this buyable and have key access -- Probably leave Gangs, Jobs and Public as false. Can be false also
KeyCode =false, --## Do you want a keycode to access this? -- This will overwrite everything else Public =false, Gangs =false, --## Gangs can access this lab Jobs =false, --## Gangs can access this lab }, IngOrders = { Price =5000, DropPoint =vector4(171.79383850098,-1517.9276123047,29.141628265381,135.28630065918), Items = { rawcocaine =50, bakingsoda =50, actionfigure =25, }, }, Blip = { --## Delete this blip table if you don't want a blip Scale =0.75, Sprite =497, Color =45, Display =4, Close = true, --## Will only show this on the minimap when you are close to the lab forcing players to drive around and try find it.
}, Stages = { [1] = { Position =vector4(4.825562, -3.003174, -2.673802, 179.7306060791), Label ="Cut Cocaine", Icon ="fa-solid fa-scissors", FancyScene = "Cut Cocaine", --# This can be one of the scenes from Config.Scenes or it can be false and you can use a regular animation
NormalAnim = false, --## Can be false or can be a table like so {anim = "anim_b", dict = "dict_a", time = 15000}
RequiredItems = { rawcocaine =3, bakingsoda =2, }, RewardItems = { cutcocaine =2, }, }, [2] = { Position =vector4(3.890869, -0.5727539, -2.673793,359.83615112305), Label ="Cut Cocaine", Icon ="fa-solid fa-scissors", FancyScene = "Cut Cocaine", --# This can be one of the scenes from Config.Scenes or it can be false and you can use a regular animation
NormalAnim = false, --## Can be false or can be a table like so {anim = "anim_b", dict = "dict_a", time = 15000}
RequiredItems = { rawcocaine =3, bakingsoda =2, }, RewardItems = { cutcocaine =2, }, }, [3] = { Position =vector4(4.125854, 3.231079, -2.673817,0.0), Label ="Package Cocaine", Icon ="fa-solid fa-box-archive", FancyScene = "Package Cocaine", --# This can be one of the scenes from Config.Scenes or it can be false and you can use a regular animation
NormalAnim = false, --## Can be false or can be a table like so {anim = "anim_b", dict = "dict_a", time = 15000}
RequiredItems = { cutcocaine =1, actionfigure =1, }, RewardItems = { cocainepackage =1, }, }, }, },