Skip to content

Skills Configuration

lua
Config = {
    -- Enable extra client/server logging where supported.
    debug = false,

    -- Register local tailoring helper commands:
    -- /tailor_toggle_cloth, /tailor_dump, /tailor_capture_cloth
    EnableClothingCommands = false,

    -- Interaction mode switches:
    -- true  = custom proximity markers + custom NUI flow
    -- false = fallback to metabridge target wrappers
    UseCustomInteractionUI = true,

    -- When target wrappers are active, controls whether selecting a target opens
    -- the custom NUI panels (`true`) or only proximity/key prompt flow (`false`).
    UseTargetInteractionUI = true,

    -- Vehicle model used for delivery vans (any valid GTA/FiveM spawn name).
    VanModel = 'speedo',

    -- Main recipe catalog used by tailor UI/crafting logic.
    -- Category keys are shown as tabs/sections in UI.
    TailorRecipes = {
        -- Recipe entry schema reference:
        -- name      = unique internal id
        -- title     = label shown in UI
        -- price     = craft cost (if your server integration uses it)
        -- level     = minimum tailor level
        -- duration  = craft time in milliseconds
        -- required  = array of { item, amount }
        -- reward    = array of { item, amount, experience }
        -- clothing  = optional array of component/prop appearance mappings
        Tops = {
            {
                name = 'basic_tshirt',       -- Output item name
                title = 'Basic T-shirt',     -- Display name for the menu
                duration = 5000,             -- Time to craft in ms (5 seconds)
                level = 0,                   -- Crafting level required
                price = 60,                  -- 35 price of craft + 5 as reward
                required = {
                    { item = 'cotton',    amount = 3 },
                    { item = 'thread',    amount = 2 },
                    { item = 'polyester', amount = 5 },
                    { item = 'acrylic',   amount = 2 }
                },
                reward = {
                    { item = 'basic_tshirt', amount = 1, experience = 10 }
                },
                -- Optional clothing metadata used by the clothes equip system.
                -- Resource owners should set correct component/prop ids and drawable/texture values.
                clothing = {
                    {
                        type = 'component', -- 'component' for ped components, 'prop' for prop indices
                        component = 11,     -- ped component slot (e.g., 11 = tops/torso)
                        -- male/female variants are supported; fallback to `drawable` if not provided
                        male = { drawable = 1, texture = 0 },
                        female = { drawable = 3, texture = 0 }
                    }
                }
            },
            {
                name = 'black_shirt',
                title = 'Black Shirt',
                duration = 5000,
                level = 0,
                price = 60,
                required = {
                    { item = 'cotton',    amount = 3 },
                    { item = 'thread',    amount = 2 },
                    { item = 'polyester', amount = 5 },
                    { item = 'acrylic',   amount = 2 }
                },
                reward = {
                    { item = 'black_shirt', amount = 1, experience = 10 }
                },
                clothing = {
                    {
                        type = 'component',
                        component = 11,
                        male = { drawable = 1, texture = 0 },
                        female = { drawable = 3, texture = 0 }
                    }
                }
            },
            {
                name = 'basic_singlet',
                title = 'Basic Singlet',
                price = 55,
                level = 0,
                duration = 5000,
                required = {
                    { item = 'cotton',    amount = 2 },
                    { item = 'thread',    amount = 1 },
                    { item = 'polyester', amount = 3 },
                    { item = 'acrylic',   amount = 1 }
                },
                reward = {
                    { item = 'basic_singlet', amount = 1, experience = 10 }
                },
                clothing = {
                    {
                        type = 'component', -- 'component' for ped components, 'prop' for prop indices
                        component = 11,     -- ped component slot (e.g., 11 = tops/torso)
                        -- male/female variants are supported; fallback to `drawable` if not provided
                        male = { drawable = 5, texture = 0 },
                        female = { drawable = 3, texture = 0 }
                    }
                }
            },
            {
                name = "basic_blouse",
                title = "Basic Blouse",
                price = 77,
                level = 1,
                duration = 5000,
                required = {
                    { item = 'cotton',    amount = 3 },
                    { item = 'wool',      amount = 3 },
                    { item = 'polyester', amount = 5 },
                    { item = 'acrylic',   amount = 2 },
                    { item = 'thread',    amount = 2 }
                },
                reward = {
                    { item = 'basic_blouse', amount = 1, experience = 15 }
                }
            },
            {
                name = 'basic_sweatshirt',
                title = 'Basic Sweatshirt',
                price = 67,
                level = 2,
                duration = 8000,
                required = {
                    { item = 'cotton',    amount = 3 },
                    { item = 'wool',      amount = 3 },
                    { item = 'polyester', amount = 5 },
                    { item = 'thread',    amount = 1 }
                },
                reward = {
                    { item = 'basic_sweatshirt', amount = 1, experience = 15 }
                },
                clothing = {
                    {
                        type = 'component', -- 'component' for ped components, 'prop' for prop indices
                        component = 11,     -- ped component slot (e.g., 11 = tops/torso)
                        -- male/female variants are supported; fallback to `drawable` if not provided
                        male = { drawable = 86, texture = 2 },
                        female = { drawable = 3, texture = 0 }
                    }
                }
            },
            {
                name = "basic_blazer",
                title = "Basic Blazer",
                price = 77,
                level = 3,
                duration = 10000,
                required = {
                    { item = 'cotton',    amount = 3 },
                    { item = 'wool',      amount = 3 },
                    { item = 'polyester', amount = 5 },
                    { item = 'acrylic',   amount = 2 },
                    { item = 'thread',    amount = 4 }
                },
                reward = {
                    { item = 'basic_blazer', amount = 1, experience = 20 }
                },
                clothing = {
                    {
                        type = 'component', -- 'component' for ped components, 'prop' for prop indices
                        component = 11,     -- ped component slot (e.g., 11 = tops/torso)
                        -- male/female variants are supported; fallback to `drawable` if not provided
                        male = { drawable = 24, texture = 4 },
                        female = { drawable = 3, texture = 0 }
                    }
                }
            },
            {
                name = "basic_shirt",
                title = "Basic Shirt",
                price = 72,
                level = 3,
                duration = 10000,
                required = {
                    { item = 'cotton',    amount = 5 },
                    { item = 'wool',      amount = 3 },
                    { item = 'polyester', amount = 2 },
                    { item = 'acrylic',   amount = 2 },
                    { item = 'thread',    amount = 1 }
                },
                reward = {
                    { item = 'basic_shirt', amount = 1, experience = 20 }
                },
                clothing = {
                    {
                        type = 'component',
                        component = 11,
                        male = { drawable = 12, texture = 0 },
                        female = { drawable = 3, texture = 0 }
                    }
                }
            },
            {
                name = "suburban_dress",
                title = "Suburban Dress",
                price = 112,
                level = 5,
                duration = 15000,
                required = {
                    { item = 'cupro',  amount = 5 },
                    { item = 'fiber',  amount = 4 },
                    { item = 'linen',  amount = 2 },
                    { item = 'silk',   amount = 2 },
                    { item = 'thread', amount = 2 }

                },
                reward = {
                    { item = 'suburban_dress', amount = 1, experience = 25 }
                }
            },
            {
                name = "suburban_tshirt",
                title = "Suburban T-shirt",
                price = 87,
                level = 6,
                duration = 15000,
                required = {
                    { item = 'cotton',  amount = 5 },
                    { item = 'cupro',   amount = 3 },
                    { item = 'spandex', amount = 2 },
                    { item = 'thread',  amount = 1 }
                },
                reward = {
                    { item = 'suburban_tshirt', amount = 1, experience = 30 }
                }
            },
            {
                name = "suburban_shirt",
                title = "Suburban Shirt",
                price = 122,
                level = 6,
                duration = 15000,
                required = {
                    { item = 'cupro',  amount = 5 },
                    { item = 'wool',   amount = 3 },
                    { item = 'thread', amount = 2 }
                },
                reward = {
                    { item = 'suburban_shirt', amount = 1, experience = 30 }
                }
            },
            {
                name = "suburban_sweatshirt",
                title = "Suburban Sweatshirt",
                price = 102,
                level = 7,
                duration = 15000,
                required = {
                    { item = 'cotton',  amount = 15 },
                    { item = 'thread',  amount = 3 },
                    { item = 'acrylic', amount = 2 }
                },
                reward = {
                    { item = 'suburban_sweatshirt', amount = 1, experience = 35 }
                }
            },
            {
                name = "suit_shirt",
                title = "Suit Shirt",
                price = 120,
                level = 8,
                duration = 15000,
                required = {
                    { item = 'cupro',   amount = 2 },
                    { item = 'silk',    amount = 4 },
                    { item = 'lyocell', amount = 2 },
                    { item = 'fiber',   amount = 2 },
                    { item = 'thread',  amount = 2 }

                },
                reward = {
                    { item = 'suit_shirt', amount = 1, experience = 40 }
                }
            },
            {
                name = "suit_waistcoats",
                title = "Waistcoat",
                price = 120,
                level = 9,
                duration = 15000,
                required = {
                    { item = 'cupro',        amount = 5 },
                    { item = 'silk',         amount = 5 },
                    { item = 'metal_bobbin', amount = 2 }
                },
                reward = {
                    { item = 'suit_waistcoats', amount = 1, experience = 45 }
                }

            },
            {
                name = "suit_jacket",
                title = "Suit Jacket",
                price = 165,
                level = 9,
                duration = 15000,
                required = {
                    { item = 'cashmere', amount = 5 },
                    { item = 'linen',    amount = 3 },
                    { item = 'lyocell',  amount = 2 },
                    { item = 'fiber',    amount = 2 },
                    { item = 'thread',   amount = 2 }
                },
                reward = {
                    { item = 'suit_jacket', amount = 1, experience = 45 }
                }
            }
        },
        Bottoms = {
            {
                name = 'basic_shorts',
                title = 'Basic Shorts',
                price = 55,
                level = 1,
                duration = 5000,
                required = {
                    { item = 'cotton',  amount = 3 },
                    { item = 'thread',  amount = 1 },
                    { item = 'spandex', amount = 1 }
                },
                reward = {
                    { item = 'basic_shorts', amount = 1, experience = 10 }
                },
                clothing = {
                    {
                        type = 'component',
                        component = 4,
                        male = { drawable = 15, texture = 0 },
                        female = { drawable = 14, texture = 0 }
                    }
                }
            },
            {
                name = 'basic_jeans',
                title = 'Basic Jeans',
                price = 58,
                level = 2,
                duration = 8000, -- Crafting takes longer for jeans
                required = {
                    { item = 'cotton',  amount = 3 },
                    { item = 'thread',  amount = 3 },
                    { item = 'spandex', amount = 1 }
                },
                reward = {
                    { item = 'basic_jeans', amount = 1, experience = 15 }
                },
                clothing = {
                    {
                        type = 'component',
                        component = 4,
                        male = { drawable = 10, texture = 0 },
                        female = { drawable = 2, texture = 0 }
                    }
                }
            },
            {
                name = "suburban_short",
                title = "Suburban Short",
                price = 65,
                level = 5,
                duration = 15000,
                required = {
                    { item = 'cotton',    amount = 3 },
                    { item = 'thread',    amount = 3 },
                    { item = 'spandex',   amount = 2 },
                    { item = 'polyester', amount = 2 },
                },
                reward = {
                    { item = 'suburban_short', amount = 1, experience = 25 }
                },
                clothing = {
                    {
                        type = 'component',
                        component = 4,
                        male = { drawable = 17, texture = 0 },
                        female = { drawable = 16, texture = 0 }
                    }
                }
            },
            {
                name = "suburban_skirt",
                title = "Suburban Skirt",
                price = 65,
                level = 6,
                duration = 15000,
                required = {
                    { item = 'lyocell', amount = 3 },
                    { item = 'thread',  amount = 1 },
                    { item = 'spandex', amount = 1 }
                },
                reward = {
                    { item = 'suburban_skirt', amount = 1, experience = 30 }
                },
                clothing = {
                    {
                        type = 'component',
                        component = 4,
                        female = { drawable = 15, texture = 0 }
                    }
                }
            },
            {
                name = "suburban_jogger",
                title = "Suburban Jogger",
                price = 78,
                level = 6,
                duration = 15000,
                required = {
                    { item = 'cotton',       amount = 3 },
                    { item = 'metal_bobbin', amount = 3 },
                    { item = 'spandex',      amount = 1 }
                },
                reward = {
                    { item = 'suburban_jogger', amount = 1, experience = 25 }
                },
                clothing = {
                    {
                        type = 'component',
                        component = 4,
                        male = { drawable = 5, texture = 0 },
                        female = { drawable = 4, texture = 0 }
                    }
                }
            },
        },
        Accessories = {
            {
                name = "wallet",
                title = "Wallet",
                price = 70,
                level = 1,
                duration = 5000,
                required = {
                    { item = 'leather', amount = 1 },
                    { item = 'thread',  amount = 1 },
                },
                reward = {
                    { item = 'wallet', amount = 1, experience = 15 }
                }
            },
            {
                name = "leather_gloves",
                title = "Leather Gloves",
                price = 70,
                level = 2,
                duration = 8000,
                required = {
                    { item = 'leather',      amount = 1 },
                    { item = 'metal_bobbin', amount = 1 },
                },
                reward = {
                    { item = 'leather_gloves', amount = 1, experience = 15 }
                },
                clothing = {
                    {
                        type = 'component',
                        component = 3,
                        male = { drawable = 5, texture = 0 },
                        female = { drawable = 5, texture = 0 }
                    }
                }
            },
            {
                name = "mask",
                title = "Black Mask",
                price = 67,
                level = 4,
                duration = 10000,
                required = {
                    { item = 'cotton',  amount = 3 },
                    { item = 'thread',  amount = 2 },
                    { item = 'spandex', amount = 1 }
                },
                reward = {
                    { item = 'mask', amount = 1, experience = 20 }
                }
                ,
                clothing = {
                    {
                        type = 'component',
                        component = 1, -- head/face component (adjust as needed)
                        male = { drawable = 15, texture = 0 },
                        female = { drawable = 14, texture = 0 }
                    }
                }
            },
            {
                name = 'driving_gloves',
                title = 'Black Driving Gloves',
                price = 120,
                level = 6,
                duration = 15000,
                required = {
                    { item = 'leather',      amount = 5 },
                    { item = 'metal_bobbin', amount = 1 },
                    { item = 'thread',       amount = 2 },
                    { item = 'hemp',         amount = 5 }
                },
                reward = {
                    { item = 'driving_gloves', amount = 1, experience = 30 }
                }
                ,
                clothing = {
                    {
                        type = 'component',
                        component = 3, -- arms/gloves component (adjust to server values)
                        male = { drawable = 5, texture = 0 },
                        female = { drawable = 5, texture = 0 }
                    }
                }
            },
        },
        Materials = {
            {
                name = 'cotton',
                title = 'Recycled Cotton',
                level = 0,
                duration = 5000,
                required = {
                    { item = 'old_rag', amount = 5 }
                },
                reward = {
                    { item = 'cotton', amount = 1, experience = 5 }
                }
            },
            {
                name = 'thread',
                title = 'Thread Bobbin',
                level = 0,
                duration = 5000,
                required = {
                    { item = 'cotton',  amount = 2 },
                    { item = 'plastic', amount = 1 }
                },
                reward = {
                    { item = 'thread', amount = 1, experience = 5 }
                }
            },
            {
                name = 'leather',
                title = 'Leather',
                level = 1,
                duration = 5000,
                required = {
                    { item = 'skin', amount = 3 }
                },
                reward = {
                    { item = 'leather', amount = 1, experience = 5 }
                }
            },
            {
                name = 'rope_reel',
                title = 'Rope Reel',
                level = 2,
                duration = 5000,
                required = {
                    { item = 'jute',    amount = 5 },
                    { item = 'plastic', amount = 3 }
                },
                reward = {
                    { item = 'rope_reel', amount = 1, experience = 5 }
                }
            },
            {
                name = 'metal_bobbin',
                title = 'Metal Bobbin',
                level = 3,
                duration = 5000,
                required = {
                    { item = 'metalscrap', amount = 3 },
                    { item = 'steel',      amount = 5 },
                    { item = 'plastic',    amount = 3 }
                },
                reward = {
                    { item = 'metal_bobbin', amount = 1, experience = 5 }
                }
            },
        }
    },

    -- XP thresholds per level.
    -- Example: reaching level 5 requires 50,000 total XP.
    Levels = {
        [0] = 0,
        [1] = 1500,
        [2] = 4000,
        [3] = 8000,
        [4] = 10000,
        [5] = 20000,
        [6] = 30000,
        [7] = 100000,
        [8] = 150000,
        [9] = 200000,
        [10] = 230000,
        [11] = 320000,
        [12] = 420000,
        [13] = 600000,
        [14] = 800000,
        [15] = 1000000
    },

    -- Material shop/price list (used by UI and related purchase flows).
    Materials = {
        { name = 'acrylic',   label = 'Acrylic',      price = 3 },
        { name = 'cashmere',  label = 'Cashmere',     price = 20 },
        { name = 'cotton',    label = 'Cotton',       price = 2 },
        { name = 'cupro',     label = 'Cupro',        price = 8 },
        { name = 'fiber',     label = 'Fiber',        price = 2 },
        { name = 'hemp',      label = 'Hemp',         price = 12 },
        { name = 'jute',      label = 'Jute',         price = 6 },
        { name = 'linen',     label = 'Linen',        price = 4 },
        { name = 'lyocell',   label = 'Lyocell',      price = 7 },
        { name = 'polyester', label = 'Polyester',    price = 1 },
        { name = 'silk',      label = 'Silk', price = 10 },
        { name = 'spandex',   label = 'Spandex',      price = 3 },
        { name = 'wool',      label = 'Wool',         price = 5 }
    },

    -- Delivery job pickup points (randomly selected by delivery flow).
    OrderPickupLocation = {
        vec4(827.84, -3203.8, 4.94, 168.96),
        vec4(1233.48, -3326.1, 4.53, 177.67),
        vec4(-52.75, 6396.52, 30.49, 38.85),
        vec4(903.31, 3586.51, 32.41, 5.58),
        vec4(858.68, -2365.92, 29.35, 359.75),
        vec4(859.84, -2497.07, 27.32, 89.4),
    },

    -- Van spawn when a delivery route begins.
    VanSpawnLocation = vec4(748.8, -971.63, 24.76, 276.19),

    -- Return/check-in location used to finish the route and clean up.
    ReturnSpawnLocation = vec3(748.8, -971.63, 24.76),

    -- Delivery drop-off points (one or more selected during route generation).
    DeliveryLocations = {
        vec4(429.42, -807.95, 29.49, 2.17),
        vec4(71.63, -1391.93, 29.38, 170.54),
        vec4(-823.41, -1069.85, 11.33, 131.09),
        vec4(-1102.76, 2714.47, 19.11, 320.18),
        vec4(1198.13, 2713.89, 38.22, 274.45),
        vec4(1697.83, 4821.66, 42.06, 191.83),
        vec4(6.16, 6508.52, 31.88, 122.42),


    },
    -- Quantity objective range per delivery order.
    DeliveryAmountMin = 5,  -- items
    DeliveryAmountMax = 30, -- items

    -- XP reward range granted on delivery completion.
    DeliveryRewardMin = 70, -- exp
    DeliveryRewardMax = 180, -- exp

    -- Reputation tuning.
    DeliveryRep = {
        maxRep = 1000
    },

    DeliveryPayment = {
        -- Payment routing for delivery completion.
        -- Supported methods: 'event', 'bank', 'item'
        --   event = trigger configured event payload
        --   bank  = direct account-style payout (depends on bridge impl)
        --   item  = grant item currency using `itemName`
        method = 'event',
        reason = 'Tailor Delivery',

        -- Used only when method = 'item'.
        itemName = 'money',

        -- Optional business identifier used in event templates.
        business = 'tailor',

        -- Primary event invoked when method = 'event'.
        -- Placeholders are replaced by runtime values:
        -- {playerId}, {amount}, {reason}, {business}
        event = {
            name = 'payckecks:addToPaycheck',
            args = { '{playerId}', '{amount}', '{reason}' }
        },

        -- Optional follow-up events executed after the primary payout.
        extraEvents = {
            {
                name = 'businessAccount:server:WithdrawFromBusinessAccount',
                args = { '{amount}', '{business}', 'Salary Paid' }
            }
        }
    }
}