A cooldown in seconds is set to prevent players from exploits and abuse with sales
This adds a short delay before players are able to sell again once a transaction has been completed
Don't set this value too high, 5 seems reasonable
Cooldown = 5, -- seconds between each sell attempt
Cash Symbol
The cash symbol used in your server
CashSymbol = '$', -- cash symbol used in your server
Required Item
You can set an item to be required in order to start selling
If RequiredItemis set to true you must define the item name in RequiredItemName
The RequiredItemName becomes a useable item giving players the option to use the item instead of the chat command
RequiredItem = true, -- set to true to require an item to start selling
RequiredItemName = 'burnerphone', -- if RequiresItem is set to true define the item name required to start selling here
Sell Anywhere
Setting SellAnywhereto true will skip the zone checks when players toggle selling drugs and allows them to sell to locals anywhere instead of specific zones
If you want to restrict players to selling in zones only then set SellAnywhere to false and then define your zones in the Zones table - This is covered in more detail below!
SellAnywhere = true, -- if set to true allow players to sell anywhere - if set to false they must be inside the zones specified below
Commands
These are string values to start and stop selling
You can set these to whatever you wish and then type them in chat
Commands = {
Start = 'startselling', -- command used to start selling which adds target option to peds to offer items for sale
Stop = 'stopselling', -- command used to stop selling which removes target option from peds
},
Target Settings
Define target settings for the peds when selling
When setting the maximum target distance please bare in mind the value you set for MaxDistance in Config.CoreSettings.Security to prevent false kicks
Target = {
Icon = 'fa-solid fa-syringe', -- target icon
Label = 'Offer Drugs', -- target label
Distance = 2.0, -- target distance (do not set this higher than the value you set in Config.CoreSettings.Security.MaxDistance)
},
Payment Types
You can choose between a clean cash payment or an item (like dirty cash for example)
If you are using 'item' then make sure you define the item name correctly and ensure it is in your items.lua file
ox_inventory users wanting clean cash leave the payment type as 'cash' - this is due to ox_inventory handling money as an item instead
Payment = {
Type = 'cash', -- payment type either 'cash' or 'item' - ox_inventory users leave this as cash, the function gives an item anyway as ox_inventory handles money as an item
Item = {
name = 'dirtycash', --if using an item as payment define that item name here
},
},
Chances
Define chances for accepted sales and a police notification for rejected sales
Chances = {
Selling = 75, -- chance for a successful sale - if not it gets rejected for 'crap quality' - default is 75%
Police = 50, -- chance to call the police if the sale is rejected - default is 50%
},
Ped Models
Define ped models that will spawn and interact with the player when toggling selling
PedModels = { --name of ped models to spawn around the player when sellings
'a_m_m_business_01',
'a_m_y_stwhi_02',
'a_f_y_hipster_01',
'a_m_y_downtown_01',
'a_f_m_tourist_01'
},
Items
Define items available for sale
Set minimum and maximum quantities that a ped can request to buy at once
Set minimum and maximum prices that a ped will pay for that item
Items = {
['coke_baggy'] = { --the key is the item name available to sell
quantity = { min = 1, max = 6, }, -- min and max amount of this item that can be sold at once
prices = { min = 100, max = 250, }, -- min and max price for this item
},
['crack_baggy'] = { --the key is the item name available to sell
quantity = { min = 1, max = 4, }, -- min and max amount of this item that can be sold at once
prices = { min = 300, max = 500, }, -- min and max price for this item
},
['blue_methbaggy'] = { --the key is the item name available to sell
quantity = { min = 3, max = 7, }, -- min and max amount of this item that can be sold at once
prices = { min = 200, max = 450, }, -- min and max price for this item
},
--add more sellable items below as required using the template above
},
Zones
If SellAnywhere is set to false then you must define zones that players can toggle selling inside
the key is the zone name
the info table is for debugging purposes - setting the zone thickness and debug values
The points table is for coordinates of where your zone will be - these MUST be vec3 values
Zones = {
['grove_street'] = { -- the key is the zone name
info = { -- zone settings
thickness = 20, -- thickness of zone
debug = true, -- toggle debug for this specific zone
},
points = { -- define points for zone location must be vec3
vec3(251.0, -1860.0, 27.0),
vec3(139.0, -1997.0, 27.0),
vec3(132.0, -2025.0, 27.0),
vec3(91.0, -2023.0, 27.0),
vec3(-151.0, -1788.0, 27.0),
vec3(-110.0, -1751.0, 27.0),
vec3(42.0, -1688.0, 27.0),
vec3(60.0, -1699.0, 27.0),
},
},
['vinewood'] = { -- the key is the zone name
info = { -- zone settings
thickness = 20, -- thickness of zone
debug = true, -- toggle debug for this specific zone
},
points = { -- define points for zone location must be vec3
vec3(-663.80639648438, 114.2766418457, 97.0),
vec3(-660.09497070312, 299.65426635742, 97.0),
vec3(-546.58837890625, 275.86111450196, 97.0),
vec3(-542.21002197266, 357.8136291504, 97.0),
vec3(-519.6430053711, 349.90490722656, 97.0),
vec3(-512.67572021484, 276.3483581543, 97.0),
vec3(21.216751098632, 278.6813659668, 97.0),
vec3(49.785594940186, 339.29946899414, 97.0),
vec3(108.84923553466, 399.87518310546, 97.0),
vec3(124.068069458, 384.4684753418, 97.0),
vec3(92.195236206054, 354.55239868164, 97.0),
vec3(170.3550567627, 377.32186889648, 97.0),
vec3(841.11456298828, 199.74020385742, 97.0),
vec3(530.7640991211, -193.10136413574, 97.0)
},
},
['forum_drive'] = { -- the key is the zone name
info = { -- zone settings
thickness = 20, -- thickness of zone
debug = true, -- toggle debug for this specific zone
},
points = { -- define points for zone location must be vec3
vec3(-181.78276062012, -1767.562133789, 32.0),
vec3(-232.15049743652, -1728.5841064454, 32.0),
vec3(-257.00219726562, -1706.3781738282, 32.0),
vec3(-316.23831176758, -1670.7681884766, 32.0),
vec3(-317.6089477539, -1671.6815185546, 32.0),
vec3(-339.08483886718, -1659.1655273438, 32.0),
vec3(-345.54052734375, -1655.4389648438, 32.0),
vec3(-370.05755615234, -1640.6751708984, 32.0),
vec3(-357.4814453125, -1617.630859375, 32.0),
vec3(-344.98095703125, -1605.980834961, 32.0),
vec3(-308.92208862304, -1544.8927001954, 32.0),
vec3(-304.6683959961, -1535.6296386718, 32.0),
vec3(-307.36282348632, -1531.2420654296, 32.0),
vec3(-303.91906738282, -1514.8071289062, 32.0),
vec3(-302.4489440918, -1508.5216064454, 32.0),
vec3(-299.51068115234, -1489.9995117188, 32.0),
vec3(-297.42388916016, -1452.6616210938, 32.0),
vec3(-297.9144897461, -1445.0788574218, 32.0),
vec3(-300.47821044922, -1410.740600586, 32.0),
vec3(-243.52647399902, -1409.9093017578, 32.0),
vec3(-228.14682006836, -1408.454711914, 32.0),
vec3(-214.2696685791, -1404.2430419922, 32.0),
vec3(-202.69938659668, -1398.415649414, 32.0),
vec3(-176.32830810546, -1382.9993896484, 32.0),
vec3(-140.07070922852, -1360.1298828125, 32.0),
vec3(-131.92518615722, -1353.8952636718, 32.0),
vec3(-126.67826080322, -1347.0697021484, 32.0),
vec3(-122.79215240478, -1338.1767578125, 32.0),
vec3(-122.24575042724, -1335.2940673828, 32.0),
vec3(-88.574974060058, -1337.8919677734, 32.0),
vec3(-83.885818481446, -1337.3891601562, 32.0),
vec3(-72.32137298584, -1347.8657226562, 32.0),
vec3(-55.457233428956, -1349.6873779296, 32.0),
vec3(-46.141300201416, -1350.8635253906, 32.0),
vec3(0.30536636710166, -1350.3518066406, 32.0),
vec3(19.377029418946, -1349.9018554688, 32.0),
vec3(46.155563354492, -1350.2407226562, 32.0),
vec3(56.231525421142, -1346.1237792968, 32.0),
vec3(61.976043701172, -1336.847290039, 32.0),
vec3(61.876712799072, -1331.4219970704, 32.0),
vec3(94.016792297364, -1317.3137207032, 32.0),
vec3(98.473731994628, -1315.1446533204, 32.0),
vec3(100.91152191162, -1318.8972167968, 32.0),
vec3(116.59771728516, -1309.0223388672, 32.0),
vec3(115.354637146, -1306.6965332032, 32.0),
vec3(142.13439941406, -1291.261352539, 32.0),
vec3(143.9640197754, -1293.9191894532, 32.0),
vec3(159.81324768066, -1280.7825927734, 32.0),
vec3(166.5573272705, -1270.3135986328, 32.0),
vec3(203.52110290528, -1282.7435302734, 32.0),
vec3(231.76536560058, -1329.863647461, 32.0),
vec3(215.84732055664, -1346.2076416016, 32.0),
vec3(190.12483215332, -1387.3775634766, 32.0),
vec3(162.40365600586, -1423.5834960938, 32.0),
vec3(154.98637390136, -1424.7723388672, 32.0),
vec3(126.23979187012, -1458.2556152344, 32.0),
vec3(108.94204711914, -1478.851196289, 32.0),
vec3(113.4779586792, -1482.6186523438, 32.0),
vec3(111.75213623046, -1484.7049560546, 32.0),
vec3(109.91118621826, -1483.4962158204, 32.0),
vec3(92.817611694336, -1503.7390136718, 32.0),
vec3(69.58283996582, -1526.8861083984, 32.0),
vec3(39.489440917968, -1562.9592285156, 32.0),
vec3(16.217784881592, -1590.7109375, 32.0),
vec3(0.90857058763504, -1609.6218261718, 32.0),
vec3(-22.47274017334, -1636.7037353516, 32.0),
vec3(-65.98893737793, -1687.4913330078, 32.0)
},
},
--add more sale zones below as required using the template above
},