Configuration

🗒️ All values are properly described in config file of the script. Configuration file is located in rcore_xmas/config.lua!

Debug

If you have any issue with script and you don't know how to solve it, set Debug = true in configuration file to see additional informations printed to client console (F8) and server console. Screenshots will help our support to solve faster and better your problem in ticket.

Features

There is category for each feature of the script - Snowballs, PresentHunt, Trees, Gifts and Snowman. Each category and also some of their subcategories has property Enabled that allows you to enable/disable feature.

File preview

Config = {
    Debug = false,                        -- [true/false] - Enables debug mode, which will print additional information to the console.

    Framework = Framework.ESX,            -- [ESX - es_extended, QBCore - qb-core, Standalone - standalone]
    Inventory = Inventory.OX,             -- [OX - ox_inventory, QB - qb-inventory, QS - qs-inventory, MF - mf-inventory]
    Target = Target.OX,                   -- [NONE - none (pressing E), OX - ox_target, QB - qb-target, Q - qtarget]
    Database = Database.MYSQL_ASYNC,      -- [OX - ox_mysql, MYSQL_ASYNC - mysql-async, GHMATTI - ghmattimysql]

    XmasWeather = true,                   -- [true/false] - Enables Xmas weather.
    EnableVehicleTrailsEverywhere = true, -- [true/false] - Enables vehicle trails everywhere.
    EnablePedFootstepsEverywhere = true,  -- [true/false] - Enables ped footsteps everywhere.
    WaterFreezes = 0.0,                   -- [float] - The strength of the frozen water effect. 0.0 = no frozen water, 3.0 = completely frozen water.
    SnowIntensity = 1.0,                  -- [float] - The intensity of the snow effect. 0.0 = no snow, 1.0 = heavy snow.

    CancelProgressBar = {
        Key = 194,
        Label = 'INPUT_FRONTEND_RRIGHT',
        Text = 'Cancel',
    },

    Snowballs = {           -- [table] - Snowballs
        Pickup = {
            Enabled = true, -- [true/false] - Enables snowball pickup.
            Bind = {
                Description = 'Pickup snowball',
                Controls = 'keyboard',
                Key = 'k',
            },
            Animation = {
                Dict = 'anim@mp_snowball', -- [string] - Animation dictionary.
                Name = 'pickup_snowball',  -- [string] - Animation name.
            },
            Receive = {
                Item = 'WEAPON_SNOWBALL',
                -- Weapon = `WEAPON_SNOWBALL`,
                Amount = 2,
            },
            Notifications = {
                Interior = 'You can not pick up snowballs in an interior.',
                Cooldown = 'You are on cooldown. Wait before you can pick up another snowball!',
                NotFree = 'You can not pick up snowballs while doing something else!',
            }
        }
    },

    PresentHunt = {                                       -- [table] - Present hunt
        Enabled = true,                                   -- [true/false] - Enables present hunt.
        Model = `bzzz_xmas23_convert_tree_gift`,          -- [hash] - Model of the present.
        DeleteAfterCollect = true,                        -- [true/false] - Delete present after collecting.
        Collect = {
            Radius = 2.0,                                 -- [float] - Radius of the collection area (Work only with Target.NONE)
            HelpText = {                                  -- Works only with Target.NONE
                Enabled = true,                           -- [true/false] - Enables help text.
                Text = '~INPUT_CONTEXT~ Collect present', -- [string] - Help text.
            },
            Target = {
                label = 'Collect present',
                distance = 1.5,
                icon = 'fa-solid fa-gift' -- https://fontawesome.com/v5.15/icons?d=gallery&p=2&m=free
            },
            Animation = {
                Dict = 'anim@mp_snowball', -- [string] - Animation dictionary.
                Name = 'pickup_snowball',  -- [string] - Animation name.
            },
        },
        Rewards = {                                -- [table] - Loot table for rewards
            {
                item = 'cash',                     -- [string] - Item name.
                amount = { min = 100, max = 200 }, -- [int/table] - Amount of the item. If table is used, it will generate a random number between min and max.
                chance = 900,                      -- [int] - Chance of getting the item.
            },
            {
                item = 'pistol',
                amount = 1,
                chance = 10,
            },
            {
                item = 'meth',
                amount = { min = 1, max = 3 },
                chance = 20,
            },
            {
                item = 'weed',
                amount = { min = 3, max = 8 },
                chance = 10,
            }
        },
        Notifications = { -- [table] - Notifications
            Error = 'An error occurred while collecting the present!',
            InventoryError = 'An error occurred while adding the reward to your inventory!',
            RewardNotFound = 'Reward not found!',
            RewardGiven = 'You got %sx %s!',
        },
    },

    Trees = {                                             -- [table] - Christmas trees
        Persist = {                                       -- [table] - Persistent trees
            Enabled = true,                               -- [true/false] - Enables if the trees should be persistent and be available after server restart AND is allowed to open GIFTS STASH.
            PerPlayerLimit = 2,                           -- [int/false] - How many trees can a player have at the same time (false = unlimited)
        },
        Build = {                                         -- [table] - Tree building
            Enabled = true,                               -- [true/false] - Enables tree building / placing
            InteriorOnly = true,                          -- [true/false] - Enables tree building only in interiors
            Models = {                                    -- [table] - Tree models
                Undecored = `bzzz_xmas23_convert_tree_a`, -- [hash] - Undecored tree model
                Decored = `bzzz_xmas23_convert_tree_b`    -- [hash] - Decored tree model
            },
            Command = 'tree',                             -- [string] - Command to start building
            Item = 'xmas_tree',                           -- [string/nil] - Item to start building
        },
        Stash = {
            Title = 'Tree Gifts (%s)',                        -- [string] - Title of the stash (%s is used for the tree ID)
            Slots = 10,                                       -- [int] - Slots of the stash
            MaxWeight = 1000.0,                               -- [float] - Max weight of the stash
            OxInventoryHook = {
                OnlyGifts = true,                             -- [true/false] - Enables only gift items in the stash
                GiftsOnGround = {
                    Enabled = true,                           -- [true/false] - Enables gifts on the ground if something is in the stash
                    Model = `bzzz_xmas23_convert_tree_gifts`, -- [hash] - Model of the gift
                },
            }
        },
        Decorate = {
            ProgressTime = 5000,                 -- [int] - Time of the progress bar
            ProgressText = 'Decorating tree...', -- [string] - Text of the progress bar
            Animation = {
                Dict = 'mp_car_bomb',
                Name = 'car_bomb_mechanic'
            },
            Required = {
                { item = 'xmas_star',  amount = 1 }, -- [table] - Required items to decorate the tree
                { item = 'xmas_decor', amount = 3 },
            }
        },
        Control = {
            Radius = 2.0,
            HelpText = {        -- Works only with Target.NONE
                Enabled = true, -- [true/false] - Enables help text.
            },
            Decorate = {
                Text = '~INPUT_CONTEXT~ Decorate tree', -- [string] - Help text.
                Target = {
                    label = 'Decorate tree',
                    icon = 'fa-solid fa-paint-roller', -- https://fontawesome.com/v5.15/icons?d=gallery&p=2&m=free
                },
            },
            GiftsStash = {
                Text = '~INPUT_CONTEXT~ Open gifts stash',
                Target = {
                    label = 'Open gifts stash',
                    icon = 'fa-solid fa-gifts',
                },
            },
            Delete = {
                Text = '~INPUT_CELLPHONE_OPTION~ Delete tree',
                Target = {
                    label = 'Delete tree',
                    icon = 'fa-solid fa-trash-alt',
                },
            },
        },
        Notifications = {
            Error = 'An error occurred while building the tree!',
            InventoryError = 'An error occurred while manipulating with your inventory!',
            PersistLimit = 'You have too many trees built! Destroy one of them first!',
            TreeBuilt = 'You built the tree!',
            StashOnlyGifts = 'You can only put gifts in the stash!',
            NotFree = 'You can not do any other activities / sit in vehicle during building tree!',
            Interior = 'You can not build a tree in an interior!',
            AlreadyBuilding = 'You already building a tree!',
            Cancelled = 'You cancelled building the tree!',
            Failed = 'You can not build here!',
            TreeDestroyed = 'You destroyed the tree!',
            TreeDecorated = 'You decorated the tree!',
            EnoughItems = 'You do not have enough items to decorate the tree!',
            DecorateFailed = 'You cancelled decoration of the tree!',
        }
    },

    Gifts = {
        Enabled = true,                        -- [true/false] - Enables gifts packaging
        Item = 'xmas_gift',                    -- [string] - Item to start packaging
        PackedItem = 'xmas_packed_gift',       -- [string] - Item to receive after packaging
        PackedItemDescription = 'Nametag: %s', -- [string] - Description of the gift in the inventory (%s is used for the nametag)
        Command = 'packgift',                  -- [string] - Command to start packaging
        Inventory = {
            UnpackedTitle = 'Unpacked Gift',   -- [string] - Title of the unpacked gift for preparing gift
            PackedTitle = 'Gift (%s)',         -- [string] - Title of the packed gift (%s is used for the nametag)
            Slots = 5,
            MaxWeight = 1000.0,
        },
        Unpack = {
            WaitForChristmas = true, -- [true/false] - Players can open packed gifts only after specified date
            Date = {
                day = 24,
                month = 12,
            }
        },
        Notifications = {
            NoItem = 'You do not have any gifts to pack!',
            NoGifts = 'You do not have any items in unpacked gifts!',
            NotAdded = 'Packed gift can not be added to your inventory! Do you have space?',
            NotChristmas = 'You can open packed gifts only after / during Christmas!',
            Unpacked = 'You unpacked the gift!',
            Packed = 'You packed the gift!',
        }
    },

    Snowman = {                             -- [table] - Snowman building
        Enabled = true,                     -- [true/false] - Enables snowman building
        Command = 'snowman',                -- [string] - Command to start building
        Model = `xm3_prop_xm3_snowman_01a`, -- [hash] - Snowman model
        Place = {                           -- [table] - Snowman placing
            Radius = 1.0,                   -- [float] - Radius of the parts building area (Work only with Target.NONE)
            HelpText = {                    -- Works only with Target.NONE
                Enabled = true,
                Text = '~INPUT_CONTEXT~ Complete %s part~n~~INPUT_VEH_HEADLIGHT~ Cancel building',
            },
            Target = {
                label = 'Complete %s part',
                icon = 'fa-solid fa-hammer', -- https://fontawesome.com/v5.15/icons?d=gallery&p=2&m=free
            },
            CancelTarget = {
                label = 'Cancel building',
                icon = 'fa-solid fa-times',
            },
        },
        FireDestroyable = true, -- [true/false] - Is the fire destroyable?
        Notifications = {       -- [table] - Notifications
            Error = 'An error occurred while building the snowman!',
            InventoryError = 'An error occurred while removing the required items from your inventory!',
            EnoughtItem = 'You do not have enough items to build this part!',
            PartNotFound = 'Part not found!',
            PartBuilt = 'You built the %s part!',
            SnowmanBuilt = 'You built the snowman!',
            NotFree = 'You can not do any other activities / sit in vehicle during building snowman!',
            Interior = 'You can not pick up snowballs in an interior.',
            AlreadyBuilding = 'You already building a snowman!',
            Cancelled = 'You cancelled building the snowman!',
            Failed = 'You can not build here!',
        },
        BuiltModel = `xm3_prop_xm3_snowman_01a`,
        Plan = {                                  -- [table] - Snowman building plan / "blueprint"
            ['Body'] = {                          -- [string] - Part name
                Body = true,                      -- [true/false] - Is this part the body?
                Model = `bzzz_maku_snowmen_body`, -- [hash] - Part model
                Required = {                      -- [table] - Required items to build this part
                    { item = 'WEAPON_SNOWBALL', amount = 5 },
                },
                Next = {
                    ...
                }
            },
        }
    }
}

Last updated