config

t1ger_chopshop/shared/config.lua

All configurable options

Config = {}

Config.Debug = true

Config.Currency = "$" -- Currency used for pricing

Config.ServerSideProps = true -- Create objects/props on server or client?

Config.Items = require("shared/items") -- Loads items and data from shared/items.lua

Config.PoliceJobs = {"police", "lspd"} -- Define your police jobs in here

Config.PoliceAlert = { -- Police Alert
    Enable = true, -- enable/disable our built in police alert?
    Blip = { -- blip settings for police blip?
        enable = true, -- enable blip?
        duration = 20,
        radius = 50,
        alpha = 250,
        color = 3
    }
}

Config.FixerNPC = { -- The Fixer NPC
    Model = "s_m_m_autoshop_02", -- model of the fixer the npc
    Coords = vec4(-68.26, 191.96, 87.39, 170.07), -- coords for the npc
    Scenario = "WORLD_HUMAN_STAND_MOBILE", -- scenario to play
    Blip = {enable = true, name = "The Fixer", sprite = 792, display = 4, color = 81, scale = 0.8}, -- blip settings
    TargetIcon = "fa-solid fa-comment", -- icon shown when targetting the npc
}

Config.ChopZones = require("shared/chopzones") -- Loads chop zones from the shared/chopzones.lua file.

--- Chop List
Config.ChopList = {
    Enable = true, -- Set to false to disable chop list feature thus allowing to chop any vehicles in the chop zones

    Commands = { -- Command to view chop list vehicles
        view = {
            name = "choplist:view", -- Command name
            restrict = true, -- Set to false to be able to use command anywhere and not only in chop zones
        },
        refresh = {
            name = "choplist:refresh", -- Command name
            allowAdmins = true, -- Set to false to only allow refresh from server-console
        }
    },

    FixerMenu = {
        show = true, -- Show view chop list option in fixer menu?
        icon = "fa-list", -- Icon to show for chop list option in fixer menu
    },

    ShowExpiryTime = true, -- Show minutes left for current car list in menu?
    ExpiryMenuIcon = "clock", -- Menu icon for expiry timer

    RefreshInterval = 60, -- Minutes between list refresh

    MaxVehicles = 10, -- Number of vehicles in each list refresh
    ModelMenuIcon = "car", -- Icon for each vehicle model in the chop list menu

    ModelQuota = {
        enable = true, -- Enable per-model chop limits during each list cycle
        min = 2,       -- Minimum number of times each selected model can be chopped
        max = 5        -- Maximum number of times each selected model can be chopped
    },

    ModelPool = { -- List vehicle models in here to scramble in the chop list
        "sultan", "exemplar", "felon", "f620", "panto", "baller2", "baller", "buffalo", "manana", "emperor", "minivan", "fugitive", "intruder", "premier", "washington",
        "asterope", "fusilade", "penumbra", "prairie", "futo", "ingot", "stanier", "dilettante", "regina", "rhapsody", "granger", "rocoto", "landstalker", "seminole",
        "zion", "oracle", "tailgater", "glendale", "asea", "sentinel", "jackal", "cavalcade", "issi2"
    },
}

--- Chopping settings
Config.Chopping = {
    OwnedVehicles = false, -- Enable/disable chopping owned vehicles?
    DeleteOwnedVehicles = false, -- delete owned vehicle from database if frame scrapped? Only works if `Config.Chopping.OwnedVehicles` is enabled
    ChopListOnly = true, -- Only allow chopping vehicles from chop list? Or allow all vehicles?

    Blacklist = { -- Blacklist certain vehicles from being chopped?
        models = {"police3", "police4"}, -- Cannot chop these models. Add/remove models as you like
        plateMatch = {"JOB", "COP"}, -- Cannot chop vehicles with plate prefix starting with these
    },

    CancelCommand = {enable = true, name = "chop:cancel"}, -- Command to clear the tool prop and cancel anim

    TargetIcon = { -- Icons for target options
        start = "fa-solid fa-recycle", -- When u start the chopping session
        chop = "fa-solid fa-hammer", -- When u want to chop a given part
        scrap = "fa-solid fa-trash-can", -- When u want to scrap the vehicle frame
        salvage = "fa-solid fa-gears", -- When u want to salvage engine components
    },

    PointRewards = {
        door = 1, -- amount of points to add when door is chopped
        hood = 1, -- amount of points to add when hood is chopped
        trunk = 1, -- amount of points to add when trunk is chopped
        wheel = 1, -- amount of points to add when wheel is chopped
        engine_components = 1, -- amount of points to add when engine components are salvaged
        scrap = 5, -- amount of points to add when vehicle frame is scrapped
    },

    Tools = { -- tools used for chopping vehicles. Specify duration and enable/disable skillcheck and set difficulty
        socket_wrench = {
            requiredPoints = 0, -- required points to use item?
            duration = 6000, -- duration in MS for animation
            progressbar = true, -- enable / disable progress bar?
            skillcheck = {enable = true, difficulty = {"easy", "easy", "easy", "easy"}, inputs = {"w", "a", "s", "d"}}
        },
        impact_wrench = {
            requiredPoints = 500, -- required points to use item?
            duration = 3000, -- duration in MS for animation
            progressbar = true, -- enable / disable progress bar?
            skillcheck = {enable = true, difficulty = {"easy", "easy"},inputs = {"w", "a", "s", "d"}}
        },
        cutting_torch = {
            requiredPoints = 0, -- required points to use item?
            duration = 6000, -- duration in MS for animation
            progressbar = true, -- enable / disable progress bar?
            skillcheck = {enable = true, difficulty = {"easy", "easy", "easy", "easy"}, inputs = {"w", "a", "s", "d"}}
        },
        angle_grinder = {
            requiredPoints = 1500, -- required points to use item?
            duration = 3000, -- duration in MS for animation
            progressbar = true, -- enable / disable progress bar?
            skillcheck = {enable = true, difficulty = {"easy", "easy"}, inputs = {"w", "a", "s", "d"}}
        },
    },

    EngineBayComponents = {
        enable = true, -- allow to salvage engine bay for components?
        requiredPoints = 1000, -- required reputation points to salvage engine bay area?
        duration = 8000, -- duration in MS for animation
        progressbar = true, -- enable / disable progress bar?
        skillcheck = {enable = true, difficulty = {"easy", "easy", "easy", "easy"}, inputs = {"w", "a", "s", "d"}},
        items = { -- list of items that player has chance of receiving when done with engine salvaging
            {name = "t1ger_alternator", chance = 80},
            {name = "t1ger_radiator", chance = 100},
            {name = "t1ger_fuelinjector", chance = 50},
            {name = "t1ger_powersteeringpump", chance = 75},
            {name = "t1ger_transmission", chance = 40},
        }
    },

    ScrapFrame = {
        duration = 10000, -- duration in MS
        progressbar = true, -- enable/disable progressbar?
        reward = { -- When scrapping the frame, add items to receive. Use min = 0 to make it random to even receive that type of material
            {item = "scrap_metal", amount = {min = 2, max = 6}},
            {item = "steel", amount = {min = 1, max = 4}},
            {item = "aluminium", amount = {min = 0, max = 3}},
            {item = "plastic", amount = {min = 1, max = 2}},
            {item = "glass", amount = {min = 1, max = 2}},
            {item = "rubber", amount = {min = 0, max = 2}},
            {item = "electric_scrap", amount = {min = 0, max = 2}}, -- random chance
            {item = "copper", amount = {min = 0, max = 2}},
            -- add or remove lines/items
        }
    }
}

--- Vehicle Radar Tool
Config.VehicleRadar = {
    Enable = true, -- enable vehicle radar usage?
    Blip = { -- blip settings
        color = 76, -- blip color
        alpha = 120, -- blip alpha
        radius = 100.0, -- blip radius
        duration = 20, -- duration in seconds
    },
}

--- Vehicle Lockpicking
Config.VehicleLockpick = {
    Enable = true,  -- enable our built-in lockpicking?
    Skillcheck = {difficulty = {"easy", "easy", "easy", "easy", "easy"}, inputs = {"w", "a", "s", "d"}}, -- skillcheck settings (use custom minigame inside client/customize.lua)
    RemoveItem = true, -- remove lockpick item on usage?
    Alarm = {
        enable = true, -- enable vehicle alarm sound & effects upon lockpicking
        chance = 50, -- chance between 1-100 
        duration = 10000, -- alarm sound duration in MS
    },
}

--- Repuration system
Config.Reputation = {
    Enable = true, -- set to false to disable reputation system entirely
    MenuIcon = "fa-star", -- icon in the Fixer NPC menu
    AutosaveInterval = 5, -- auto save all reputation data for players every x minutes

    Commands = { -- commands to set, add and remove reputation points
        set = {enable = true, name = "reputation:set"}, -- enable for admins? False only useable by server-console
        add = {enable = true, name = "reputation:add"}, -- enable for admins? False only useable by server-console
        remove = {enable = true, name = "reputation:remove"}, -- enable for admins? False only useable by server-console
    },
    CommandSuggestion = "Usage: /%s <playerId> <amount>", -- command suggestion/helper. %s is automatically calling `set`, `add` or `remove`

    Levels = { -- the script ONLY checks for reputation points. All the rank/titles are fictional
        [0] = "Street Scav",
        [250] = "Tool Runner",
        [500] = "Parts Hustler",
        [800] = "Grease Monkey",
        [1200] = "Chop Apprentice",
        [1500] = "Engine Surgeon",
        [2000] = "Frame Butcher",
        [2500] = "Auto Dissector",
        [3000] = "Ghost Mechanic",
        [4000] = "Industrial Ripper",
        [5500] = "Machine Surgeon",
        [7000] = "Vehicle Anarchist",
        [9000] = "Urban Legend",
        [12000] = "Master Reclaimer",
        -- add or remove ranks as you like
    },

    ProgressColors = { -- Set up colors for progression in reputation menu option
        { threshold = 0, color = "#dc2626" },   -- Red
        { threshold = 20, color = "#f97316" },  -- Orange
        { threshold = 40, color = "#facc15" },  -- Yellow
        { threshold = 60, color = "#84cc16" },  -- Lime
        { threshold = 80, color = "#22c55e" },  -- Bright Green
        { threshold = 100, color = "#16a34a" }, -- Deep Green
    }   
}

--- Settings for statistics at the Fixer NPC
Config.Statistics = {
    Enable = true,
    MenuIcon = "fa-chart-simple",

    Options = {
        title = {enable = true, icon = "id-card"}, -- enable/disable option and set icon
        points = {enable = true, icon = "chart-line"}, -- enable/disable option and set icon
        parts = {enable = true, icon = "hammer"}, -- enable/disable option and set icon
        scraps = {enable = true, icon = "car-burst"}, -- enable/disable option and set icon
        contracts = {enable = true, icon = "file-contract"}, -- enable/disable option and set icon
        bounties = {enable = true, icon = "bullseye"}, -- enable/disable option and set icon
        leaderboards = {enable = true, icon = "ranking-star"} -- enable/disable option and set icon
    },

    Leaderboards = {
        topCount = 10, -- by default shows top 10. You can lower or raise to show more/less.
        options = {
            points = {enable = true, icon = "chart-line"}, -- enable/disable option and set icon
            parts = {enable = true, icon = "hammer"}, -- enable/disable option and set icon
            scraps = {enable = true, icon = "car-burst"}, -- enable/disable option and set icon
            contracts = {enable = true, icon = "file-contract"}, -- enable/disable option and set icon
            bounties = {enable = true, icon = "bullseye"} -- enable/disable option and set icon
        }
    }
}

--- Settings for the tool shop provided by the Fixer NPC
Config.ToolShop = {
    Enable = true, -- set to false to disable tools acquisiton in the fixer menu
    MenuIcon = "fa-tools", -- icon in the Fixer NPC menu
    MaxPurchaseQty = 20, -- max amount of an item to purchase at once
    BankPay = false, -- set to true to use bank money, otherwise uses cash/money in inventory/purse
    Items = require("shared/toolshop"), -- loads items in shop from shared/toolshop.lua
}

--- The fixer's black-market to sell salvaged parts or exchange them for materials
Config.BlackMarket = {
    Enable = true, -- set to false to disable black market (sell or exchange salvaged parts)
    MenuIcon = "fa-exchange-alt", -- icon in the Fixer NPC menu

    Sell = {
        enable = true, -- enable/disable sell system?
        menuIcon = "fa-coins", -- menu icon
        options = require("shared/bm_sell"), -- loads sell options from the shared/bm_sell.lua file.
    },

    Exchange = {
        enable = true, -- enable/disable exchange system?
        menuIcon = "fa-recycle", -- menu icon
        options = require("shared/bm_exchange") -- loads exchange options from the shared/bm_exchange.lua file.
    }
}

-- Structured missions provided by the Fixer NPC to source specific types of vehicles for higher rewards
Config.Contracts = {
    Enable = true, -- set to false to disable vehicle contracts
    MenuIcon = "file-contract", -- menu icon

    Cooldown = {enable = true, duration = 5}, -- enable/disable cooldown and set duration in minutes

    Dropoff = { -- vehicle dropoff location and settings
        coords = vector3(-71.81, 185.67, 87.42), 
        blip = {sprite = 162, scale = 0.7, color = 2, route = true, text = "Vehicle Dropoff"},
        marker = {type = 20, scale = {0.35, 0.35, 0.35}, rgba = {32, 173, 63, 100}},
        keybind = 38, -- keybind to dropoff vehicle
    },

    Boosting = { -- vehicle boosting contract
        enable = true, -- enable this contract?
        title = locale("menu_title.contracts_boosting"), -- menu title
        icon = "fa-car-side", -- menu icon
        description = locale("menu_description.contracts_boosting"), -- menu description
        requiredPoints = 0, -- required points to start contract
        data = require("shared/boosting") --
    },

    Repossession = { -- vehicle repossession contract
        enable = true, -- enable this contract?
        title = locale("menu_title.contracts_repossession"), -- menu title
        icon = "fa-handcuffs", -- menu icon
        description = locale("menu_description.contracts_repossession"), -- menu description
        requiredPoints = 2000, -- required points to start contract
        data = require("shared/repossession") --
    },
}

-- Place or claim bounties on specific vehicles by model or plate; deliver them to the fixer for rewards
Config.Bounty = {
    Enable = true, -- set to false to disable vehicle contracts
    MenuIcon = "fa-bullseye", -- menu icon

    Commission = 15, -- % fee deducted when bounty is completed or removed (if partial refund is enabled)
    AllowRemoval = true, -- Can players remove bounties after placing them?
    RefundOnRemoval = "partial", -- Options: "none" (gets nothing back), "full" (gets everything back), "partial" (gets bounty - commission back)

    Reward = {
        min = 2000, -- minimum reward
        max = 25000 -- maximum reward
    },

    ReputationReward = 50, -- add reputation points on delivery? Set to 0 to disable.

    Warehouse = { -- bounty vehicle delivery and retrieval
        coords = vector4(1087.68, -2289.63, 30.17, 266.45), -- coords
        blip = {enable = true, name = "Fixer Warehouse", sprite = 524, display = 4, color = 81, scale = 0.8}, -- blip settings
        marker = {type = 20, scale = {0.35, 0.35, 0.35}, rgba = {245, 175, 39, 100}}, -- marker settings
        keybind = 38, -- Default keybind [E]
    }
}

--- Define materials
Config.Materials = { -- index is item name and value is item label.
    scrap_metal = "Scrap Metal",
    steel = "Steel",
    aluminium = "Aluminium",
    plastic = "Plastic",
    rubber = "Rubber",
    electric_scrap = "Electric Scrap",
    glass = "Glass",
    copper = "Copper",
    carbon_fiber = "Carbon Fiber",
    brass = "Brass",
    synthetic_oil = "Synthetic Oil",
    acid = "Acid"
}

Last updated