Trick or Treat Night
Players buy a candy bucket at the pumpkin stand, walk a neighborhood after dark and knock on doors with the porch light on. Most homeowners hand out candy, some play a trick, and now and then someone gives out a full-size bar.
Seasonal trick-or-treating for Qbox and QBCore servers. Candy trades in at the pumpkin stand for cash or prizes, and a leaderboard tracks the season. It turns itself on from October 1 to November 2 and off again afterwards, so you can leave it installed all year.
By RR Interactive — Gaming, AI & Software.
See it in action

Features
- Season switch — date-based, with a force toggle for events.
- Porch lights — houses taking part get a porch light, a pumpkin on the step and a map blip, only while you carry a bucket.
- Outcomes rolled on the server — treats, tricks (a jumpscare or getting egged), "nobody home" and rare full-size bars.
- No farming — each house answers each character once a night, and only so many times an hour for everyone.
- Shared moments — everyone near the door sees the same homeowner do the same thing.
- Pumpkin stand — buy a bucket, sell candy and bars, swap candy for prizes, season leaderboard.
- In-game door creator — stand at a door and type one command.
- Light — vanilla peds and props only, and the draw loop only runs while a lit house is within 60 m.
Dependencies
- qbx_core or qb-core
- ox_lib
- ox_inventory
- oxmysql
Installation
- Drop the resource into your resources folder and add
ensure rr-trickortreatto yourserver.cfgafter ox_lib, ox_inventory and oxmysql. - Add the items. Copy the three items from
install/items.luaintoox_inventory/data/items.lua, and the icons frominstall/imagesintoox_inventory/web/images. - Restart the server so ox_inventory picks up the new items. The table is created on first start (
sql/install.sqlis there if you would rather run it yourself).
Adding houses
The resource ships with 10 Mirror Park doors. To add your own, go to a house at night with admin rights, stand on the front step facing the door and type /trickortreat adddoor, or /trickortreat adddoor rich for a house that gives out more full-size bars. Doors added this way are saved to data/houses.json and show up for everyone right away. /trickortreat removedoor deletes the nearest one you added. Doors in config.lua use the same format, { door = vec4(x, y, z, heading), rich = true }, if you would rather type them in.
Configuration (config.lua)
| Setting | Default | What it does |
|---|---|---|
Config.Season | Oct 1 to Nov 2 | When the event runs. force = true keeps it on all year |
Config.NightOnly | 19:00 to 05:00 | Porch lights and the knock prompt only show at night |
Config.Odds | 70 treat, 5 bar (15 at rich houses), 18 trick | The rest is "nobody home" |
Config.Treat | 1 to 3 | Candy per treat |
Config.Cooldown.houseMinutes | 60 | How long before a house answers the same character again |
Config.Cooldown.houseMaxPerHour | 12 | How often a house answers anyone |
Config.Trade | $15 per candy, $150 per bar | Cash prices at the stand |
Config.Prizes | Sprunk, burger, bandage, radio | Items you can swap candy for. Unregistered items are hidden |
Config.Items.candy | halloween_candy | Point this at your own candy item if you already have one |
Config.Stand | Mirror Park | The pumpkin stand ped, spot, props and blip |
Config.Porch | pumpkin, warm light | The porch pumpkin model and the light colour |
Config.Text | English | Every player-facing line, for translation |
Commands
| Command | What it does |
|---|---|
/trickortreat adddoor [rich] | Save the door you are standing at |
/trickortreat removedoor | Delete the nearest door you added |
/trickortreat force | Turn the season on or off right now |
/trickortreat reset [id] | Clear a player's house cooldowns |
/trickortreat debug [id] | Season state, house count and cooldowns |
Commands are restricted to group.admin. They also work from the server console.
For developers
- Server export
GetCooldowns(src)returns the house indices on cooldown for a player. - Client export
DebugState()returns what the client is showing. - The client never sends an outcome or an amount. It sends the index of the door it is standing at, and the server checks the player's real position against that door.
Support
Purchased through our Tebex store. Questions or issues: ask in our Discord or email support@dmvwebguys.com.
Last updated 2026-10-17
Browse scripts