# EASTER EVENT

## 1) Item Setup

Before configuring the script, you need to add all items to your server's inventory system.

**⚠️&#x20;**<mark style="color:yellow;">**IMPORTANT:**</mark> <mark style="color:yellow;"></mark><mark style="color:yellow;">The examples below are</mark> <mark style="color:yellow;"></mark><mark style="color:yellow;">**reference only**</mark><mark style="color:yellow;">. Every inventory system has its own structure, and updates can change how items are added.</mark> <mark style="color:yellow;"></mark><mark style="color:yellow;">**You are responsible for adding items correctly to your specific inventory system.**</mark>

If you're unsure how to add items to your inventory:

* Check your inventory resource documentation
* Consult with your server developer

#### ESX — SQL

```sql
-- Shop items (items players can buy with points)
INSERT INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES
('easter_choco_egg', 'Chocolate Easter Egg', 50, 0, 1),
('easter_hot_cross_bun', 'Hot Cross Bun', 100, 0, 1),
('easter_spring_basket', 'Spring Basket', 200, 0, 1),
('easter_bunny_ears', 'Bunny Ears', 50, 0, 1),
('easter_bunny_costume', 'Bunny Costume', 500, 0, 1);

-- Box rewards (items found in Easter eggs)
INSERT INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES
('easter_mini_eggs', 'Mini Chocolate Eggs', 20, 0, 1),
('easter_carrot', 'Easter Carrot', 30, 0, 1),
('easter_painted_egg', 'Painted Easter Egg', 40, 0, 1),
('easter_spring_flower', 'Spring Flower', 10, 0, 1),
('easter_crystal_egg', 'Crystal Easter Egg', 100, 0, 1);
```

#### QBCore — qb-core/shared/items.lua

```lua
-- Shop items
['easter_choco_egg'] = {name = 'easter_choco_egg', label = 'Chocolate Easter Egg', weight = 50, type = 'item', image = 'easter_choco_egg.png', unique = false, useable = true, shouldClose = true, description = 'A delicious milk chocolate egg'},
['easter_hot_cross_bun'] = {name = 'easter_hot_cross_bun', label = 'Hot Cross Bun', weight = 100, type = 'item', image = 'easter_hot_cross_bun.png', unique = false, useable = true, shouldClose = true, description = 'Freshly baked hot cross bun'},
['easter_spring_basket'] = {name = 'easter_spring_basket', label = 'Spring Basket', weight = 200, type = 'item', image = 'easter_spring_basket.png', unique = false, useable = false, shouldClose = true, description = 'A handwoven basket with Easter goodies'},
['easter_bunny_ears'] = {name = 'easter_bunny_ears', label = 'Bunny Ears', weight = 50, type = 'item', image = 'easter_bunny_ears.png', unique = false, useable = true, shouldClose = true, description = 'Fluffy pink bunny ears'},
['easter_bunny_costume'] = {name = 'easter_bunny_costume', label = 'Bunny Costume', weight = 500, type = 'item', image = 'easter_bunny_costume.png', unique = false, useable = true, shouldClose = true, description = 'Full Easter Bunny outfit'},

-- Box rewards
['easter_mini_eggs'] = {name = 'easter_mini_eggs', label = 'Mini Chocolate Eggs', weight = 20, type = 'item', image = 'easter_mini_eggs.png', unique = false, useable = true, shouldClose = true, description = 'Tiny chocolate eggs'},
['easter_carrot'] = {name = 'easter_carrot', label = 'Easter Carrot', weight = 30, type = 'item', image = 'easter_carrot.png', unique = false, useable = true, shouldClose = true, description = 'A fresh Easter carrot'},
['easter_painted_egg'] = {name = 'easter_painted_egg', label = 'Painted Easter Egg', weight = 40, type = 'item', image = 'easter_painted_egg.png', unique = false, useable = false, shouldClose = true, description = 'A beautifully painted egg'},
['easter_spring_flower'] = {name = 'easter_spring_flower', label = 'Spring Flower', weight = 10, type = 'item', image = 'easter_spring_flower.png', unique = false, useable = false, shouldClose = true, description = 'A fresh spring flower'},
['easter_crystal_egg'] = {name = 'easter_crystal_egg', label = 'Crystal Easter Egg', weight = 100, type = 'item', image = 'easter_crystal_egg.png', unique = false, useable = false, shouldClose = true, description = 'A rare crystal egg'},
```

#### ox\_inventory — ox\_inventory/data/items.lua

```lua
-- Shop items
['easter_choco_egg'] = {label = 'Chocolate Easter Egg', weight = 50, stack = true, close = true, description = 'A delicious milk chocolate egg'},
['easter_hot_cross_bun'] = {label = 'Hot Cross Bun', weight = 100, stack = true, close = true, description = 'Freshly baked hot cross bun'},
['easter_spring_basket'] = {label = 'Spring Basket', weight = 200, stack = false, close = true, description = 'A handwoven basket with Easter goodies'},
['easter_bunny_ears'] = {label = 'Bunny Ears', weight = 50, stack = false, close = true, description = 'Fluffy pink bunny ears'},
['easter_bunny_costume'] = {label = 'Bunny Costume', weight = 500, stack = false, close = true, description = 'Full Easter Bunny outfit'},

-- Box rewards
['easter_mini_eggs'] = {label = 'Mini Chocolate Eggs', weight = 20, stack = true, close = true, description = 'Tiny chocolate eggs'},
['easter_carrot'] = {label = 'Easter Carrot', weight = 30, stack = true, close = true, description = 'A fresh Easter carrot'},
['easter_painted_egg'] = {label = 'Painted Easter Egg', weight = 40, stack = true, close = true, description = 'A beautifully painted egg'},
['easter_spring_flower'] = {label = 'Spring Flower', weight = 10, stack = true, close = true, description = 'A fresh spring flower'},
['easter_crystal_egg'] = {label = 'Crystal Easter Egg', weight = 100, stack = true, close = true, description = 'A rare crystal egg'},
```

**Add item images** to your inventory's image folder:

* QBCore: `qb-inventory/html/images/`
* ox\_inventory: `ox_inventory/web/images/`

***

### 2) Overview

Risk Easter Event is a seasonal event system featuring:

* 🥚 Easter egg hunt with automatic spawning
* 🏪 Point-based shop system with exclusive rewards
* 🎁 Random rewards from collected eggs
* 💰 Sell system for collected items
* ⏰ Automatic or manual egg drops
* 🗺️ Configurable spawn zones
* 🎯 ox\_target support
* 📊 Player statistics tracking
* 🚗 Vehicle rewards with auto-database insertion
* 🌐 Multi-framework support (ESX, QBCore, QBox)

***

### 3) Framework & Integration

#### Framework Detection

```lua
RISK.Framework = "auto" -- auto | esx | qb
```

**Auto-detection** (recommended):

```lua
RISK.Framework = "auto"
```

**Force specific framework:**

```lua
RISK.Framework = "esx"   -- ESX only
RISK.Framework = "qb"    -- QBCore/QBox only
```

#### ox\_target Integration

```lua
RISK.OxTarget = {
    enabled = false, -- true = ox_target, false = marker system
    shop = {
        icon = "fas fa-egg",
        label = "Open Easter Shop"
    },
    box = {
        icon = "fas fa-gift",
        label = "Open Easter Egg"
    }
}
```

**Enable ox\_target:**

```lua
RISK.OxTarget = {
    enabled = true,
    shop = {
        icon = "fas fa-store",
        label = "Open Easter Shop"
    },
    box = {
        icon = "fas fa-gift-box",
        label = "Open Easter Egg"
    }
}
```

#### Vehicle Spawn Location (QBCore/QBox Only)

```lua
RISK.DefaultGarage = "pillboxgarage"
```

**Popular garage names:**

```lua
RISK.DefaultGarage = "pillboxgarage"  -- Pillbox Hospital
RISK.DefaultGarage = "motelgarage"    -- Motel
RISK.DefaultGarage = "sapcounsel"     -- LSPD
RISK.DefaultGarage = "paleto garage"  -- Paleto Bay
```

***

### 4) Notification System

```lua
Config.UseCustomNotify = true
Config.UseCustomHelpNotify = true

Config.Functions = {
    notify = function(ntype, title, text, time)
        exports['risk-notify']:Notify({
            type = ntype or 'info',
            title = title or Config.Text.notifytitle,
            message = text,
            duration = time or 10000
        })
    end,
    helpnotify = function(key, text)
        exports["risk-hudv2"]:HelpNotify(key, text)
    end
}
```

**Use default notifications:**

```lua
Config.UseCustomNotify = false
Config.UseCustomHelpNotify = false
```

**ox\_lib:**

```lua
Config.UseCustomNotify = true
Config.Functions = {
    notify = function(ntype, title, text, time)
        lib.notify({
            title = title,
            description = text,
            type = ntype,
            duration = time
        })
    end,
}
```

***

### 5) Shop Configuration

#### Shop Location

```lua
RISK.Shop = {
    coords = vector4(184.7634, -918.1697, 31.6921, 323.7366), -- x, y, z, heading
    
    ped = {
        enabled = false, -- true = spawn NPC
        model = "ig_cletus" -- NPC model
    },
    
    marker = {
        enabled = true, -- true = show marker
        type = 21, -- marker type
        size = vector3(0.7, 0.7, 0.7),
        color = {255, 182, 255, 200}, -- R, G, B, Alpha
        drawDistance = 20.0,
        interactDistance = 2.0
    },
    
    blip = {
        enabled = true, -- true = show on map
        sprite = 792, -- blip icon
        color = 6, -- blip color
        scale = 0.9,
        name = "Easter Egg Shop"
    }
}
```

**With NPC (recommended for ox\_target):**

```lua
ped = {
    enabled = true,
    model = "ig_cletus" -- or "a_c_rabbit_01" if you have addon
},
```

**Popular NPC models:**

```lua
model = "ig_cletus"           -- Farmer
model = "s_m_y_clown_01"      -- Clown
model = "u_m_y_zombie_01"     -- Zombie
model = "a_c_rabbit_01"       -- Rabbit (addon required)
```

**Marker types:**

```lua
type = 1   -- Cylinder (upside-down cone)
type = 2   -- Vertical cylinder
type = 21  -- Arrow pointing down (default)
type = 27  -- Thin circle
```

**Hide blip:**

```lua
blip = {
    enabled = false
},
```

***

### 6) Shop Items Configuration

```lua
RISK.ShopItems = {
    {
        id = "choco_egg", -- NEVER CHANGE AFTER LAUNCH
        type = "item", -- item | money | vehicle
        item = "easter_choco_egg", -- item name in inventory
        label = "Chocolate Easter Egg",
        description = "A delicious milk chocolate egg...",
        price = 60, -- points required
        rarity = "common", -- common | rare | epic | legendary
        image = "easter_choco_egg.png", -- image in items/ folder
        uniquePerPlayer = false -- false = unlimited | number = max purchases
    },
}
```

#### Item Types

**Item reward:**

```lua
{
    id = "bunny_ears",
    type = "item",
    item = "easter_bunny_ears", -- inventory item name
    label = "Bunny Ears",
    description = "Fluffy pink bunny ears...",
    price = 300,
    rarity = "epic",
    image = "easter_bunny_ears.png",
    uniquePerPlayer = false
}
```

**Money reward:**

```lua
{
    id = "cash_25k",
    type = "money",
    moneyType = "cash", -- cash | bank | black
    amount = 25000,
    label = "$25,000 Cash",
    description = "A crisp stack of bills...",
    price = 220,
    rarity = "rare",
    image = "cash_25k.png",
    uniquePerPlayer = 2 -- max 2 per player
}
```

**Vehicle reward:**

```lua
{
    id = "easter_car",
    type = "vehicle",
    model = "zentorno", -- vehicle spawn code
    label = "Easter Speedster",
    description = "An exclusive pastel-painted ride...",
    price = 650,
    rarity = "legendary",
    image = "easter_car.png",
    uniquePerPlayer = 1 -- only 1 per player
}
```

#### Rarity System

**Rarity affects UI color:**

* `common` — White/Gray
* `rare` — Blue
* `epic` — Purple
* `legendary` — Gold/Orange

#### Purchase Limits

```lua
uniquePerPlayer = false  -- Unlimited purchases
uniquePerPlayer = 1      -- Only 1 per player (lifetime)
uniquePerPlayer = 5      -- Max 5 per player
```

> **⚠️ CRITICAL:** Never change the `id` field after the server goes live! The database tracks purchases by ID. You can freely add new items or change prices/labels.

***

### 7) Easter Egg Commands & Admin System

#### Manual Drop Command

```lua
Config.Easter = {
    command = {
        enabled = true, -- false = disable command
        commandName = "egghunt", -- command name
        everyoneCanUse = false, -- true = everyone, false = admins only
        admins = { -- allowed identifiers
            "license:5a97d6e76c308af1e9710080d6468b3a9caa497d",
            "steam:110000112345678"
        }
    },
}
```

**Usage:**

```
/egghunt
```

**Allow everyone to use:**

```lua
command = {
    enabled = true,
    commandName = "egghunt",
    everyoneCanUse = true, -- anyone can start drops
    admins = {}
},
```

**How to get your identifier:**

1. Join your server
2. Open server console
3. Type: `sv_players`
4. Find your identifier (license: or steam:)
5. Copy to `admins` table

**Example with multiple admins:**

```lua
admins = {
    "license:abc123...",
    "steam:110000...",
    "discord:456789..."
}
```

***

### 8) Auto-Drop System

```lua
Config.Easter = {
    autoDrop = {
        enabled = true, -- false = manual only
        useInterval = false, -- true = interval, false = specific times
        
        intervalMinutes = 60, -- drop every X minutes
        
        specificTimes = { -- daily drop times (24h format, server time)
            "10:00",
            "19:26",
            "23:44"
        }
    }
}
```

**Interval-based drops (every X minutes):**

```lua
autoDrop = {
    enabled = true,
    useInterval = true,
    intervalMinutes = 60, -- every 60 minutes
},
```

**Time-based drops (specific times daily):**

```lua
autoDrop = {
    enabled = true,
    useInterval = false,
    specificTimes = {
        "09:00", -- 9 AM
        "12:00", -- 12 PM
        "15:00", -- 3 PM
        "18:00", -- 6 PM
        "21:00"  -- 9 PM
    }
},
```

**Disable auto-drops:**

```lua
autoDrop = {
    enabled = false
},
```

> **📌 NOTE:** Times use **server time**, not player time. Check your server's timezone!

***

### 9) Cleanup System

```lua
Config.Easter = {
    cleanup = {
        enabled = true, -- false = eggs stay forever
        minutes = 15, -- remove after 15 minutes
        notifyBefore = 5, -- notify X minutes before cleanup
        notifyTitle = "Easter Shop",
        notifyBeforeText = "All Easter eggs will be removed in %d minutes!",
        notifyCleanupText = "All Easter eggs have been removed!"
    },
}
```

**Quick cleanup (5 minutes):**

```lua
cleanup = {
    enabled = true,
    minutes = 5,
    notifyBefore = 2,
    notifyTitle = "Easter Event",
    notifyBeforeText = "Eggs disappear in %d minutes!",
    notifyCleanupText = "All eggs removed!"
},
```

**Long-lasting eggs (30 minutes):**

```lua
cleanup = {
    enabled = true,
    minutes = 30,
    notifyBefore = 10,
    notifyTitle = "Easter Shop",
    notifyBeforeText = "Eggs will be removed in %d minutes!",
    notifyCleanupText = "All eggs have been removed!"
},
```

**Disable cleanup (eggs stay until restart):**

```lua
cleanup = {
    enabled = false
},
```

***

### 10) Give Points Command

```lua
Config.Easter = {
    givePointsCommand = {
        enabled = true,
        commandName = "givepoints",
        everyoneCanUse = false,
        admins = {
            "license:5a97d6e76c308af1e9710080d6468b3a9caa497d",
            "steam:110000112345678"
        }
    },
}
```

**Usage:**

```
/givepoints [playerID] [points]
```

**Examples:**

```
/givepoints 1 500     -- Give player ID 1 500 points
/givepoints 5 1000    -- Give player ID 5 1000 points
```

**Disable command:**

```lua
givePointsCommand = {
    enabled = false
},
```

***

### 11) Easter Egg Spawn Settings

```lua
RISK.Box = {
    propModel = "prop_alien_egg_01", -- prop model
    count = 20, -- eggs per drop
    loadingDuration = 15, -- loading screen seconds
    debug = false, -- true = show zone radius on map
    
    blip = {
        sprite = 781, -- egg icon
        color = 6, -- yellow
        scale = 1.0,
        name = "Easter Egg"
    },
    
    zones = {
        {coords = vector3(-35.9459, 6345.1792, 31.3041), radius = 500.0},
        {coords = vector3(-113.8096, -710.6802, 42.7607), radius = 1250.0},
        -- add more zones...
    }
}
```

**Popular prop models:**

```lua
propModel = "prop_alien_egg_01"     -- Alien egg (default)
propModel = "prop_xmas_present_01"  -- Gift box
propModel = "prop_ld_gift_01"       -- Small gift
propModel = "v_res_tt_trophysilver" -- Trophy (looks like egg)
```

**More/less eggs:**

```lua
count = 10  -- Easy mode (fewer eggs)
count = 20  -- Default
count = 50  -- Hard mode (many eggs)
```

**Loading screen:**

```lua
loadingDuration = 5   -- 5 seconds
loadingDuration = 15  -- 15 seconds (default)
loadingDuration = 30  -- 30 seconds (dramatic)
```

**Debug mode (show zones on map):**

```lua
debug = true  -- Red circles show spawn zones
```

#### Adding Spawn Zones

**Find coordinates in-game:**

1. Go to desired location
2. Type `/getcoords` or use menu
3. Add to zones table

**Example zones:**

```lua
zones = {
    -- Paleto Bay area
    {
        coords = vector3(-35.9459, 6345.1792, 31.3041),
        radius = 500.0
    },
    -- Los Santos Downtown
    {
        coords = vector3(-113.8096, -710.6802, 42.7607),
        radius = 1250.0
    },
    -- Sandy Shores
    {
        coords = vector3(1839.6, 3672.9, 34.3),
        radius = 600.0
    },
    -- Grapeseed
    {
        coords = vector3(2496.6296, 5115.3779, 45.9259),
        radius = 500.0
    },
}
```

> **💡 TIP:** Larger radius = more spread out eggs. Smaller radius = eggs closer together.

***

### 12) Box Rewards (What Players Find)

```lua
RISK.BoxRewards = {
    {
        item = "easter_mini_eggs",
        label = "Mini Chocolate Eggs",
        min = 3, -- minimum amount
        max = 8, -- maximum amount
        points = 15 -- points per item (total = points * amount)
    },
}
```

**How it works:**

* Each opened egg gives **1 random reward** from this list
* Amount is random between `min` and `max`
* Total points = `points * amount` given

**Examples:**

**Common reward (many items, low points):**

```lua
{
    item = "easter_mini_eggs",
    label = "Mini Chocolate Eggs",
    min = 5,
    max = 10,
    points = 10 -- 50-100 total points
}
```

**Rare reward (few items, high points):**

```lua
{
    item = "easter_crystal_egg",
    label = "Crystal Easter Egg",
    min = 1,
    max = 1,
    points = 100 -- always 100 points
}
```

**Balanced reward:**

```lua
{
    item = "easter_painted_egg",
    label = "Painted Easter Egg",
    min = 1,
    max = 3,
    points = 35 -- 35-105 total points
}
```

***

### 13) Sell Shop Configuration

```lua
RISK.SellShop = {
    enabled = true, -- false = hide sell button
    buttonText = "Sell your Items",
    
    items = {
        {
            item = "easter_mini_eggs",
            label = "Mini Chocolate Eggs",
            image = "easter_mini_eggs.png",
            price = 50, -- money per 1 item
            moneyType = "cash", -- cash | bank | black | item
            moneyItem = "", -- if moneyType = "item", item to give
            moneyItemLabel = "Cash"
        },
    }
}
```

**Money types:**

**Cash:**

```lua
{
    item = "easter_mini_eggs",
    label = "Mini Chocolate Eggs",
    image = "easter_mini_eggs.png",
    price = 50,
    moneyType = "cash",
    moneyItem = "",
    moneyItemLabel = "Cash"
}
```

**Bank:**

```lua
{
    item = "easter_painted_egg",
    label = "Painted Easter Egg",
    image = "easter_painted_egg.png",
    price = 120,
    moneyType = "bank",
    moneyItem = "",
    moneyItemLabel = "Bank"
}
```

**Black money:**

```lua
{
    item = "easter_crystal_egg",
    label = "Crystal Easter Egg",
    image = "easter_crystal_egg.png",
    price = 350,
    moneyType = "black",
    moneyItem = "",
    moneyItemLabel = "Black Money"
}
```

**Custom item (e.g., crypto):**

```lua
{
    item = "easter_crystal_egg",
    label = "Crystal Easter Egg",
    image = "easter_crystal_egg.png",
    price = 10, -- amount of custom item
    moneyType = "item",
    moneyItem = "crypto_coin",
    moneyItemLabel = "Crypto"
}
```

**Disable sell shop:**

```lua
RISK.SellShop = {
    enabled = false
}
```

***

### 14) Text Localization

```lua
Config.Text = {
    open_help = "Press E to open the Easter Shop",
    box_help = "Press E to open the Easter Egg",
    notifytitle = "Easter Shop",
    reward_notify = "You found %sx %s and earned %s points.",
    profile_title = "Your Profile",
    profile_description = "Search for Easter eggs across the city...",
    reward_title = "Next Milestone",
    live_text = "LIVE | {{count}} EGGS FOUND",
    tip_text = "Tip: Rare eggs grant significantly more points.",
    points_give_notify = "You gave %s %d points."
}
```

**German translation:**

```lua
Config.Text = {
    open_help = "Drücke E um den Oster-Shop zu öffnen",
    box_help = "Drücke E um das Osterei zu öffnen",
    notifytitle = "Oster-Shop",
    reward_notify = "Du hast %sx %s gefunden und %s Punkte verdient.",
    profile_title = "Dein Profil",
    profile_description = "Suche Ostereier in der ganzen Stadt...",
    reward_title = "Nächster Meilenstein",
    live_text = "LIVE | {{count}} EIER GEFUNDEN",
    tip_text = "Tipp: Seltene Eier geben deutlich mehr Punkte.",
    points_give_notify = "Du hast %s %d Punkte gegeben."
}
```

***

### 15) Complete Configuration Examples

#### Example 1: Casual Server (Easy Mode)

```lua
-- Eggs everywhere, cheap prices
RISK.Box = {
    count = 50, -- many eggs
    loadingDuration = 5, -- quick start
}

RISK.ShopItems = {
    {id = "cash_10k", type = "money", moneyType = "cash", amount = 10000, price = 50, ...},
}

Config.Easter = {
    autoDrop = {enabled = true, useInterval = true, intervalMinutes = 30},
    cleanup = {enabled = true, minutes = 30, notifyBefore = 10}
}
```

#### Example 2: Serious RP Server

```lua
-- Rare eggs, expensive rewards, admins only
RISK.Box = {
    count = 10, -- few eggs
    loadingDuration = 20, -- suspense
}

RISK.ShopItems = {
    {id = "cash_25k", type = "money", amount = 25000, price = 500, uniquePerPlayer = 1, ...},
}

Config.Easter = {
    command = {everyoneCanUse = false, admins = {...}},
    autoDrop = {enabled = false}, -- manual only
    cleanup = {enabled = true, minutes = 10, notifyBefore = 5}
}
```

#### Example 3: Event Server (High Activity)

```lua
-- Frequent drops, many eggs
RISK.Box = {
    count = 40,
    loadingDuration = 10,
}

Config.Easter = {
    autoDrop = {
        enabled = true,
        useInterval = false,
        specificTimes = {"08:00", "12:00", "16:00", "20:00", "00:00"}
    },
    cleanup = {enabled = true, minutes = 20, notifyBefore = 5}
}
```

***

### 16) Troubleshooting

#### ❌ Shop doesn't open

**Cause:** Too far from location or wrong framework\
**Solution:**

* Stand directly on the marker
* Check `RISK.Framework = "auto"`
* If using ox\_target, verify `RISK.OxTarget.enabled = true`

#### ❌ No eggs spawn after command

**Possible causes:**

* No zones configured
* Wrong admin identifiers

**Solution:**

* Add zones to `RISK.Box.zones`
* Verify your identifier in `Config.Easter.command.admins`
* Check server console for errors

#### ❌ Vehicle not appearing in garage

**Cause:** Wrong garage name (QBCore/QBox)\
**Solution:**

* Check `RISK.DefaultGarage = "pillboxgarage"`
* Use your server's garage names

#### ❌ Items not working

**Cause:** Items not added to inventory\
**Solution:**

* Follow Section 1 for your inventory system
* Restart inventory resource
* Verify item names match exactly

#### ❌ Points not updating

**Cause:** Database not created\
**Solution:**

* Script auto-creates tables on first start
* Restart the resource once
* Check server console for MySQL errors

#### ❌ Auto-drop not working

**Cause:** Wrong server time or disabled\
**Solution:**

* Check `Config.Easter.autoDrop.enabled = true`
* Verify times match your server's timezone
* Use interval mode instead: `useInterval = true`

***

### 17) Best Practices

✅ **Test with `/egghunt` first** — Before enabling auto-drops\
✅ **Balance points and prices** — Make rewards achievable but not too easy\
✅ **Use multiple spawn zones** — Spread eggs across the map\
✅ **Set reasonable cleanup times** — 15-30 minutes recommended\
✅ **Limit exclusive items** — Use `uniquePerPlayer` for vehicles/expensive items\
✅ **Add item images** — Matching the item names in config\
✅ **Enable cleanup** — Prevents server lag from old eggs\
✅ **Use ox\_target with NPCs** — Better UX than markers\
✅ **Adjust egg count** — More eggs = easier to find\
✅ **Monitor auto-drop times** — Check server timezone!

***

### 18) Quick Start Checklist

* \[ ] Add all items to your inventory system (Section 1)
* \[ ] Add item images to inventory image folder
* \[ ] Configure shop location `RISK.Shop.coords`
* \[ ] Add admin identifiers to `Config.Easter.command.admins`
* \[ ] Configure spawn zones in `RISK.Box.zones`
* \[ ] Set egg count in `RISK.Box.count`
* \[ ] Configure shop items and prices
* \[ ] Configure box rewards
* \[ ] Set auto-drop times or interval
* \[ ] Enable cleanup system
* \[ ] Test with `/egghunt` command
* \[ ] Verify points and shop work correctly
* \[ ] Check vehicle spawns (if using vehicle rewards)

***

**Version:** 1.0\
**Framework Support:** ESX, QBCore, QBox (auto-detected)\
**Dependencies:** oxmysql (required)\
**Optional:** ox\_target, risk-notify, risk-hudv2


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://risk-scripts.gitbook.io/risk-scripts/scripts/easter-event.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
