Configuration

Config = {}

Config.Debug = false, -- Enable Debug Mode (true/false)

SD.Locale.LoadLocale('en') -- Load the locale language, if available. You can change 'en' to any other available language in the locales folder.

Config.PoliceJobs = { 'police', --[['sheriff']] } -- Array of jobs that are checked in the cop count callback

-- Enable the level system for drug sales (true/false) -- It's highly recommended that you keep this as true for the best experience.
Config.EnableLevels = true -- true/false, if false some settings from Config.Levels 1 will apply

-- Define payout type, THIS DOES NOT APPLY TO REGULAR DRUG SALES ONLY DELIVERIES AND ENCOUNTERS, UNLESS Config.EnableLevels is set to false.
-- (Configure payout type for regular sales in Config.Levels)
Config.Payout = { Type = 'dirty', DirtyType = 'standard' } -- Type (dirty/clean) DirtyType (standard(1-1)

-- Choose whether to display the player's level in the reputation context menu (true/false).
Config.DisplayLevel = true -- true/false

-- Enable or disable zones for drug selling (true/false).
-- If false, the settings from Config.Zones[1] will apply globally to all peds.
Config.EnableZones = true -- true/false

-- Encounter settings for special bulk sales.
Config.Encounters = {
    XPPerEncounter = 100,
    Cooldown = { Enable = true, Period = { Hour = 0, Min = 30 } }, -- Cooldown between potential encounters
    Locations = { -- List of coordinates where encounters can take place.
        { x = -471.2451, y = -936.0005, z = 22.59847, w = 87.16846 },
        { x = -584.1844, y = -809.052, z = 25.36831, w = 90.43919 },
        { x = -45.30865, y = -1288.552, z = 28.20331, w = 271.5068 },
        { x = 341.1421, y = -1270.664, z = 30.97994, w = 88.50526 },
        { x = 388.2775, y = -731.8636, z = 28.29034, w = 177.2655 },
        { x = 77.01881, y = -372.4966, z = 38.92185, w = 160.3416 },
        { x = -15.49387, y = 216.7423, z = 105.7729, w = 75.65116 },
        { x = -621.6119, y = 321.9883, z = 81.2636, w = 261.9267 },
        { x = -1412.134, y = -262.7039, z = 45.37914, w = 311.6047 },
        { x = -1545.092, y = -588.9329, z = 33.86761, w = 299.4996 },
        { x = 701.6583, y = -716.8155, z = 25.0964, w = 176.8363 },
        { x = 1231.816, y = -458.5912, z = 65.65714, w = 256.126 },
        { x = 1130.174, y = -989.0837, z = 44.96939, w = 95.44134 },
        { x = 944.9972, y = -2166.071, z = 29.55158, w = 80.7581 },
        { x = 135.6049, y = -2473.481, z = 4.999989, w = 235.2589 },
        { x = 6.239083, y = -1816.575, z = 24.35292, w = 229.8986 },
        { x = 106.1636, y = -1976.184, z = 19.96052, w = 21.30354 }
        -- Add more locations as needed....
    }
}

-- Blacklisted Peds that cannot be interacted with/used for selling drugs
Config.BlacklistedPeds = {
    [`s_m_y_ranger_01`] = true,
    [`s_m_y_sheriff_01`] = true,
    [`s_m_y_cop_01`] = true,
    [`s_f_y_sheriff_01`] = true,
    [`s_f_y_cop_01`] = true,
    [`s_m_y_hwaycop_01`] = true
}

-- Animation details for the exchanging of drugs and money (Thanks lation for sending me offsets <3)
Config.Animations = {
    BuyerAccepts = {
        drugModel = 'prop_weed_bottle',
        drugPos = {x = 0.13, y = 0.02, z = 0.0},
        drugRot = {x = -90.0, y = 0.0, z = 0.0},
        cashModel = 'hei_prop_heist_cash_pile',
        cashPos = {x = 0.13, y = 0.02, z = 0.0},
        cashRot = {x = -90.0, y = 0.0, z = 0.0},
        animDict = 'mp_common',
        animClip = 'givetake1_a'
    },
}

-- Police Alert for Suspicious Dealings
policeAlert = function()
    SD.PoliceDispatch({
        displayCode = "10-31S",                    -- Dispatch Code
        title = 'Suspicious Dealings',             -- Title is used in cd_dispatch/ps-dispatch
        description = "Suspicious activities reported", -- Description of the incident
        message = "Suspects reported engaging in suspicious dealings", -- Additional message or information
        -- Blip information is used for ALL dispatches besides ps_dispatch, please reference dispatchcodename below.
        sprite = 310,                              -- The blip sprite for suspicious activity or related icon
        scale = 1.0,                               -- The size of the blip on the map
        colour = 1,                                -- The color of the blip on the map (red, for example)
        blipText = "Suspicious Dealings",          -- Text that appears on the Blip
        -- ps-dispatch
        dispatchcodename = "suspicious_dealings"   -- This is the name used by ps-dispatch users for the sv_dispatchcodes.lua or config.lua under the Config.Blips entry. (Depending on Version)
    })
end -- This is the function that is called when the police are meant to be alerted. You can modify this in any way.

-- Robbery Cooldown (e.g. how many times can a player be robbed in a specific time frame)
Config.RobberyCooldown = { Enable = true, Period = { Hour = 0, Min = 5 } }

Config.EnableLaundering = false -- Enable the money laundering feature (true/false)

-- Moneywashing Settings
-- Configures item-based money laundering (1-1 ratio, e.g., 1 ItemName = $1).
-- Recommended to disable if you don't use marked money where 1 item = $1.
-- If you don't have a 1-1 ratio marked money item, you can configure tradtional moneywashing settings in Config.Levels
Config.MoneyWashing = {
    WashItem = { Enable = false, Chance = 100, ItemName = "black_money", MinAmount = 500,  MaxAmount = 2500 },
} -- if Enabled, the 'Washing' settings in Config.Levels will be overridden (Levels.Tax still applies to Config.MoneyWashing)

-- Config.DirtyMoney specifies the name of 1-1 dirty money item. 
-- If Levels.MoneyType.DirtyType is set to '1-1', this item will be used for 1-1 ratio dirty money transactions.
Config.DirtyMoney = 'black_money' -- Name of the dirty money item (e.g., 'black_money')

-- Settings for the ped that handles drug deliveries
Config.Ped = {
    Enable = true, -- true/false
    Location = {
        {x = 1075.619, y = -2330.657, z = 29.29169, w = 352.8969},
        {x = 864.2555, y = -967.3761, z = 26.86267, w = 293.9679},
        {x = -594.4417, y = -748.6177, z = 28.48703, w = 177.1182},
        -- Add more locations as needed (Will Randomize from available locations each script start)
    },
    Model = "s_m_m_ccrew_01",
    Interaction = {
        Icon = "fas fa-circle",
        Distance = 3.0,
    },
    Scenario = "WORLD_HUMAN_STAND_IMPATIENT" -- Full list of scenarios @ https://pastebin.com/6mrYTdQv
}

-- Blip Creation for Delivery Ped
Config.Blip = {
    Enable = true, -- Change to false to disable blip creation
    Sprite = 480, -- Sprite/Icon
    Display = 4,
    Scale = 0.6,
    Colour = 1,
    Name = "Drug Lord Jeff", -- Name of the blip
}

-- Enables the display of Stats in the menu.
-- If disabled and Config.Milestones.Enable is true, the Milestones option will be shown instead.
-- No menu option will appear if both Stats and Milestones are disabled.
Config.Stats = {
    Enable = true,
}


-- Configuration Table for Player Milestones
-- This table defines different categories of milestones that players can achieve.
-- Each category contains multiple milestones, each with specific requirements and rewards.
Config.Milestones = {
    Enable = true, -- This key enables or disables the milestone system. Set to true to activate. if false option won't appear

    -- General Milestones Category
    -- These milestones apply to all drug sales combined.
    ["general"] = {
        -- Milestone 1 in the 'general' category
        [1] = {
            RequiredAmount = 5000, -- The total number of items sold required to achieve this milestone.
            Reward = {
                Type = "xp",        -- The type of reward. Can be "item", "xp", or "money".
                Amount = 100       -- The amount of the reward. For "xp", it's the experience points granted.
            }
        },
        -- Milestone 2 in the 'general' category
        [2] = {
            RequiredAmount = 10000, -- Total items sold required for this milestone.
            Reward = {
                Type = "item",        -- Reward type is an item.
                Name = "advancedlockpick",       -- The internal name or identifier of the item to be given.
                Label = "Advanced Lockpick",      -- The display name of the item shown to the player.
                Amount = 1          -- The quantity of the item awarded.
            }
        },
        -- Milestone 3 in the 'general' category with a money reward
        [3] = {
            RequiredAmount = 20000, -- Higher sales required for a bigger reward.
            Reward = {
                Type = "money",       -- Reward type is money.
                Label = "Money",      -- Display name for the money reward.
                Amount = 1000         -- The amount of money awarded to the player.
            }
        }
        -- You can add as many milestones within a category as you like..
    },
    -- Milestones from here on out are drug-speific ones
    ["oxy"] = { -- Spawn name of the drug
        [1] = { -- Milestone 1
            RequiredAmount = 1000, -- Total items sold required for this milestone
            Reward = {
                Type = "item",
                Name = "advancedlockpick",
                Label = "Advanced Lockpick",
                Amount = 1
            }
        },
        [2] = { -- Milestone 2
            RequiredAmount = 5000,
            Reward = {
                Type = "money",
                Label = "Money",
                Amount = 1000
            }
        }
    },
    ["cokebaggy"] = {
        [1] = {
            RequiredAmount = 800,
            Reward = {
                Type = "xp",
                Amount = 50
            }
        },
        [2] = {
            RequiredAmount = 3000,
            Reward = {
                Type = "xp",
                Amount = 150
            }
        }
    },
    ["crack_baggy"] = {
        [1] = {
            RequiredAmount = 600,
            Reward = {
                Type = "item",
                Name = "medkit",
                Label = "Medkit",
                Amount = 2
            }
        },
        [2] = {
            RequiredAmount = 2500,
            Reward = {
                Type = "xp",
                Amount = 200
            }
        }
    },
    ["xtcbaggy"] = {
        [1] = {
            RequiredAmount = 1000,
            Reward = {
                Type = "xp",
                Amount = 100
            }
        },
        [2] = {
            RequiredAmount = 4000,
            Reward = {
                Type = "xp",
                Amount = 200
            }
        }
    },
    ["meth"] = {
        [1] = {
            RequiredAmount = 900,
            Reward = {
                Type = "item",
                Name = "armor",
                Label = "Body Armor",
                Amount = 1
            }
        },
        [2] = {
            RequiredAmount = 3500,
            Reward = {
                Type = "xp",
                Amount = 200
            }
        }
    },
    ["weed_white-widow"] = {
        [1] = {
            RequiredAmount = 1200,
            Reward = {
                Type = "xp",
                Amount = 100
            }
        },
        [2] = {
            RequiredAmount = 5000,
            Reward = {
                Type = "xp",
                Amount = 200
            }
        }
    },
    ["weed_skunk"] = {
        [1] = {
            RequiredAmount = 1200,
            Reward = {
                Type = "item",
                Name = "lockpick",
                Label = "Lockpick",
                Amount = 1
            }
        },
        [2] = {
            RequiredAmount = 5000,
            Reward = {
                Type = "xp",
                Amount = 200
            }
        }
    },
    ["weed_purple-haze"] = {
        [1] = {
            RequiredAmount = 1400,
            Reward = {
                Type = "xp",
                Amount = 100
            }
        },
        [2] = {
            RequiredAmount = 6000,
            Reward = {
                Type = "xp",
                Amount = 200
            }
        }
    },
    ["weed_og-kush"] = {
        [1] = {
            RequiredAmount = 1500,
            Reward = {
                Type = "item",
                Name = "advanced_medkit",
                Label = "Advanced Medkit",
                Amount = 1
            }
        },
        [2] = {
            RequiredAmount = 6000,
            Reward = {
                Type = "xp",
                Amount = 200
            }
        }
    },
    ["weed_amnesia"] = {
        [1] = {
            RequiredAmount = 1600,
            Reward = {
                Type = "xp",
                Amount = 50
            }
        },
        [2] = {
            RequiredAmount = 7000,
            Reward = {
                Type = "xp",
                Amount = 100
            }
        }
    },
    ["weed_ak47"] = {
        [1] = {
            RequiredAmount = 1800,
            Reward = {
                Type = "item",
                Name = "heavyarmor",
                Label = "Heavy Armor",
                Amount = 1
            }
        },
        [2] = {
            RequiredAmount = 7500,
            Reward = {
                Type = "xp",
                Amount = 100
            }
        }
    }
}


-- Settings for drug deliveries.
Config.Delivery = {
    Level = { Enable = false, Level = 3 }, -- Level requirement to access deliveries. 
    DisplayLevel = true, -- -- Display player's level in delivery menu.
    Small = {
        XPPerStop = 20, -- XP gained per delivery stop.
        Quantity = 50, -- Quantity of drugs per delivery.
        ProcessingTime = { Enable = true, Period = { Hour = 0, Min = 5 } }, -- Configurable processing time with Enable flag
        Routes = { -- Longer routes, have a small boost on top of the initial value.
            {Stops = math.random(4, 6), Boost = 0.0}, -- Number of stops and potential boost for route 1.
            {Stops = math.random(7, 8), Boost = 0.15},
            {Stops = math.random(9, 11), Boost = 0.20},
             -- Add more routes as needed.
        },
        RouteCount = 3, -- Total number of routes. (will randomize if less than the routes table has)
        Locations = { -- List of possible delivery locations.
            {x = 114.34, y = -1961.17, z = 21.33},
            {x = 76.26, y = -1948.07, z = 21.17},
            {x = 72.2, y = -1939.1, z = 21.37},
            {x = 56.56, y = -1922.78, z = 21.91},
            {x = 39.01, y = -1911.54, z = 21.95},
            {x = 5.21, y = -1884.26, z = 23.7},
            {x = -4.74, y = -1872.23, z = 24.15},
            {x = -20.49, y = -1858.92, z = 25.41},
            {x = -34.22, y = -1847.06, z = 26.19},
            {x = -50.35, y = -1783.23, z = 28.3},
            {x = -41.96, y = -1792.15, z = 27.83},
            {x = 21.24, y = -1844.76, z = 24.6},
            {x = 29.9, y = -1854.79, z = 24.07},
            {x = 46.15, y = -1864.25, z = 23.28},
            {x = 54.46, y = -1873.08, z = 22.81},
            {x = 101.02, y = -1912.14, z = 21.41},
            {x = 118.38, y = -1921.06, z = 21.32},
            {x = 126.79, y = -1930.08, z = 21.38},
            {x = 152.77, y = -1823.65, z = 27.87},
            {x = 130.58, y = -1853.21, z = 25.23},
            {x = 150.04, y = -1864.67, z = 24.59},
            {x = 171.65, y = -1871.51, z = 24.4},
            {x = 192.31, y = -1883.24, z = 25.06},
            {x = 208.56, y = -1895.37, z = 24.81},
            {x = 115.37, y = -1887.88, z = 23.93},
            {x = 103.99, y = -1885.4, z = 24.32},
            {x = 128.19, y = -1897.05, z = 23.67},
            {x = 148.71, y = -1904.46, z = 23.53},
            {x = 179.34, y = -1923.93, z = 21.37},
            {x = 165.15, y = -1944.97, z = 20.24},
            {x = 148.8, y = -1960.55, z = 19.46},
            {x = 144.25, y = -1968.96, z = 18.86},
            {x = 282.81, y = -1899.1, z = 27.27},
            {x = 270.41, y = -1916.99, z = 26.18},
            {x = 258.25, y = -1927.16, z = 25.44},
            {x = 250.79, y = -1935.06, z = 24.7},
            {x = 236.06, y = -2046.31, z = 18.38},
            {x = 251.04, y = -2030.26, z = 18.71},
            {x = 256.47, y = -2023.61, z = 19.27},
            {x = 279.58, y = -1993.94, z = 20.8},
            {x = 291.58, y = -1980.11, z = 21.6},
            {x = 295.74, y = -1971.87, z = 22.9},
            {x = 311.92, y = -1956.16, z = 24.62},
            {x = 324.31, y = -1937.34, z = 25.02},
            {x = 320.33, y = -1854.13, z = 27.51},
            {x = 329.42, y = -1845.86, z = 27.75},
            {x = 338.73, y = -1829.58, z = 28.34},
            {x = 348.7, y = -1821.0, z = 28.89},
            {x = 368.68, y = -1895.75, z = 25.18},
            {x = 385.28, y = -1881.57, z = 26.03},
            {x = 399.35, y = -1865.12, z = 26.72},
            {x = 412.45, y = -1856.33, z = 27.32},
            {x = 427.21, y = -1842.06, z = 28.46},
            {x = 440.54, y = -1829.66, z = 28.36},
            {x = 405.79, y = -1751.15, z = 29.71},
            {x = 419.1, y = -1735.52, z = 29.61},
            {x = 431.22, y = -1725.4, z = 29.6},
            {x = 443.39, y = -1707.37, z = 29.71},
            {x = 489.62, y = -1714.13, z = 29.71},
            {x = 479.66, y = -1735.76, z = 29.15},
            {x = 474.5, y = -1757.73, z = 29.09},
            {x = 472.14, y = -1775.33, z = 29.07},
            {x = 514.28, y = -1780.84, z = 28.91},
            {x = 512.54, y = -1790.63, z = 28.92},
            {x = 500.5, y = -1813.25, z = 28.89},
            {x = 495.37, y = -1823.37, z = 28.87},
            {x = 300.15, y = -1783.72, z = 28.44},
            {x = 304.42, y = -1775.47, z = 29.1},
            {x = 320.66, y = -1759.74, z = 29.64},
            {x = 332.97, y = -1740.85, z = 29.73},
            {x = 240.66, y = -1687.69, z = 29.7},
            {x = 253.0, y = -1670.79, z = 29.66},
            {x = 282.07, y = -1694.72, z = 29.65},
            {x = 269.68, y = -1712.82, z = 29.67},
            {x = 257.63, y = -1722.81, z = 29.65},
            {x = 250.13, y = -1730.76, z = 29.67}
        },
    },
    Medium = {
        XPPerStop = 25,
        Quantity = 125,
        ProcessingTime = { Enable = true, Period = { Hour = 0, Min = 5 } },
        Routes = {
            {Stops = math.random(5, 7), Boost = 0.0},
            {Stops = math.random(8, 9), Boost = 0.10},
            {Stops = math.random(10, 12), Boost = 0.20},
        },
        RouteCount = 3,
        Locations = {
            {x = 1060.51, y = -378.17, z = 68.23},
            {x = 1028.78, y = -408.29, z = 66.34},
            {x = 1010.46, y = -423.43, z = 65.35},
            {x = 987.46, y = -432.89, z = 64.05},
            {x = -442.51, y = 6197.89, z = 29.55},
            {x = 967.11, y = -451.59, z = 62.79},
            {x = 944.49, y = -463.09, z = 61.55},
            {x = 921.86, y = -477.76, z = 61.08},
            {x = 906.27, y = -489.45, z = 59.44},
            {x = 878.37, y = -497.95, z = 58.09},
            {x = 861.49, y = -508.94, z = 57.72},
            {x = 850.24, y = -532.64, z = 57.93},
            {x = 844.09, y = -562.62, z = 57.99},
            {x = 861.72, y = -583.54, z = 58.16},
            {x = 886.78, y = -608.22, z = 58.45},
            {x = 902.92, y = -615.53, z = 58.45},
            {x = 928.89, y = -639.77, z = 58.24},
            {x = 943.27, y = -653.29, z = 58.63},
            {x = 959.89, y = -669.92, z = 58.45},
            {x = 970.81, y = -701.52, z = 58.48},
            {x = 979.13, y = -716.32, z = 58.22},
            {x = 996.82, y = -729.63, z = 57.82},
            {x = 1101.13, y = -411.38, z = 67.56},
            {x = 1099.46, y = -438.74, z = 67.79},
            {x = 1098.65, y = -464.56, z = 67.32},
            {x = 1090.52, y = -484.39, z = 65.66},
            {x = 1056.33, y = -448.94, z = 66.26},
            {x = 1051.06, y = -470.51, z = 64.3},
            {x = 1046.18, y = -498.11, z = 64.28},
            {x = 1006.61, y = -511.02, z = 60.99},
            {x = 987.87, y = -525.75, z = 60.69},
            {x = 965.15, y = -541.88, z = 59.73},
            {x = 919.72, y = -569.63, z = 58.37},
            {x = 893.23, y = -540.56, z = 58.51},
            {x = 945.75, y = -519.05, z = 60.82},
            {x = 970.45, y = -502.34, z = 62.14},
            {x = 1014.68, y = -469.29, z = 64.51},
            {x = 1056.22, y = -448.99, z = 66.26},
            {x = 1265.74, y = -458.04, z = 70.52},
            {x = 1259.49, y = -480.21, z = 70.19},
            {x = 1251.52, y = -494.15, z = 69.91},
            {x = 1250.82, y = -515.51, z = 69.35},
            {x = 1303.15, y = -527.39, z = 71.46},
            {x = 1328.58, y = -535.95, z = 72.44},
            {x = 1348.3, y = -546.77, z = 73.89},
            {x = 1373.25, y = -555.83, z = 74.69},
            {x = 1389.13, y = -569.54, z = 74.5},
            {x = 1386.13, y = -593.4, z = 74.49},
            {x = 1367.29, y = -606.6, z = 74.71},
            {x = 1341.33, y = -597.39, z = 74.7},
            {x = 1323.47, y = -583.2, z = 73.25},
            {x = 1301.04, y = -574.33, z = 71.73},
            {x = 1241.44, y = -566.36, z = 69.66},
            {x = 1240.51, y = -601.69, z = 69.78},
            {x = 1250.93, y = -620.92, z = 69.57},
            {x = 1265.74, y = -648.6, z = 68.12},
            {x = 1271.05, y = -683.63, z = 66.03},
            {x = 1264.76, y = -702.69, z = 64.92},
            {x = 1204.89, y = -557.7, z = 69.62},
            {x = 1201.11, y = -575.54, z = 69.14},
            {x = 1203.66, y = -598.44, z = 68.06},
            {x = 1207.47, y = -620.25, z = 66.44},
            {x = 1221.44, y = -669.31, z = 63.69},
            {x = 1223.07, y = -696.92, z = 60.8},
            {x = 1229.69, y = -725.35, z = 60.96}
        },
    },
    Large = {
        XPPerStop = 30,
        Quantity = 250,
        ProcessingTime = { Enable = true, Period = { Hour = 0, Min = 5 } },
        Routes = {
            {Stops = math.random(8, 9), Boost = 0.0},
            {Stops = math.random(9, 10), Boost = 0.10},
            {Stops = math.random(11, 13), Boost = 0.20},
        },
        RouteCount = 3,
        Locations = {
            {x = -1899.13, y = 132.42, z = 81.98},
            {x = -1931.98, y = 162.57, z = 84.65},
            {x = -1961.26, y = 211.98, z = 86.8},
            {x = -1970.45, y = 245.89, z = 87.81},
            {x = -1995.33, y = 301.07, z = 91.96},
            {x = -2009.22, y = 367.54, z = 94.81},
            {x = -2011.21, y = 445.13, z = 103.02},
            {x = -2014.91, y = 499.81, z = 107.17},
            {x = -1996.31, y = 591.27, z = 118.1},
            {x = -1974.77, y = 630.9, z = 122.69},
            {x = -1896.27, y = 642.53, z = 130.21},
            {x = -1928.94, y = 595.36, z = 122.28},
            {x = -1937.51, y = 551.09, z = 115.02},
            {x = -1942.73, y = 449.72, z = 102.93},
            {x = -1940.65, y = 387.65, z = 96.71},
            {x = -1931.17, y = 362.53, z = 93.98},
            {x = -1905.57, y = 252.9, z = 86.45},
            {x = -1873.23, y = 202.14, z = 84.38},
            {x = -1922.37, y = 298.32, z = 89.29},
            {x = -1828.28, y = 311.73, z = 89.71},
            {x = -1807.89, y = 333.16, z = 89.57},
            {x = -1733.18, y = 379.03, z = 89.73},
            {x = -1673.19, y = 385.52, z = 89.35},
            {x = -1539.92, y = 420.56, z = 110.01},
            {x = -1495.75, y = 437.09, z = 112.5},
            {x = -1500.72, y = 523.19, z = 118.27},
            {x = -1453.91, y = 512.18, z = 117.8},
            {x = -1413.58, y = 462.16, z = 109.21},
            {x = -1371.44, y = 443.96, z = 105.86},
            {x = -1348.96, y = 472.82, z = 102.76},
            {x = -1308.08, y = 448.9, z = 100.97},
            {x = -1277.88, y = 497.01, z = 97.89},
            {x = -1258.74, y = 446.86, z = 94.74},
            {x = -1215.92, y = 457.88, z = 92.06},
            {x = -1174.47, y = 440.28, z = 86.85},
            {x = -1158.94, y = 481.92, z = 86.09},
            {x = -1122.59, y = 486.27, z = 82.36},
            {x = -1087.36, y = 479.27, z = 81.53},
            {x = -1094.92, y = 427.3, z = 75.88},
            {x = -1052.05, y = 432.57, z = 77.26},
            {x = -1007.13, y = 513.59, z = 79.77},
            {x = -987.27, y = 487.14, z = 82.46},
            {x = -967.23, y = 510.7, z = 82.07},
            {x = -1009.52, y = 479.14, z = 79.59},
            {x = -968.77, y = 436.99, z = 80.77},
            {x = -950.13, y = 465.17, z = 80.8},
            {x = -983.28, y = 428.76, z = 80.75},
            {x = -1105.04, y = 430.13, z = 75.87},
            {x = -1193.09, y = 564.11, z = 100.34},
            {x = -1167.1, y = 568.66, z = 101.83},
            {x = -1146.56, y = 545.87, z = 101.91},
            {x = -1107.69, y = 594.53, z = 104.45},
            {x = -1125.33, y = 548.33, z = 102.57},
            {x = -1090.05, y = 548.57, z = 103.63},
            {x = -1022.71, y = 586.94, z = 103.43},
            {x = -974.33, y = 581.81, z = 103.15},
            {x = -957.96, y = 604.35, z = 105.44},
            {x = -947.92, y = 567.72, z = 101.51},
            {x = -924.85, y = 561.36, z = 100.16},
            {x = -904.47, y = 588.16, z = 101.19},
            {x = -907.62, y = 544.88, z = 100.4},
            {x = -873.21, y = 562.81, z = 96.62},
            {x = -884.62, y = 517.85, z = 92.44},
            {x = -848.64, y = 508.63, z = 90.82},
            {x = -842.7, y = 466.82, z = 87.6},
            {x = -1452.91, y = 545.7, z = 121.0},
            {x = -1405.35, y = 526.79, z = 123.83},
            {x = -1405.02, y = 561.99, z = 125.41},
            {x = -1346.41, y = 560.68, z = 130.53},
            {x = -1337.03, y = 606.12, z = 134.38},
            {x = -1291.81, y = 650.51, z = 141.5},
            {x = -1277.46, y = 630.02, z = 143.26},
            {x = -1248.84, y = 643.03, z = 142.73},
            {x = -1241.34, y = 674.51, z = 142.81},
            {x = -1218.45, y = 665.26, z = 144.53}
        },
    },

    -- Drugs that can be delivered
    Drugs = {
        ['cokebaggy'] = {
            Label = "Cocaine",
            Icon = "fas fa-capsules",
            Price = 120
        },
        ['crack_baggy'] = {
            Label = "Crack",
            Icon = "fas fa-pills",
            Price = 100
        },
        ['xtcbaggy'] = {
            Label = "Ecstasy",
            Icon = "fas fa-tablets",
            Price = 75
        },
        ['oxy'] = {
            Label = "Oxycodone",
            Icon = "fas fa-prescription-bottle-alt",
            Price = 135
        },
        ['meth'] = {
            Label = "Methamphetamine",
            Icon = "fas fa-flask",
            Price = 125
        },
        ['weed_white-widow'] = {
            Label = "White Widow",
            Icon = "fas fa-cannabis",
            Price = 45
        },
        ['weed_skunk'] = {
            Label = "Skunk",
            Icon = "fas fa-cannabis",
            Price = 50
        },
        ['weed_purple-haze'] = {
            Label = "Purple Haze",
            Icon = "fas fa-cannabis",
            Price = 55
        },
        ['weed_og-kush'] = {
            Label = "OG Kush",
            Icon = "fas fa-cannabis",
            Price = 60
        },
        ['weed_amnesia'] = {
            Label = "Amnesia",
            Icon = "fas fa-cannabis",
            Price = 65
        },
        ['weed_ak47'] = {
            Label = "AK-47",
            Icon = "fas fa-cannabis",
            Price = 70
        }
        -- Add more drugs as needed.
    }
}

Config.Zones = {
    [1] = {
        Coords = {x = 37.37, y = -1883.42, z = 22.44}, -- Coordinates of the center of the zone
        Size = 250.0, -- Radius of the zone from the coordinates
        PoliceRequirement = {Enable = true, Amount = 1}, -- Police requirement settings (whether police are required and the number needed)
        -- Cooldown settings for this zone (whether it is enabled, the period (hour = hours, min = minutes, e.g. Hour = 1 and Min = 30 means 1 hour and 30 minutes)  and the max number of sales per period)
        Cooldown = { Enable = true, Period = { Hour = 1, Min = 0 }, Max = 250 },
        LevelRestrict = { Enable = false, Level = 1 }, -- Restrict the player based on a level requirement
        Blip = { -- Blip settings for the zone on the map
            Enable = true, -- Whether the blip is enabled
            Name = 'Drug Selling Zone', -- Name of the blip
            Sprite = 51, -- Sprite icon for the blip
            Scale = 0.8, -- Scale of the blip
            Colour = 1, -- Colour of the blip
            Radius = {Enable = true, Colour = 1} -- Enable and colour of the blip's area
        },
        Drugs = { -- List of drugs available for sale in this zone
            ['cokebaggy'] = {
                Label = "Cocaine", -- Display name of the drug
                Icon = "fas fa-capsules", -- Icon for the drug
                Price = {Randomize = true, Base = 100, Min = 80, Max = 120}, -- Price settings (randomized or fixed)
                Quantity = {Randomize = true, Base = 10, Min = 5, Max = 15}, -- Quantity settings (randomized or fixed)
                LevelRestrict = { Enable = false, Level = 1 }, -- Restrict the sale of this drug to a specific level
            },
            ['crack_baggy'] = {
                Label = "Crack", -- Display name of the drug
                Icon = "fas fa-pills", -- Icon for the drug
                Price = {Randomize = true, Base = 90, Min = 70, Max = 110}, -- Price settings (randomized or fixed)
                Quantity = {Randomize = true, Base = 8, Min = 4, Max = 12}, -- Quantity settings (randomized or fixed)
                LevelRestrict = { Enable = false, Level = 1 }, -- Restrict the sale of this drug to a specific level
            },
            ['xtcbaggy'] = {
                Label = "Ecstasy", -- Display name of the drug
                Icon = "fas fa-tablets", -- Icon for the drug
                Price = {Randomize = true, Base = 60, Min = 50, Max = 70}, -- Price settings (randomized or fixed)
                Quantity = {Randomize = true, Base = 15, Min = 10, Max = 20}, -- Quantity settings (randomized or fixed)
                LevelRestrict = { Enable = false, Level = 1 }, -- Restrict the sale of this drug to a specific level
            },
            ['oxy'] = {
                Label = "Oxycodone", -- Display name of the drug
                Icon = "fas fa-prescription-bottle-alt", -- Icon for the drug
                Price = {Randomize = true, Base = 120, Min = 100, Max = 140}, -- Price settings (randomized or fixed)
                Quantity = {Randomize = true, Base = 5, Min = 3, Max = 7}, -- Quantity settings (randomized or fixed)
                LevelRestrict = { Enable = false, Level = 1 }, -- Restrict the sale of this drug to a specific level
            }
        }
    },
    [2] = {
        Coords = {x = 284.0, y = 162.0, z = 104.0}, -- Coordinates of the center of the zone
        Size = 250.0, -- Radius of the zone from the coordinates
        PoliceRequirement = {Enable = false, Amount = 0}, -- Police requirement settings (whether police are required and the number needed)
        -- Cooldown settings for this zone (whether it is enabled, the period (hour = hours, min = minutes, e.g. Hour = 1 and Min = 30 means 1 hour and 30 minutes)  and the max number of sales per period)
        Cooldown = { Enable = true, Period = { Hour = 1, Min = 0 }, Max = 100 },
        LevelRestrict = { Enable = false, Level = 1 }, -- Restrict the player based on a level requirement
        Blip = { -- Blip settings for the zone on the map
            Enable = true, -- Whether the blip is enabled
            Name = 'Drug Selling Zone', -- Name of the blip
            Sprite = 51, -- Sprite icon for the blip
            Scale = 0.8, -- Scale of the blip
            Colour = 1, -- Colour of the blip
            Radius = {Enable = true, Colour = 1} -- Enable and colour of the blip's area
        },
        Drugs = { -- List of drugs available for sale in this zone
            ['meth'] = {
                Label = "Methamphetamine", -- Display name of the drug
                Icon = "fas fa-flask", -- Icon for the drug
                Price = {Randomize = true, Base = 110, Min = 90, Max = 130}, -- Price settings (randomized or fixed)
                Quantity = {Randomize = true, Base = 7, Min = 4, Max = 10}, -- Quantity settings (randomized or fixed)
                LevelRestrict = { Enable = false, Level = 1 }, -- Restrict the sale of this drug to a specific level
            },
            ['weed_white-widow'] = {
                Label = "White Widow", -- Display name of the drug
                Icon = "fas fa-cannabis", -- Icon for the drug
                Price = {Randomize = true, Base = 30, Min = 20, Max = 40}, -- Price settings (randomized or fixed)
                Quantity = {Randomize = true, Base = 25, Min = 15, Max = 35}, -- Quantity settings (randomized or fixed)
                LevelRestrict = { Enable = false, Level = 1 }, -- Restrict the sale of this drug to a specific level
            },
            ['weed_skunk'] = {
                Label = "Skunk", -- Display name of the drug
                Icon = "fas fa-cannabis", -- Icon for the drug
                Price = {Randomize = true, Base = 35, Min = 25, Max = 45}, -- Price settings (randomized or fixed)
                Quantity = {Randomize = true, Base = 20, Min = 10, Max = 30}, -- Quantity settings (randomized or fixed)
                LevelRestrict = { Enable = false, Level = 1 }, -- Restrict the sale of this drug to a specific level
            },
            ['weed_purple-haze'] = {
                Label = "Purple Haze", -- Display name of the drug
                Icon = "fas fa-cannabis", -- Icon for the drug
                Price = {Randomize = true, Base = 40, Min = 30, Max = 50}, -- Price settings (randomized or fixed)
                Quantity = {Randomize = true, Base = 18, Min = 12, Max = 24}, -- Quantity settings (randomized or fixed)
                LevelRestrict = { Enable = false, Level = 1 }, -- Restrict the sale of this drug to a specific level
            }
        }
    },
    [3] = {
        Coords = {x = -1664.0, y = -1066.0, z = 18.0}, -- Coordinates of the center of the zone
        Size = 150.0, -- Radius of the zone from the coordinates
        PoliceRequirement = {Enable = true, Amount = 1}, -- Police requirement settings (whether police are required and the number needed)
        -- Cooldown settings for this zone (whether it is enabled, the period (hour = hours, min = minutes, e.g. Hour = 1 and Min = 30 means 1 hour and 30 minutes)  and the max number of sales per period)
        Cooldown = { Enable = true, Period = { Hour = 1, Min = 0 }, Max = 50 },
        LevelRestrict = { Enable = true, Level = 1 }, -- Restrict the player based on a level requirement
        Blip = { -- Blip settings for the zone on the map
            Enable = true, -- Whether the blip is enabled
            Name = 'Drug Selling Zone', -- Name of the blip
            Sprite = 51, -- Sprite icon for the blip
            Scale = 0.8, -- Scale of the blip
            Colour = 1, -- Colour of the blip
            Radius = {Enable = true, Colour = 1} -- Enable and colour of the blip's area
        },
        Drugs = { -- List of drugs available for sale in this zone
            ['weed_og-kush'] = {
                Label = "OG Kush", -- Display name of the drug
                Icon = "fas fa-cannabis", -- Icon for the drug
                Price = {Randomize = true, Base = 45, Min = 35, Max = 55}, -- Price settings (randomized or fixed)
                Quantity = {Randomize = true, Base = 22, Min = 15, Max = 30}, -- Quantity settings (randomized or fixed)
                LevelRestrict = { Enable = false, Level = 1 } -- Restrict the sale of this drug to a specific level
            },
            ['weed_amnesia'] = {
                Label = "Amnesia", -- Display name of the drug
                Icon = "fas fa-cannabis", -- Icon for the drug
                Price = {Randomize = true, Base = 50, Min = 40, Max = 60}, -- Price settings (randomized or fixed)
                Quantity = {Randomize = true, Base = 20, Min = 10, Max = 30}, -- Quantity settings (randomized or fixed)
                LevelRestrict = { Enable = false, Level = 1 } -- Restrict the sale of this drug to a specific level
            },
            ['weed_ak47'] = {
                Label = "AK-47", -- Display name of the drug
                Icon = "fas fa-cannabis", -- Icon for the drug
                Price = {Randomize = true, Base = 55, Min = 45, Max = 65}, -- Price settings (randomized or fixed)
                Quantity = {Randomize = true, Base = 18, Min = 12, Max = 24}, -- Quantity settings (randomized or fixed)
                LevelRestrict = { Enable = false, Level = 1 }, -- Restrict the sale of this drug to a specific level
            },
            ['xtcbaggy'] = {
                Label = "Ecstasy", -- Display name of the drug
                Icon = "fas fa-tablets", -- Icon for the drug
                Price = {Randomize = true, Base = 60, Min = 50, Max = 70}, -- Price settings (randomized or fixed)
                Quantity = {Randomize = true, Base = 15, Min = 10, Max = 20}, -- Quantity settings (randomized or fixed)
                LevelRestrict = { Enable = false, Level = 1 } -- Restrict the sale of this drug to a specific level
            }
        }
    }
}

Config.Levels = {
    {
        Level = 1, -- Level number
        XPThreshold = 250, -- XP required to reach the next level (Level 2)
        XPPerSale = 10, -- XP gained per sale at this level
        Multiplier = 1.0, -- Price multiplier for sales at this level
        PoliceNotify = {Enable = true, Chance = 30}, -- Chance of police being notified of a sale at this level
        Robbery = {Enable = true, Chance = 17}, -- Chance of being robbed during a sale at this level
        Rejection = {Enable = true, Chance = 25, PoliceNotify = {Enable = true, Chance = 25}}, -- Chance of a sale being rejected at this level and chance of police being notified upon rejection
        TimeRequirement = {Enable = true, AllowedTime = {From = 21, To = 2}}, -- Allowed time for sales at this level (from 9pm to 2am)
        Encounter = { Enable = true, Chance = 2, Quantity = { Min = 25, Max = 40 } }, -- Enable encounters/meetups, chance of it occuring and how many drugs will be exchanged in that encounter.
        -- 'DirtyType' = 'standard' indicates the use of your framework's default method for handling dirty money.
        -- For example, in qb-core it is represented as 'markedbills' with metadata, whereas in es_extended it is represented as the 'black_money' account.
        -- '1-1' signifies a 1-to-1 ratio of dirty money conversion (e.g., $1 equals 1 unit of 'black_money').
        MoneyType = { Type = 'dirty', DirtyType = '1-1' }, -- Type of money to give to the player (clean/dirty) and if dirty the type of dirty money to give (standard/1-1)
        -- Disclaimer: 'bills' are 'markedbills'. On qb-core these have metadata, if metadata is detected that'll be used instead of the min/max values.
        -- Enable/Disable, Bills 'markedbills', Bands 'bands', rolls 'rolls', value randomized between min & max, chance of this washing.
        Washing = { Enable = true, Bills = { min = 750, max = 2000, chance = 10 }, Bands = { min = 750, max = 2000, chance = 15 }, Rolls = { min = 250, max = 750, chance = 20 } },
        -- Enable/Disable money laundering, and set min/max values and success chance for 'Bills', 'Bands', and 'Rolls'
        Tax = { Enable = true, Percentage = 25 }, -- Tax settings on all money washing for Level 1
        Cooldown = { Enable = true, Period = { Hour = 1, Min = 0 }, Max = 10 } -- Enable/Disable, Period in hours and minutes, and Max number of sales per period
    },
    {
        Level = 2, -- Level number
        XPThreshold = 1000, -- XP required to reach the next level (Level 3)
        XPPerSale = 20, -- XP gained per sale at this level
        Multiplier = 1.1, -- Price multiplier for sales at this level
        PoliceNotify = {Enable = true, Chance = 25}, -- Chance of police being notified of a sale at this level
        Robbery = {Enable = true, Chance = 15}, -- Chance of being robbed during a sale at this level
        Rejection = {Enable = true, Chance = 22, PoliceNotify = {Enable = true, Chance = 20}}, -- Chance of a sale being rejected at this level and chance of police being notified upon rejection
        TimeRequirement = {Enable = true, AllowedTime = {From = 20, To = 4}}, -- Allowed time for sales at this level (from 8pm to 4am)
        Encounter = { Enable = true, Chance = 3, Quantity = { Min = 25, Max = 40 } }, -- Enable encounters/meetups, chance of it occuring and how many drugs will be exchanged in that encounter.
        -- 'DirtyType' = 'standard' indicates the use of your framework's default method for handling dirty money.
        -- For example, in qb-core it is represented as 'markedbills' with metadata, whereas in es_extended it is represented as the 'black_money' account.
        -- '1-1' signifies a 1-to-1 ratio of dirty money conversion (e.g., $1 equals 1 unit of 'black_money').
        MoneyType = { Type = 'dirty', DirtyType = 'standard' }, -- Type of money to give to the player (clean/dirty) and if dirty the type of dirty money to give (standard/1-1)
        -- Disclaimer: 'bills' are 'markedbills'. On qb-core these have metadata, if metadata is detected that'll be used instead of the min/max values.
        -- Enable/Disable, Bills 'markedbills', Bands 'bands', rolls 'rolls', value randomized between min & max, chance of this washing.
        Washing = { Enable = true, Bills = { min = 750, max = 2000, chance = 12 }, Bands = { min = 750, max = 2000, chance = 17 }, Rolls = { min = 250, max = 750, chance = 22 } },
        Tax = { Enable = true, Percentage = 15 }, -- Tax settings on all money washing for Level 2
        Cooldown = { Enable = true, Period = { Hour = 1, Min = 0 }, Max = 20 } -- Enable/Disable, Period in hours and minutes, and Max number of sales per period
    },
    {
        Level = 3, -- Level number
        XPThreshold = 2000, -- XP required to reach the next level (Level 4)
        XPPerSale = 30, -- XP gained per sale at this level
        Multiplier = 1.2, -- Price multiplier for sales at this level
        PoliceNotify = {Enable = true, Chance = 20}, -- Chance of police being notified of a sale at this level
        Robbery = {Enable = true, Chance = 13}, -- Chance of being robbed during a sale at this level
        Rejection = {Enable = true, Chance = 20, PoliceNotify = {Enable = true, Chance = 15}}, -- Chance of a sale being rejected at this level and chance of police being notified upon rejection
        TimeRequirement = {Enable = true, AllowedTime = {From = 19, To = 5}}, -- Allowed time for sales at this level (from 7pm to 5am)
        Encounter = { Enable = true, Chance = 4, Quantity = { Min = 25, Max = 40 } }, -- Enable encounters/meetups, chance of it occuring and how many drugs will be exchanged in that encounter.
        -- 'DirtyType' = 'standard' indicates the use of your framework's default method for handling dirty money.
        -- For example, in qb-core it is represented as 'markedbills' with metadata, whereas in es_extended it is represented as the 'black_money' account.
        -- '1-1' signifies a 1-to-1 ratio of dirty money conversion (e.g., $1 equals 1 unit of 'black_money').
        MoneyType = { Type = 'dirty', DirtyType = 'standard' }, -- Type of money to give to the player (clean/dirty) and if dirty the type of dirty money to give (standard/1-1)
        -- Disclaimer: 'bills' are 'markedbills'. On qb-core these have metadata, if metadata is detected that'll be used instead of the min/max values.
        -- Enable/Disable, Bills 'markedbills', Bands 'bands', rolls 'rolls', value randomized between min & max, chance of this washing.
        Washing = { Enable = true, Bills = { min = 750, max = 2000, chance = 15 }, Bands = { min = 750, max = 2000, chance = 24 }, Rolls = { min = 250, max = 750, chance = 28 } },
        Tax = { Enable = true, Percentage = 15 }, -- Tax settings on all money washing for Level 3
        Cooldown = { Enable = true, Period = { Hour = 1, Min = 0 }, Max = 40 } -- Enable/Disable, Period in hours and minutes, and Max number of sales per period
    },
    {
        Level = 4, -- Level number
        XPThreshold = 3500, -- XP required to reach the next level (Level 5)
        XPPerSale = 40, -- XP gained per sale at this level
        Multiplier = 1.3, -- Price multiplier for sales at this level
        PoliceNotify = {Enable = true, Chance = 8}, -- Chance of police being notified of a sale at this level
        Robbery = {Enable = true, Chance = 20}, -- Chance of being robbed during a sale at this level
        Rejection = {Enable = true, Chance = 13, PoliceNotify = {Enable = true, Chance = 10}}, -- Chance of a sale being rejected at this level and chance of police being notified upon rejection
        TimeRequirement = {Enable = true, AllowedTime = {From = 18, To = 6}}, -- Allowed time for sales at this level (from 6pm to 6am)
        Encounter = { Enable = true, Chance = 5, Quantity = { Min = 25, Max = 40 } }, -- Enable encounters/meetups, chance of it occuring and how many drugs will be exchanged in that encounter.
        -- 'DirtyType' = 'standard' indicates the use of your framework's default method for handling dirty money.
        -- For example, in qb-core it is represented as 'markedbills' with metadata, whereas in es_extended it is represented as the 'black_money' account.
        -- '1-1' signifies a 1-to-1 ratio of dirty money conversion (e.g., $1 equals 1 unit of 'black_money').
        MoneyType = { Type = 'dirty', DirtyType = 'standard' }, -- Type of money to give to the player (clean/dirty) and if dirty the type of dirty money to give (standard/1-1)
        -- Disclaimer: 'bills' are 'markedbills'. On qb-core these have metadata, if metadata is detected that'll be used instead of the min/max values.
        -- Enable/Disable, Bills 'markedbills', Bands 'bands', rolls 'rolls', value randomized between min & max, chance of this washing.
        Washing = { Enable = true, Bills = { min = 750, max = 2000, chance = 20 }, Bands = { min = 750, max = 2000, chance = 26 }, Rolls = { min = 250, max = 750, chance = 30 } },
        Tax = { Enable = true, Percentage = 10 }, -- Tax settings on all money washing for Level 4
        Cooldown = { Enable = true, Period = { Hour = 0, Min = 30 }, Max = 60 } -- Enable/Disable, Period in hours and minutes, and Max number of sales per period
    },
    {
        Level = 5, -- Level number
        XPThreshold = 1500, -- -- XP required to reach the next level (Level 6) <-- No next level, so this is ignored, unless you add more levels!
        XPPerSale = 50, -- XP gained per sale at this level
        Multiplier = 1.4, -- Price multiplier for sales at this level
        PoliceNotify = {Enable = true, Chance = 10}, -- Chance of police being notified of a sale at this level
        Robbery = {Enable = true, Chance = 3}, -- Chance of being robbed during a sale at this level
        Rejection = {Enable = true, Chance = 5, PoliceNotify = {Enable = true, Chance = 5}}, -- Chance of a sale being rejected at this level and chance of police being notified upon rejection
        TimeRequirement = {Enable = true, AllowedTime = {From = 17, To = 7}}, -- Allowed time for sales at this level (from 5pm to 7am)
        Encounter = { Enable = true, Chance = 6, Quantity = { Min = 25, Max = 40 } }, -- Enable encounters/meetups, chance of it occuring and how many drugs will be exchanged in that encounter.
        -- 'DirtyType' = 'standard' indicates the use of your framework's default method for handling dirty money.
        -- For example, in qb-core it is represented as 'markedbills' with metadata, whereas in es_extended it is represented as the 'black_money' account.
        -- '1-1' signifies a 1-to-1 ratio of dirty money conversion (e.g., $1 equals 1 unit of 'black_money').
        MoneyType = { Type = 'dirty', DirtyType = 'standard' }, -- Type of money to give to the player (clean/dirty) and if dirty the type of dirty money to give (standard/1-1)
        -- Disclaimer: 'bills' are 'markedbills'. On qb-core these have metadata, if metadata is detected that'll be used instead of the min/max values.
        -- Enable/Disable, Bills 'markedbills', Bands 'bands', rolls 'rolls', value randomized between min & max, chance of this washing.
        Washing = { Enable = true, Bills = { min = 750, max = 2000, chance = 23 }, Bands = { min = 750, max = 2000, chance = 28 }, Rolls = { min = 250, max = 750, chance = 40 } },
        Tax = { Enable = true, Percentage = 5 }, -- Tax settings on all money washing for Level 5
        Cooldown = { Enable = false, Period = { Hour = 1, Min = 0 }, Max = 50 } -- Enable/Disable, Period in hours and minutes, and Max number of sales per period
    }
}

Last updated