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

-- 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.

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 = false, 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.EnableLaundering = true -- 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')

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)
        -- '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 = 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)
        -- '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)
        -- '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)
        -- '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)
        -- '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