Ticket Draw System with Npc Host
Jackpot Breakdown
Any loot container has a chance to contain a Jackpot Ticket
Players collect tickets and talk to the Jackpot NPC to enter the drawing
Every x tickets = 1 entry (configurable)
On interval, a winner is drawn from all entries (more entries = higher chance)
Winner receives a reward item they can unwrap for randomized loot
If the winner is offline, the reward is saved and they're notified on reconnect
Drawings are announced to chat and optionally to Discord via webhook
Permissions
Jackpot.Use - Required to enter the drawing via NPC
Jackpot.Admin - Required for all admin commands
Player Commands
/jpclaim - Claim any pending Jackpot rewards
Admin Chat Commands
/jp - Spawn a Jackpot NPC at your position
/jpremove - Remove the Jackpot NPC you're looking at
/jpdraw - Force a drawing immediately
/jpentries - View all current entries and player counts
/jppending - View all players with unclaimed rewards
/jpclear - Clear all current entries
/giveticket <player> [amount] - Give tickets to a player
Admin Console Commands
jackpot.draw - Force a drawing
jackpot.entries - View all current entries
giveticket <player> [amount] - Give tickets to a player
givealltickets [amount] - Give tickets to all online players
Config Options
Other features
NPC clothing options
Dynamic monument-based NPC spawning or manual placement
Discord webhook URL
| 1 | { |
| 2 | "Ticket Skin ID": 3689630260, |
| 3 | "Ticket Item Shortname": "paper", |
| 4 | "Ticket Display Name": "Jackpot Ticket", |
| 5 | "Reward Skin ID": 3689629145, |
| 6 | "Reward Item Shortname": "halloween.lootbag.large", |
| 7 | "Reward Display Name": "Jackpot Reward", |
| 8 | "Tickets Per Entry": 10, |
| 9 | "Ticket Drop Chance (0-100)": 5.0, |
| 10 | "Ticket Found Message": true, |
| 11 | "Drawing Interval (seconds)": 3600.0, |
| 12 | "Announce Drawing Interval To Chat (seconds, 0 to disable)": 600.0, |
| 13 | "Dynamic Spawn Of The NPC Enabled?": false, |
| 14 | "Dynamic Spawn at this Monument": "assets/bundled/prefabs/autospawn/monument/medium/compound.prefab", |
| 15 | "Dynamic Spawn Points (Relative to Monument)": [ |
| 16 | { |
| 17 | "x": -8.34, |
| 18 | "y": 1.45, |
| 19 | "z": 24.75 |
| 20 | } |
| 21 | ], |
| 22 | "Dynamic Spawn Rotation Correction": 90.0, |
| 23 | "Main Panel ImageURL": "", |
| 24 | "Reward Loot Table": [ |
| 25 | { |
| 26 | "Display Name": "Supply Signal", |
| 27 | "Shortname": "supply.signal", |
| 28 | "Min Amount": 1, |
| 29 | "Max Amount": 2, |
| 30 | "Probability (0-100)": 40, |
| 31 | "Skin ID": 0 |
| 32 | }, |
| 33 | { |
| 34 | "Display Name": "Assault Rifle", |
| 35 | "Shortname": "rifle.ak", |
| 36 | "Min Amount": 1, |
| 37 | "Max Amount": 1, |
| 38 | "Probability (0-100)": 20, |
| 39 | "Skin ID": 0 |
| 40 | }, |
| 41 | { |
| 42 | "Display Name": "Rocket Launcher", |
| 43 | "Shortname": "rocket.launcher", |
| 44 | "Min Amount": 1, |
| 45 | "Max Amount": 1, |
| 46 | "Probability (0-100)": 10, |
| 47 | "Skin ID": 0 |
| 48 | }, |
| 49 | { |
| 50 | "Display Name": "Explosives", |
| 51 | "Shortname": "explosives", |
| 52 | "Min Amount": 3, |
| 53 | "Max Amount": 10, |
| 54 | "Probability (0-100)": 30, |
| 55 | "Skin ID": 0 |
| 56 | } |
| 57 | ], |
| 58 | "Min Items Per Reward": 1, |
| 59 | "Max Items Per Reward": 3, |
| 60 | "NPC Clothing Options": [ |
| 61 | { |
| 62 | "Shortname": "hoodie", |
| 63 | "Skin": 0 |
| 64 | }, |
| 65 | { |
| 66 | "Shortname": "pants", |
| 67 | "Skin": 0 |
| 68 | }, |
| 69 | { |
| 70 | "Shortname": "shoes.boots", |
| 71 | "Skin": 0 |
| 72 | } |
| 73 | ], |
| 74 | "Discord Webhook URL": "" |
| 75 | } |
Lang
| 1 | { |
| 2 | "TicketFound": "[<color=#ffd700>Jackpot</color>] You found a <color=#ffd700>Jackpot Ticket</color>!", |
| 3 | "NotEnoughTickets": "[<color=#ffd700>Jackpot</color>] You need <color=#ff4444>{0}</color> more <color=#ffd700>Ticket(s)</color> to enter.", |
| 4 | "EntryAdded": "[<color=#ffd700>Jackpot</color>] You entered the <color=#ffd700>Jackpot Drawing</color>! You now have <color=#39FF14>{0}</color> entries.", |
| 5 | "PendingRewards": "[<color=#ffd700>Jackpot</color>] You have <color=#39FF14>{0}</color> unclaimed <color=#ffd700>Jackpot Reward(s)</color>! Talk to the <color=#ffd700>Jackpot NPC</color> to claim.", |
| 6 | "NoPerm": "[<color=#ffd700>Jackpot</color>] You don't have permission.", |
| 7 | "GaveTickets": "[<color=#ffd700>Jackpot</color>] Gave <color=#ffd700>{0}</color> Ticket(s) to <color=#ffd700>{1}</color>.", |
| 8 | "PlayerNotFound": "[<color=#ffd700>Jackpot</color>] Player <color=#ff4444>{0}</color> not found.", |
| 9 | "GiveTicketSyntax": "[<color=#ffd700>Jackpot</color>] Syntax: giveticket <player> [amount]", |
| 10 | "RewardClaimed": "[<color=#ffd700>Jackpot</color>] You claimed <color=#39FF14>{0}</color> Jackpot Reward(s)!", |
| 11 | "NoRewards": "[<color=#ffd700>Jackpot</color>] You have no pending rewards.", |
| 12 | "DrawingAnnounce": "<size=16><color=#ffd700>Jackpot Drawing</color></size>\n<color=#ffd700>{0}</color> has won the <color=#ffd700>Jackpot</color> with <color=#39FF14>{1}</color> entries!\nTotal entries this round: <color=#ffd700>{2}</color>", |
| 13 | "DrawingNoEntries": "[<color=#ffd700>Jackpot</color>] No entries this round. Drawing skipped.", |
| 14 | "DrawingReminder": "<size=16><color=#ffd700>Jackpot Drawing</color></size>\nNext drawing in <color=#39FF14>{0}</color>. Total entries: <color=#ffd700>{1}</color>. Visit the <color=#ffd700>Jackpot NPC</color> to enter!", |
| 15 | "DrawingForced": "[<color=#ffd700>Jackpot</color>] Drawing forced by admin.", |
| 16 | "NoEntries": "[<color=#ffd700>Jackpot</color>] No entries this round.", |
| 17 | "EntriesHeader": "[<color=#ffd700>Jackpot</color>] <color=#ffd700>{0}</color> players, <color=#39FF14>{1}</color> total entries:", |
| 18 | "EntryLine": "<color=#ffd700>{0}.</color> {1} - <color=#39FF14>{2}</color> entries", |
| 19 | "NoPending": "[<color=#ffd700>Jackpot</color>] No pending <color=#ffd700>rewards</color>.", |
| 20 | "PendingHeader": "[<color=#ffd700>Jackpot</color>] <color=#ffd700>{0}</color> players with pending <color=#ffd700>rewards</color>:", |
| 21 | "PendingLine": "{0} - <color=#39FF14>{1}</color> reward(s)", |
| 22 | "EntriesCleared": "[<color=#ffd700>Jackpot</color>] Cleared <color=#ffd700>{0}</color> player entries.", |
| 23 | "NpcRemoved": "[<color=#ffd700>Jackpot</color>] <color=#ffd700>Jackpot NPC</color> removed.", |
| 24 | "NpcEntered": "[<color=#ffd700>Jackpot</color>] Entered <color=#39FF14>{0}</color> time(s)! You now have <color=#39FF14>{1}</color> total entries.\n<color=#ffd700>Total Pool</color>: <color=#39FF14>{2}</color> entries.", |
| 25 | "NpcNotEnough": "[<color=#ffd700>Jackpot</color>] You need <color=#ffd700>{0}</color> <color=#ffd700>Tickets</color> per entry. You have <color=#ff4444>{1}</color>.", |
| 26 | "NpcPendingHint": "\nYou have <color=#39FF14>{0}</color> unclaimed <color=#ffd700>reward(s)</color>! Use <color=#ffd700>/jpclaim</color> to claim." |
| 27 | } |