[ESX/QB][PAID] Chirstmas Advent Calendar - Clean and simple UI


*Credits for the UI-Design :heart:

:christmas_tree:Key-Features :christmas_tree:
➥ ESX and QBCore
➥ Simple and Clean UI
➥ Clean code (Easy to edit and customize)
➥ Webhooks to keep control
➥ Gift Items, Money or Vehicles
➥ Possibility to open doors of days gone by
➥ Background Music as long as the calendar is open (can be easyily changed)
➥ Sound when opening a door
➥ 4 Options to open the calendar (Item, Command, NPC/Location, Hotkey)
➥ Support for ox_target and qb-target (For NPC open option)
➥ Encrypted and open source version of the script
➥ …much more (see config)

Short video to show some of the functions.
https://streamable.com/ibdw0f?src=player-page-share

:gear: Config File :gear:

----------------------------------------------------------------------------------
Config = {}
Config.Locale = 'en'
Config.useDebug = true
----------------------------------------------------------------------------------
-- Choose your framework (esx or qb)
-- Framework compatibility can be edited by your own in the bridge folder 
-- if you bought the open script version
Config.Framework = "esx" -- "esx" or "qb"

-- In which garage should the vehicles be placed?
Config.StandardGarageESX = "SanAndreasAvenue"
Config.StandardGarageQB = "pillboxgarage"
----------------------------------------------------------------------------------
-- Should the calendar be in test mode? (true/false)
-- Test mode will allow you to open the calendar as many times as you want
-- regardless of the date of the day.
Config.TestMode = false
----------------------------------------------------------------------------------
-- Should be play a backround music when opening the calendar? (true/false)
Config.backgroudMusic = true
----------------------------------------------------------------------------------
-- Command to open the calendar (nil to disable)
Config.openCommand = 'advent' 
----------------------------------------------------------------------------------
-- Key to open the calendar (nil to disable)
Config.openKey = "F6" -- https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/
----------------------------------------------------------------------------------
-- Item to open the calendar (nil to disable)
Config.openItem = 'advent' 
----------------------------------------------------------------------------------
-- Location to open the calendar
Config.openLocation = {
    useNPC = true, -- Should be an NPC at the location? (true/false)
    location = vector4(215.8432, -870.2720, 30.4921, 251.4910),
    MenuLoctationHelpText = 'Press ~INPUT_PICKUP~ to open the Advent Calendar', -- Help text for the location
    npc = 'mp_m_freemode_01',
    targetScript = "ox_target", -- nil, "ox_target", "qb-target"
    clothing = {
        helmet_1 = 22, helmet_2 = 0,
        mask_1 = 8, mask_2 = 0,
        shirt_1 = 74, shirt_2 = 1,
        torso_1 = 116, torso_2 = 0,
        arms = 4,
        pants_1 = 22, pants_2 = 3,
        shoes_1 = 17, shoes_2 = 0,
    }
}
----------------------------------------------------------------------------------
-- Should the Screen be blurred when opening the calendar? (true/false)
Config.BlurScreen = true
----------------------------------------------------------------------------------
-- Should players be able to open the doors of the days that have already passed?
Config.OpenDoorsOfGoneByDays = true
-- Should missed doors been greyed out?
-- Turn it to false if you Config.OpenDoorsOfGoneByDays = true
Config.greyOutMissedDoors = true
----------------------------------------------------------------------------------
-- Should opened doors been greyed out?
Config.greyOutOpenedDoors = true
----------------------------------------------------------------------------------
Config.Days = {
    [1] = {
        doorIndex = 1,
        giftType = 'money', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'money', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = '1000$', -- label for the UI
            amount = 1000, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/money.png", 
            message = 'You received 1000$', -- optional
        },
    },
    [2] = {
        doorIndex = 2,
        giftType = 'money', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'money', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = '1000$', -- label for the UI
            amount = 1000, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/money.png", 
            message = 'You received 1000$', -- optional
        },
    },
    [3] = {
        doorIndex = 3,
        giftType = 'money', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'money', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = '1000$', -- label for the UI
            amount = 1000, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/money.png", 
            message = 'You received 1000$', -- optional
        },
    },
    [4] = {
        doorIndex = 4,
        giftType = 'money', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'money', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = '1000$', -- label for the UI
            amount = 1000, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/money.png", 
            message = 'You received 1000$', -- optional
        },
    },
    [5] = {
        doorIndex = 5,
        giftType = 'money', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'money', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = '1000$', -- label for the UI
            amount = 1000, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/money.png", 
            message = 'You received 1000$', -- optional
        },
    },
    [6] = {
        doorIndex = 6,
        giftType = 'money', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'money', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = '1000$', -- label for the UI
            amount = 1000, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/money.png", 
            message = 'You received 1000$', -- optional
        },
    },
    [7] = {
        doorIndex = 7,
        giftType = 'money', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'money', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = '1000$', -- label for the UI
            amount = 1000, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/money.png", 
            message = 'You received 1000$', -- optional
        },
    },
    [8] = {
        doorIndex = 8,
        giftType = 'item', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'bread', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = '1x Bread', -- label for the UI
            amount = 1, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/bread.png", 
            message = 'You received a bread', -- optional
        },
    },
    [9] = {
        doorIndex = 9,
        giftType = 'item', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'bread', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = '1x Bread', -- label for the UI
            amount = 1, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/bread.png", 
            message = 'You received a bread', -- optional
        },
    },
    [10] = {
        doorIndex = 10,
        giftType = 'item', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'bread', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = '1x Bread', -- label for the UI
            amount = 1, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/bread.png", 
            message = 'You received a bread', -- optional
        },
    },
    [11] = {
        doorIndex = 11,
        giftType = 'item', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'bread', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = '1x Bread', -- label for the UI
            amount = 1, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/bread.png", 
            message = 'You received a bread', -- optional
        },
    },
    [12] = {
        doorIndex = 12,
        giftType = 'item', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'bread', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = '1x Bread', -- label for the UI
            amount = 1, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/bread.png", 
            message = 'You received a bread', -- optional
        },
    },
    [13] = {
        doorIndex = 13,
        giftType = 'item', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'bread', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = '1x Bread', -- label for the UI
            amount = 1, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/bread.png", 
            message = 'You received a bread', -- optional
        },
    },
    [14] = {
        doorIndex = 14,
        giftType = 'item', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'bread', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = '1x Bread', -- label for the UI
            amount = 1, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/bread.png", 
            message = 'You received a bread', -- optional
        },
    },
    [15] = {
        doorIndex = 15,
        giftType = 'item', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'bread', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = '1x Bread', -- label for the UI
            amount = 1, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/bread.png", 
            message = 'You received a bread', -- optional
        },
    },
    [16] = {
        doorIndex = 16,
        giftType = 'item', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'bread', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = '1x Bread', -- label for the UI
            amount = 1, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/bread.png", 
            message = 'You received a bread', -- optional
        },
    },  
    [17] = {
        doorIndex = 17,
        giftType = 'item', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'bread', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = '1x Bread', -- label for the UI
            amount = 1, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/bread.png", 
            message = 'You received a bread', -- optional
        },
    },  
    [18] = {
        doorIndex = 18,
        giftType = 'vehicle', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'adder', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = 'New vehicle: Adder',
            amount = 1, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/vehicle.png", 
            message = 'You received a vehicle', -- optional
        },
    },
    [19] = {
        doorIndex = 19,
        giftType = 'vehicle', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'adder', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = 'New vehicle: Adder',
            amount = 1, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/vehicle.png", 
            message = 'You received a vehicle', -- optional
        },
    },
    [20] = {
        doorIndex = 20,
        giftType = 'vehicle', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'adder', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = 'New vehicle: Adder',
            amount = 1, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/vehicle.png", 
            message = 'You received a vehicle', -- optional
        },
    },
    [21] = {
        doorIndex = 21,
        giftType = 'vehicle', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'adder', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = 'New vehicle: Adder',
            amount = 1, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/vehicle.png", 
            message = 'You received a vehicle', -- optional
        },
    },
    [22] = {
        doorIndex = 22,
        giftType = 'vehicle', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'adder', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = 'New vehicle: Adder',
            amount = 1, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/vehicle.png", 
            message = 'You received a vehicle', -- optional
        },
    },
    [23] = {
        doorIndex = 23,
        giftType = 'vehicle', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'adder', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money"
            UILabel = 'New vehicle: Adder',
            amount = 1, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/vehicle.png", 
            message = 'You received a vehicle', -- optional
        },
    },
    [24] = {
        doorIndex = 24,
        giftType = 'vehicle', -- "money", "item" or "vehicle",
        giftOptions = {
            name = 'adder', -- "item_name", "vehicle_name" or the money type (e.g. "money", "bank" or "black_money")
            UILabel = 'New vehicle: Adder',
            amount = 1, -- money or item amount (vehicle amount is always 1)
            giftImage = "/web/images/gifticons/vehicle.png", 
            message = 'You received a vehicle', -- optional
        },
    },    
}

Buy the Script [50% Black Week Sale! - 40% on Open Source version]

Have a look at my other Scripts :heart:
:new: [ESX/QB] Clothingshop, Wardrobe, IngameCreator and more!
[ESX/QB] Advance Tax-System
[ESX/QB] EmergencyPhone - Leitstellensystem
[ESX/QB] Visa-/Visumsystem
[ESX/QB] Duty Blips - See which business is online!
[ESX/QB] Item Blips - Reveal Blips on Item usage!
[ESX] Business Cards
[ESX] Random Dealer
[ESX] Simcards
[ESX] noHUD Notify
[ESX] Vehicle Tracker (with Police functions)

Code is accessible Encrypted & Open Source Version
Subscription-based No
Lines (approximately) ~1200
Requirements ESX, QBCORE
Support Yes
1 Like

Very nice Script and a insane UI <3

1 Like

Changelog - Chirstmas Advent Calendar

v1.0.3

:dizzy: New stuff:
➥ Added command to reset calendar for a player: /resetCalendar “source”
➥ Added command to reset calendar for all players: /resetCalendarAll

:beetle: Bugfixes:
➥ Minor bug fixes

:recycle: Changes:
➥ Time until the next gift adjusted if it is not yet december