Configuration

All spoodyCreations resources are tailored to support a all different types of configurations & settings, here below is our configuration file you may use for assistance.

ESX = exports['es_extended']:getSharedObject()

Configuration = {
    Settings = {
        ---@type "target" | "textui" # Target will use ox_target, textui will use Ox Lib Text UI
        OxType = "textui",

        --- Wallpaper that is displayed in the UI, Want to make your own? -> height: 972 px width: 1536 px
        Wallpaper = "https://r2.fivemanage.com/CWDuI3yLS4av0OWnTLNNl/image/spoodyFraudV3_default_wallpaper.png",

        Sales = {
            Alert = true, -- Enable police alerts?
            Chances = 0.50, -- 50% chance police get alerted
        },

        NUI = {
            CloningTime = 5000, --- How long (in ms) will it take to clone a card?
            PrintingTime = 6500, --- How long (in ms) will it take to print a check?
            SimCalling = 10000, --- How long (in ms) will it take to do the SIM swap call?
            SimCloning = 7500, --- How long (in ms) will it take to clone the new SIM?
        },

        Police = {
            PoliceJob = "police",
            DrawBlip = true, -- Draw a blip on their map when an alert happens?

            Online = {
                Enabled = true, -- Do cops need to be online in order to sell?
                Count = 1, -- How many cops need to be online in order to sell?
            }
        },

        Failure = {
            Enabled = true, -- Enable failure chances for sales?
            Chances = {
                Cards = 0.08, -- 8% chance of failure. [In real life, cloned cards are extremely difficult to detect and usually go through without issues.]
                Checks = 0.12, -- 12% chance of failure. [In real life, fraudulent checks can sometimes be easily flagged by a bank teller.]
                Sims = 0.15, -- 15% chance of failure. [In real life, SIM swaps are often reported to the phone carrier within an hour, and if not sold quickly, they may be reversed.]
            }
        }
    },

    Job = {
        Enabled = false, --- Enable jobs? (if enabled, the specified job will only be allowed to use the laptop, print checks, cards etc)
        DistributionSystem = true, --- Allow default players (without jobs) to sell illegal items? (i.e unemployed can sell cloned cards, sims, checks)
        JobName = "scammer", --- Job name
    },

    Selling = {
        Clones = {
            Rewards = {
                Reward = {min = 350, max = 3500}, -- Randomized between values of $350 & $3500
                Account = "dirty", -- cash, bank or dirty money?
            },

            Locations = {
                ["Pacific Bank"] = {
                    Location = vec3(237.8048, 216.9053, 106.2868),
                    Heading = 301.8932,
                },
            }
        },

        Checks = {
            Rewards = {
                Reward = {min = 350, max = 3500}, -- Randomized between values of $350 & $3500
                Account = "dirty", -- cash, bank or dirty money?
            },

            Locations = {
                ["Pacific Bank"] = {
                    Heading = 337.0690,
                    Location = vec3(248.3301, 222.9014, 106.2868),

                    Ped = {
                        Enabled = true,
                        Coords = vec4(249.0421, 224.6193, 105.3, 155.6678),
                        Hash = "u_m_m_bankman",
                    },
                },
            }
        },

        Sims = {
            Rewards = {
                Reward = {min = 1350, max = 6500}, -- Randomized between values of $350 & $3500
                Account = "dirty", -- cash, bank or dirty money?
            },

            Locations = {
                ["Sandy Shoes"] = {
                    Heading = 15.9248,
                    Location = vec3(1737.7275, 3709.7366, 34.1376), --- Notice: the coords MUST be in front of the ped (if enabled)

                    Ped = {
                        Enabled = true,
                        Coords = vec4(1738.0103, 3709.0566, 33.15, 15.9248),
                        Hash = "hc_hacker"
                    }
                },
            }
        }
    },

    Blackmarket = {
        Locations = {

            ["Blackmarket"] = {
                Enabled = true,
                Location = vec3(-327.0636, -1300.5070, 31.3452),

                Ped = {
                    Enabled = true,
                    Location = vec4(-326.5181, -1300.4691, 30.4, 89.9135),
                    Hash = "ig_joeminuteman",
                },

                Items = {
                    { Item = "msr", Image = "nui://ox_inventory/web/images/msr.png", Label = "MSR Swiper", Count = 1, Price = 5000 },
                    { Item = "blank", Image = "nui://ox_inventory/web/images/blank.png", Label = "Blank Cards", Count = 5, Price = 500 },
                    { Item = "checkpaper", Image = "nui://ox_inventory/web/images/checkpaper.png", Label = "Checkpaper", Count = 5, Price = 500 },
                    { Item = "simcard", Image = "nui://ox_inventory/web/images/simcard.png", Label = "Sim Card", Count = 5, Price = 500 },
                }
            },

            ["Electronic Shop"] = {
                Enabled = true,
                Location = vec3(-662.4022, -853.1427, 24.4536),

                Ped = {
                    Enabled = true,
                    Location = vec4(-662.4503, -853.9371, 23.45, 3.4931),
                    Hash = "ig_jay_norris",
                },

                Items = {
                    { Item = "laptop", Image = "nui://ox_inventory/web/images/laptop.png", Label = "Laptop", Count = 1, Price = 1000},
                    { Item = "printer", Image = "nui://ox_inventory/web/images/printer.png", Label = "Printer", Count = 1, Price = 500},
                    { Item = "burnerphone", Image = "nui://ox_inventory/web/images/burnerphone.png", Label = "Burner Phone", Count = 1, Price = 1500 },
                }
            }

        }
    },

    ---@param message string
    ---@param type? 'inform' | 'error' | 'success' | 'warning'
    Notify = function(message, type)
        lib.notify({
            title = "Scamming",
            description = message,
            type = type or 'inform',
            position = 'top',
            duration = 5000,
        })
    end,

    ---@alias dispatchOptions 'none' | 'rcore_dispatch' | 'qs-dispatch' | 'cd-dispatch' | 'lb-tablet'
    ---@type dispatchOptions --- ^ These are your available options for dispatch
    DispatchSystem = 'none', --- Leave empty if you don't have any dispatch systems and want to use the built in one.

    --- If the DispatchSystem is set to 'none', this function will be executed everytime someone successfully sells a check, clone, or SIM. 
    ---@param index string | "check" | "atm"
    ---@param location string
    PoliceNotify = function(location, index)
        if Configuration.DispatchSystem ~= 'none' then return end

        if index == "check" then
            Configuration.Notify("The bank at: " ..location.. " has reported someone selling a fraudulent check!", 'warning')
            PlaySoundFrontend(-1, "Event_Start_Text", "GTAO_FM_Events_Soundset", true)
        elseif index == "atm" then
            Configuration.Notify("The ATM at: " ..location.. " has reported someone using a fradulent card!", 'warning')
            PlaySoundFrontend(-1, "Event_Start_Text", "GTAO_FM_Events_Soundset", true)
        end
    end,

    Models = {
        Printer = "v_res_printer",
        Laptop = "spoody_leansy_laptop",
        MSR = "leansy_reader_card"
    },

    --- Only change the value if you have a different item name. Do NOT change the [code]
    --- [code] = item name
    Items = {
        ['Laptop'] = "laptop",
        ['Printer'] = "printer",
        ['MSR'] = "msr",
        ['Burner Phone'] = "burnerphone",
        ['Blank Card'] = "blank",
        ['Cloned Card'] = "ccard",
        ['Check Paper'] = "checkpaper",
        ['Forged Check'] = "fcheck",
        ['Swapped Sim Card'] = "sim",
        ['Empty Sim Card'] = "simcard"
    },
}

Locales = {
    ['FRAUD_INVALID_JOB'] = "You don't have the required job.",
    ['FRAUD_LAPTOP_OUT'] = "You already have a laptop out.",
    ['FRAUD_NO_PRINTER'] = "You don't have a printer connected.",
    ['FRAUD_NO_APP'] = "You must log into the check fraud application in order to print.",
    ['FRAUD_NO_PHONE'] = "You don't have a burner phone connected.",
    ['FRAUD_NO_APP_SIM'] = "You must log into the SIM swap application in order to connect.",
    ['FRAUD_NO_MSR'] = "You don't have an MSR connected.",
    ['FRAUD_NO_APP_CLONE'] = "You must log into the card clone application in order to swipe.",
    ['FRAUD_CHECK_ALREADY_INS'] = "You already inserted a check.",
    ['FRAUD_CHECK_INSERT_SUCCESSFUL'] = "Insert successful, paper ready to print.",
    ['FRAUD_NO_CHECKPAPER'] = "You don't have any check paper",
    ['FRAUD_ALREADY_SWIPED'] = "You already swiped a card.",
    ['FRAUD_SWIPE_SUCCESSFUL'] = "Swipe successful; card ready to clone.",
    ['FRAUD_NO_BLANKS'] = "You don't have any blank cards.",
    ['FRAUD_SIM_ALREADY_INS'] = "You have already inserted a SIM card.",
    ['FRAUD_SIM_INSERT_SUCCESSFUL'] = "Insert successful; SIM Card connected successfully.",
    ['FRAUD_NO_SIMS'] = "You don't have any SIM cards.",
    ['FRAUD_NO_LAPTOP'] = "You must have a laptop out before connecting any device.",
    ['FRAUD_NO_SALE_JOB'] = "You don't have the requried job to sell these items.",
    ['FRAUD_NO_SALE_ITEM'] = "You don't have the required item to sell.",
    ['FRAUD_NO_SHOP_JOB'] = "You don't have the required item to sell.",
    ['FRAUD_CHECK_SELL_FAIL'] = "Your forged check was identified as fraudulent and the bank teller rejected it!",
    ['FRAUD_CHECK_SELL_SUCCESS'] = "You cashed in a check worth $%s",
    ['FRAUD_SIM_SELL_FAIL'] = "Your SIM card was erased by the phone provider and can no longer be sold!",
    ['FRAUD_SIM_SELL_SUCCESS'] = "You cashed in a SIM card worth $%s",
    ['FRAUD_CLONE_SELL_FAIL'] = "Your cloned card has been identified as fraudulent by the ATM and has rejected it!",
    ['FRAUD_CLONE_SELL_SUCCESS'] = "You cashed in a cloned card worth $%s",
    ['FRAUD_SELL_NO_POLICE'] = "There are not enough police officers online to sell this product.",
    ['FRAUD_STORE_PURCHASE_SUCCESSFUL'] = "You purchased %sx %s(s)!",
    ['FRAUD_STORE_PURCHASE_FAIL'] = "You don't have enough money for this purchase",
    ['FRAUD_INTERACTION_SUCCESS'] = "You've received 1x %s!",
    ['FRAUD_PROGRESS_CALLING'] = "Calling Phone Carrier",
    ['FRAUD_PROGRESS_INSERTING_CHECK'] = "Inserting check into printer",
    ['FRAUD_PROGRESS_SWIPING_CARD'] = "Swiping card",
    ['FRAUD_PROGRESS_INSERTING_SIM'] = "Inserting SIM Card into Burner Phone",
    ['FRAUD_PROGRESS_CASHING_CHECK'] = "Cashing Check",
    ['FRAUD_PROGRESS_SELLING_SIM'] = "Selling SIM Card",
    ['FRAUD_PROGRESS_INSERTING_CLONE'] = "Inserting Clone",
    ['FRAUD_PROGRESS_GRABBING_CASH'] = "Grabbing Money",
}

Last updated